xalan-c-1.11/0000775000175000000640000000000012037700065011751 5ustar stevesambaxalan-c-1.11/c/0000775000175000000640000000000012037700073012172 5ustar stevesambaxalan-c-1.11/c/xdocs/0000775000175000000640000000000012037700125013310 5ustar stevesambaxalan-c-1.11/c/xdocs/DoxyfileXalan0000664000175000000640000002705712033456371016024 0ustar stevesamba# FILE: DoxyfileXalan # # This file is automatically generated using DOXYWIZARD # to create web pages for the Apache XALAN-C project. # # Software Release Versions Used # doxygen version 1.71 # graphviz version 2.26.3 # # The apiDocs web pages are created by invoking the following command: # doxygen DoxyfileXalan # # After the web pages are created in directory ../build/docs/apiDocs/html/ # you should copy the apache feather logo image into that directory. # # cp html/apiDocs/asf_logo_wide.gif ../build/docs/apiDocs/html # #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = "Xalan-C++ API" PROJECT_NUMBER = OUTPUT_DIRECTORY = ../build/docs/apiDocs CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = YES QT_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO INHERIT_DOCS = YES SEPARATE_MEMBER_PAGES = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO OPTIMIZE_FOR_FORTRAN = NO OPTIMIZE_OUTPUT_VHDL = NO EXTENSION_MAPPING = BUILTIN_STL_SUPPORT = NO CPP_CLI_SUPPORT = NO SIP_SUPPORT = NO IDL_PROPERTY_SUPPORT = YES DISTRIBUTE_GROUP_DOC = NO SUBGROUPING = YES TYPEDEF_HIDES_STRUCT = NO SYMBOL_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = NO EXTRACT_STATIC = NO EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO EXTRACT_ANON_NSPACES = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = YES HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES FORCE_LOCAL_INCLUDES = NO INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_MEMBERS_CTORS_1ST = NO SORT_GROUP_NAMES = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES SHOW_DIRECTORIES = NO SHOW_FILES = YES SHOW_NAMESPACES = YES FILE_VERSION_FILTER = LAYOUT_FILE = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_NO_PARAMDOC = NO WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../src/xalanc \ ../src/xalanc/Utils/MsgCreator \ ../src/xalanc/Utils/XalanMsgLib \ ../src/xalanc/XalanExtensions \ ../src/xalanc/Harness \ ../src/xalanc/TestXSLT \ ../src/xalanc/XalanSourceTree \ ../src/xalanc/XSLT \ ../src/xalanc/NLS \ ../src/xalanc/Include \ ../src/xalanc/XalanTransformer \ ../src/xalanc/ICUBridge \ ../src/xalanc/DOMSupport \ ../src/xalanc/PlatformSupport \ ../src/xalanc/TestXPath \ ../src/xalanc/XalanExe \ ../src/xalanc/XPathCAPI \ ../src/xalanc/XalanDOM \ ../src/xalanc/XercesParserLiaison \ ../src/xalanc/XercesParserLiaison/Deprecated \ ../src/xalanc/XalanEXSLT \ ../src/xalanc/XMLSupport \ ../src/xalanc/XPath INPUT_ENCODING = UTF-8 FILE_PATTERNS = *.hpp \ *.h RECURSIVE = NO EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXCLUDE_SYMBOLS = EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = YES INLINE_SOURCES = NO STRIP_CODE_COMMENTS = NO REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO REFERENCES_LINK_SOURCE = YES USE_HTAGS = NO VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = YES COLS_IN_ALPHA_INDEX = 3 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = html/apiDocs/header-local.html HTML_FOOTER = html/apiDocs/footer.html HTML_STYLESHEET = HTML_COLORSTYLE_HUE = 220 HTML_COLORSTYLE_SAT = 100 HTML_COLORSTYLE_GAMMA = 80 HTML_TIMESTAMP = YES HTML_ALIGN_MEMBERS = NO HTML_DYNAMIC_SECTIONS = NO GENERATE_DOCSET = NO DOCSET_FEEDNAME = "Doxygen generated docs" DOCSET_BUNDLE_ID = org.doxygen.Project DOCSET_PUBLISHER_ID = org.doxygen.Publisher DOCSET_PUBLISHER_NAME = Publisher GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO CHM_INDEX_ENCODING = BINARY_TOC = NO TOC_EXPAND = NO GENERATE_QHP = NO QCH_FILE = QHP_NAMESPACE = org.doxygen.Project QHP_VIRTUAL_FOLDER = doc QHP_CUST_FILTER_NAME = QHP_CUST_FILTER_ATTRS = QHP_SECT_FILTER_ATTRS = QHG_LOCATION = GENERATE_ECLIPSEHELP = NO ECLIPSE_DOC_ID = org.doxygen.Project DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO USE_INLINE_TREES = NO TREEVIEW_WIDTH = 250 EXT_LINKS_IN_WINDOW = NO FORMULA_FONTSIZE = 10 FORMULA_TRANSPARENT = YES SEARCHENGINE = NO SERVER_BASED_SEARCH = NO #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = YES USE_PDFLATEX = YES LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO LATEX_SOURCE_CODE = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = YES EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = NO MSCGEN_PATH = HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES DOT_NUM_THREADS = 0 DOT_FONTNAME = FreeSans.ttf DOT_FONTSIZE = 10 DOT_FONTPATH = CLASS_GRAPH = YES COLLABORATION_GRAPH = YES GROUP_GRAPHS = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO CALLER_GRAPH = NO GRAPHICAL_HIERARCHY = YES DIRECTORY_GRAPH = YES DOT_IMAGE_FORMAT = png DOT_PATH = DOTFILE_DIRS = DOT_GRAPH_MAX_NODES = 80 MAX_DOT_GRAPH_DEPTH = 0 DOT_TRANSPARENT = NO DOT_MULTI_TARGETS = NO GENERATE_LEGEND = YES DOT_CLEANUP = YES xalan-c-1.11/c/xdocs/html/0000775000175000000640000000000012037700125014254 5ustar stevesambaxalan-c-1.11/c/xdocs/html/apiDocs/0000775000175000000640000000000012037700125015636 5ustar stevesambaxalan-c-1.11/c/xdocs/html/apiDocs/asf_logo_wide.gif0000664000175000000640000001335211731656070021143 0ustar stevesambaGIF89a3OZ1DDDGZ }\RvwwFh78N> Q*jhxFk ? 2<{ l ^~%8kM%5A.0̤u.*y7W"+ŶѲM9&u&efgSVX˼333۽)!,3pH,Ȥrl:ШtJZجvz$.znE~R+?&$}e>>3N.-&?)$th>M&+-' 8C!;?# <Ä'QBNф^ŕb'I'48?8"# 2%;;ۍߪ\Lt8pUjPHF`F WN3NKtPo*GH#Z@#(kףx `DG$ YTNS5@ TQXDԓ}N3 ' Z$A#(F;=ƃ*^Xl/٭Bm* S>L6! Sg.,pҢ@*3r=YU` }j28w^S 4xaG>X%h*ᒘ&@2 d]: gj}M$6EgiyV PB -0dA9PA^{_P :1 GxCH$\L4؁QMA 0D@P25tS*5 A~HYH 'cI6*34DDjD 4lT&q]2&w @1DyB5eD D8&nQY.C .I% -0R%;; ``O6؁bdx"? M% R3O5:gR p# mGS-V DnmUMB>xT&u#Hg̮Wm9'2lۚ1^?bQC'l( m[F$ . pbfPVW6I`~pˮ胳>l*$ '0>lT0[+GMR\U 18R 5yg*ڷ-̵geӱ BTUDuEĪiEm@`@6c*Wο; h]cl4YXuJ@ oxv;~mc)~S  Sx9`\A9zZ'WT߈C&:M<0L4 a'&fȠЄ`G9}PatH/N׬ B2I@۔@>![>$k+1xȖipBX>"x=@󈰔U̎"]E8QQ-TהA<ԪB `OBչd*3YQQs8&dKQ uv =gІ83J KRb]+BMUJ3@`f0O^!ʘ@q(Eր8N3&)"0B-{"NDsCW8-C(8bKTX@^RAITL@fu$b]!S/0̆n;0* p.4i&1S][9mfWT+Z!pUD`J gH@1S;X8 Zt%YFrTYtV)7wDLU^`8+ e|KPn@ X =_ 9tf5*Jiq*{kYؓJ: IN?dMVw#EWN vRaOH;u[]i%Cf9K Sԇ6u0_0OTxd0k$;%HV" lȭ> 83E@v1 0$@t* .'f0JZjeť+H\bI7.EGT~dc,eⳜWH6돗+ȬVA|-Ĕŀ} !>*Q&@ Fh@P]h= .Ug4;uFDX\\$c f$uɫ }H:vQvHL.tQ W$.n D 8Hf3 Ze^U3eBAs^rK#xyg8 P 4`i%ĩ5Rj6F\ ʲG!C0a FRZD$pw{*oZ);_Պ o!({c~Ug8AUR6P ^`f A!l){_q9@e |\4`%~9TUynDK=IZ{$?YeHd'%+GwQ,2Ћ(wpYB&QZpQWЌ'p?]%&M ݰ?f- |33A8US'e)XS傦X3+!xȗ|#m `#0Thp[ q@$I$@h:` @8KdfY9Y8e_G|0Fti36;`L `P. e"yXe @8B BCULgY?4S5eŖt.ES!t+CY`!SiN|0a`ZRp@3?Pv!P1*Xl5\eXS_9E)b;q3#; |2 ^ĘIЛJJ`%}??)Wb(2T?[R/D೥$V Hǚ.LK-S.`GoU@[R , !ڥQŗ$Gaz*X$[&30p3B8PkO  j:S]0$w#dBxj5X˄>`QaZv5`O.bOVI P46 0(_OC#V&0ݣCSн+h]1B?RJ 3V.p%E,x+KSȔy:6uk iw;˯`9۫G;{wI,>P5i%{iGy;2 [-H"zVL`%uV:5& cb"9phf5xťVP Ҹy2(Z3T|z+>udYʣ+a%Pg@~Zں'| ZDtJ;gNMc P(|S.rEAc m (Ǫ}ƴm'R Zf}1 ` t|gFgftͲF2*o-h'pTz(@ MO' ZT<lGP~M%`;N`;D`r] Q4Ѹ7;2T`g81ngiwO}"Y ۍ0R.A {^y-U'nNo,Om ;I, Y>!V#[zgeT]Z47Dp|nmЄ%P#,=L5j#0 L M.RmuL%0/M:2 %IAMeN0OPrgP%_[}/oIPW`ʏX4It>QZ^Y:;xalan-c-1.11/c/xdocs/html/apiDocs/footer.html0000664000175000000640000000144311731656070020035 0ustar stevesamba

Interpreting class diagrams

Doxygen and GraphViz are used to generate this API documentation from the Xalan-C header files.

Xalan-C++ XSLT Processor Version 1.11
Copyright © 1999-2012 The Apache Software Foundation.
All Rights Reserved.

Apache Logo

xalan-c-1.11/c/xdocs/html/apiDocs/header.html0000664000175000000640000000122711731656070017767 0ustar stevesamba Xalan-C++ API : Main Page

Xalan-C++ API Documentation

The Xalan C++ XSLT Processor Version 1.11


xalan-c-1.11/c/xdocs/html/apiDocs/header-local.html0000664000175000000640000000120711731656070021055 0ustar stevesamba Xalan-C++ API : Main Page

Xalan-C++ API Documentation

The Xalan C++ XSLT Processor Version 1.11


xalan-c-1.11/c/xdocs/html/test.jpg0000664000175000000640000001416711557253274015764 0ustar stevesambaJFIFHHdPhotoshop 3.08BIMHH8BIM x8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIM 22JFIFHH&File written by Adobe Photoshop 5.0Adobed            22"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?ly 'b$و`#LjmmMej~ե[@h%=w|:*zDUX'IB%GʲZ81'ALXkDhoIAydp#DT`΅6[/Qߺ>$_I>ЍO'u ov%_ q 0N*1eUt?;[NEߦf[v_@R{qNZ5Dϸ}%k]v{Ƈ0̇Vݬ菣%2R݀m\菽G,kXG)o⢑ZHmoLj-%TFAn':~X3Vc۶H.DCi0mps_QBz-&T.0~F| k#r~ұ̭7պI~:. wn̨@ODž^3/a9&M]I{Z'S<-{I5e5C%qK^g E~$;ҳOg<}k+E<6jty>I}/_dw|{|$Ca7d}3W<I4K/i$ů8BIM XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km&File written by Adobe Photoshop 5.0Adobed              22"  s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ? wkʬ\u$nyQG^<0=l#`|#aY"'%FEJøvp}x> JF?:aMF&ъiGoyHFʣ\C~€h¬7*EvcZ45ۘ;ᇖK{.#ǶWʙI]|OHy.Zl~ xZ@|Fa\\o,h%_MKr4p顏JH)A?\xcQdc(8n؃;c4[/2,AjWz'KlQH\dqʏW_Tm|3N o^pT]m f=Upd!}8?R+=Ώ4,.}Axq rU5=򬞘ˆ7]-JK^TDQïJc PIW׸Y^O/Lʿ߰-\s-ւs2Y#{\/{r!r 'z{B{sMOeV݆##IY'/z xalan-c-1.11/c/xdocs/sources/make-book.bat0000775000175000000640000000157712025217645017354 0ustar stevesamba:: Volume in drive I is LEDS-USB :: Volume Serial Number is 27B6-025E :: mkdir ..\..\build\docs\xalan-c\resources call make-xalan usagepatterns call make-xalan samples call make-xalan resources :: call make-xalan build_instruct call make-xalan install call make-xalan download call make-xalan overview call make-xalan charter :: call make-xalan history call make-xalan whatsnew call make-xalan extensionslib call make-xalan commandline call make-xalan readme call make-xalan releasenotes call make-xalan programming call make-xalan getstarted call make-xalan index call make-xalan extensions call make-xalan faq :: call make-xalan test-faqs call make-xalan license call make-xalan buildlibs call make-xalan secureweb call make-xalan builddocs copy xalan-graphic\*.* ..\..\build\docs\xalan-c copy xslt-resources\*.* ..\..\build\docs\xalan-c\resources xalan-c-1.11/c/xdocs/sources/make-xalan.bat0000775000175000000640000000434612025217645017522 0ustar stevesamba:: :: Set the current path to include a stylesheet transformation utility :: :: %1 The document filename (without extension) to transform :: :: -- The Environment Variables for this script -- :: :: %XALANBOOKXML% The navigation file for this project :: :: %XALANCMD% The Xalan command-line XSLT transformation utility :: :: %XALANSTYLE% The XSLT stylesheet to :: :: %XALANSRCDIR% Source directory of STYLEBOOK markup XML documents :: :: %XALANOUTDIR% Target directory of XHTML web page documents :: :: %XALANLOGOIMG% Web Page Logo :: :: %XALANLOGOWIDTH% Web Page Logo Width :: :: %XALANLOGOHEIGHT% Web Page Logo Height :: :: %XALANLOGOLINK% Active Link for Web Page Logo :: :: %XALANTITLELINK% Active Link for Web Page Title :: :: %WEBCREATED% Web Page Creation Date :: :: -- The XSLT Stylesheet Top-Level Parameters :: :: sectionid Top-level stylesheet parameter (document file id) :: :: createdate Top-level stylesheet parameter (web page creation date) :: :: logoimage Apache Trademark Logo Image :: :: logolink Logo Image - hot link :: :: bookxml The .xml file for navigation :: :: booklink The Hot-Link for Book Title in Header :: SET XALANBOOKXML=xalan.xml SET XALANCMD=..\..\bin\xalan.exe SET XALANSTYLE=stylebook.xslt SET XALANSRCDIR=xalan SET XALANOUTDIR=..\..\build\docs\xalan-c SET XALANLOGOIMG=resources/XalanC-Logo-tm.png SET XALANLOGOWIDTH=190 SET XALANLOGOHEIGHT=90 SET XALANLOGOLINK=../index.html SET XALANTITLELINK=index.html SET WEBCREATED=%DATE% :: :: Create Target Directories :: IF EXIST "%XALANOUTDIR%" GOTO NEXT1 MKDIR "%XALANOUTDIR%" :NEXT1 IF EXIST "%XALANOUTDIR%\resources" GOTO NEXT2 MKDIR "%XALANOUTDIR%\resources" :NEXT2 :: :: Now create the specific web page from StyleBook XML :: "%XALANCMD%" -p sectionid "'%1'" -p xmlsources "'%XALANSRCDIR%'" -p createdate "'%WEBCREATED%'" -p logoimage "'%XALANLOGOIMG%'" -p logowidth "'%XALANLOGOWIDTH%'" -p logoheight "'%XALANLOGOHEIGHT%'" -p logolink "'%XALANLOGOLINK%'" -p bookxml "'%XALANBOOKXML%'" -p booklink "'%XALANTITLELINK%'" %XALANSRCDIR%\%1.xml %XALANSTYLE% >%XALANOUTDIR%\%1.html xalan-c-1.11/c/xdocs/sources/stylebook.xslt0000665000175000000640000007375212025217645017750 0ustar stevesamba resources/asf_logo.png http://www.apache.org 144 75 xalan.xml index.html index xalan Frequently Asked Questions Resources DEBUG - xalantitle not found * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. Web Page created on - XML StyleBook Example index.html Documentation Test Example resources/asf_logo.png http://www.apache.org title
Trademark Logo
Apache Foundation Xalan Project Xerces Project Web Consortium Oasis Open
navLeft content footer Copyright © 1999-2012 The Apache Software Foundation
Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation small
1 0 1

1

Questions

Answers

1 1
  • 1 1 faqTitle


    (top)

    resourcetitle

    id = []

    resourcetitle

    id = []

    Features


    Bug Fixes


  • content content note noteImg resources/note.gif note noteTxt

    glossary

    item
    xalan-c-1.11/c/xdocs/sources/xalan.xml0000665000175000000640000000726212025217645016637 0ustar stevesamba xalan-c-1.11/c/xdocs/sources/xalan/0000775000175000000640000000000012037700125016076 5ustar stevesambaxalan-c-1.11/c/xdocs/sources/xalan/STATUS0000664000175000000640000000235712035043470017054 0ustar stevesamba

    &xslt4c-current; has been tested with &xml4c-used;.

    For information about including the Xerces-C++ libraries on the path, see Setting up the system path.

    Important: You may experience unpredictable anomalies if your Xalan and Xerces builds are not in synch. If you download an update to Xalan, check the release notes to determine which version of Xerces you should use.

    If you compile both &xslt4c; and &xml4c; from distribution sources using the same platform and compiler, you will avoid most of the compatibility issues.

    • Update the documentation
    • Performance improvements
    • Add a more complete set of EXSLT functions
    • Add support for extension elements
    • Fix any conformance bugs we or our users find
    • Fix compiler and platform support issues
    • Add XPath2 support into &xslt4c;

    Watch the for more information and for ideas about how you can get involved.

    xalan-c-1.11/c/xdocs/sources/xalan/usagepatterns.xml0000664000175000000640000007133012035043470021512 0ustar stevesamba
    • Introduction
    • Basic usage pattern with the XalanTransformer C++ API
    • Using a stylesheet processing instruction
    • Setting stylesheet parameters
    • Processing output incrementally
    • Performing a series of transformations
    • Working with DOM input and output
    • Using a Xerces DOM as the source for a Xalan transformation
    • Working with XPath expressions
    • Using the TraceListener
    • Using the International Components for Unicode (ICU)
    • Basic usage pattern with the XalanTransformer C API
    • Variations with the XalanTransformer C API
    • See also: Creating and using extension functions

    To perform a transformation, use one of the XalanTransformer transform() methods. The transformation requires an XML source document and an XSL stylesheet. Both of these objects may be represented by instances of XSLTInputSource . You can construct an XSLTInputSource with a string (the system ID for a file or URI), an input stream, or a DOM.

    If you are using an XSL stylesheet to perform a series of transformations, you can improve performance by calling transform() with a compiled stylesheet, an instance of XalanCompiledStylesheet. If you are transforming an XML source more than once, you should call transform() with a parsed XML source, an instance of XalanParsedSource. See Performing a series of transformations.

    If you XML source document contains a stylesheet Processing Instruction (PI), you do not need to include a stylesheet object when you call transform().

    The transformation output is represented by an XSLTResultTarget, which you can set up to refer to an output stream, the system ID for a file or URI, or a Formatter for one of the various styles of DOM output.

    For detailed API documentation, see &xslt4c; API. For an overview of the command-line utility, see Command-Line Utility.

    Using XalanTransformer and the C++ API, you can perform one or more transformations as described in the following steps.

    For a working sample that illustrates these steps, see the XalanTransform sample.

    Always start with xalanc/Include/PlatformDefinitions.hpp, the &xslt4c; base header file. Also include xercesc/util/PlatformUtils.hpp, xalanc/XalanTransformer/XalanTransformer.hpp, and any other header files your particular application requires.

    #include <xalanc/Include/PlatformDefinitions.hpp> #include <xercesc/util/PlatformUtils.hpp> #include <xalanc/XalanTransformer/XalanTransformer.hpp> ...

    As of version 1.5, &xslt4c; now uses C++ namespaces for those platforms which support them. A number of macros are provided to make using the &xslt4c; (and &xml4c;) namespaces easier.

    In the following example, the XALAN_USING_XERCES and XALAN_USING_XALAN macros are used to declare that the program is using XMLPlatformUtils and XalanTransformer from the &xml4c; and &xslt4c; namespaces respectively.

    XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XALAN(XalanTransformer)

    These macros can be used immediately after the included header files (for global applicability in a given source file) or within functions and methods for local applicability.

    Whilst you can use the standard C++ namespace syntax directly, the &xml4c; and &xslt4c; namespaces are linked to the version number. For example, the Xalan namespace is currently xalanc_1_11. The macros will automatically take care of this when code is re-compiled against a new version of the libraries. Using the namespaces directly will require each namespace related statement be updated by hand.

    Use the static initializers to initialize the &xslt4c; and &xml4c; platforms. You must initialize &xml4c; once per process. You may initialize and terminate &xslt4c; multiple times, but this is not recommended: it is inefficient and is not thread safe.

    XMLPlatformUtils::Initialize(); XalanTransformer::initialize();
    XalanTransformer theXalanTransformer;

    You can explicitly instantiate XSLTInputSource objects for the XML source document and XSL stylesheet, and an XSLTResultTarget object for the output, and then call XalanTransformer transform() with those objects as parameters. For example:

    XSLTInputSource xmlIn("foo.xml"); XSLTInputSource xslIn("foo.xsl"); XSLTResultTarget xmlOut("foo-out.xml"); int theResult = theXalanTransformer.transform(xmlIn,xslIn,xmlOut)

    Alternatively, you can call transform() with the strings (system identifiers), streams, and/or DOMs that the compiler needs to implicitly construct the XSLTInputSource and XSLTResultTarget objects. For example:

    const char* xmlIn = "foo.xml"; const char* xslIn = "foo.xsl"; const char* xmlOut = "foo-out.xml"; int theResult = theXalanTransformer.transform(xmlIn,xslIn,xmlOut)

    Keep in mind that XSLTInputSource and XSLTResultTarget provide a variety of single-argument constructors that you can use in this manner:

    • XSLTInputSource(const char* systemID);
    • XSLTInputSource(const XMLCh* systemID);//Unicode chars
    • XSLTInputSource(istream* stream);
    • XSLTInputSource(XalanNode* node);

    • XSLTResultTarget(char* fileName);
    • XSLTResultTarget(XalanDOMString& fileName);
    • XSLTResultTarget(ostream* stream);
    • XSLTResultTarget(ostream& stream);
    • XSLTResultTarget(Writer* characterStream);
    • XSLTResultTarget(XalanDocument* document);
    • XSLTResultTarget(XalanDocumentFragment* documentFragment);
    • XSLTResultTarget(XalanElement* element);
    • XSLTResultTarget(FormatterListener& flistener);
    Each transform() method returns an integer code, 0 for success. If an error occurs, you can use the getLastError() method to return a pointer to the error message.

    When you shut down Xalan, you may also want to shut down Xerces and ICU support (if enabled). Keep the following considerations in mind:

    • Once you have shut down Xerces, you can no longer make Xalan or Xerces calls in the current process.

    • Shut down ICU support if you have enabled it (see enabling ICU support) and if the application is exiting or no longer requires the ICU. The XMLPlatformUtils::Terminate() call does nothing if ICU support has not been enabled.
    • Ensure that there are no &xslt4c; or &xml4c; objects extant at the point of termination. Any deletion of objects after termination could cause errors.

    Use the static terminators.

    XalanTransformer::terminate(); XMLPlatformUtils::Terminate(); XalanTransformer::ICUCleanUp();

    If you want to use the stylesheet referred to by a stylesheet processing instruction in the XML document, simply call transform() without the second XSLTInputSource argument. For example:

    // foo.xml contains a stylesheet PI const char* xmlIn = "foo.xml"; const char* xmlOut = "foo-out.xml"; int theResult = theXalanTransformer.transform(xmlIn,xmlOut)

    An XSL stylesheet can include parameters that are set at run time before a transformation takes place. Traditionally, a top-level parameter value is of text string type. The Xalan library now supports three types of top-level parameters that can be set. One is a text string parameter. Another is a number parameter of floating point type double. The third is a nodeset (XalanNode *) parameter, usually implemented as a parsed document.

    Any XObject that is created outside of the transformation can be associated with a top-level parameter. The XalanTransformer has an XObject factory whereby top-level parameters can be owned by the XalanTransformer object.

    To set a stylesheet parameter, use the XalanTransformer setStylesheetParam() method. The setStylesheetParam() method takes two arguments: the parameter name and the value. The value can be a string type, a number double type, an (XalanNode *) pointer to a nodeset or parsed document, or any XObjectPtr returned from an XObject factory.

    Top level parameters are sticky. Once set to an instance of an XalanTransformer object, they can be used for multiple transformations. The XalanTransformer reset() method prepares a transformer for a new transformation. Use the clearStylesheetParams() method to release the top-level stylesheet parameters.

    The Xalan command line utility currently supports only a text string value for a top-level stylesheet parameter. The single quotes are required to identify a text string value.

    Xalan -p param1 "'string expression'"foo.xml foo.xsl

    If the string expression includes spaces or other characters that the shell intercepts, first enclose the string in single quotes so Xalan-C++ interprets it as a string expression, and then enclose the resulting string in double quotes so the shell interprets it as a single argument.

    The UseStylesheetParam sample application supports all three types of top-level stylesheet parameters.

    The 'C' language interface XalanCAPI also supports the three types of top-level parameters. The sample program TestCAPIparms.c shows how to use top-level parameters with 'C' language programs.

    The Xalan command line utility should be revised to accommodate the number and nodeset types of top-level stylesheet parameters. Only text string values are currently supported.

    Top-level stylesheet parameters of nodeset type (XalanNode *) are useful for the merging of multiple XML documents.

    XalanTransformer provides a transform() method that sends the output in blocks to a callback function, which enables you to begin processing the output while the transformation is still in process:

    int transform(const XSLTInputSource& xmlIn, const XSLTInputSource& xslIn, void* theOutputHandle, XalanOutputHandlerType theOutputHandler, XalanFlushHanderType theFlushHandler = 0);

    For an example, see XalanTransformerCallback.

    Before Xalan performs a standard transformation, it must parse the XML document and compile the XSL stylesheet into binary representations. If you plan to use the same XML document or stylesheet in a series of transformations, you can improve performance by parsing the XML document or compiling the stylesheet once and using the binary representation when you call transform().

    XalanTransformer includes methods for creating compiled stylesheets and parsed XML documents: the compileStylesheet() method returns a pointer to a XalanCompiledStylesheet; the parseSource() method returns a pointer to a XalanParsedSource.

    In the case of failure, both methods return 0.

    Example using a XalanCompiledStylesheet to perform multiple transformations:

    XalanCompiledStylesheet* compiledStylesheet = 0; compiledStylesheet = theXalanTransformer.compileStylesheet("foo.xsl"); assert(compiledStylesheet!=0); theXalanTransformer.transform("foo1.xml", *compiledStylesheet, "foo1.out."); theXalanTransformer.transform("foo2.xml", *compiledStylesheet, "foo2.out"); ...

    For a working sample, see the CompileStylesheet sample.

    Example using a XalanParsedSource for multiple transformations:

    XalanParsedSource* parsedXML = 0; parsedXML = theXalanTransformer.parseSource("foo.xml"); assert(parsedXML!=0); theXalanTransformer.transform(*parsedXML, "foo1.xsl", "foo-xsl1.out"); theXalanTransformer.transform(*parsedXML, "foo2.xsl", "foo-xsl2.out"); ...

    For a sample that uses both a parsed XML source and a compiled stylesheet, see ThreadSafe .

    You can set up an XSLTResultTarget to produce a DOM when you perform a transformation. You can also use a DOM as input for a transformation.

    The following code fragment illustrates the procedures for working with DOM output :

    // Use the Xerces DOM parser to create a DOMDocument. #include <xercesc/dom/DOMDocument.hpp> #include <xercesc/dom/DOMImplementation.hpp> #include <xalanc/XMLSupport/FormatterToXML.hpp> #include <xalanc/XMLSupport/XalanTransformer.hpp> XALAN_USING_XERCES(DOMDocument) XALAN_USING_XERCES(DOMImplementation) XALAN_USING_XALAN(FormatterToXML) XALAN_USING_XALAN(XalanTransformer) // If you want to produce DOM output, create an empty Xerces Document // to contain the transformation output. DOMDocument * theDOM = DOMImplementation::getImplementation()->createDocument(); // Now create a FormatterListener which can be used by the transformer // to send each output node to the new Xerces document FormatterToXercesDOM theFormatter(theDOM); // Now do the transform as normal XalanTransformer theXalanTransformer int theResult = theXalanTransformer.transform( "foo.xml", "foo.xsl", theFormatter); ... // After you perform the transformation, the DOMDocument contains // the output. You can also follow the same process but use a FormatterToDeprecatedXercesDOM if you require a DOM_Document output. However this is discouraged, as support for the deprecated DOM may be removed in future releases of &xslt4c;

    If you want to use a Xerces DOM object as input for a transformation without wrapping the DOM in a XercesParserLiaison, see passing in a Xerces DOM.

    Performance is much better when &xslt4c; uses native source tree handling rather than interacting with the Xerces DOMParser.

    If you are using the deprecated DOM, the Xerces DOMParser by default, creates a DOM_XMLDecNode in the DOM tree to represent the XML declaration. The Xalan bridge for the Xerces DOM does not support this non-standard node type. Accordingly, you must call DOMParser::setToCreateXMLDeclTypeNode(false) before you parse the XML file. If not, the behavior is undefined, and your application may crash.

    You may want to use a Xerces DOM that was created without using the XalanTransformer class. As the following code snippet illustrates, you can use XercesDOMWrapperParsedSource to pass in a Xerces DOM as the source for an XSL transformation.

    #include <xercesc/parsers/DOMParser.hpp> #include <xalanc/XalanTransformer/XercesDOMWrapperParsedSource.hpp> void parseWithXerces(XalanTransformer &xalan, const XSLTInputSource &xmlInput, const XalanCompiledStylesheet* styleSheet, const XSLTResultTarget &output, XMLFileReporter &logFile) { XercesDOMParser theParser; // Turn on validation and namespace support. theParser.setDoValidation(true); theParser.setDoNamespaces(true); // Parse the document theParser.parse(xmlInput); DOMDocument *theDOM = theParser.getDocument(); theDOM->normalize(); XercesDOMSupport theDOMSupport; XercesParserLiaison theParserLiaison; // Use the DOM to create a XercesDOMWrapperParsedSource, // which you can pass to the transform method. try { const XercesDOMWrapperParsedSource parsedSource( theDOM, theParserLiaison, theDOMSupport, XalanDOMString(xmlInput.getSystemId())); xalan.transform(parsedSource, stylesheet, output); } catch (....) { ... } }

    XSL stylesheets use XPath expressions to select nodes, specify conditions, and generate text for the result tree. XPath provides an API that you can call directly. For example, you may want to select nodes programmatically and do your own processing without a stylesheet. &xslt4c; provides an XPathEvaluator interface to simplify the process of executing XPath expressions.

    For an example that executes XPath expressions against XML source files, see SimpleXPathAPI (takes advantage of the XPathEvaluator interface) and XPathWrapper.

    TraceListener is a debugging abstract base class implemented by TraceListenerDefault. You can use TraceListener to trace any combination of the following:

    • Calls to templates
    • Calls to template children
    • Selection events
    • Result tree generation events

    To construct a TraceListener with TraceListenerDefault, you need a PrintWriter and a boolean for each of these four tracing options. You can then use the XSLTEngimeImpl setTraceSelects and addTraceListener methods to add the TraceListener to an XSLTProcessor. See the TraceListen sample application.

    The TraceListen uses TraceListenerDefault to write events to the screen.

    You can use the to extend support for encoding, number formatting, and sorting.

    • Encoding
      &xml4c; and &xslt4c; use UTF-16 encoding to work with Unicode data. If you integrate the ICU with &xml4c;, both &xml4c; and &xslt4c; use ICU support for input and output transcoding.

    • format-number()
      This XSLT function includes two or three arguments (the third is optional): number, format pattern, and decimal-format name. &xslt4c; ignores the format pattern and optional decimal-format name. If you install ICU support for format-number(), this function is fully supported with all its arguments.

    • xsl:sort
      If you install ICU support for xml:sort, &xslt4c; implements Unicode-style collation.

    If you choose to build Xalan with ICU, you will need to rebuild Xerces with ICU as well.

    To get the ICU:

    1. Download and unzip the from the IBM developerWorks open source zone.

    2. Do an ICU build -- see the Windows NT or Unix build instructions in the build_instruct.html that accompanies the download.
      Important For Windows, define the environment variable ICUROOT and then restart Visual C++ or Visual Studio .NET. in order for the ICUROOT variable to take effect.

    If you want to enable ICU support for encoding, you must integrate ICU with your &xml4c; build. &xml4c; uses ICU for input encoding. See .

    Once you have integrated the ICU with &xml4c;, &xslt4c; automatically uses ICU support for output encoding (the xsl:output encoding attribute).

    If you only want to use the ICU to support number formatting and sorting, you do not need to integrate the ICU with &xslt4c;, but you must do the following in the application where you want to enable ICU support:

    1. Define the environment variable ICUROOT.

    2. Substitute ICU support for format-number(), xsl:number, and/or xsl:sort.

    3. Rebuild the Xalan library to include the ICUBridge.

    ICUBridge

    All &xslt4c; references to ICU are centralized in the ICUBridge module, which supplies the infrastructure for enabling ICU support for number formatting and sorting.

    #include <xalanc/ICUBridge/ICUBridge.hpp> #include <xalanc/ICUBridge/FunctionICUFormatNumber.hpp> #include <xalanc/ICUBridge/ICUXalanNumberFormatFactory.hpp> #include <xalanc/ICUBridge/ICUBridgeCollationCompareFunctor.hpp>

    For Windows, do a clean build of the Xalan library using the "XalanICU.dsw" workspace (for Visual C++ users) or "XalanICU.sln" solution (for Visual Studio .NET users).

    For UNIX:

    1. Define the XALAN_USE_ICU environment variable.

    2. Set the XALANROOT environment variable to the path to to the ICU root (unless you have copied the ICU library to /usr/lib).

    3. Rebuild the Xalan library (&xslt4c-linuxlib; for Linux, &xslt4c-aixlib; for AIX, &xslt4c-hplib; for HP-UX 11, and &xslt4c-solarislib; for Solaris).

    4. Be sure the Xalan library is on the library path (LD_LIBRARY_PATH for Red Hat Linux, LIBPATH for AIX, SHLIB_PATH for HP-UX 11, LD_LIBRARY_PATH for Solaris).
    The command you use for setting environment variables depends on the shell you are using.
    For Bourne Shell, K Shell, or Bash use export ENVAR="val"
    For C Shell, use setenv ENVAR "val"
    where ENVAR is the environment variable name and val is the environment variable setting. You can check the setting of an environment variable with echo $ENVAR
    To define XALAN_USE_ICU, set its value to "1".

    Number formatting

    To enable ICU support for the XSLT format-number() function, do the following:

    // Install ICU support for the format-number() function. FunctionICUFormatNumber::FunctionICUFormatNumberInstaller theInstaller;

    Sorting

    To enable ICU support for xsl:sort, do the following:

    // Set up a StylesheetExecutionContextDefaultobject // (named theExecutionContext in the following fragment), // and install the ICUCollationCompareFunctor. ICUBridgeCollationCompareFunctortheICUFunctor; theExecutionContext.installCollationCompareFunctor(&theICUFunctor);

    We also include a simple C interface for using the XalanTransformer class. See XalanTransformer/XalanCAPI.h. The ApacheModuleXSLT sample illustrates the use of this C API.

    Basic strategy:

    #include <XalanTransformer/XalanCAPI.h> XalanInitialize(); XalanHandle xalan = NULL; xalan = CreateXalanTransformer();

    For example:

    const char * xmlfilename = "foo.xml"; const char* xslfilename = "foo.xsl"; const char* outfilename = "foo.out"; int theResult = 0; theResult = XalanTransformToFile(xmlfilename, xslfilename, outfilename, xalan); If the XML input file contains a stylesheet processing instruction that you want to use, use an empty XSLTInputSource for the stylesheet argument.
    XalanTerminate();

    The Xalan C API supports approximately the same set of options as the C++ API. In particular, you can

    • Use stylesheet processing instructions (PI) to indicate the URI of the stylesheet. Supply NULL for the stylesheet argument.

    • Set stylesheet parameters. Use the SetStylesheetParam() function.

    • Compile stylesheets. Use the CompileStylesheet() method to compile a stylesheet, and the TransformToFileCSS() or TransformToDataCSS() function to use the compiled stylesheet in a transformation.

    • Parse XML sources. Use the XalanParseSource() or XalanParseSouceUseXalan() method.

    • Place the transformation output in a character array. Use the TransformToData() or TransformToDataCSS() function. After you perform the transformation, use the XalanFreeData() function to free memory allocated for the output data.

    • Send the output to a callback function to process blocks of output data as they arrive.

    For a sample that sends output in blocks to a callback function, see ApacheModuleXSLT.

    xalan-c-1.11/c/xdocs/sources/xalan/extensionslib.xml0000664000175000000640000002056412035043470021516 0ustar stevesamba
    • Introduction
    • Beta support for EXSLT extensions
    • Xalan namespace
    • nodeset
    • intersection
    • difference
    • distinct
    • evaluate
    • hasSameNodes

    Extension functions provide a powerful mechanism for extending and simplifying what you can do with an XLST processor like Xalan. With input and contributions from the XML open-source developer community, we are working on placing the most useful extensions in an extensions library distributed with &xslt4c;. If you have ideas and/or contributions you would like to make, please email us at the .

    &xslt4c; supports the EXSLT initiative to provide a set of standard extension functions to XSLT users. &xslt4c; includes beta implementations for functions in four of the EXSLT namespaces (some are calls to extension already in the Xalan namespace).

    The source files for the implementations are in the XalanEXSLT subdirectory of the source tree. See

    • XalanEXSLTCommonImpl
    • XalanEXSLTMathImpl
    • XalanEXSLTSetImpl
    • XalanEXSLTStringImpl
    • XalanEXSLTDynamicImpl
    • XalanEXSLTDateTimeImpl

    For the function specifications, see:

    • EXSLT common functions
    • EXSLT math functions
    • EXSLT set functions
    • EXSLT string functions
    • EXSLT dynamic functions
    • EXSLT date-time functions

    Anyone who would like to participate in the &xslt4c; initiative to support EXSLT by testing these implementations or implementing other EXSLT functions is more than welcome. Please email us at the .

    We are placing the Xalan extension functions in the XalanExtensions module and we have defined a namespace for this module:

         http://xml.apache.org/xalan

    If you are calling &xslt4c;-supplied extensions, we recommend that you define this namespace in your stylesheet element, and call the extension using the namespace prefix that you have associated with that namespace. That way, if we later reorganize how the &xslt4c;-supplied extensions are stored, you won't have to modify your stylesheet.

    For an example that uses this namespace, see Example with the nodeset extension function.

    Implemented in FunctionNodeSet, nodeset (result-tree-fragment) casts a result tree fragment into a node-set.

    When you bind a variable to a template, rather than to the value generated by a select expression, the data type of the variable is result tree fragment. For more information, see Result Tree Fragments.

    The following stylesheet uses the nodeset extension function to cast a result tree fragment into a node-set that can then be navigated in standard XPath manner. It uses the http://xml.apache.org/xalan namespace to provide access to the nodeset() method in xml.apache.xalan.lib.Extensions.

    <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:xalan="http://xml.apache.org/xalan" exclude-result-prefixes="xalan"> <xsl:template match="/"> <out> <xsl:variable name="rtf"> <docelem> <elem1> <elem1a>ELEMENT1A</elem1a> <elem1b>,ELEMENT1B</elem1b> </elem1> <elem2> <elem2a>ELEMENT2A</elem2a> </elem2> </docelem> </xsl:variable> <xsl:for-each select="xalan:nodeset($rtf)/docelem//*"> <xsl:value-of select="name(.)"/><xsl:text>,</xsl:text> </xsl:for-each> </out> </xsl:template> </xsl:stylesheet>

    The output of running this stylesheet (with any XML input source) is a comma-delimited list of the element names in the node-set
      <out>elem1,elem1a,elem1b,elem2,elem2a</out>

    For illustration purposes, the preceding stylesheet pays no attention to the structure and content of the XML input document. Instead, it processes the template (in the stylesheet) bound to the variable named rtf.

    Implemented in FunctionIntersection, intersection (node-set1, node-set2) returns a node-set with all nodes that are in ns1 and in ns2.

    Implemented in FunctionDifference, difference(node-set1, node-set2) returns a node-set with the nodes in node-set1 and not in node-set2.

    Implemented in FunctionDistinct, distinct (node-set) returns a node-set containing nodes with distinct string values. If more than one node in the node-set contains the same text node value, distinct only returns the first of these nodes that it finds.

    Implemented in FunctionEvaluate, evaluate (xpath-expression) returns the result of evaluating the xpath-expression in the current XPath expression context (automatically passed in by the extension mechanism).

    Use the evaluation extension function when the value of the expression is not known until run time.

    Implemented in FunctionHasSameNodes, hasSameNodes(node-set1, node-set2) returns true if both node-set1 and node-set2 contain exactly the same set of nodes.

    xalan-c-1.11/c/xdocs/sources/xalan/build_instruct.xml0000664000175000000640000005247012035043470021663 0ustar stevesamba

    This section is obsolete and is being rewritten. See: BUILD-LIBS.html

    This page was created for users who have downloaded the source distribution of &xslt4c; and are looking for guidance on how to build the &xslt4c; libraries themselves.

    • Rebuilding &xslt4c;
    • Rebuilding sample applications
    • What you need from the distributions
    • Steps for doing a Windows Build
    • Steps for doing a Windows Build with Visual Studio .NET
    • Steps for doing a UNIX build
    • Steps for doing a Build with Message Localization Support

    To rebuild &xslt4c;, you need the &xslt4c; source files, the &xml4c; header files, and for Windows the &xml4c; .lib file. If you want to rebuild with the ICU, you will need to download the ICU source package to build the ICU libraries.

    You can also download &xslt4c; source distributions from : &xslt4c-dist;-src.zip and &xslt4c-dist;-src.tar.gz. &xml4c; source distributions are available from : &xml4c-dist;-src.zip and &xml4c-dist;-src.tar.gz.

    Keep in mind that at any given point in time the &xslt4c; and &xml4c; source trees in the Apache XML repository may not be consistent. When we release a version of &xslt4c; we certify that it is compatible with a given version of &xml4c;. To be safe, use the Xerces distributions that we certify as compatible. Reminder: &xslt4c-current; is compatible with &xml4c-used;.

    For information on using the , see Using the ICU. The recommended version of ICU for &xslt4c-current; is &icu-current;. You may be able to use newer ICU releases as they appear.

    To build &xslt4c; on Windows, you need &xml4c; and a C++ compiler for Windows (either MS Visual C++ 6.0 installed with Service Pack 5 for Visual C++ OR Visual Studio .NET).

    If you are using a different Service Pack, you must rebuild all of the Xerces and Xalan binaries.

    Before you do the following, be sure you have provided Visual C++ the paths to the Xerces headers and libraries.

    1. Create the XERCESCROOT environment variable and set it to the path of the root directory of &xml4c;.
    2. If you are building with ICU, create the ICUROOT environment variable and set it the the path of the ICU root directory.
    3. Use Visual C++ to open the Xalan workspace (.dsw) from the &xslt4c-win_root;\Projects\Win32\VC6. If you are building with ICU, then use XalanICU.dsw. Otherwise, open the Xalan.dsw workspace.

      You may need to restart Visual Studio .NET in order for ICUROOT and XERCESCROOT to take effect.
      As an alternative method to the steps described above, would be to go to "Tools" and select "Options" from Visual C++. From the "Options" window, click on the "Directories" tab and do the following:
      1. Show Directories for: Executable files. Add the Xerces bin directory to the list.
      2. Show Directories for: Include files. Add the Xerces include directory to the list. If you are building with ICU, add the ICU include directory to the list as well.
      3. Show Directories for: Library files. Add the Xerces lib directory to the list. If you are building with ICU, add the ICU lib directory to the list as well.
    To recompile existing applications without changing your source code, be sure to modify your Project settings to pick up the Xalan headers in its new location. (see image below)

    Visual C++ 6.0 Include Directories change

    For users who want to build with Visual Studio .NET,

    1. Create the XERCESCROOT environment variable and set it to the path of the root directory of &xml4c;.
    2. If you are building with ICU, create the ICUROOT environment variable and set it to the path of the ICU root directory.
    3. Use Visual Studio .NET to open the Xalan solution (.sln) from the &xslt4c-win_root;\Projects\Win32\VC7.1. If you are building with ICU, then use XalanICU.sln. Otherwise, open the Xalan.sln solution file.

      You may need to restart Visual Studio .NET in order for ICUROOT and XERCESCROOT to take effect.
      An alternative method to the steps described above, would be to go to "Tools" and select "Options" from Visual Studio .NET. From the "Options" window, click on the "Projects" folder to expand the list. Select "VC++ Directories" from the list and do the following:
      1. Show Directories for: Executable files. Add the Xerces bin directory to the list.
      2. Show Directories for: Include files. Add the Xerces include directory to the list. If you are building with ICU, add the ICU include directory to the list as well.
      3. Show Directories for: Library files. Add the Xerces lib directory to the list. If you are building with ICU, add the ICU lib directory to the list as well.
    To recompile existing applications without changing your source code, be sure to modify your Project settings to pick up the Xalan headers in its new location. (see image below)

    Visual Studio .NET Include Directories change

    For users who want to build in the UNIX environment,

    1. The Xalan build files are written for GNU make, and will not work with other make utilities.

    2. Set the XERCESCROOT environment variable to the path to the root directory of &xml4c;.

    3. Set the XALANCROOT environment variable to the path to the c directory in the root directory of the &xslt4c; distribution. For example, if the distribution is located in "/home/mydir", you would set the XALANCROOT to "/home/mydir/&xslt4c-unix_root;".

    4. (Optional) If you decide to build with ICU, integrate the build with ICU by installing the ICU (see Using the ICU) and defining XALAN_USE_ICU to a value, for example: export XALAN_USE_ICU=true. Set the ICUROOT environment variable to the path to the root directory of ICU. Note that building Xalan with ICU requires that Xerces must also be built with ICU.

    5. Change directory to XALANCROOT. You can also build Xalan-C outside of the source tree, but you will need to adjust the path to the runConfigure script in the next step.

    6. Run the runConfigure utility and provide the platform, C compiler, and C++ compiler flags as indicated below. The runConfigure utility is used to generate the appropriate Makefile for the desired build platform based on the options specified by the user. Valid options for the runConfigure utility are:

      ./runConfigure -p <value> -c <value> -x <value> [-[flag] <value>]

      flagDescription
      pBuild platform. Option must be provided by user. Valid values
      include: aix, linux, freebsd, netbsd, solaris, hp-10, hp-11, hp-11-ia64, irix,
      tru64, macosx, cygwin.
      cC compiler name. Example: gcc, cc, c89, xlc_r, etc.
      xC++ compiler name. Example: g++, xlC_r, CC, etc.
      dIndicates build is a debug build. Takes no values. Default is no
      debug.
      tTranscoder to use. Valid value is 'icu'. Default is null.
      mType of localization support method. Valid values include: inmem,
      icu, and nls. Default is inmem.
      MLocale for Message Localization Support. Default is "en_US"
      rThreads option. Valid values include: pthread or dce. Default is
      pthread. (valid on HP-UX only)
      bSpecify whether it is a 32-bit or 64-bit build. Valid values are 32
      and 64. Default is 32-bit
      PInstall root directory. Used if invoking build with gmake install or
      gmake install-package. Default install root directory is /usr/local
      lExtra link options other than the default. Default is null
      zExtra compiler options other than the default. Default is null
      CExtra configuration options.
      hTo get help on the above commands. Default is no help.

      Linux using GCC:  ./runConfigure -p linux -c gcc -x g++
      Linux using the Intel compiler:  ./runConfigure -p linux -c icc -x icc
      AIX (32-bit):    ./runConfigure -p aix -c xlc_r -x xlC_r

      AIX (64-bit):    ./runConfigure -p aix -c xlc_r -x xlC_r -b 64

      Cygwin (32-bit):  ./runConfigure -p cygwin -c gcc -x g++

      HP-UX 11 (32-bit):  ./runConfigure -p hp-11 -c cc -x aCC

      HP-UX 11 (64-bit):  ./runConfigure -p hp-11 -c cc -x aCC -b 64

      HP-UX 11 for Itanium (32-bit):  ./runConfigure -p hp-11-ia64 -c cc -x aCC

      HP-UX 11 for Itanium (64-bit):  ./runConfigure -p hp-11-ia64 -c cc -x aCC -b 64

      Solaris (32-bit):  ./runConfigure -p solaris -c cc -x CC

      Solaris (64-bit):  ./runConfigure -p solaris -c cc -x CC -b 64

      if you choose to install the distribution after building the libraries and executables, then you will need to indicate where you would like the distribution to be installed. To specify the install directory for your distribution, specify the flag -P <install directory>. for example, building and installing on the AIX platform:

      ./runConfigure -p aix -c xlc_r -x xlC_r -P $HOME/my_xalan

      The standard binary directories bin, lib, and include are created in the specified directory only if the install or install-package option is specified in the build process.

      To see the other runConfigure flags you may include, use the help flag:

           ./runConfigure -h

    7. Purge the previous build:

           make clean

    8. Run the new build:

           make
      or
           make targ

      where targ can be one of:
      targDescription
      allBuild the libraries and Xalan executable. This is the default target
      if no targ is specified.
      cleanDeletes existing binaries, executables, libraries, tests, and
      samples.
      installBuild the library, executables, and samples, and copy them (along with
      the header files) the specified install location.
      install-packageInstalls the library, executables, and samples to the
      specified location.
      SamplesBuilds the samples.
      TestsBuilds the tests.

    Message Localization Support is a new feature to allow users to build &xslt4c; such that diagnostic messages are issued in the language of their choice. Message localization support comes in three flavours:

    • Building static messages in the form of a library (DLL or shared object) which can be bound to the Xalan executable. This method is referred to as "in memory". By default, &xslt4c; is built using "in memory" method.
    • Building messages in the form of a library using localization support provided by the International Components for Unicode (ICU).
    • Building messages in the form of a message catalog. This method utilizes the localization support provided by the Unix National Language Support (NLS) system. This method is supported for UNIX platforms only.

    Regardless of which method you choose, a message file containing translated messages in the language of your choice must be provided. The standard message file provided in the &xslt4c-current; source package is in XML Localization Interchange File Format (XLIFF) format and conforms to the XLIFF 1.1 standard (please see http://www.oasis-open.org/committees/xliff/documents/xliff-specification.htm for more information.) All message files must be written and conform with the XLIFF 1.1 standard.

    Once an XLIFF message file has been created, the XLIFF file should be stored under &xslt4c-unix_root;/src/xalanc/NLS/<locale_name> directory (for example, the default XLIFF message file provided is XalanMsg_en_US.xlf). To build, you will need to follow the same steps as shown above for building in Unix or Windows but with a small change.

    For building on Windows platform with "In Memory" method:

    1. Create the environment variable XERCESCROOT and set it to the path to the root directory of &xml4c;.
    2. Create the environment variable ICUROOT and set it to the path to the ICU root directory.
    3. Open the Xalan.dsw workspace using Microsoft Visual C++. The "inmem" localization method should be configured by default.
    4. Select the Localization project, and go to Settings and click on the "General" tab. Verify the build command line to use "nmake /f BuildMessages.mak TYPE=inmem LOCAL=en_US"
    5. Run "Build all" with the configuration of your choice.

    For building on the Windows platform with ICU method:

    1. Create the environment variable XERCESCROOT and set it to the path to the root directory of &xml4c;.
    2. Create the environment variable ICUROOT and set it to the path to the ICU root directory.
    3. Open the XalanICU.dsw workspace using Microsoft Visual C++.
    4. Select the AllInOneWithICU project, and ensure that the project depends on the LocalizationWithICU project.
    5. Select the LocalizationWithICU project, and go to Settings and click on the "General" tab. Modify the build command line to use "nmake /f BuildMessages.mak TYPE=icu LOCAL=en_US"
    6. Open the tools.ini file under Projects\Win32\VC6\Utils\Localization and add the ICU root directory to the ICUROOT variable setting.
    7. Run "Build all" with the configuration of your choice.

    For building on the Unix platform:

    1. Repeat steps 1 through 5 as outlined under "Steps for doing a UNIX Build"
    2. Run the runConfigure and provide the platform, C compiler, C++ compiler, the message locale system flavour you are intending to build, and the locale support.

      Example 1: to use the NLS method for localization support using the default locale en_US:

      AIX (32-bit):  ./runConfigure -p aix -c xlc_r -x xlC -m nls

      AIX (64-bit):  ./runConfigure -p aix -c xlc_r -x xlC_r -b 64 -m nls

      Example 2: to use the 'icu' method for localization support using the locale fr_FR:

      AIX (32-bit):  ./runConfigure -p aix -c xlc_r -x xlC_r -m icu -M fr_Fr

      AIX (64-bit):  ./runConfigure -p aix -c xlc_r -x xlC_r -b 64 -m icu -M fr_Fr

    3. Perform steps 7 and 8 as outlined under "Steps for doing a UNIX Build"

    After &xslt4c; and associated libraries have been successfully built, the message catalog will be stored in the directory &xslt4c-unix_root;/bin.

    Localization Build TypeFile Name
    ICU or "in memory" method:&xslt4c-msgsho; (for UNIX)
    &xslt4c-msgdll; and &xslt4c-msglib; (for Windows)
    NLS method:&xslt4c-msgcat; can be found in $XALANCROOT/nls/<locale_name>/ directory

    The location of the message library, &xslt4c; and &xml4c; binaries need to be added to the PATH and library path variables. Depending on the Message Localization Support method you've chosen, the following steps will need to be performed such that &xslt4c; will be able to utilize the message library.

    • For an "in memory" or "icu" build, the location of the &xslt4c; and &xml4c; executables need to be added to the PATH variable. The location of the message library will need to be added to:
      • the LIBPATH variable for AIX users
      • the LD_LIBRARY_PATH variable for RedHat, SuSE, and Solaris users
      • the SHLIB_PATH variable for HP-UX users.
    • For an NLS build, the message catalog will need to be added to the NLSPATH.
    xalan-c-1.11/c/xdocs/sources/xalan/readme.xml0000664000175000000640000006523712035043470020073 0ustar stevesamba ]>

    Release notes for &xslt4c-current;

    • Status
    • Rebuilding &xslt4c; and the sample applications
    • Getting in touch
    • History of software changes
    • Changes for &xslt4c; version 1.8
    • Bug reporting
    • Version of &xml4c; to use
    • To-do tasks for future &xslt4c; releases

    Major updates since version 1.7 include:

    • .
    • Upgrade from Xerces-C 2.4 to Xerces-C 2.5.
    • Provide build support for Cygwin and HP-UX 11.00 on Itanium. Although binary distributions are not provided for the Cygwin environment and HP-UX 11.00 on Itanium platform, the build configuration files provided in the source distribution can be used to build on these platforms.
    • Project files for supporting Microsoft Visual Studio .NET. Although a binary distribution for the Microsoft Visual Studio .NET is not provided in this release, Visual Studio solution files are provided in the Windows source distribution for those who choose to build on this platform. Please see "Step for doing a Windows Build with Visual Studio .NET" for details.
    • Additional changes to Xerces Deprecated DOM support. This is another step towards phasing out the support for Xerces Deprecated DOM. Users are encouraged to modify their applications to interface with the new Xerces DOM support. For more information on the effects of these changes to your build environment, please see "Steps for doing a Build with Xerces Deprecated DOM Support"
    • Implemented optimizations to significantly improve the throughput of the ICU-enabled "format-number" function.
    • Changes in the XML Serializer. The serializer will no longer put a newline after the xml header tag unless indent="yes". See bugzilla 24304 and 28386.

    All known &xslt4c; bugs are listed in . For a list of open bugs with links to each bug report, see . If you find a new bug, please enter a XalanC bug report in this database.

    Before you can enter your first bug report, you must submit your email address to Jira and receive a password.

    We strongly encourage you write patches for problems you find and submit them to xalan-dev@xml.apache.org. We review the patches we receive to make sure they do not break something else, and (assuming they do not) include them in our next release. In the interest of fixing bugs, adding enhancements, and addressing outstanding design issues, we sincerely want (and need!) your active participation in the ongoing development of Xalan.

    &status-c;
    • Rebuilding &xslt4c;
    • Rebuilding sample applications
    • What you need from the distributions
    • Steps for doing a Windows Build
    • Steps for doing a Windows Build with Visual Studio .NET
    • Steps for doing a UNIX build
    • Steps for doing a Build with Message Localization Support
    • Steps for doing a Build with Xerces Deprecated DOM Support

    To rebuild &xslt4c;, you need the &xslt4c; source files, the &xml4c; header files, and for Windows the &xml4c; .lib file. If you want to rebuild with the ICU, you will need to download the ICU source package to build the ICU libraries.

    You can also download &xslt4c; source distributions from : &xslt4c-dist;-src.zip and &xslt4c-dist;-src.tar.gz. &xml4c; source distributions are available from : &xml4c-dist;-src.zip and &xml4c-dist;-src.tar.gz.

    Keep in mind that at any given point in time the &xslt4c; and &xml4c; source trees in the Apache XML repository may not be consistent. When we release a version of &xslt4c; we certify that it is compatible with a given version of &xml4c;. To be safe, use the Xerces distributions that we certify as compatible. Reminder: &xslt4c-current; is compatible with &xml4c-used;.

    For information on using the , see Using the ICU. The recommended version of ICU for &xslt4c-current; is &icu-current;. You may be able to use newer ICU releases as they appear.

    To build &xslt4c; on Windows, you need &xml4c; and MS Visual C++ 6.0 installed with Service Pack 5 for Visual C++ and Visual Studio .NET.

    If you are using a different Service Pack, you must rebuild all of the Xerces and Xalan binaries.

    Before you do the following, be sure you have provided Visual C++ the paths to the Xerces headers and libraries.

    1. Create the ICUROOT environment variable and set it the the path of the ICU root.
    2. Create the XERCESCROOT environment variable and set it to the path of the root of &xml4c;.
    3. Use Visual C++ to open the Xalan workspace (.dsw) from the &xslt4c-win_root;\Projects\Win32\VC6. If you are building with ICU, then use XalanICU.dsw. Otherwise, open the Xalan.dsw workspace.

      You may need to restart Visual Studio .NET in order for ICUROOT and XERCESCROOT to take effect.
      As an alternative method to the steps described above, would be to go to "Tools" and select "Options" from Visual C++. From the "Options" window, click on the "Directories" tab and do the following:
      1. Show Directories for: Executable files. Add the Xerces bin directory to the list.
      2. Show Directories for: Include files. Add the Xerces include directory to the list. If you are building with ICU, add the ICU include directory to the list as well.
      3. Show Directories for: Library files. Add the Xerces lib directory to the list. If you are building with ICU, add the ICU lib directory to the list as well.
    To recompile existing applications without changing your source code, be sure to modify your Project settings to pick up the Xalan headers in its new location. (see image below)

    Visual C++ 6.0 Include Directories change

    For users who want to build with Visual Studio .NET,

    1. Create the ICUROOT environment variable and set it the the path of the ICU root.
    2. Create the XERCESCROOT environment variable and set it to the path of the root of &xml4c;.
    3. Use Visual Studio .NET to open the Xalan solution (.sln) from the &xslt4c-win_root;\Projects\Win32\VC7. If you are building with ICU, then use XalanICU.sln. Otherwise, open the Xalan.sln solution file.

      You may need to restart Visual Studio .NET in order for ICUROOT and XERCESCROOT to take effect.
      An alternative method to the steps described above, would be to go to "Tools" and select "Options" from Visual Studio .NET. From the "Options" window, click on the "Projects" folder to expand the list. Select "VC++ Directories" from the list and do the following:
      1. Show Directories for: Executable files. Add the Xerces bin directory to the list.
      2. Show Directories for: Include files. Add the Xerces include directory to the list. If you are building with ICU, add the ICU include directory to the list as well.
      3. Show Directories for: Library files. Add the Xerces lib directory to the list. If you are building with ICU, add the ICU lib directory to the list as well.
    To recompile existing applications without changing your source code, be sure to modify your Project settings to pick up the Xalan headers in its new location. (see image below)

    Visual Studio .NET Include Directories change

    For users who want to build in the UNIX environment,

    1. The Xalan build files are written for GNU make, and will not work with other make utilities.

    2. Set the XERCESCROOT environment variable to the path to the root of &xml4c;.

    3. Set the XALANCROOT environment variable to the path to the c directory in the root of the &xslt4c; distribution. For example, if the distribution is located in "/home/mydir", you would set the XALANCROOT to "/home/mydir/&xslt4c-unix_root;".

    4. (Optional) If you are including the ICUBridge, install the ICU, use the shell to define XALAN_USE_ICU and to set the ICUROOT environment variable to the path to the ICU root. For more information, see (see Using the ICU). Note that building Xalan with ICU requires that Xerces must also be built with ICU.

    5. Change directory to XALANCROOT. You can also build Xalan-C outside of the source tree, but you will need to adjust the path to the runConfigure script in the next step.

    6. Run the runConfigure utility and provide the platform, C compiler, and C++ compiler flags as indicated below. The runConfigure utility is used to generate the appropriate Makefile for the desired build platform based on the options specified by the user. Valid options for the runConfigure utility are:

      ./runConfigure -p <value> -c <value> -x <value> [-[flag] <value>]

      flagDescription
      pBuild platform. Option must be provided by user. Valid values
      include: aix, linux, freebsd, netbsd, solaris, hp-10, hp-11, hp-11-ia64, irix,
      tru64, macosx, cygwin.
      cC compiler name. Example: gcc, cc, c89, xlc_r, etc.
      xC++ compiler name. Example: g++, xlC_r, CC, etc.
      dIndicates build is a debug build. Takes no values. Default is no
      debug.
      tTranscoder to use. Valid value is 'icu'. Default is null.
      mType of localization support method. Valid values include: inmem,
      icu, and nls. Default is inmem.
      MLocale for Message Localization Support. Default is "en_US"
      rThreads option. Valid values include: pthread or dce. Default is
      dce
      bSpecify whether it is a 32-bit or 64-bit build. Valid values are 32
      and 64. Default is 32-bit
      PInstall root directory. Used if invoking build with gmake install or
      gmake install-package. Default install root directory is /usr/local
      lExtra link options other than the default. Default is null
      zExtra compiler options other than the default. Default is null
      CExtra configuration options.
      hTo get help on the above commands. Default is no help.

      Linux using GCC:  ./runConfigure -p linux -c gcc -x c++
      Linux using the Intel compiler:  ./runConfigure -p linux -c icc -x icpc
      AIX (32-bit):    ./runConfigure -p aix -c xlc_r -x xlC_r

      AIX (64-bit):    ./runConfigure -p aix -c xlc_r -x xlC_r -b 64

      Cygwin (32-bit):  ./runConfigure -p cygwin -c gcc -x g++

      HP-UX 11 (32-bit):  ./runConfigure -p hp-11 -c cc -x aCC

      HP-UX 11 (64-bit):  ./runConfigure -p hp-11 -c cc -x aCC -b 64

      HP-UX 11 for Itanium (32-bit):  ./runConfigure -p hp-11-ia64 -c cc -x aCC

      HP-UX 11 for Itanium (64-bit):  ./runConfigure -p hp-11-ia64 -c cc -x aCC -b 64

      Solaris (32-bit):  ./runConfigure -p solaris -c cc -x CC

      Solaris (64-bit):  ./runConfigure -p solaris -c cc -x CC -b 64

      If you choose to install the distribution after building the libraries and executables, then you will need to indicate where you would like the distribution to be installed. To specify the install directory for your distribution, specify the flag -P <install directory>. For example, building and installing on the AIX platform:

      ./runConfigure -p aix -c xlc_r -x xlC_r -P $HOME/my_xalan

      The standard binary directories bin, lib, and include are created in the specified directory only if the install or install-package option is specified in the build process.

      To see the other runConfigure flags you may include, use the help flag:

           ./runConfigure -h

    7. Purge the previous build:

           make clean

    8. Run the new build:

           make
      or
           make targ

      where targ can be one of:
      targDescription
      allBuild the libraries and Xalan executable. This is the default target
      if no targ is specified.
      cleanDeletes existing binaries, executables, libraries, tests, and
      samples.
      installBuild the library, executables and copy them (along with
      the header files) the specified install location.
      install-packageInstalls the library, executables, samples to the
      specified location.
      SamplesBuilds the samples.
      TestsBuilds the tests.
    To recompile existing applications without changing your source code, be sure to modify the command line in your Makefile to pick up the Xalan headers from it's new location. e.g: if your xalan source location is in /home/&xslt4c-unix_root;,


           CC ... -I/home/&xslt4c-unix_root;/src -I/home/&xslt4c-unix_root;/src/xalanc mysrc.cpp

    Message Localization Support is a new feature to allow users to build &xslt4c; such that diagnostic messages are issued in the language of their choice. Message localization support comes in three flavours:

    • Building static messages in the form of a library (DLL or shared object) which can be bound to the Xalan executable. This method is referred to as "in memory". By default, &xslt4c; is built using "in memory" method.
    • Building messages in the form of a library using localization support provided by the International Components for Unicode (ICU).
    • Building messages in the form of a message catalog. This method utilizes the localization support provided by the Unix National Language Support (NLS) system. This method is supported for UNIX platforms only.

    Regardless of which method you choose, a message file containing translated messages in the language of your choice must be provided. The standard message file provided in the &xslt4c; version 1.8 source package is in XML Localization Interchange File Format (XLIFF) format and conforms to the XLIFF 1.1 standard (please see http://www.oasis-open.org/committees/xliff/documents/xliff-specification.htm for more information.) All message files must be written and conform with the XLIFF 1.1 standard.

    Once an XLIFF message file has been created, the XLIFF file should be stored under &xslt4c-unix_root;/src/xalanc/NLS/<locale_name> directory (for example, the default XLIFF message file provided is XalanMsg_en_US.xlf). To build, you will need to follow the same steps as shown above for building in Unix or Windows but with a small change.

    For building on Windows platform with "In Memory" method:

    1. Create the environment variable XERCESCROOT and set it to the path to the root of &xml4c;.
    2. Create the environment variable ICUROOT and set it to the path to the ICU root.
    3. Open the Xalan.dsw workspace using Microsoft Visual C++. The "inmem" localization method should be configured by default.
    4. Select the Localization project, and go to Settings and click on the "General" tab.Verify the build command line to use "nmake /f BuildMessages.mak TYPE=inmem LOCAL=en_US"
    5. Run "Build all" with the configuration of your choice.

    For building on the Windows platform with ICU method:

    1. Create the environment variable XERCESCROOT and set it to the path to the root of &xml4c;.
    2. Create the environment variable ICUROOT and set it to the path to the ICU root.
    3. Open the XalanICU.dsw workspace using Microsoft Visual C++.
    4. Select the AllInOneWithICU project, and ensure that the project depends on the LocalizationWithICU project.
    5. Select the LocalizationWithICU project, and go to Settings and click on the "General" tab. Modify the build command line to use "nmake /f BuildMessages.mak TYPE=icu LOCAL=en_US"
    6. Open the tools.ini file under Projects\Win32\VC6\Utils\Localization and add the ICU root directory to the ICUROOT variable setting.
    7. Run "Build all" with the configuration of your choice.

    For building on the Unix platform:

    1. Repeat steps 1 through 5 as outlined under "Steps for doing a UNIX Build"
    2. Run the runConfigure and provide the platform, C compiler, C++ compiler, the message locale system flavour you are intending to build, and the locale support.

      Example 1: to use the NLS method for localization support using the default locale en_US:

      AIX (32-bit):  ./runConfigure -p aix -c xlc_r -x xlC -m nls

      AIX (64-bit):  ./runConfigure -p aix -c xlc_r -x xlC_r -b 64 -m nls

      Example 2: to use the 'icu' method for localization support using the locale fr_FR:

      AIX (32-bit):  ./runConfigure -p aix -c xlc_r -x xlC_r -m icu -M fr_Fr

      AIX (64-bit):  ./runConfigure -p aix -c xlc_r -x xlC_r -b 64 -m icu -M fr_Fr

    3. Perform steps 7 and 8 as outlined under "Steps for doing a UNIX Build"

    After &xslt4c; and associated libraries have been successfully built, the message catalog will be stored in the directory &xslt4c-unix_root;/bin.

    Localization Build TypeFile Name
    ICU or "in memory" method:libxalanMsg18.so (for UNIX)
    XalanMessages_1_8.dll and XalanMessages_1_8.lib (for Windows)
    NLS method:xalanMsg1_8.cat can be found in $XALANCROOT/nls/<locale_name>/ directory

    The location of the message library, &xslt4c; and &xml4c; binaries need to be added to the PATH and library path variables. Depending on the Message Localization Support method you've chosen, the following steps will need to be performed such that &xslt4c; will be able to utilize the message library.

    • For an "in memory" or "icu" build, the location of the &xslt4c; and &xml4c; executables need to be added to the PATH variable. The location of the message library will need to be added to:
      • the LIBPATH variable for AIX users
      • the LD_LIBRARY_PATH variable for RedHat, SuSE, and Solaris users
      • the SHLIB_PATH variable for HP-UX users.
    • For an NLS build, the message catalog will need to be added to the NLSPATH.

    If you application is dependent on the XercesBridge classes to interface with the deprecated Xerces DOM, then the following steps must be taken.

    For a Windows build using Microsoft Visual C++ version 6.0:

    1. Open the Xalan.dsw workspace
    2. Go to "Projects" and select "Settings". From the "Project Settings panel", highlight the AllInOne project.
    3. Click on the "C/C++" tab on the right hand side. From the "Category" pull down menu, scroll down to find "Preprocessor" and click to highlight this category.
    4. Under the "Preprocessor Definitions" box, add "XALAN_BUILD_DEPRECATED_DOM_BRIDGE" to the list of definitions.
    5. Rebuild &xslt4c; as described under "Steps for doing a Windows Build"

    For a UNIX build, the following parameter should be added to your runConfigure step: -z -DXALAN_BUILD_DEPRECATED_DOM_BRIDGE. for example,

        ./runConfigure -p aix -c xlc_r -x xlC_r -z -DXALAN_BUILD_DEPRECATED_DOM_BRIDGE

    In the 32-bit Windows distribution, all of the sample applications can be built from the Xalan.dsw Visual C++ workspace.

    The Makefile that come with the UNIX distributions include targets for rebuilding one or all of the sample applications . To rebuild one or more sample applications, go to the root directory of your source package or the samples directory of your binary package, and run

         gmake Target

    where Target is Samples (all the samples), ApacheModuleXSLT, CompileStylesheet, DocumentBuilder, ExternalFunctions, ParsedSourceWrappers, SerializedNodeSet, SimpleTransform, SimpleXPathAPI, SimpleXPathCAPI, StreamTransform, ThreadSafe (Windows only), TraceListen, TransformToXercesDOM, UseStylesheetParam, XPathWrapper, XalanTransform, or XalanTransformerCallback.

    For information on building Apache Module, see ApacheModuleXSLT

    Your feedback is more than welcome. Offers of help are even more so! Perhaps you would like to contribute to the ongoing development, testing, or documentation of &xslt4c;.

    Please email your comments, questions, suggestions, bug reports, and offers to help to .

    The following sections list the changes in each release since &xslt4c; version 0.40.0.

    &history-c;
    xalan-c-1.11/c/xdocs/sources/xalan/CREDITS0000664000175000000640000000020112035043470017110 0ustar stevesambaDavid N Bertoni Scott Boag Shane Curcuru Jack Donohue Paul Dick Emily Farmer Donald Leslie David Marston Myriam Midy Robert Weir xalan-c-1.11/c/xdocs/sources/xalan/whatsnew.xml0000664000175000000640000004124312035043470020465 0ustar stevesamba --> ]>
    • Status
    • Getting in Touch
    • History of Software Changes
    • Bug Fixes in Release 1.11
    • Bug Fixes in Release 1.10
    • Bug reporting
    • To-do tasks for future Xalan-C/C++ releases

    Release notes for Xalan-C/C++ Version 1.11

    This is primarily a bug-fix release of version 1.10. Support for number and nodeset types for stylesheet top-level parameters have been added. Xerces-C/C++ versions 3.0 and newer are now supported. Xerces-C/C++ Version 3.1.1 is the preferred stable release.

    There are few binary releases for Xalan-C/C++. The current binary releases are primarily for Windows platforms. If you are able to successfully create a new binary package and wish it to be included, then we welcome your participation on the xalan-dev mail list. You may also wish to check our download page.

    Xalan-C/C++ no longer supports Microsoft Studio (VC6). The Microsoft Visual Studio .NET platforms (2003, 2005, 2008, and 2010) are supported. This equates to compilers (VC71, VC8, VC9, and VC10).

    Your feedback is more than welcome. Offers of help are even more so! Perhaps you would like to contribute to the ongoing development, testing, or documentation of &xslt4c;.

    Please email your comments, questions, suggestions, bug reports, and offers to help to .

    Your general user comments on &xslt4c; usage are also welcome on .

    The following sections list the changes in each release since &xslt4c; version 0.40.0.

    &history-c;

    The bugs fixed in &xslt4c-current; include:

    • XALANC-734: Allow runConfigure CFLAGS and CXXFLAGS to inherit environment
    • XALANC-732: Fix makefile errors for AIX builds
    • XALANC-730: Fixed XalanTransformer memory leaks
    • XALANC-723: Add Top-Level parameter support for XalanCAPI and UseStylesheetParams samples
    • XALANC-723: The XalanTransformer Top-Level parameters now include nodeset and number types
    • XALANC-721: Upgrade support for MS VS 2010 (VC10)
    • XALANC-719: Xerces Parser Liaison - errors on elements with no attributes
    • XALANC-716: incorrect buffer-size calculation in XalanUTF16Writer.hpp
    • XALANC-715: NULL pointer access crash
    • XALANC-713: Build Xalan-C/C++ API Reference Manual using Doxygen 1.7 or newer
    • XALANC-712: Rewrite of Xalan-C++ V1.11 User Guide Web Pages
    • XALANC-710: MS-Studio 2008 Debug Build sends Xalan-C_1D.lib to wrong directory
    • XALANC-709: Doxygen bug in XalanQName.hpp
    • XALANC-708: Including XalanCAPI.hpp does not import Xerces typedef XMLch
    • XALANC-705: Crash with pure virtual function call
    • XALANC-703: Compiler errors while building on AIX 5.3
    • XALANC-700: Broken output when serializing UTF16 surrogates
    • XALANC-699: Compile using Visual C++ 2010 (VC10)
    • XALANC-698: Buffer overflow from XalanMessageLoader::load()
    • XALANC-690: The document function does not handle fragment IDs in URLs correctly
    • XALANC-689: XalanC transformation of a 600 kb file takes 43 seconds
    • XALANC-684: XPath single quate-comma bug
    • XALANC-683: xsl:number with level any does not always count all of the preceeding nodes in the document
    • XALANC-681: NamedNodeMapAttributeList constructor asserts when the provided NamedNodeMap is empty
    • XALANC-680: Error in match pattern with // and abbreviated attribute node test
    • XALANC-679: Possible wrong evaluation of abbreviated XPath in template match
    • XALANC-677: Debug assertion switching to HTML mode when the outputter is producing a DOM
    • XALANC-675: No error is reported for an unknown key
    • XALANC-675: GCC-4.3 cleanup
    • XALANC-673: Assertion failed with XalanDOMString::substr
    • XALANC-671: Incorrect handling of default namespace in xsl:element
    • XALANC-669: XalanOtherEncodingWriter reports an incorrect error message
    • XALANC-667: setUseValidation doesn't work
    • XALANC-664: Testing harness writes strings to the output XML in the local code page.
    • XALANC-661: PlatformSupport/DoubleSupport.cpp compile error on AIX 5.3
    • XALANC-660: Compilation errors in Tests/Performance/TestHarness.hpp on some platforms
    • XALANC-659: Unnecessary casting in ReusableArenaBlock
    • XALANC-658: Misplaced assert in ReusableArenaAllocator::destroyObject()
    • XALANC-657: Add Windows x64 targets to the project files
    • XALANC-655: Boolean value incorrectly converted ot string in attribute value templates
    • XALANC-653: Xalan-C not including namespace declaration in output
    • XALANC-650: XPathProcessorImpl uses XalanDOMString copy constructor instead of referring to an existing instance
    • XALANC-648: XalanUTF8Writer::write(const XalanDOMChar*, XalanDOMString::size_type) does not handle surrogates properly
    • XALANC-647: XalanOtherEncodingWriter::writeNumericCharacterReference() is inefficient
    • XALANC-646: During transcoding XalanC fails to append '0' to the transcoded string
    • XALANC-645: Pluggin of DOMStringPrintWriter into FormatterToXML leads to assert
    • XALANC-641: Class used as exception needs accessible copy constructor
    • XALANC-640: Path problem in Makefile under cygwin
    • XALANC-638: Performance test program does not build on HP-UX
    • XALANC-635: Build fails on Solaris 2.8
    • XALANC-634: Build fails with VC6
    • XALANC-633: The processor should ignore xsl:fallback element in LRE
    • XALANC-632: @use-attribute-sets attribute has to have no effect on xsl:copy when the context item is a documen node.
    • XALANC-631: The next stylesheet crashes XalanC
    • XALANC-630: Incorrect cast in XalanUTF16Writer
    • XALANC-629: Performance improvements for text node stripping
    • XALANC-628: Inconsistent flusing of serializers
    • XALANC-627: Broken cast in ElemTemplateElement::findTemplateToTransformChild()
    • XALANC-626: Fix copyrights in Apache XalanC source
    • XALANC-625: Spurious (though harmless) assert failure in XPath::findNodeSet() when an expression contains an empty node-set enclosed in parenthesis
    • XALANC-624: The key() function does not work when the context node is the root node of a result tree fragment obtained through exsl:node-set()
    • XALANC-623: Compatibility issues with Xerces-C 3.0
    • XALANC-621: Selection of compiler definitions file fails on Linux PPC in client code
    • XALANC-618: uninstallExternalFunction can run past the end of the array
    • XALANC-617: Leak in XalanTransformer
    • XALANC-616: xsl:strip-space element doesn't work proprely
    • XALANC-615: Xalan resolves a namespace prefix when it should report an error
    • XALANC-614: MsgCreator Makefile needs link option
    • XALANC-613: Cannot pass value to stylesheet parameter if parameter name is namespace-qualified
    • XALANC-609: Template with built-in template rules for namespaces gives and assert
    • XALANC-604: ConstructWithNoMemoryManager has a bug which prevents proper default initialization of built-in types.
    • XALANC-603: Source does not compile properly on HP-UX with newer versions of the HP compiler
    • XALANC-595: EXSLT date-time function missing + or - before timezone offset
    • XALANC-588: Floating point exceptions in DoubleSupport::initialize() on Solaris 10 (x86)
    • XALANC-570: Removal of compiler warnings from STLHelper.hpp
    • XALANC-535: If an error/warning message contains not-displayable character for the local encoding , no message is shown at all
    • XALANC-527: Compiling on Xerces-3.0
    • XALANC-480: XML1.1 and Namespaces for XML1.1 support
    • XALANC-478: Add support for XMLEntityResolver
    • XALANC-432: Minor spelling problems in XalanMsg_en_US.xlf
    • XALANC-430: "StylesheetExecutionContext::getVariable(name)" crahes if variable "name" was not found.
    • XALANC-421: omit-xml-declaration ignored
    • XALANC-416: Wrong access to out-of-scope xsl:variable not detected in certain circumstances
    • XALANC-415: Encoding attribute is not returning properly in output XML header
    • XALANC-413: Crash while using transform method on MacOSX
    • XALANC-412: XalanEXSLTDateTime not threadsafe, crashing application
    • XALANC-409: compilation error on g++ on SunOS 2.8
    • XALANC-408: runConfigure help does not include new HP platform
    • XALANC-407: XalanC output format is not suitable as a document entity
    • XALANC-376: Result tree fragment attributes are created without proper namespace and local name

    The bugs fixed in the 1.10 release include:

    • XALANC-572: Compile failure on SuSE80AMD_64b_GCC322
    • XALANC-569: Compile-time assert on 32-bit Solaris and HPUX due to IEEE754 issue
    • XALANC-568: Pattern "/" does not match the pseudo root document of a node-set obtained from a result-tree fragment via exsl:node-set
    • XALANC-511: Crash during XalanTransformer::initialize on AIX
    • XALANC-554: Xalan-C does not implement erratum 25
    • XALANC-552: Problems with the new serializers with CDATA and unrepresentable or special characters
    • XALANC-558: Latest source code does not build with the Intel compiler on Windows
    • XALANC-555: XalanEXSLTDateTime.cpp has too many platform-specifc ifdefs
    • XALANC-421: omit-xml-declaration ignored
    • XALANC-529: Xalan-C sometimes creates empty text nodes in RTFs or sends empty characters() events to FormatterListeners
    • XALANC-530: Serializers filter attributes unnecessarily
    • XALANC-245: substring-before and substring-after
    • XALANC-115: Need to catch use of variables in xsl:key attributes
    • XALANC-540: XPath absolute location path does not work when the context node was obtained from a result tree fragment through exsl:node-set()
    • XALANC-544: Assert failure, then crash, during "variable undefined" error recovery in certain circumstances.
    • XALANC-543: Crash when calling a template that wrongly uses xsl:with-param instead of xsl:param to declare its parameter.
    • XALANC-539: XalanMap needs to compact buckets to prevent long search times and ever-increasing memory usage.
    • XALANC-542: XalanDocumentFragmentXNodeSetBaseProxy::dereferenced() is not implemented properly
    • XALANC-538: Better handling for non-existent node test
    • XALANC-541: Fixes for zOS build
    • XALANC-455: Problem when releasing InputSource obtained through an EntityResolver
    • XALANC-535: If an error/warning message contains not-displayable character for the local encoding , no message is shown at all
    • XALANC-532: FormatterToXMLUnicode does not serialize UTF-8
    • XALANC-536: ElemNumber uses extra temporary strings
    • XALANC-537: XalanC source code quotes incorrectly license protected documents
    • XALANC-526: Use of undefined stricmp breaks compilation on Linux
    • XALANC-513: ICUFormatNumberFunctor has some MemoryManager issues
    • XALANC-507: Safety improvements for XalanVector::insert()
    • XALANC-506: Remove references to stlport directory in Makefile.incl.in
    • XALANC-505: DirectoryEnumerator.hpp will not build on Solaris 10 with Sun Workshop 10
    • XALANC-502: XalanDOMStringCache has initializer list out of order
    • XALANC-501: Creation of comments and PIs needs to detect illegal values
    • XALANC-500: Remove old "diagnostic" output from StylesheetRoot and XSLTEngineImpl
    • XALANC-497: Local variables or parameters in EXSLT-functions are interpreted as global
    • XALANC-496: Glitches in header files
    • XALANC-493: Problem with XALAN_STATIC_CHECK on HP-UX IA64
    • XALANC-492: Various pluggable memory management bugs.
    • XALANC-490: XalanFileReporter is inconsistent in its usage of pluggable memory management
    • XALANC-489: XalanMemMgrs has a thread-safety issue
    • XALANC-488: XSLTInputSource does not support pluggable memory management
    • XALANC-487: URISupport does not provide explicit MemoryManager
    • XALANC-485: GCC warns about order of members in initializer list
    • XALANC-484: Remove compiler warnings about placement delete for HP's aCC compiler
    • XALANC-483: XercesParserLiaison does not create Xerces-C DOM instances with namespaces support enabled.
    • XALANC-482: Remove compiler warnings
    • XALANC-470: runConfigure does not pass link options to Makefile for AIX platform
    • XALANC-465: Add alt tag to footer.html page under html/apiDocs tree.
    • XALANC-463: Transforming an XML DOM document encapsulated within an XercesDOMWrapperParsedSource object triggers an invalid heap pointer exception if XSL opens other XML document with 'document()' function.
    • XALANC-460: Linux/xlC port
    • XALANC-448: TestXSLT/process.cpp compilation fails, interface broken in FormatterToText.hpp
    • XALANC-445: generate-id() inserts periods into name which limits usage

    All known &xslt4c; bugs are listed in . For a list of open bugs with links to each bug report, see . If you find a new bug, please enter a XalanC bug report in this database.

    Before you can enter your first bug report, you must submit your email address to JIRA and receive a password.

    We strongly encourage you write patches for problems you find and submit them to JIRA and the xalan-dev mailing list. We review the patches we receive to make sure they do not break something else, and (assuming they do not) include them in our next release. In the interest of fixing bugs, adding enhancements, and addressing outstanding design issues, we sincerely want (and need!) your active participation in the ongoing development of Xalan.

    Open bugs:

    • The namespace axis does not return the default "xml" namespace.
    • Does not support case-order and lang attributes in xsl:sort.

    Items to do:

    • Add support for new specifications (XPath-20, XSLT-2.0)
    • Add transcoding support using Xerces-C modules
    • Add XSLT extension elements
    • Add more EXSLT extension functions
    • Add the EXSLT document extension function
    • Add support for user-defined extension modules
    • Retire runConfigure script, use GNU AutoTools for platform maintenance
    • Add number and nodeset top-level parameters to the Xalan command-line
    • Add noNamespace file schema capability to the Xalan command-line
    xalan-c-1.11/c/xdocs/sources/xalan/BUGS0000664000175000000640000000072012035043470016561 0ustar stevesambarmation on building Xalan-C++, please see Steps for doing a Unix build .
  • Deprecated DOM Support. The XercesBridge classes have been marked deprecated and moved into an exclusive directory within the xalanc/XercesParserLiaison directory called 'Deprecated'. If your application is dependent on these classes to interface with the deprecated Xerces DOM you must alter your include directive with the 'Depxalan-c-1.11/c/xdocs/sources/xalan/history.xml0000664000175000000640000004027612035043470020333 0ustar stevesamba

    This is a general bug fix release with added stability features. Many null pointer references have been fixed.

    Major updates since version 1.10 include:

    • Add support for Xerces-C 3.0 and newer
    • Drop support for Microsoft Studio (VC6)
    • Fix support issues for AIX 5.3
    • Fix support issues for Solaris 2.8
    • Fix support issues for Solaris 2.10
    • Fix support issues for GCC-4.3
    • Add support for Microsoft .NET 2008 (VC9)
    • Add support for Microsoft .NET 2010 (VC10)
    • Add number and nodeset types as top-level stylesheet parameters
    • Allow separation of compiler CFLAGS and CXXFLAGS for UNIX builds
    • Xalan-C documentation rewrite and reorganize
    • Parent Apache XML Project has been retired
    • Bugs fixed in this release.

    Major updates since version 1.9 include:

    • Support for XML 1.1 and Namespaces in XML 1.1.
    • Added support for IBM XLC 7.0 compiler on AIX.
    • Improved and stabilized C pluggable memory management functionality.
    • Various improvements in Xalan XML serializers for better performance and stability.
    • Upgrade from Xerces-C 2.6 to Xerces-C 2.7.

    Major updates since version 1.8 include:

    • Pluggable Memory Management. This feature allows applications to maintain precise control over memory allocations. This will allow users, with knowledge of their application's characteristics, to provide a more efficient allocation method than the general purpose procedures provided by the system. for more information on how to use this feature, please see the Pluggable Memory Management section of the Programming page.
    • Improved stability on the execution of large stylesheets and XML documents. Because the current implementation relies on function recursion, certain stylesheets/input documents may cause the program stack to overflow and cause the application to fail. It also may inhibit executing stylesheets that are heavily dependent on recursive functions. This feature will prevent these types of failure.
    • Provided a global option to pool all text node strings. This feature allows developers to set a flag to determine if a parsed source tree will pool the values of all of the text nodes in the XML document. By doing so, this can result in a significant reduction in memory usage, particularly if there are a lot of repeated values in text nodes. Please see the class descriptions for XalanSourceTreeDocument, XalanDefaultParsedSource, and XalanTransformer in the API Reference section for more information.
    • Added support for Microsoft Studio .NET V7.1. Project files for Microsoft Studio .NET V7.1 have been provided under the directory xalan\c\Projects\Win32\VC7.1.
    • Upgrade from Xerces-C 2.5 to Xerces-C 2.6.

    Major updates since version 1.7 include:

    • Upgrade from Xerces-C 2.4 to Xerces-C 2.5.
    • Provide build support for Cygwin and HP-UX 11.00 on Itanium. Although binary distributions are not provided for the Cygwin environment and HP-UX 11.00 on Itanium platform, the build configuration files provided in the source distribution can be used to build on these platforms.
    • Project files for supporting Microsoft Visual Studio .NET. Although a binary distribution for the Microsoft Visual Studio .NET is not provided in this release, Visual Studio solution files are provided in the Windows source distribution for those who choose to build on this platform. Please see "Step for doing a Windows Build with Visual Studio .NET" for details.
    • Additional changes to Xerces Deprecated DOM support. This is another step towards phasing out the support for Xerces Deprecated DOM. Users are encouraged to modify their applications to interface with the new Xerces DOM support. For more information on the effects of these changes to your build environment.
    • Implemented optimizations to significantly improve the throughput of the ICU-enabled "format-number" function.
    • Changes in the XML Serializer. The serializer will no longer put a newline after the xml header tag unless indent="yes".

    Major updates since version 1.6 include:

    • Message Localization Support. This feature enables &xslt4c; to issue diagnostic messages in languages other than the default language (English). In order to utilize this feature, the user must provide a version of the &xslt4c; message catalog that has been translated in their language of choice.
    • Build, packaging, and installation improvements. Changes to the &xslt4c; makefiles now allow for a more flexible build, packaging, and install process. Each step in a typical build process can be invoked by specifying the appropriate target, for example to build the executable, and/or samples, or install the build at user-specified location. For more information on building &xslt4c;, please see Steps for doing a Unix build.
    • Deprecated DOM Support. The XercesBridge classes have been marked deprecated and moved into an exclusive directory within the xalanc/XercesParserLiaison directory called 'Deprecated'. If your application is dependent on these classes to interface with the deprecated Xerces DOM you must alter your include directive with the 'Deprecated' directory. For example:

      #include "xalanc/XercesParserLiaison/XercesDocumentBridge.hpp"

      should be changed to:

      #include "xalanc/XercesParserLiaison/Deprecated/XercesDocumentBridge.hpp"

    • Upgrade from Xerces-C 2.3 to Xerces-C 2.4.
    • Porting of ThreadSafe example to UNIX platform.
    • Implementation of EXSLT string extension functions encode-uri() and decode-uri().
    • Implementation of EXSLT dynamic extension function evaluate().
    • Implementation of EXSLT date-time extension function date-time().

    Major updates since version 1.5 include:

    • Directory "sane include" reorganization. A new sub-directory called 'xalanc' has been added to the src directory (for source distribution packages) and include directory (for binary distribution packages). New source files which include Xalan headers will need to be modified to include the 'xalanc' prefix in the header path. For example:

      #include <XPath/XObject.hpp>

      will need to be changed to

      #include <xalanc/XPath/XObject.hpp>

      For Windows users, all project files have been modified to reflect this change. For UNIX users, please see Steps for doing a UNIX build for migration considerations.

    Major updates since version 1.4 include:

    • For Windows, Xalan-C++ is now packaged as a single DLL. The project files to build separate DLLs are now deprecated and will not be maintained.
    • Support for &xml4c; DOMNode classes.
    • New sample TransformToXercesDOM that illustrates how to perform a transform resulting in a &xml4c; DOMDocument
    • Usage of the &xml4c; C++ namespace and creation of &xslt4c; namespace.

    Major updates since version 1.3 include:

    • The &xslt4c; distributions no longer include the &xml4c; headers and libraries. Accordingly, you must download the appropriate &xml4c; distribution (see Downloading what you need.
    • 64-bit build for HP-11; untested 64-bit support for Solaris and AIX.
    • New Linux platform and compiler: Redhat 7.2 with gcc 3.1.
    • is no longer required on any of our supported platforms.
    • Alpha support for a number of EXSLT functions.
    • ParsedSourceWrappers, a sample that illustrates how to perform transformations with input in the form of a pre-built XalanDOM or XalanSourceTree.

    Major updates since version 1.2 include:

    • A new and simplified command-line utility: the Xalan executable
    • New XPath samples exploiting the XPathEvaluator C API and illustrating serialization of an XPath result set: SimpleXPathCAPI and SerializeNodeSet
    • A new wrapper class that lets you pass in a Xerces DOM as input for a transformation
    • Bug fixes.
    • Changed XPathException to XalanXPathException because of a clash with a new Xerces class of the same name.

    Major updates since version 1.1 include:

    • Introduction of a library of extension functions
    • Support for pre-parsed source documents and pre-compiled stylesheets in XalanTransformer and the C API.
    • Support for stylesheet params in XalanTransformer and the C API
    • Support for extension functions in XalanTransformer
    • Performance enhancements

    In addition to adding to the list of platforms on which &xslt4c; builds, our focus for this release has been on bug fixes, performance enhancements, and providing a simplified C++ and C API for performing standard transformations. Major updates since version 1.0 include:

    • Added HP-UX 11 build.
    • Added Solaris build.
    • Greatly improved performance.
    • Improved conformance to the XSLT specification.
    • Simplified the C++ API and provided a C API for performing standard transformations with the XalanTransformer class and associated header files.
    • Added sample illustrating use of XalanTransformer and the new C++ API: XalanTransform.
    • Added sample illustrating use of XalanTransformer, the new C API, and how to run &xslt4c; and perform transformations on an Apache Web server: ApacheModuleXSLT.
    • Added the StreamTransform sample.
    • Eliminated dependencies on non-public Xerces headers; accordingly can now build with the Xerces distribution.
    • Fixed namespace mapping and inheritance problems.
    • Fixed failure of <copy-of ...> to include CRLFs (if any) in the result.
    • Fixed bug sorting in reverse document order based on position.
    • Fixed <xsl:number> bug with use of letter-value="traditional" for "classical" Greek numbering.
    • Fixed use of <xsl:fallback> within a top-level extension function.
    • Fixed HTML output method bug. The <HEAD> element was not including a <META> tag with the encoding.
    • Fixed bug using key() in match patterns to find descendants.
    • Fixed bug using the id() function in complex match patterns.
    • Fixed problem outputting multiple single-character CDATA sections.
    • Fixed problem outputting whitespace characters.
    • Fixed problem transforming from a stream on UNIX platforms.
    • Fixed a bug with the document() function, which was generating a syntax error if called in the following manner: document(string,/).
    • Fixed named templates bug accepting global parameter when called with a parameter of the same name that the named template does not recognize.

    Major updates since version 0.40.0 include:

    • Full support for namespace handling
    • Full implementation of the format-number() function and support for the decimal-format element
    • Integration with the for number formatting, sorting, and output encoding
    • Support for the exclude-result-prefixes attribute
    • Support for the output encoding attribute

    Major updates since version 0.30.0 include:

    • Permitting OS file names (as well as URLs) as command-line arguments with TestXSLT
    • Stricter compliance for HTML and XML output
    • Improved handling of relative URI's
    • Improved handling of Import and Include
    • Better namespace handling (although there are still problems here)
    • Support for Document() function
    • Support for XPath predicates
    • ProblemListener with a different output stream and call XalanTransformer::setProblemListener() before calling XalanTransformer::transform().
    xalan-c-1.11/c/xdocs/sources/xalan/samples.xml0000664000175000000640000006022412035043470020271 0ustar stevesamba
    • Samples to help you get started
    • Rebuilding a Sample application
    • ApacheModuleXSLT
    • CompileStylesheet
    • DocumentBuilder
    • ExternalFunctions
    • ParsedSourceWrappers
    • SerializeNodeSet
    • SimpleTransform
    • SimpleXPathAPI
    • SimpleXPathCAPI
    • StreamTransform
    • ThreadSafe
    • TraceListen
    • TransformToXercesDOM
    • UseMemoryManager
    • UseStylesheetParam
    • XalanTransform
    • XalanTransformerCallback

    Each of the subdirectories in the &xslt4c; samples directory contains the source files for a sample application. The executables for the samples are in the build subdirectory, which should be on the system path.

    With most of the samples, you can use the following procedure:

    1. Go to the samples subdirectory containing the sample (use the DOS shell if you are running Windows)

    2. Run the sample from the command line (as indicated below)

    3. Examine the application source files. You may also want to modify the source files. Remember that if you modify a .cpp file, you must rebuild the executable and place it on the path before you can run the modified application.
    Each sample application looks for input files in the current directory, the directory from which you run the application. The input files are in the samples subdirectory along with the sample source files. For the UNIX builds, application executables are in the bin subdirectory. For the Windows32 build, the application executable is in the bin subdirectory (&xslt4c-dist;-<my_Windows_distribution>\bin). To run a sample, be sure the executable is on the path, and run it from the samples subdirectory that contains the input files. The most of the samples are implemented without providing a pluggable memory manager. The SimpleTransform sample illustrates, in addition to a simple transformation, the usage of the processor with memory manager

    Instructions for rebuilding the samples differ depending on whether you are using the binary package or the source package.

    For Windows users, the Xalan Visual C++ workspace contains project configurations for building each of the samples. Users who have downloaded the source package, can find the XalanICU.dsw workspace file under:

         &xslt4c-dist;-src\src\xalanc\Projects\Win32\VC6

    and XalanICU.sln solution file under:

         &xslt4c-dist;-src\src\xalanc\Projects\Win32\VC7.1

    Users who have downloaded the binary package, should use the Samples.dsw workspace file located under:

          &xslt4c-dist;-<my_Win32_distribution>\Samples\Projects\Win32\VC6

    or the Samples.sln solution file for .NET V7.1 users, located under:

          &xslt4c-dist;-<my_Win32_distribution>\Samples\Projects\Win32\VC7.1

    The Makefile that comes with the UNIX distributions include targets for rebuilding one or all of the sample applications. To rebuild one or more sample applications from the UNIX source package, go to the &xslt4c-dist;-src directory and run

         gmake Target

    where Target is Samples (all the samples), ApacheModuleXSLT, CompileStylesheet, DocumentBuilder, ExternalFunctions, ParsedSourceWrappers, SerializedNodeSet, SimpleTransform, SimpleXPathAPI, SimpleXPathCAPI, StreamTransform, ThreadSafe, TraceListen, TransformToXercesDOM, UseStylesheetParam, XalanTransform, or XalanTransformerCallback.

    To rebuild the samples from the UNIX binary package, go to the ../samples directory of your installation, run the runConfigure utility for your target platform, and then run gmake. For example, AIX users would issue the following command:

         ./runConfigure -p aix -c xlc_r -x xlC_r
         cd samples

         gmake Target

    where Target can be Samples (for building all samples), or the individual sample name as listed above.

    For information on building Apache Module, see ApacheModuleXSLT
    This sample must be built with the Apache Web server, and the &xslt4c; distribution files do not include a binary for ApacheModuleXSLT. Assuming you have installed the Apache server on your platform, you can use Visual C++ on Windows to build ApacheModuleXSLT.dll, or the Makefile on UNIX to build xslt_module (with the appropriate library suffix).

    What it does: runs as an Apache module on an Apache Web server; performs transformations and returns the output to a Web browser. You configure Apache to respond to a given URL request for an output file (html or txt file in the configuration below) by applying an xsl stylesheet file to an xml document file (both with the specified name in a given location) and returning the transformation output to the client.

    This sample also illustrates use of the XalanTransformer class and the C API defined in src/XalanTransformer/XalanCAPI.h. It returns transformation output in blocks to a callback function, which enables the browser to start displaying the result before the transformation has been completed.

    You may need to adjust the Visual C++ or Makefile settings to locate the required Apache header files. As shipped, the Visual C++ project file looks in \Apache Group\Apache\src\include, and the UNIX Makefile looks in usr/lib.

    To build the Apache module, follow the instructions in Steps for doing a Windows build or Steps for doing a UNIX build. For UNIX platforms, you do the build with
    gmake ApacheModuleXSLT.

    To use ApacheModuleXSLT, do the following:

    1. (UNIX only) Be sure the Xalan and Xerces libraries are on your library path (you can accomplish this by copying them to /usr/lib; see Setting up the path/library path), and copy the Apache module to /usr/lib/apache.

    2. Add LoadModule and (UNIX only) AddModule entries to the Apache configuration file: httpd.conf.

      Windows: LoadModule xslt_module &xslt4c-dist;-<my_Windows_distribution>\bin\ApacheModuleXSLT.dll

      UNIX: AddModule mod_xslt.c
              and
              LoadModule xslt_module /usr/lib/apache/mod_xslt.xx

      where xx is the appropriate library suffix for the UNIX platform ("so" or "a").

    3. Add a <Location> entry to httpd.conf that indicates where xml/xsl file pairs are to be found, and what target file extensions to recognize. We suggest the following:

      <Location /xslt>
        AddHandler mod_xslt .html
        AddHandler mod_xslt .txt
      </Location>

      This <Location> element instructs the module to respond to requests for xxx.html and xxx.txt files in the in the xslt subdirectory (under the document root; see next item) by applying the xxx.xsl stylesheet to xxx.xml (both in that directory) and returning the transformation result to the browser.

      For example, a request for foo.html instructs the module to apply foo.xsl to foo.xml and return the result.

      Note: It is up to the stylesheet to apply the appropriate xsl:output method to the output. Whether the user specifies html or txt is, of itself, immaterial.

    4. Put xml/xsl file pairs in the <Location> subdirectory (xslt in the example)) under the document root directory specified in httpd.conf by the DocumentRoot and <Directory> settings. Alternatively, you can modify these settings to point to &xslt4c-dist;-<my_UNIX_distribution>/samples/ApacheModuleXSLT, which includes an xslt subdirectory with xml/xsl file pairs (foo.xml/xsl, apachemod.xml/xsl).

    5. Start the Apache server.

    6. From a Web browser, call the module with a URL as follows:
      http://serverName/xslt/xxx.html
      where serverName is the Apache server (such as www.myServer.com) and xxx is the name of an xml/xsl pair of files (such as foo.xml and foo.xsl) in the xslt subdirectory under the DocumentRoot directory.

      For example,
      http://www.myServer.com/xslt/apachemod.html
      instructs ApacheModuleXSLT to apply the apachemod.xsl stylesheet to the apachemod.xml XML document (both files in the xslt directory under the Apache DocumentRoot directory) and return the transformation result to the browser.

    What it does: Use a compiled stylesheet to perform a series of transformations.

    You can run it from the CompileStylesheet subdirectory with

    CompileStylesheet

    See also: Compiling stylesheets.

    What it does: Use a DocumentBuilder to programmatically construct an XML document, apply the foo.xsl stylesheet to this document, and write the ouput to foo.out.

    You can run it from the DocumentBuilder subdirectory with

    DocumentBuilder

    What it does: implement, install, and illustrate the usage of three extension functions. The functions return a square root, a cube, and a string with the current date and time. The sample stylesheet (foo.xsl) gets the area of a cube and units of measurement from an XML document (foo.xml), computes the length of each side of a cube and the volume of the cube, and enters the date and time of the transformation. The output appears in foo.out.

    Run this sample from the ExternalFunctions subdirectory with

    ExternalFunctions

    See also: Extension Functions.

    What it does: performs a transformation with input in the form of a pre-built XercesDOM or XalanSourceTree.

    Run this sample from the ParsedSourceWrappers subdirectory with

    ParsedSourceWrappers

    See transformXercesDOM() and transformXalanSourceTree() as called by transform() in ParsedSourceWrappers.cpp.

    What it does: Serialize the node set returned by the application of an XPath expression to an XML document.

    Run this sample from the SerializeNodeSet subdirectory with

    SerializeNodeSet XMLFile ContextNode XPathExpression

    where XMLFile is an XML source file, ContextNode is the location path to the context node, and XPathExpression is an XPath expression to apply to that context node. The SerializeNodeSet directory contains the same foo.xml sample source file as the preceding examples.

    What it does: The SimpleTransform class uses the foo.xsl stylesheet to transform foo.xml, and writes the output to foo.out. The source for this sample has been modified to demonstrate the usage of the new pluggable memory management feature.

    You can run it from the SimpleTransform subdirectory with

    SimpleTransform

    See also: Basic procedures for performing XSL transformations.

    What it does: Use the XPathEvaluator interface to evaluate an XPath expression from the specified context node of an XML file and display the nodeset returned by the expression.

    You can use this sample as an aid when you want to find out what a given XPath expression returns from a given context node in an XML file.

    Run this sample from the SimpleXPathAPI subdirectory with

    SimpleXPathAPI XMLFile ContextNode XPathExpression

    where XMLFile is an XML source file, ContextNode is the location path to the context node, and XPathExpression is an XPath expression to apply to that context node.

    Keep in mind that the string value returned by an XPath expression is the string value of the first node in the nodeset returned by the expresssion.

    The XPathWrapper subdirectory contains an XML file named xml.foo (part of it appears below).

    <?xml version="1.0"?> <doc> <name first="David" last="Marston">Mr. Marson</name> <name first="David" last="Bertoni">Mr. Bertoni</name> ... <name first="Paul" last="Dick">Mr. Dick</name> </doc>

    You can try command lines like

    SimpleXPathAPI foo.xml /doc name/@last

    and

    SimpleXPathAPI foo.xml / '//name[position()="4"]/@first'

    If a SimpleXPathAPI argument includes characters (such as *) that the shell interprets incorrectly, enclose the argument in double quotes.

    See also: Working with XPath expressions.

    What it does: Use the XPathEvaluator C interface to evaluate an XPath epxeression and display the string value returned by the epxression.

    Keep in mind that the string value returned by an XPath expression is the string value of the first node in the nodeset returned by the epxresssion.

    Run this sample from the SimpleXPathCAPI subdirectory with

    SimpleXPathCAPI XMLFile XPathExpression

    where XMLFile is an XML source file, and XPathExpression is an XPath expression to apply to the XML source file. The SimpleXPathCAPI subdirectory contains an XML file named xml.foo identical to foo.xml in the preceding example.

    You can try command lines like

    SimpleXPathCAPI foo.xml /doc/name[3]

    What it does: The StreamTransform class processes character input streams containing a stylesheet and an XML document, and writes the transformation output to a character output stream. This sample illustrates the process for working with stylesheets and documents that you assemble in memory.

    You can run it from the SimpleTransform subdirectory with

    StreamTransform

    What it does: Multiple threads use a single compiled stylesheet (StylesheetRoot) and DOM source tree (XalanNode) to perform transformations concurrently. The application tracks the progress of the threads in messages to the console, and each thread writes its own output file. Imagine a server application responding to multiple clients who happen to request the same transformation.

    You can run it from the ThreadSafe subdirectory with

    ThreadSafe

    See also: Compiling stylesheets.

    What it does: Trace events during a transformation; the transformation uses birds.xsl to transform birds.xml and writes the output to birds.out.

    You can run it from the TraceListen subdirectory with

    TraceListen traceFlags

    where traceFlags is one or more of the following:

      -tt (Trace the templates as they are being called)

      -tg (Trace each result tree generation event)

      -ts (Trace each selection event)

      -ttc (Trace the template children as they are being processed)

    These flags are also available in the command-line utility (TestXSLT).

    The core of this example is the following fragment:

    // Set up a diagnostic writer to be used by the TraceListener... XalanStdOutputStream theStdErr(cerr); XalanOutputStreamPrintWriter diagnosticsWriter(theStdErr); // Make sure that error reporting, which includes any TraceListener // output does not throw exceptions when transcoding, since that could // result in an exception being thrown while another exception is active. // In particular, characters that the TraceListener writes might not be // representable in the local code page. theStdErr.setThrowTranscodeException(false); // Set up the TraceListener... // traceTemplates, traceTemplateChildren, traceGenerationEvent, // and TraceSelectionEvent are booleans set by the command line. TraceListenerDefault theTraceListener( diagnosticsWriter, traceTemplates, traceTemplateChildren, traceGenerationEvent, traceSelectionEvent); // Add the TraceListener to the XSLT processor... theProcessor.setTraceSelects(traceSelectionEvent); theProcessor.addTraceListener(&theTraceListener); // Perform the transformation ....

    What it does: Performs a simple transformation but puts the result in a Xerces DOMDocument

    Run this sample from the TransformToXercesDOM subdirectory with

    TransformToXercesDOM XMLFile XSLFile

    where XMLFile is a source XML file, and XSLFile is the XLST input file. The program will use XSLFile to transform the input file XMLFile using Xerces DOM as the output destination.

    See the FormatterToXercesDOM usage in the sample code.

    What it does: Performs a transformation using top-level stylesheet parameters. There are three supported types of parameters. One is a text string. A second is a number of type double. A nodeset or parsed document can also be used.

    You can run it from the UseStylesheetParam subdirectory with

    UseStylesheetParam xmlfile stylesheet outfile [options]

    where the options are:

    -s key "'String-Value'"
    -n key Number
    -d key "Document-URL"

    The files used by the sample program and the top-level parameter nodesets for this illustration are to be in working directory in which the sample program runs.

    Using the sample program:

    UseStylesheetParam foo.xml foo.xslt foo.out \
    -s stringA "'This is a test string value'" \
    -n numberA 123.012345 \
    -d parmA "parmA.xml" \
    -d parmB "parmB.xml"

    The parmA.xml and parmB.xml are parsed and converted to nodesets. The stylesheet foo.xslt merges the contents of foo.xml and the parameters into the foo.out file.

    The source sample is implemented in C++. Another example is implemented in 'C' using the XalanCAPI library TestCAPIparm.c. The usage interface for both is the same.

    See also: Setting stylesheet parameters.

    What it does: XalanTransform uses the XalanTransformer class and the associated C++ API to apply an XSL stylesheet file to an XML document file and write the transformation output to either an output file or to a stream. XalanTransform takes command-line arguments for the XML document to be transformed, the XSL stylesheet to apply, and an optional output file argument. If you omit the third argument, XalanTransform writes the transformation output to a stream that is sent to standard out (the console).

    You can run XalanTransform from the XalanTransform subdirectory with

    XalanTransform foo.xml foo.xsl foo.out

    Omit the third argument to write the transformation result to the console. See also: Using the XalanTransformer class..

    What it does: Return transformation output in blocks to a callback function, which writes the output to a file. This sample illustrates the use of a callback function to incrementally process a transformation result, that is to begin working with the transformation result before the transformation has been completed. See Processing output incrementally.

    You can run it from the XalanTransformerCallback subdirectory with

    XalanTransformerCallback foo.xml foo.xsl [foo.out]

    If you omit the third argument, the transformation result is written to the console.
    xalan-c-1.11/c/xdocs/sources/xalan/getstarted.xml0000664000175000000640000002641112035043470020773 0ustar stevesamba
    • Downloading what you need
    • Setting up the path/library path
    • Trying out the samples
    • Performing your own transformations from the command line
    • Setting up your own XSLT applications

    This section is being rewritten. See: new getting started

    For &xslt4c-current;, we are distributing the following:

    • AIX 5.1 32-bit and 64-bit xlC_r builds
    • HP-UX 11 32-bit and 64-bit aCC builds
    • Red Hat Linux 7.2 32-bit and 64-bit Intel C++ builds
    • Solaris 2.7 32-bit and 64-bit Forte C++ builds
    • SuSE Linux 8.1 for IA-32 gcc 3.2.2 build
    • Windows 32-bit and 64-bit Visual C++ builds

    As with previous releases, the documentation build containing this User's Guide and API documentation will be provided in a separate distribution.

    Please contact us at if you would like to help provide builds for other platforms.

    If you do not already have it, you must also download the &xml4c-used; build as indicated below.

    The Xalan distribution files are in . The Xerces distribution files are in . Xalan documentation is provided in a separate package from the binary distribution files. For Windows, documentation is packaged with the file name &xslt4c-docs_dist_zip;. For UNIX, documentation is packaged with the file name of &xslt4c-docs_dist_targz;.
    Xalan distribution files Xerces distribution files Platform
    &xslt4c-aix51v6-dist; &xml4c-aix51v6-dist; AIX 5.1 (32-bit)
    &xslt4c-aix51v6_64-dist; &xml4c-aix51v6_64-dist; AIX 5.1 (64 bit)
    &xslt4c-hpux11a-dist; &xml4c-hpux11a-dist; HP-UX 11.0 (32 bit)
    &xslt4c-hpux11a_64-dist; &xml4c-hpux11a_64-dist; HP-UX 11.0 (64 bit)
    &xslt4c-redhat72_icc-dist; &xml4c-redhat72_icc-dist; Redhat Linux 7.2 (32-bit)
    &xslt4c-redhat72_ecc-dist; &xml4c-redhat72_ecc-dist; Redhat Linux 7.2 (64-bit)
    &xslt4c-solaris27-dist; &xml4c-solaris27-dist; Solaris 2.7 (32-bit)
    &xslt4c-solaris27_64-dist; &xml4c-solaris27_64-dist; Solaris 2.7 (64-bit)
    &xslt4c-suse81_IA-dist; &xml4c-suse81_IA-dist; SuSE Linux 8.1 (32-bit)
    &xslt4c-win2k-dist;
    &xml4c-winnt-dist;
    Windows 2000
    &xslt4c-win2003l_64-dist;
    &xml4c-win2003c_64-dist;
    Windows 2003 Server (64-bit)

    The compiler version used for each platform is listed in the table below.
    Platform - Operating System Compilers
    AIX 5.1 IBM C and C++ for AIX 6.00
    HP/UX 11.0 aCC A.03.52
    Red Hat Linux 7.2 Intel C++ Compiler, version 7.1
    Solaris 2.7 Sun Workshop 6 update 2
    SuSE Linux 8.1 gcc Compiler, version 3.2.2
    Windows NT, 2000, and XP Microsoft Visual C++ with SP5 (for 32-bit)
    Intel C++ Compiler, version 7.1 (for 64-bit)

    Use GNU tar to untar the Solaris distribution file; see A tar checksum error on Solaris.

    If you want to take advantage of the support for number formatting, sorting, and encoding the ICU provides, you should also download and install the ; see Using the ICU,

    To access previous releases of &xslt4c;, visit the Xalan-C archive directory.
    • For Windows
    • For UNIX

    To use the Windows binary distribution, you must place the Xalan executables and the Xalan and Xerces libraries on the path:

    • Put &xslt4c-dist;-<my_Windows_distribution>\bin and &xml4c-dist;-<my_Windows_distribution>\bin on the path.

    The Visual C++ Xalan project included with the Windows release knows the relative paths to the Xalan headers and libraries, but it does not know where you have unzipped the Xerces distribution. If you plan to use Visual C++ to build Xalan applications or rebuild Xalan, you must also provide Visual C++ with access to the Xerces headers and libraries.

    Use the Visual C++ Tools menu to open the Options dialog box, go to the Directories tab, and do the following:

    • Add the path to &xml4c-dist;-<my_Windows_distribution>\include to the list of directories of Include files.
    • Add the path to &xml4c-dist;-<my_Windows_distribution>\lib to the list of directories of Library files.

    To use one of the UNIX binary distributions, you must place the &xslt4c; executable on the path, and the &xslt4c; and &xml4c; libraries on the library path.

    For the &xslt4c; AIX distributions:

    • Put &xslt4c-dist;-<my_AIX_distribution>/bin on the path (PATH).
    • Put &xslt4c-dist;-<my_AIX_distribution>/lib and &xml4c-dist;-<my_AIX_distribution>/lib on the library path (LIBPATH), or copy the shared libraries to /usr/lib.

    For the &xslt4c; HP-UX 11 distributions:

    • Put &xslt4c-dist;-<my_HPUX_distribution>/bin on the path (PATH).

    • Put &xslt4c-dist;-<my_HPUX_distribution>/lib and &xml4c-dist;-<my_HPUX_distribution>/lib on the library path SHLIB_PATH), or copy the shared libraries to /usr/lib.

    For the &xslt4c; Solaris distributions:

    • Put &xslt4c-dist;-<my_Solaris_distribution>/bin on the path (PATH).

    • Put &xslt4c-dist;-<my_Solaris_distribution>/lib and &xml4c-dist;-<my_Solaris_distribution>/lib on the library path (LD_LIBRARY_PATH), or copy the shared libraries to /usr/lib.

    For the &xslt4c; RedHat and SuSE Linux distributions:

    • Put &xslt4c-dist;-<my_Linux_distribution>/bin on the path (PATH).
    • Put &xslt4c-dist;-<my_Linux_distribution>/lib and &xml4c-dist;-<my_Linux_distribution>/lib on the library path (LD_LIBRARY_PATH), or copy the shared libraries to /usr/lib.

    The &xslt4c; distribution includes a number of basic sample applications. We have precompiled these samples for you so they are ready to run, and you can review the source files to see just how they work.

    To run the samples, do the following:

    1. Set up your path (see above). In the Windows32 distribution, the sample executables are in &xslt4c-dist;-<my_Windows_distribution>\bin. In the UNIX distributions, the executables are in &xslt4c-dist;-<my_UNIX_distribution>/bin.
    2. Go to the samples subdirectory containing the sample.
    3. Run the sample from the command line (in Windows, use the DOS shell).
    4. Examine the application source files.

    For example, go to the SimpleTransform subdirectory and issue the following command:

    SimpleTransform

    SimpleTransform uses the foo.xsl stylesheet to transform foo.xml, and writes the transformation result to foo.out. To see how the example works, examine the source files: foo.xml, foo.xsl, foo.out, and SimpleTransform.cpp.

    For more information about the samples, see &xslt4c; Samples.

    The Xalan executable lets you perform transformations from the command line. The command line for most standard transformations is as follows:

    Xalan -o outputfile xmlSource stylesheet

    where xmlSource is the XML source file name, stylesheet is the XSL stylesheet file name, and outputfile is the output file name.

    If you want the output to be displayed on the screen, simply omit the -o flag and outputfile.

    You can use this utility to try out XSL stylesheets you have written, to make sure they do what you expect with the XML source files they are designed to transform. The utility provides useful messages if the source file or stylesheet is not well formed. If you include a DOCTYPE statement or Schema hint in your XML source files and include the -v flag on the command line, the utility will also let you know whether the XML document is valid (conforms to that DOCTYPE or Schema). For more information, see Command-Line Utility.

    You can start by using your own XML source files and XSL stylesheets with the sample applications, which illustrate a number of usage patterns. For more information on setting up applications, see Basic Usage Patterns.

    xalan-c-1.11/c/xdocs/sources/xalan/install.xml0000664000175000000640000002541112035043470020272 0ustar stevesamba
    • Install Source Packages
    • Install Binary Packages
      • Install UNIX Binary Packages
        • Configure UNIX and Linux Systems
      • Install Windows Binary Packages
        • Configure Windows PATH
    • Install Documentation Package

    We have no package managers for source packages. You just extract the contents of the distribution zip or tar file into a source directory of your choosing.

    The supplemental package building scripts for Linux and UNIX look for the Xalan-C sources to be found in a directory named xalan-src. The Xerces-C sources are expected to be found in a directory named xerces-src.

    The supplemental package building scripts for Windows look for the Xalan-C sources to be found in a directory named xalan-src-11 and the Xerces-C sources to be found in a directory named xerces-src-31.

    When building the Xalan-C library and sample programs, you also need the necessary C/C++ compiler tools installed. A working copy of the Xerces-C XML parser library must be available before you can build the Xalan-C library. You may build the Xerces-C XML parser library from a source distribution or use a compatible Xerces-C binary distribution.

    Building the User Guide web pages from sources requires a working Xalan command line program. The Xalan command-line program must support top-level parameters as strings.

    Building the interactive API Reference pages requires a UNIX or Linux system with a current copy of Doxygen and GraphViz software installed.

    The binary packages distributed by zip and tar files are usually extracted to an install directory of your choosing. After extracting the contents, and possibly relocating some items, you may then need to manually perform some minor system configuration.

    Binary packages for Linux and UNIX systems only distribute a release build of binaries. A debug build of binaries requires you to compile from the sources. Binary packages for Linux and UNIX systems have the following directory structure.

    ./bin/Contains the Xalan.exe command line and DLLs
    ./lib/Contains the linker libraries
    ./include/xalanc/Contains the Xalan-C header files
    ./doc/xalanc-1.11/Contains license and other information

    Supplemental scripts for Linux and UNIX builds are available in the source distribution by which binary packages can be made. The release builds are targeted to ${prefix} = /opt/apache/. The debug buids are targeted to ${prefix} = /opt/apache/debug/.

    Packages that are released by a UNIX or Linux package manager are usually installed and configured by the package manager.

    The Xalan command line executable should be in a directory accessible by the PATH environment.

    The lib directories containing the libxalan-c.so and libxerces-c.so objects must be known to the shared object loader. The system loader environment variable usually takes precedence over the shared object cache. I use the shared object cache for installed applications and reserve the overriding environment for prototype builds and debugging purposes.

    Operating SystemLibrary Path Environment
    Solaris and LinuxLD_LIBRARY_PATH
    BSD/GNULD_LIBRARY_PATH
    HP-UXSHLIB_PATH
    AIX and BSDLIBPATH
    MacOSXDYLD_LIBRARY_PATH
    Cygwin and MinGWPATH

    The library search path order is significant. In many cases, the /usr/lib, /lib, and /usr/local/lib paths are already cached in /etc/ld.so.cache or included by /etc/ld.so.conf.

    Binary packages for Windows systems include a directory name related to the Windows Studio platform used to build the product. The {bin, lib, include, doc} directories are subdirectories of the platform directory. Libraries for several Visual Studio development systems can be installed on the same Windows computer.

    XALANCPKG-11-31-VC71for Visual Studio 2003 (Win32)
    XALANCPKG-11-31-VC80for Visual Studio 2005 (Win32)
    XALANCPKG-11-31-VC90for Visual Studio 2008 (Win32)
    XALANCPKG-11-31-VC100for Visual Studio 2010 (Win32)
    XALANCPKG-11-31-X64-VC80for Visual Studio 2005 (amd64)
    XALANCPKG-11-31-X64-VC90for Visual Studio 2008 (amd64)
    XALANCPKG-11-31-X64-VC100for Visual Studio 2010 (amd64)

    Supplemental scripts for Windows builds are available in the source distribution by which these above binary packages can be made. Also included are scripts for building the Xerces-C sources to the following binary package directories. These directories are mostly compatible with the required XALANCROOT and XERCESCROOT environment variables when building your own applications.

    XERCESCPKG-31-VC71for Visual Studio 2003 (Win32)
    XERCESCPKG-31-VC80for Visual Studio 2005 (Win32)
    XERCESCPKG-31-VC90for Visual Studio 2008 (Win32)
    XERCESCPKG-31-VC100for Visual Studio 2010 (Win32)
    XERCESCPKG-31-X64-VC80for Visual Studio 2005 (amd64)
    XERCESCPKG-31-X64-VC90for Visual Studio 2008 (amd64)
    XERCESCPKG-31-X64-VC100for Visual Studio 2010 (amd64)

    Supplemental scripts for Windows builds will also handle the packaging of older Xalan-C and Xerces-C releases. A similar naming of package directories and source directories is supported for these older releases.

    You MUST NOT merge the bin and lib directories from packages compiled with different compilers or different target (Win32 or amd64) platforms.

    It is safe to merge the bin directories of compatible Xalan-C and Xerces-C distributions into a common directory known by the system PATH environment. You can safely merge the lib directories of Xalan-C and Xerces-C into a common directory. You can safely merge the include directories of both Xalan-C and Xerces-C as long as the subdirectories of xalanc and xercesc remain intact.

    Windows systems require that the bin directories be added to the PATH environment so the library DLL files can be found. The Xalan.exe program is dynamically linked to these libraries.

    You can make the PATH environment a permanent part of the SYSTEM or user login DESKTOP environment. Any PATH you add to the user login DESKTOP environment gets automatically prepended to the SYSTEM PATH environment and is effective upon successful user DESKTOP login. If your computer also starts Windows Services that run on behalf of a user, the user environment is assumed.

    1. Right-Click on the computer icon.
    2. Select Properties
    3. Select Advanced System Settings.
    4. SelectEnvironment Variables.
    5. Add the bin directory to the system PATH environment.

    The XP, NT, 2000, and 3000 systems allow environment variables to be set explicitly to individual user accounts. The Vista, Win-7, and 2008 systems have security administration that gets in the way of updating individual user environments.

    Or you can add the bin directories temporarily to your environment by program control or invoking a shell command script, or using a command window. The following command line will append your {target}/bin directory to the PATH environment.

    set PATH=%PATH%;{target}/bin

    There are actually two distributed documentation packages. One contains the website pages and full interactive apiDoc images (355+ megabytes). The other contains the website pages and the apiDoc descriptions (47 megabytes) without the apiDoc images. Except for the absence of interactive apiDoc images, the documentation packages are identical.

    The documentation packages are distributed as tar and zip files. You just extract the contents into a directory that is reachable by your favorite web browser. The documentation tree starts with the ./xalan-c/ directory. The top documentation page is the ./xalan-c/index.html file.

    The documentation is initially a snapshot of the Apache Xalan-C/C++ website at the time the product was released.

    xalan-c-1.11/c/xdocs/sources/xalan/index.xml0000664000175000000640000003543012035043470017735 0ustar stevesamba
    • Licenses
    • Getting Involved
    • XSLT Standards Implemented
    • XML Parser Library
    • Security Issues
    • Getting Started
    • Getting What You Need

    The old Xalan-C/C++ 1.10 release can be found at xml.apache.org/xalan-c.

    Xalan is an XSLT processor for transforming XML documents into HTML, text, or other XML document types. It uses for input an XML document and an XSLT stylesheet. The engine also supports the entry of top-level stylesheet parameters. Documentation exists on how to extend the library with your own custom XPath functions.

    Xalan-C++ version 1.11 is a robust implementation of the W3C Recommendations for XSL Transformations (XSLT) and the XML Path Language (XPath). It works with the Xerces-C++ version 3.1.1 release of XML parsers. The focus for this Xalan release is on bug fixes and compatibility with newer development platforms.

    The Xalan-C/C++ project creates and distributes a standard XSLT library and a simple Xalan command-line utility for transforming XML documents.

    This project is written in a reduced set of the C++ programming language. This makes the library directly usable on numerous platforms. A set of 'C' language APIs is also available so that XSLT and XPath functionality is easily deployed to 'C' language applications.

    Sample programs are available for you to test and experiment with as you learn the Xalan library.

    Some of the EXSLT extension functions for XPath are available. We need to write and validate more of the EXSLT functions. Apache also provides some of their own XPath extensions for use. Documentation and examples are available for you to write your own custom XPath extensions.

    There is a library of XPath extensions that are provided by the Apache Xalan community.

    The Xalan-C/C++ software conforms to The Apache Software Foundation License, Version 2.0.

    You are invited to participate in The Apache Software Foundation. You will need to subscribe if you wish to receive mail from the lists. Some lists require a subscription in order to post messages.

    The xalan-dev mailing list is used to communicate product development issues with the software development team. The xalan-dev messages are archived here and on Marc.info.

    The xalan-c-users mailing list is used to discuss issues regarding the use of the Xalan-C/C++ software and libraries. The xalan-c-users messages are archived here and on Marc.info.

    The subversion repository changes are logged on the xalan-commits mailing list and are archived here and on Marc.info.

    You can review the project sources and change history in the subversion repository at http://svn.apache.org/viewvc/xalan/c.

    You can get a private copy of the subversion snapshot of the development sources at http://svn.apache.org/repos/asf/xalan/c/trunk using your favorite SVN program.

    The JIRA system is used for issue tracking. You must create an account before you can post messages and files to the JIRA tracking system. You can view the issues at https://issues.apache.org/jira/browse/XALANC.

    Xalan-C/C++ implements the following specifications from the World Wide Web Consortium (W3C).

    • XSL Transformations (XSLT) Version 1.0
    • XML Path Language (XPath) Version 1.0
    • Associating Style Sheets with XML documents 1.0 (Second Edition)

    The next major release of Xalan-C/C++ will hopefully be compatible with following standards. This added support will require a major version change from 1 to 2.

    • XSL Transformations (XSLT) Version 2.0
    • XSLT 2.0 and XQuery 1.0 Serialization
    • XML Path Language (XPath) Version 2.0 (Second Edition)
    • XQuery 1.0 and XPath 2.0 Formal Semantics (Second Edition)
    • XQuery 1.0 and XPath 2.0 Data Model (XDM) (Second Edition)
    • XQuery 1.0 and XPath 2.0 Functions and Operators (Second Edition)

    Xalan-C/C++ uses the The Apache Software Foundation Xerces-C project that implements parsers for XML 1.0 and XML 1.1. The following standards as specified by the World Wide Web Consortium (W3C) are implemented by the Xerces-C XML parser library.

    • Extensible Markup Language (XML) 1.0 (Third Edition) - currently (Fifth Edition)
    • Extensible Markup Language (XML) 1.1 (First Edition) - currently (Second Edition)
    • xml:id Version 1.0
    • XML Base (Second Edition)
    • XML Information Set (Second Edition)
    • Namespaces in XML 1.0 (Third Edition)
    • Namespaces in XML 1.1 (Second Edition)
    • XML Schema Part 1: Structures Second Edition
    • XML Schema Part 2: Datatypes Second Edition
    • Document Object Model (DOM) Level 1
    • Element Traversal Specification
    • Document Object Model (DOM) Level 2 Core Specification
    • Document Object Model (DOM) Level 2 Traversal and Range Specification
    • Document Object Model (DOM) Level 3 Core Specification
    • Document Object Model (DOM) Level 3 Validation Specification
    • Document Object Model (DOM) Level 3 Load and Save Specification
    • XML Inclusions (XInclude) 1.0 (Second Edition)

    The Xerces-C/C++ also supports the SAX 1.0 and SAX 2.0 projects. SAX is primarily Java based. The Xerces-C/C++ project has implemented a SAX C++ API that looks much like the SAX Java API.

    Web Services and Web Security recommendations have been developed by the World Wide Web Consortium (W3C) and OASIS-OPEN Advancing open standards for the information society. The Xerces-C/C++ has support for custom entity resolvers which are inherited and supported by the Xalan-C/C++ library.

    The Xalan-C/C++ library has hooks so that custom entity resolvers can be deployed. The entity resolvers are actually interfaces into the Xerces-C/C++ XML Parser Library. Use of trusted entity resolvers greatly increases the security of XML based applications.

    The Web Services Architecture uses specifications and recommendations that are documented by the following organizations.

    • World Wide Web Consortium (W3C)
      [http://www.w3.org]]
    • Advancing open standards for the information society (OASIS-OPEN)
      [http://www.oasis-open.org]
    • The Sourceforge SAX Project (SAX1, SAX2)
      [http://sax.sourceforge.net]
    • Internet Engineering Task Force (IETF)
      [http://www.ietf.org]

    There are some architecture security issues that should be addressed by any XML parser or XSLT transformation application. Other than validating and cleaning the content of XML elements, the access to untrusted external entities is a big problem for security management.

    The "Xalan" comman-line transformation program does not deploy an OASIS catalog or perform other security measures. URLs are resolved using the system directory of the local machine and DNS to resolve host locations. The "Xalan" program should be used only with trusted XSLT stylesheets and XML documents on a trusted computer.

    A future release of the "Xalan" command-line transformation program may include support for an OASIS entity resolver catalog.

    Information on creating Secure Web Service Applications is useful for review. This security overview document goes beyond the scope of XSLT transformations and asks many pertinent security based questions.

    The source code and documentation are delivered in separate packages. Binary packages comprise the compiled libraries, the Xalan command line utility, and the C/C++ header files. The documentation package contains the pre-built documentation. The source package contains the sources to build everything.

    The current Xalan-C/C++ Version 1.11 is compatible with the stable releases of Xerces-C/C++ Version 3.0 and newer. The current stable release for Xerces-C/C++ is 3.1.1.

    The previous Xalan-C/C++ Version 1.10 works with Xerces-C/C++ Versions 2.7.0 and 2.8.0.

    If you are having problems using the product, send your comments to the xalan-c-users mail list.

    If you think a change needs to be made or have suggestions for future releases, send your comments to the xalan-dev mail list.

    Binary releases are not yet available. We would like to distribute Xalan-C/C++ Version 1.11 binary releases using the same platforms specified for the compatible Xerces-C binary packages.

    What you need depends whether you plan to build from the sources or download prebuilt packages.

    The development platform used to build the Xalan-C/C++ (XSLT) library should be the same as the platform used to build the Xerces-C/C++ (XML) parser library.

    Xalan-C/C++ (XSLT) library requires a working Xerces-C/C++ (XML) parser library. The supported versions of Xerces-C/C++ version 3.0 or newer. Version 3.1.1 is recommended.

    If you are ambitious and willing to experiment, you can download the bleeding edge development from the Apache Software Foundation subversion repositories. Use your favorite subversion 'svn' utility for download.

    Xalan-C Repositoryhttp://svn.apache.org/repos/asf/xalan/c/trunk
    Xerces-C Repositoryhttp://svn.apache.org/repos/asf/xerces/c/trunk

    The current stable Xerces-C/C++ (XML) packages are available for download.

    The sources from the Xalan-C repository are current for Version 1.11 until released packages are available. You can help us prepare for a Version 1.11 release by providing packages for your platforms and let us know of your building issues.

    The previous version packages can still be downloaded until officially replaced.

    Xalan-C Version 1.10Xalan Package Downloads
    Xerces-C Version 2.7Xerces Package Downloads
    xalan-c-1.11/c/xdocs/sources/xalan/builddocs.xml0000664000175000000640000001655112035043470020601 0ustar stevesamba
    • The Xalan-C/C++ HTML Documentation
    • Setup UNIX for Building the Documents
      • Build the Documentation on UNIX
    • Setup WINDOWS for Building the Documents
    • About the StyleBook XML Markup
      • Source Directory Layout
      • Document Building Scripts

    Our HTML web page construction does not use or require any Java installed or the use of JavaScript.

    The current Xalan-C/C++ HTML documentation pages are available on our website http://xalan.apache.org/xalan-c.

    The HTML documentation pages can be built from the Xalan-C source distribution. Let ${XALANC} indicate the top directory of the source distribution.

    ${XALANC}/src/ = the program library source files ${XALANC}/xdocs/ = the program documentation source files ${XALANC}/build/docs/ = the directory created for documentation builds ${XALANC}/build/docs/apiDocs/html/ = apiDocs created here, then moved ${XALANC}/build/docs/xalan-c/ = the HTML documentation tree

    UNIX platforms can build the complete documentation package (web pages plus interactive api reference).

    Windows platforms an only build the basic web pages.

    1. Requires the Xalan executable in the ${PATH} environment.
    2. Requires the libxerces-c.so and libxalan-c.so libraries in a path that is accessible to the Xalan executable.
    3. Requires a current installation of the Doxygen package.
    4. The interactive graphics for apiDocs require the GraphViz (dot) package.
    1. Connect to the ${XALANC}/xdocs/ directory.
    2. Run the make-apiDocs.sh (full graphics) or make-apiDocs-nograf.sh (no graphics).
    3. The script automatically chains to sources/make-book.sh for building the remainder of the documentation.
    4. You can now relocate and package the documentation at ${XALANC}/build/docs/xalan-c/ to your final destination of choice.
    1. Create a %XALANC%\bin\ directory. Then copy the xalan.exe and the DLL libraries for xerces-c and xalan-c into that directory. This is where the make-xalan.bat file expects to find the xalan.exe executable.
    2. Connect to the %XALANC%\xdocs\sources\ directory.
    3. Run the make-book.bat script to create the %XALANC%\build\docs\xalan-c\ documentation.
    4. You can now relocate and package the documentation at %XALANC%\build\docs\xalan-c\ to your final destination of choice.
    WINDOWS has no Doxygen program for building the apiDocs. Building apiDocs requires a Linux or UNIX platform. You might be able to use WINDOWS JavaDocs to get an interactive apiDocs reference. The JavaDocs program is part of the Java Developer's platform.

    Our documentation does not rely on any Java installation.

    The obsolete Apache Java Stylebook program is no longer being used. The StyleBook XML markup has been slightly modified to accommodate standard XSLT stylesheet transformations.

    A standard stylebook.xslt XML transform stylesheet now allows any standard compliant XSLT processor to prepare the basic webpage documents. The resulting documents are in strict XHTML. The source pages have been adjusted so that compliant XML output mode is used and that transitional web browsers are accommodated.

    We also include a DTD library so that the markup source pages can be processed with a validating XML parser. The parser used with the stylebook.xslt stylesheet must accommodate top-level string parameters and the ability to process DTD definitions.

    Our stylebook processing scripts currently expect to use the Apache Xalan-C/C++ command-line executable program.

    ${XALAN}/xdocs/style/dtd/* -- the validation DTD definitions ${XALAN}/xdocs/sources/stylebook.xslt -- the XML StyleBook transform ${XALAN}/xdocs/sources/xalan/* -- the StyleBook XML page content ${XALAN}/xdocs/sources/xalan-graphic/* -- page specific graphics ${XALAN}/xdocs/sources/xslt-resources/* -- logos and css stylesheets ${XALAN}/xdocs/sources/xalan.xml -- the book navigation panel ${XALAN}/xdocs/sources/entities.ent -- book XML general entity definitions ${XALAN}/xdocs/sources/xalan/resources.xml -- general resource links ${XALAN}/build/docs/xalan-c/* -- the StyleBook html transformed pages

    The resulting document from stylebook.xslt is strict XHTML with markup rules that can also be supported on transitional browsers. To guard against XML element collapse, we use the Unicode zero-width-non-joining character to provide non-empty content. Element collapse prevention is not handled by the "stylebook.xslt" transform. The Apache Xalan or xalan.exe programs do not should guard against unwanted element collapse.

    ${XALAN}/xdocs/sources/make-xalan.sh {pagename} -- transform a single page ${XALAN}/xdocs/sources/make-xalan.bat {pagename} -- transform a single page ${XALAN}/xdocs/sources/make-book.sh -- transform an entire book ${XALAN}/xdocs/sources/make-book.bat -- transform an entire book
    xalan-c-1.11/c/xdocs/sources/xalan/resources.xml0000664000175000000640000001232112035043470020632 0ustar stevesamba %externalEntity; ]> xalan-c-1.11/c/xdocs/sources/xalan/license.xml0000664000175000000640000000274312035043470020251 0ustar stevesamba ]>
    • Apache Software License Version 2.0
    • Xalan License Notice
    • Apache Software License Text
    &asfnoticetext; &asflicensetext;
    xalan-c-1.11/c/xdocs/sources/xalan/NOTICE0000664000175000000640000000134612035043470017007 0ustar stevesamba ======================================================================= == NOTICE file corresponding to section 4(d) of the Apache License. == == Version 2.0, in this case for the Apache Xalan distribution. == ======================================================================= Apache XALAN-C Copyright (c) 1999-2012 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). This software is based on the ASF XERCES-C project. Portions of this software were originally based on the following: - software copyright (c) 1999, IBM Corporation. (http://www.ibm.com). Additional copyright submissions and contributions: xalan-c-1.11/c/xdocs/sources/xalan/programming.xml0000664000175000000640000001024112035043470021141 0ustar stevesamba
    • Introduction
    • Pluggable Memory Management
    • More topics

    This section was created to guide users on how to use some of the new features going into the Xalan source code base. Some of the features discussed in this section are based on feedback and questions posted on the xalan-c-users newsgroup. This section will cover the benefits of certain features and provide users with programming hints on how to utilize the features in their applications.

    Pluggable memory management was added as a new feature in Xalan-C Version 1.8;. This feature introduces an object called MemoryManager which allows applications with stricter memory management requirements to utilize a more efficient allocation method. This MemoryManager object can be applied to each processor instance, thus recovery procedures from memory leaks or processor crashes will be applied to the associated instance only.

    The memory management model is similar to the memory management feature provided by the Xerces-C XML Parser.

    To apply memory management to your application, the MemoryManager object needs to be specified in two stages:

    • At initialization phase. The purpose of specifying a MemoryManager object during initialization is to create a separate memory manager for the overall application. Example of how this can be done is shown in the example below

      // Initialization step static void XalanTransformer::initialize(MemoryManager* initMemoryManager=0);
    • Creation of a transformer instance. This creates a unique memory manager for the instance of the processor. This step is optional. If no memory manager is provided, the global heap is used as the memory source. Example of this is shown below:

      // Create instance of XalanTransformer MemoryManager memMgrA; // memory manager object XalanTransformer transformerA(&memMgrA); MemoryManager memMgrB; XalanTransformer transformerB(&memMgrB); XalanTransformer transformerC(&memMgrB); // Uses same memory manager object as transformerB XalanTransformer transformerD; // Uses default static memory manager

    The above method demonstrates how users can apply the basic pluggable memory management feature. Users also have the option of implementing their own memory manager. This can be done by simply writing methods for:

    // Method for allocating memory void* allocate(size_t size);

    and

    // Method for deallocating memory void deallocate(void *p);

    For an example of how to use this feature, please see the SimpleTransform sample that has been provided in the binary distributions.

    Please feel free to give us feedback on what topics you would like to see.

    Send comments to .

    xalan-c-1.11/c/xdocs/sources/xalan/License0000664000175000000640000002613412035043470017412 0ustar stevesamba Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.xalan-c-1.11/c/xdocs/sources/xalan/secureweb.xml0000664000175000000640000004045312035043470020613 0ustar stevesamba
    • XML Parser Threats
    • Resolving External Entities
    • Trusted External Entities
    • Processing Instruction (PI) Threats
    • SOAP Simple Object Access Protocol
    • WSDL Web Service Description Language
    • URI Uniform Resource Identifiers
    • URL Uniform Resource Locators
    • Malformed UTF-8 and UTF-16 Strings
    • Canonical XML Issues
    • XHTML Output Mode - Workaround

    This document goes well beyond XSLT. Use it as a general reference.

    There are numerous security issues and problems that are endemic to the XML architecture. I will try to identify some of the most common issues and threats and describe some mitigation strategies.

    The biggest threat issue is a matter of trust. How well do you trust your sources of XML data? What are the tools that can help increase the trust?

    Most Web Service communications uses HTTP over standard TCP ports. The HTTP protocol on standard TCP ports has free access through business firewalls. How well do your proxy servers handle the Web Service security issues required for your applications?

    How well are your resource identifiers protected? How well do your applications cope with resource identifier spoofing? Can your resource identifiers be trusted by outside clients? Can you trust the credentials of your clients?

    Will the SOAP interface for your Web Service send error messages to an untrusted Web Service address?

    Is your WSDL interface description file readily available for download, thus enabling persons with malicious intent to create targeted attacks on your Web Services?

    Can you trust the client credentials that use your Web Service application?

    There are numerous security issues that are not directly involved in the markup of XML or its processing. These issues relate to infrastructure.

    Can you trust your DNS (Domain Name Service) and reduce its vulnerability to hijacking?

    Are your web servers hardened against known application vulnerabilities?

    Are your applications hardened against cross site scripting and SQL injection?

    Can your client applications trust the scripts that are transmitted as web pages?

    Can your web server trust the scripts that are submitted?

    Is application data sanitized before being consumed by your applications?

    This list will help you find the XML threat vectors that need to be addressed. Some vectors cannot be easily resolved.

    • Resolving External Entities
    • Implicit Trust of Internal DTD
    • Resource Identifier Spoofing
    • Malformed UTF-8 and UTF-16
    • Secure the trust of external DTD descriptions
    • Secure the trust of external Schema definitions
    • Secure the trust of entity import and include constructs
    • Configuration of Entity Resolver Catalogs

    The XML1.0 and XML1.1 standards specify a DOCTYPE format. The processing may uncover significant entity resolver deficiencies.

    <!DOCTYPE name PUBLIC "public-id" "system-id" [internal-DTD]>
    <!DOCTYPE name SYSTEM "system-id" [internal-DTD]>

    XML Parsers MUST process the [internal-DTD] if it exists.

    XML Parsers MAY process the external "system-id" if it can be found.

    XML Parsers MAY process the external "public-id" if it can be found.

    XML Parsers MAY prefer either the "public-id" or "system-id" if both are specified.

    XML Parsers MAY ignore both the "public-id" and "system-id" if present.

    Declaring a parameter entity notation "%entity;" in the [internal-DTD] and expanding the content within the [internal-DTD] will force the XML parser to import the content referenced by the "%entity;" notation.

    Declaring a general entity notation "&entity;" in the [internal-DTD] and expanding the content within the body of the XML document will force the XML parser to import the content referenced by the "&entity" notation.

    The default method of resolving external entities is by resolving entity name strings relative to DNS named hosts and/or path names relative to the local computer system. When receiving XML documents from an outside source, these entity reference locations may be unreachable, unreliable, or untrusted.

    Web Service SOAP XML documents MUST NOT have DOCTYPE definitions. SOAP processors should not process DOCTYPE definitions. The conformance is implementation dependent.

    http://www.w3.org/TR/soap

    The OASIS XML Catalogs specification, if implemented by an application, can specify a set of external entities that can be trusted by mapping known identifiers to local or trusted resources. A secure application should not trust entity identifiers whose resources cannot be localized and secured.

    http://www.oasis-open.org/committees/entity

    A similar method can be designed specifically for each application.

    A trusted application may need to pre-screen any entity definitions in XML before passing the information into the core of the application.

    A trusted application should install some type of entity resolving catalog or database that can be trusted.

    Processing instructions are a mechanism to send specific information into an application. A common processing instruction is a stylesheet declaration. This information is part of an XML document and comes usually after the XML header and before the root element.

    A stylesheet declaration may cause an application to look for an untrusted XSLT stylesheet to use for transformation of the following root element. A standard exists for associating style sheets with XML documents.

    http://www.w3.org/TR/xml-stylesheet

    Examples in the xml-stylesheet recommendation describes how to use the processing instruction to associate CSS stylesheets for XHTML. Applications that use XSLT transformations will interpret the xml-stylesheet processing instruction as the location of a XSLT transformation stylesheet.

    As more processing instructions become standardized and in common use, their threat of misuse increases.

    The SOAP specification explicitly forbids the transport of DOCTYPE definitions and PI processing instructions.

    The SOAP specifies a transport envelope that encapsulates an XML message for transport. SOAP can also handle various transmission status indicators implying confirmation of delivery, error messages, and queue status messages. SOAP transports can be loosely coupled and intermittent. SOAP is used extensively in the design and deployment of Web Service architectures. A companion Web Service specification is WSDL, the Web Service Definition Language.

    The SOAP protocol as widely deployed by Microsoft and other vendors is based on specifications that predate the adoption by the World Wide Web Consortium (W3C). SOAP is not based on Microsoft technology. It is an open standard drafted by UserLand, Ariba, Commerce One, Compaq, Developmentor, HP, IBM, IONA, Lotus, Microsoft, and SAP. SOAP 1.1 was presented to the W3C in May 2000 as an official Internet standard.

    The original SOAP 1.1 standard is associated with this URI namespace prefix.

    http://schemas.xmlsoap.org/soap/

    There are significant changes in naming conventions since SOAP 1.1 was adopted by W3C as a recommended standard. The current iteration is SOAP 1.2 and is associated with this URI namespace prefix.

    http://www.w3.org/2003/05

    The basic security threat to the SOAP architecture is the ability to spoof Web Service addresses and telling a SOAP server to respond to a rogue Web Service address when a mustUnderstand attribute is processed and an error indication is raised.

    Other intelligence that can be obtained might be the location of a public accessible WSDL definition of the messages being transported by SOAP, thus allowing additional malware attacks to be automatically generated.

    WSDL is known as the Web Service Description Language. The WSDL XML document is a an interface description that can be transformed into various programming languages. Such transformed interface descriptions are recognized as Java Interfaces and C++ Virtual Classes.

    The original WSDL 1.1 standard is associated with this URI namespace prefix.

    http://schemas.xmlsoap.org/wsdl/

    The current WSDL 2.0 standard is maintained by W3C in their namespace with prefix.

    http://www.w3.org/

    The WSDL can provide a template for generating a compliant Web Service systems for multiple and hetrogeneous platforms.

    A WSDL document that can benefit developers can also be used by malware and hackers to taylor specific threats against targeted Web Services.

    The SOA (Service Oriented Architecure), SAAS (Software As A Service), PAAS (Platform As A Service) are families of Web Services used as interfaces into what is generally known as Cloud Computing.

    The URI does not need to specify the location of a resource. It merely provides a resource name. A catalog, database, or other mechanism is used to map URIs to resource locations.

    The security issue here is that most URIs are used with a DNS (Domain Name Service) to find a host and path to a resource. The URI is then treated as a URL (Uniform Resource Locator).

    The mitigation of these threats requires diligence of the application architects to ensure an appropriate level of trust for the URIs and URLs used in their applications.

    The transmission media is inherently untrusted. Often SOAP bindings and HTTP transports are used. Web Service addressing is readily spoofed.

    See: URI Uniform Resource Identifiers

    Public Key Infrastructure (X.509) certificates are leased from a certificate authority or are self-signed. The distinguished names and parts thereof are usually rendered in unicode.

    The value of zero is not a valid Unicode character. It is possible to create non-zero UTF-8 and UTF-16 sequences that equate to zero, which is not allowed. Some rogue hackers have successfully obtained wild-card PKI (X.509) certificates by prepending a UTF-8(zero) in a distinguished name when applying for a certificate. Such a certificate could be used to successfully sign anything.

    Applications should not blindly accept UTF-8 and UTF-16 strings without verifying the proper encoding for those strings. Contents that equate to bad Unicode character values should be denied.

    Canonical XML is a tranformation of an XML document into a canonical form useful for signing. This is used in some Web Service security implementations.

    There are several areas where Canonical XML will create XML documents that have severe application problems.

    The number values are rendered in Base-10 as decimal fractions. The computations performed by computers are usually in Base-2 floating point arithmetic. You therefore have truncation or roundoff issues when converting between decimal fractions and Base-2 fractions.

    The canonical process may collapse whitespace and transform multi-character line endings to single-character line endings. When whitespace is significant, the canonical issues for signing can cause problems.

    It is possible to create XHTML documents that will not work with some browsers. The empty <a/> anchor element is not allowed by many browsers, therefore <a></a> is required. A standard XML canonical process may collapse elements with no content into empty elements. The empty paragraph<p/> is disallowed. The <p></p> is supported.

    The World Wide Web Consortium (W3C) has additional detailed discussion of canonicalization issues.

    The Xalan-C/C++ library currently has no XHTML output mode. Since XHTML is to be well-formed XML, the desire is to use the XML output method.

    XHTML is based on HTML version 4.

    Empty elements declared by HTML-4 should have a space before the trailing '/>' markup (i.e. <br /> and <hr />). XML output mode does not normally have this space when using the <xsl:element name="br" /> in your stylesheet. Most modern browsers are ok with no space, but viewing the browser source shows a warning condition.

    Non-empty elements declared by HTML-4 should not be rendered as empty XML elements. If there is no content, the elements should be rendered with both a start-tag and end-tag (i.e. <a name="xxx"></a>) instead of an XML empty-element. XSLT processors usually create an empty-element (i.e. <a name="xxx"/>) when the element being defined has no content other than attributes.

    For XSLT processors creating XML documents for XHTML, you can create what looks like an element with no content by including the &#8204; character (a zero-width non-joining character often known as &zwnj;) as the element text content. This also allows transitional browsers the ability to find the end tag.

    DTD <!ENTITY zwnj "&#8204;"> <a name="marker">&zwnj;</a>

    Transitional XHTML is not usually well-formed XML. It becomes a mix of HTML version 4 and XML markup. Strict XHTML is required to be well-formed XML.

    xalan-c-1.11/c/xdocs/sources/xalan/commandline.xml0000664000175000000640000001440412035043470021112 0ustar stevesamba
    • Using a command-line utility
    • Using the Xalan executable

    To perform a transformation, you can call &xslt4c; from the command line (or script), or from within an application (see Usage Patterns).

    To perform a transformation from the command line or a script, do the following:

    1. Download &xslt4c;.

    2. Set the path/library path to include the Xalan executable and the Xalan and Xerces libraries.

    3. Call the Xalan executable with the appropriate flags and arguments (described below).

    Call the Xalan executable as follows:

    Xalan [options] xmlSource xslStylesheet

    where xmlSource is the XML source document, xslStylesheet is the stylesheet to apply, and [options] are any (or none) of the following:

    OptionDescription
    -aUse stylesheet processing instruction, not the stylesheet argument.
    -e encodingForce the specified encoding for the output.
    -i integerIndent the specified amount.
    -mOmit the META tag in HTML output.
    -o filenameWrite transformation result to this file (rather than to the console).
    -p name exprSet a stylesheet parameter with this expression.
    -t name exprDisplay timing information.
    -u name exprDisable escaping of URLs in HTML output.
    -vValidate the XML source document.
    -A dash as the 'source' argument reads from stdin.
    A dash as the 'stylesheet' argument reads from stdin.
    ('-' cannot be used for both arguments.)

    To display a list of the options call the Xalan executable as follows:

    Xalan -?

    xalan-c-1.11/c/xdocs/sources/xalan/Notice-Issue.txt0000664000175000000640000000232012035043470021144 0ustar stevesambaThe CurrentSVN sources conform to the ASF License version 2.0. The ASF licensing information needs to be updated in the documentation. A copy of The Apache Software Foundation License version 2.0 needs to replace the following file in the repository. xalan/c/trunk/xdocs/sources/xalan/License A NOTICE file needs to be ratified by the XALAN PMC and added to the repository documentation. xalan/c/trunk/xdocs/sources/xalan/NOTICE Here is some possible text for the NOTICE file. ======================================================================= == NOTICE file corresponding to section 4(d) of the Apache License. == == Version 2.0, in this case for the Apache Xalan distribution. == ======================================================================= Apache XALAN-C Copyright (c) 1999-2011 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). This software is based on the ASF XERCES-C project. Portions of this software were originally based on the following: - software copyright (c) 1999, IBM Corporation. (http://www.ibm.com). Additional copyright submissions and contributions: xalan-c-1.11/c/xdocs/sources/xalan/charter.xml0000664000175000000640000004614012035043470020256 0ustar stevesamba

    The following charter applies to all Xalan projects.

    1.1 Apache Xalan is a collaborative software development project dedicated to providing robust, full-featured, commercial-quality, and freely available XSLT support on a wide variety of platforms. This project is managed in cooperation with various individuals worldwide (both independent and company-affiliated experts), who use the Internet to communicate, plan, and develop XSLT software and related documentation.

    1.2 This charter briefly describes the mission, history, organization and processes of the project.

    2.1 Apache Xalan exists to promote the use of XSLT. We view XSLT (Extensible Stylesheet Language Transformations) as a compelling paradigm that transforms XML documents, thereby facilitating the exchange, transformation, and presentation of knowledge. The ability to transform XML documents into usable information has great potential to improve the functionality and use of information systems. We intend to build freely available XSLT processing components in order to engender such improvements.

    2.2 Apache Xalan consists of a set of components that transform XML documents. Where appropriate, these components plug into other XML components using standard APIs (formal, de facto, or proposed). The components must be high performance, reliable, and easy to use. Where inter-related, the components must be part of an underlying architectural orchestration that will allow them to work together without major negotiations or breakage.

    2.3 We believe that the best way to define this XML transformation architecture is by having both individuals and corporations collaborate on the best possible infrastructure, APIs, code, testing, and release cycles. Components must be vendor neutral and usable as core components for all.

    2.4 In order to achieve a coherent architecture between Apache Xalan components and other components and applications, standards (formal or de facto) will be used as much as possible for both protocols and APIs. Where appropriate, experiences and lessons learned will be fed back to standards bodies in an effort to assist in the development of those standards. We will also encourage the innovation of new protocols, APIs, and components in order to seed new concepts not yet defined by standards.

    3.1 This project was established under the direction of the Apache Software Foundation in October 2004 to facilitate joint open-source development. Prior to October 2004 this project was a subproject of the Apache XML project.

    4.1 The ASF Board. The management board of the Apache Software Foundation.

    4.2 The Project. The Apache Xalan project; intended to refer to the source code, website, subprojects, and community that are Apache Xalan.

    4.3 Subproject. The Apache Xalan project may have subprojects; a subproject is responsible for a component or application whose scope is well defined.

    4.4 Product. Some deliverable (usually a binary or source package) that a subproject makes available to the public. Subprojects may have multiple products.

    4.5 Release. A specific version of a product. Subprojects may have multiple releases of a given product.

    4.6 Contributor. Anyone who makes a contribution to the development of the Apache Xalan project.

    4.7 Committer. The Apache Xalan project has a set of committers. Committers are contributors who have read/write access to the source code repository.

    4.8 PMC. The PMC (Project Management Committee) is the group of people that form the entity that makes decisions and controls the project. Individual people or committers do not control the project.

    5.1 The Apache Xalan project is managed by a core group of committers known as the Project Management Committee [PMC]. Subprojects, if any, much each have at least one representative committer on the PMC.

    5.2 The activities of the PMC are coordinated by the Chairperson, who is an officer of the corporation and reports to the Apache Board. The Chairperson will, on the request of the Apache Board, provide reports to the Board on issues related to the running of the Apache Xalan project.

    5.3 The PMC has the following responsibilities:

    a) Accepting new subproject proposals, formally submitting these proposals for Apache Xalan committer vote, and creating the subproject (see SUBPROJECTS below). This is done in collaboration with the Incubator (see http://incubator.apache.org).

    b) Facilitating code or other donations by individuals or companies, in collaboration with the Incubator.

    c) Resolving license issues and other legal issues in conjunction with the ASF board.

    d) Ensuring that administrative and infrastructure work is completed.

    e) Facilitating relationships among projects and subprojects.

    f) Facilitating relationships between the Apache Xalan project and the external world.

    g) Overseeing Apache Xalan to ensure that the mission defined in this document is being fulfilled.

    h) Resolving conflicts within the project.

    i) Reporting to the ASF board (through the Chair) on the progress of the project.

    j) Propose new releases of projects or subprojects. Such proposals pass if 75% of the PMC members vote in agreement.

    5.4 A contributor can, at any time, nominate a committer to be on the PMC, by calling for a vote. If two thirds, or more, of the active committers vote in agreement then the nomination is given to the PMC. The person becomes a new PMC member if 75% or more of the PMC members vote in agreement, with no dissenting votes among the PMC members. This individual should be elected based on merit for the evolution of the project and demonstration of commitment.

    5.5 In cases where the subproject is unable to directly provide a representative on the PMC, another member of the PMC will be required to represent that subproject on the PMC. This will be strongly discouraged. It is preferable that all subprojects have direct representation on the PMC.

    5.6 At least every twelve months, or more often if directed by the ASF board, the PMC members will elect a Chairperson from among themselves; the person with the most votes from the other PMC members is recommended to the ASF board for the position of Chairperson, and with the ASF board's approval, becomes the Chairperson for the new term.

    5.7 Upon agreement by the Apache Board, the recommended Chairperson will, if they are not already, be appointed an officer of the corporation. See http://www.apache.org/foundation/bylaws.html for more information.

    5.8 The PMC is responsible for maintaining and updating this charter. Development must follow the process outlined below, so any change to the development process necessitates a change to the charter. Proposed changes to this charter by the PMC are passed if 75% or more of the PMC members approve the proposal, with no dissenting votes. However, an active Apache Xalan committer may challenge the change.

    5.9 An active Apache Xalan committer may challenge a change to this charter proposed by the PMC within two weeks of its proposal. When challenged the proposed change is passed if within two weeks of the challenge the active committers approve the change with a two-thirds majority vote.

    5.10 The PMC ultimately makes the decisions for the project, not the individual people. At any time the PMC can reject patches or other contributions to the project if 75% or more of the PMC members vote to reject the contribution.

    5.11 A PMC member may resign their membership at any time. However, in the unlikely event that a member of the PMC becomes disruptive to the process, such as ceasing to take part in PMC votes, the PMC member may be removed from the PMC by a vote among the other PMC members. The PMC member is removed if 75% or more of the other PMC members approve the removal, with no dissenting votes among the other PMC members.

    5.12 A person remains a PMC member until he or she resigns, is removed by a vote from among the other PMC members, dies or is incapacitated.

    6.1 A subproject of the Apache Xalan project is responsible for a component or application whose scope is well defined. Each subproject has its own set of developers, and is responsible for approving its own committers. Apache Xalan is composed of subprojects which fit into one of two categories:

    (a) An XSLT processor implementation in some particular programming language. There may be multiple processors for a given language if the API's the processors support are sufficiently dissimilar. At the time of writing, there is one processor for C++ and two for Java.

    (b) A set of components which are used in related applications and are tightly bound, usually through internal API's, to one (or more) of the processor subprojects.

    6.2 A new subproject proposal is submitted to the PMC, and then accepted by a majority Apache Xalan project active committer vote within two weeks after the proposal.

    6.3 Each subproject must have a set of requirements as well as an up-to-date release plan and design document on its dedicated web page.

    6.4 It is recommended that each subproject have a smoke-test system that works at least as a basic integration test.

    6.5 A subproject may be removed if 75% or more of the PMC members approve the proposal, there are no dissenting votes among the PMC members, and no challenges by active Apache Xalan project committers within two weeks after the proposal. A contributor may challenge the proposed removal of a subproject within two weeks of the proposal. In this case the proposed removal is passed if within two weeks of the challenge the active committers approve the removal with a two-thirds majority vote. Any subproject removal is subject to the approval of the ASF board.

    7.1 Like all Apache projects, the Apache Xalan project is a meritocracy -- the more work you do, the more you are allowed to do.

    7.2 People who make regular and substantial contributions may become committers as described below. Contributions include: participating in mailing lists, reporting issues or bugs in issue-records in the Issue Database, providing patches, and proposing changes to a product.

    7.3 In order to ensure that all code contained in the Apache Xalan project's code repository is free of licensing, intellectual property and patent issues, any person wishing to contribute a new feature to Apache Xalan must either sign:

    a) If contributing as an individual, sign the "Individual Contributor License Agreement (CLA)" (http://www.apache.org/licenses/icla.txt) and file a copy with the Secretary of the Corporation; or

    b) If making the contribution as part of their employment responsibilities, sign the "Corporate CLA (CCLA)", (http://www.apache.org/licenses/cla-corporate.txt) and file a copy with the Secretary of the Corporation.

    7.4 If the contribution in question is a small bugfix, the contributor need not sign a CLA, but need only provide the following information, attaching it to the communication containing the patch:

    a) Name and employer

    b) Are you the author of the code being contributed?

    c) Do you have the right to grant the copyright and patent licenses for the contribution that are set forth in the ASF v.2.0 license (http://www.apache.org/licenses/LICENSE-2.0)?

    d) Does your employer have any rights to code that you have written, for example, through your contract for employment? If so, has your employer given you permission to contribute the code on its behalf or waived its rights in the code?

    e) Are you aware of any third-party licenses or other restrictions (such as related patents or trademarks) that could apply to your contribution? If so, what are they?

    8.1 The Apache Xalan project has a set of committers. If there are subprojects, each subproject will also have a set of committers. Committers are contributors who have read/write access to the source code repository. New committers are added when a contributor is nominated by a committer and approved by at least 50 percent of the active committers for that subproject with no opposing votes. In most cases, new committers will already be participating in the development process by submitting suggestions and/or fixes via issue-records in the Issue Database or mailing lists.

    8.2 For the purposes of voting, committers will be classed as "active" or "inactive". Only active committers will be included in the totals used to determine the success or failure of a particular vote.

    8.3 Committers remain active as long as they are contributing code or posting to the project or subproject mailing lists. If a committers has neither contributed code nor posted to the mailing lists in 3 months, a member of the PMC will e-mail the committer, the project or subproject development list, and the PMC mailing list notifying the committer that they are now in inactive status.

    8.4 An inactive status will not prevent a committer committing new code changes or posting to the mailing lists. Either of these activities will automatically re-activate the committer for the purposes of voting.

    9.1 The Apache Xalan project relies on the Apache XML project and the Apache Infrastructure project for the following:

    a) Issue Database -- This is a system with issue-records, for tracking bugs, issues, features and requests.

    b) Repository -- The xalan.apache.org project has its set of parts that make up the software, and these parts are managed in a repository. Committers make changes to the source code, documentation and other associated parts that are stored in the repository. Any subproject will have its set of committers for its repository.

    c) Website -- The website xalan.apache.org will contain information about the Apache Xalan project and its subprojects, including documentation, downloads of releases, and this charter.

    d) Mailing Lists -- appropriate mailing lists will be created at the discretion of the PMC. Such mailing lists could for example include: a PMC mailing list, a general mailing list, project or subproject public developer mailing lists, project or subproject public user mailing lists.

    10.1 All contributions to the Apache Xalan project adhere to the "Apache Software Foundation License, Version 2.0" (http://www.apache.org/licenses/LICENSE-2.0). All further contributions, including patches, must be made under the same terms.

    10.2 When a committer is considering integrating a contribution from a contributor who has no CLA on file with the Corporation, it is the responsibility of the committer, in consultation with the PMC, to conduct due diligence on the pedigree of the contribution under consideration; see sections 7.3 and 7.4.

    11.1 For a committer to commit a change to the MAIN branch of the repository an issue-record must be opened in the "Issue Database" to track the change. The status of the issue must be kept up to date.

    11.2 No voting is required to commit changes, but one other active committer must review the changes. Before the changes are committed, the reviewer must add a comment in the corresponding issue-record indicating that they have reviewed and approve the changes.

    11.3 Issue-records and reviews are not required for committing changes to other experimental branches (not the MAIN branch) in a repository.

    12.1 Unless otherwise stated in this mission, votes cast on Apache Xalan proposals must be made within two weeks of the proposal. A challenge to a proposal must also be made within two weeks of the proposal. Likewise, votes cast on challenges must be cast within two weeks of the challenge.

    13.1 The Apache Xalan project should work closely with other Apache projects, such as Xerces and XML, to avoid redundancy and achieve a coherent architecture among Apache Xalan and these projects.

    xalan-c-1.11/c/xdocs/sources/xalan/releasenotes.xml0000664000175000000640000006536612035043470021332 0ustar stevesamba ]>

    Release notes for &xslt4c-current;

    • Status
    • Rebuilding &xslt4c; and the sample applications
    • Getting in touch
    • History of software changes
    • Changes for &xslt4c; version 1.8
    • Bug reporting
    • Version of &xml4c; to use
    • To-do tasks for future &xslt4c; releases

    Major updates since version 1.7 include:

    • .
    • Upgrade from Xerces-C 2.4 to Xerces-C 2.5.
    • Provide build support for Cygwin and HP-UX 11.00 on Itanium. Although binary distributions are not provided for the Cygwin environment and HP-UX 11.00 on Itanium platform, the build configuration files provided in the source distribution can be used to build on these platforms.
    • Project files for supporting Microsoft Visual Studio .NET. Although a binary distribution for the Microsoft Visual Studio .NET is not provided in this release, Visual Studio solution files are provided in the Windows source distribution for those who choose to build on this platform. Please see "Step for doing a Windows Build with Visual Studio .NET" for details.
    • Additional changes to Xerces Deprecated DOM support. This is another step towards phasing out the support for Xerces Deprecated DOM. Users are encouraged to modify their applications to interface with the new Xerces DOM support. For more information on the effects of these changes to your build environment, please see "Steps for doing a Build with Xerces Deprecated DOM Support"
    • Implemented optimizations to significantly improve the throughput of the ICU-enabled "format-number" function.
    • Changes in the XML Serializer. The serializer will no longer put a newline after the xml header tag unless indent="yes". See bugzilla 24304 and 28386.

    All known &xslt4c; bugs are listed in . For a list of open bugs with links to each bug report, see . If you find a new bug, please enter a XalanC bug report in this database.

    Before you can enter your first bug report, you must submit your email address to Jira and receive a password.

    We strongly encourage you write patches for problems you find and submit them to xalan-dev@xml.apache.org. We review the patches we receive to make sure they do not break something else, and (assuming they do not) include them in our next release. In the interest of fixing bugs, adding enhancements, and addressing outstanding design issues, we sincerely want (and need!) your active participation in the ongoing development of Xalan.

    &status-c;
    • Rebuilding &xslt4c;
    • Rebuilding sample applications
    • What you need from the distributions
    • Steps for doing a Windows Build
    • Steps for doing a Windows Build with Visual Studio .NET
    • Steps for doing a UNIX build
    • Steps for doing a Build with Message Localization Support
    • Steps for doing a Build with Xerces Deprecated DOM Support

    To rebuild &xslt4c;, you need the &xslt4c; source files, the &xml4c; header files, and for Windows the &xml4c; .lib file. If you want to rebuild with the ICU, you will need to download the ICU source package to build the ICU libraries.

    You can also download &xslt4c; source distributions from : &xslt4c-dist;-src.zip and &xslt4c-dist;-src.tar.gz. &xml4c; source distributions are available from : &xml4c-dist;-src.zip and &xml4c-dist;-src.tar.gz.

    Keep in mind that at any given point in time the &xslt4c; and &xml4c; source trees in the Apache XML repository may not be consistent. When we release a version of &xslt4c; we certify that it is compatible with a given version of &xml4c;. To be safe, use the Xerces distributions that we certify as compatible. Reminder: &xslt4c-current; is compatible with &xml4c-used;.

    For information on using the , see Using the ICU. The recommended version of ICU for &xslt4c-current; is &icu-current;. You may be able to use newer ICU releases as they appear.

    To build &xslt4c; on Windows, you need &xml4c; and MS Visual C++ 6.0 installed with Service Pack 5 for Visual C++ and Visual Studio .NET.

    If you are using a different Service Pack, you must rebuild all of the Xerces and Xalan binaries.

    Before you do the following, be sure you have provided Visual C++ the paths to the Xerces headers and libraries.

    1. Create the ICUROOT environment variable and set it the the path of the ICU root.
    2. Create the XERCESCROOT environment variable and set it to the path of the root of &xml4c;.
    3. Use Visual C++ to open the Xalan workspace (.dsw) from the &xslt4c-win_root;\Projects\Win32\VC6. If you are building with ICU, then use XalanICU.dsw. Otherwise, open the Xalan.dsw workspace.

      You may need to restart Visual Studio .NET in order for ICUROOT and XERCESCROOT to take effect.
      As an alternative method to the steps described above, would be to go to "Tools" and select "Options" from Visual C++. From the "Options" window, click on the "Directories" tab and do the following:
      1. Show Directories for: Executable files. Add the Xerces bin directory to the list.
      2. Show Directories for: Include files. Add the Xerces include directory to the list. If you are building with ICU, add the ICU include directory to the list as well.
      3. Show Directories for: Library files. Add the Xerces lib directory to the list. If you are building with ICU, add the ICU lib directory to the list as well.
    To recompile existing applications without changing your source code, be sure to modify your Project settings to pick up the Xalan headers in its new location. (see image below)

    Visual C++ 6.0 Include Directories change

    For users who want to build with Visual Studio .NET,

    1. Create the ICUROOT environment variable and set it the the path of the ICU root.
    2. Create the XERCESCROOT environment variable and set it to the path of the root of &xml4c;.
    3. Use Visual Studio .NET to open the Xalan solution (.sln) from the &xslt4c-win_root;\Projects\Win32\VC7. If you are building with ICU, then use XalanICU.sln. Otherwise, open the Xalan.sln solution file.

      You may need to restart Visual Studio .NET in order for ICUROOT and XERCESCROOT to take effect.
      An alternative method to the steps described above, would be to go to "Tools" and select "Options" from Visual Studio .NET. From the "Options" window, click on the "Projects" folder to expand the list. Select "VC++ Directories" from the list and do the following:
      1. Show Directories for: Executable files. Add the Xerces bin directory to the list.
      2. Show Directories for: Include files. Add the Xerces include directory to the list. If you are building with ICU, add the ICU include directory to the list as well.
      3. Show Directories for: Library files. Add the Xerces lib directory to the list. If you are building with ICU, add the ICU lib directory to the list as well.
    To recompile existing applications without changing your source code, be sure to modify your Project settings to pick up the Xalan headers in its new location. (see image below)

    Visual Studio .NET Include Directories change

    For users who want to build in the UNIX environment,

    1. The Xalan build files are written for GNU make, and will not work with other make utilities.

    2. Set the XERCESCROOT environment variable to the path to the root of &xml4c;.

    3. Set the XALANCROOT environment variable to the path to the c directory in the root of the &xslt4c; distribution. For example, if the distribution is located in "/home/mydir", you would set the XALANCROOT to "/home/mydir/&xslt4c-unix_root;".

    4. (Optional) If you are including the ICUBridge, install the ICU, use the shell to define XALAN_USE_ICU and to set the ICUROOT environment variable to the path to the ICU root. For more information, see (see Using the ICU). Note that building Xalan with ICU requires that Xerces must also be built with ICU.

    5. Change directory to XALANCROOT. You can also build Xalan-C outside of the source tree, but you will need to adjust the path to the runConfigure script in the next step.

    6. Run the runConfigure utility and provide the platform, C compiler, and C++ compiler flags as indicated below. The runConfigure utility is used to generate the appropriate Makefile for the desired build platform based on the options specified by the user. Valid options for the runConfigure utility are:

      ./runConfigure -p <value> -c <value> -x <value> [-[flag] <value>]

      flagDescription
      pBuild platform. Option must be provided by user. Valid values
      include: aix, linux, freebsd, netbsd, solaris, hp-10, hp-11, hp-11-ia64, irix,
      tru64, macosx, cygwin.
      cC compiler name. Example: gcc, cc, c89, xlc_r, etc.
      xC++ compiler name. Example: g++, xlC_r, CC, etc.
      dIndicates build is a debug build. Takes no values. Default is no
      debug.
      tTranscoder to use. Valid value is 'icu'. Default is null.
      mType of localization support method. Valid values include: inmem,
      icu, and nls. Default is inmem.
      MLocale for Message Localization Support. Default is "en_US"
      rThreads option. Valid values include: pthread or dce. Default is
      dce
      bSpecify whether it is a 32-bit or 64-bit build. Valid values are 32
      and 64. Default is 32-bit
      PInstall root directory. Used if invoking build with gmake install or
      gmake install-package. Default install root directory is /usr/local
      lExtra link options other than the default. Default is null
      zExtra compiler options other than the default. Default is null
      CExtra configuration options.
      hTo get help on the above commands. Default is no help.

      Linux using GCC:  ./runConfigure -p linux -c gcc -x c++
      Linux using the Intel compiler:  ./runConfigure -p linux -c icc -x icpc
      AIX (32-bit):    ./runConfigure -p aix -c xlc_r -x xlC_r

      AIX (64-bit):    ./runConfigure -p aix -c xlc_r -x xlC_r -b 64

      Cygwin (32-bit):  ./runConfigure -p cygwin -c gcc -x g++

      HP-UX 11 (32-bit):  ./runConfigure -p hp-11 -c cc -x aCC

      HP-UX 11 (64-bit):  ./runConfigure -p hp-11 -c cc -x aCC -b 64

      HP-UX 11 for Itanium (32-bit):  ./runConfigure -p hp-11-ia64 -c cc -x aCC

      HP-UX 11 for Itanium (64-bit):  ./runConfigure -p hp-11-ia64 -c cc -x aCC -b 64

      Solaris (32-bit):  ./runConfigure -p solaris -c cc -x CC

      Solaris (64-bit):  ./runConfigure -p solaris -c cc -x CC -b 64

      If you choose to install the distribution after building the libraries and executables, then you will need to indicate where you would like the distribution to be installed. To specify the install directory for your distribution, specify the flag -P <install directory>. For example, building and installing on the AIX platform:

      ./runConfigure -p aix -c xlc_r -x xlC_r -P $HOME/my_xalan

      The standard binary directories bin, lib, and include are created in the specified directory only if the install or install-package option is specified in the build process.

      To see the other runConfigure flags you may include, use the help flag:

           ./runConfigure -h

    7. Purge the previous build:

           make clean

    8. Run the new build:

           make
      or
           make targ

      where targ can be one of:
      targDescription
      allBuild the libraries and Xalan executable. This is the default target
      if no targ is specified.
      cleanDeletes existing binaries, executables, libraries, tests, and
      samples.
      installBuild the library, executables and copy them (along with
      the header files) the specified install location.
      install-packageInstalls the library, executables, samples to the
      specified location.
      SamplesBuilds the samples.
      TestsBuilds the tests.
    To recompile existing applications without changing your source code, be sure to modify the command line in your Makefile to pick up the Xalan headers from it's new location. e.g: if your xalan source location is in /home/&xslt4c-unix_root;,


           CC ... -I/home/&xslt4c-unix_root;/src -I/home/&xslt4c-unix_root;/src/xalanc mysrc.cpp

    Message Localization Support is a new feature to allow users to build &xslt4c; such that diagnostic messages are issued in the language of their choice. Message localization support comes in three flavours:

    • Building static messages in the form of a library (DLL or shared object) which can be bound to the Xalan executable. This method is referred to as "in memory". By default, &xslt4c; is built using "in memory" method.
    • Building messages in the form of a library using localization support provided by the International Components for Unicode (ICU).
    • Building messages in the form of a message catalog. This method utilizes the localization support provided by the Unix National Language Support (NLS) system. This method is supported for UNIX platforms only.

    Regardless of which method you choose, a message file containing translated messages in the language of your choice must be provided. The standard message file provided in the &xslt4c; version 1.8 source package is in XML Localization Interchange File Format (XLIFF) format and conforms to the XLIFF 1.1 standard (please see http://www.oasis-open.org/committees/xliff/documents/xliff-specification.htm for more information.) All message files must be written and conform with the XLIFF 1.1 standard.

    Once an XLIFF message file has been created, the XLIFF file should be stored under &xslt4c-unix_root;/src/xalanc/NLS/<locale_name> directory (for example, the default XLIFF message file provided is XalanMsg_en_US.xlf). To build, you will need to follow the same steps as shown above for building in Unix or Windows but with a small change.

    For building on Windows platform with "In Memory" method:

    1. Create the environment variable XERCESCROOT and set it to the path to the root of &xml4c;.
    2. Create the environment variable ICUROOT and set it to the path to the ICU root.
    3. Open the Xalan.dsw workspace using Microsoft Visual C++. The "inmem" localization method should be configured by default.
    4. Select the Localization project, and go to Settings and click on the "General" tab.Verify the build command line to use "nmake /f BuildMessages.mak TYPE=inmem LOCAL=en_US"
    5. Run "Build all" with the configuration of your choice.

    For building on the Windows platform with ICU method:

    1. Create the environment variable XERCESCROOT and set it to the path to the root of &xml4c;.
    2. Create the environment variable ICUROOT and set it to the path to the ICU root.
    3. Open the XalanICU.dsw workspace using Microsoft Visual C++.
    4. Select the AllInOneWithICU project, and ensure that the project depends on the LocalizationWithICU project.
    5. Select the LocalizationWithICU project, and go to Settings and click on the "General" tab. Modify the build command line to use "nmake /f BuildMessages.mak TYPE=icu LOCAL=en_US"
    6. Open the tools.ini file under Projects\Win32\VC6\Utils\Localization and add the ICU root directory to the ICUROOT variable setting.
    7. Run "Build all" with the configuration of your choice.

    For building on the Unix platform:

    1. Repeat steps 1 through 5 as outlined under "Steps for doing a UNIX Build"
    2. Run the runConfigure and provide the platform, C compiler, C++ compiler, the message locale system flavour you are intending to build, and the locale support.

      Example 1: to use the NLS method for localization support using the default locale en_US:

      AIX (32-bit):  ./runConfigure -p aix -c xlc_r -x xlC -m nls

      AIX (64-bit):  ./runConfigure -p aix -c xlc_r -x xlC_r -b 64 -m nls

      Example 2: to use the 'icu' method for localization support using the locale fr_FR:

      AIX (32-bit):  ./runConfigure -p aix -c xlc_r -x xlC_r -m icu -M fr_Fr

      AIX (64-bit):  ./runConfigure -p aix -c xlc_r -x xlC_r -b 64 -m icu -M fr_Fr

    3. Perform steps 7 and 8 as outlined under "Steps for doing a UNIX Build"

    After &xslt4c; and associated libraries have been successfully built, the message catalog will be stored in the directory &xslt4c-unix_root;/bin.

    Localization Build TypeFile Name
    ICU or "in memory" method:libxalanMsg18.so (for UNIX)
    XalanMessages_1_8.dll and XalanMessages_1_8.lib (for Windows)
    NLS method:xalanMsg1_8.cat can be found in $XALANCROOT/nls/<locale_name>/ directory

    The location of the message library, &xslt4c; and &xml4c; binaries need to be added to the PATH and library path variables. Depending on the Message Localization Support method you've chosen, the following steps will need to be performed such that &xslt4c; will be able to utilize the message library.

    • For an "in memory" or "icu" build, the location of the &xslt4c; and &xml4c; executables need to be added to the PATH variable. The location of the message library will need to be added to:
      • the LIBPATH variable for AIX users
      • the LD_LIBRARY_PATH variable for RedHat, SuSE, and Solaris users
      • the SHLIB_PATH variable for HP-UX users.
    • For an NLS build, the message catalog will need to be added to the NLSPATH.

    If you application is dependent on the XercesBridge classes to interface with the deprecated Xerces DOM, then the following steps must be taken.

    For a Windows build using Microsoft Visual C++ version 6.0:

    1. Open the Xalan.dsw workspace
    2. Go to "Projects" and select "Settings". From the "Project Settings panel", highlight the AllInOne project.
    3. Click on the "C/C++" tab on the right hand side. From the "Category" pull down menu, scroll down to find "Preprocessor" and click to highlight this category.
    4. Under the "Preprocessor Definitions" box, add "XALAN_BUILD_DEPRECATED_DOM_BRIDGE" to the list of definitions.
    5. Rebuild &xslt4c; as described under "Steps for doing a Windows Build"

    For a UNIX build, the following parameter should be added to your runConfigure step: -z -DXALAN_BUILD_DEPRECATED_DOM_BRIDGE. for example,

        ./runConfigure -p aix -c xlc_r -x xlC_r -z -DXALAN_BUILD_DEPRECATED_DOM_BRIDGE

    In the 32-bit Windows distribution, all of the sample applications can be built from the Xalan.dsw Visual C++ workspace.

    The Makefile that come with the UNIX distributions include targets for rebuilding one or all of the sample applications . To rebuild one or more sample applications, go to the root directory of your source package or the samples directory of your binary package, and run

         gmake Target

    where Target is Samples (all the samples), ApacheModuleXSLT, CompileStylesheet, DocumentBuilder, ExternalFunctions, ParsedSourceWrappers, SerializedNodeSet, SimpleTransform, SimpleXPathAPI, SimpleXPathCAPI, StreamTransform, ThreadSafe (Windows only), TraceListen, TransformToXercesDOM, UseStylesheetParam, XPathWrapper, XalanTransform, or XalanTransformerCallback.

    For information on building Apache Module, see ApacheModuleXSLT

    Your feedback is more than welcome. Offers of help are even more so! Perhaps you would like to contribute to the ongoing development, testing, or documentation of &xslt4c;.

    Please email your comments, questions, suggestions, bug reports, and offers to help to .

    The following sections list the changes in each release since &xslt4c; version 0.40.0.

    &history-c;
    xalan-c-1.11/c/xdocs/sources/xalan/extensions.xml0000664000175000000640000003006312035043470021022 0ustar stevesamba
    • Introduction
    • Implementing an extension function
    • Installing an extension function
    • Using an extension function

    At times, you may want to call your own custom C functions from a stylesheet. For these situations, &xslt4c; supports the creation and use of extension functions. &xslt4c; also provides a library of extension functions for your use.

    You can think of extension functions as extending the core library of functions that XPath provides. Like the XPath functions, an extension function returns an XObject, which may contain a value of any of the five XSLT data types: node-set, result-tree-fragment, string, boolean, or number.

    You can send arguments to an extension function in the form of XPath expressions, literals (for string, boolean, and number), the values returned by other functions, and XSL variables or parameters set to any of the preceding.

    For an example that implements, installs, and uses three extension functions, see the External Functions sample.

    &xslt4c; does not support extension elements.

    Like the standard XPath functions, the functions you create derive from the Function base class. Set up your extension function class as follows:

    1. The body of a function is the execute() method. Use the appropriate XObjectFactory method -- createNumber() in the example below -- to create an XObject corresponding to the XSLT data type the function returns.

    2. Implement a clone() method to enable Xalan to create and maintain a copy of the extension function.

    3. (Optional) As Xalan does for the XPath functions, you may want to prevent the compiler from generating an assignment or equality operator for this function.

    These features all appear in the following example.

    // Base header file. Must be first. #include <xalanc/Include/PlatformDefinitions.hpp> #include <cmath> #include <ctime> #include <xercesc/util/PlatformUtils.hpp> #include <xalanc/XalanTransformer/XalanTransformer.hpp> #include <xalanc/XPath/XObjectFactory.hpp> XALAN_CPP_NAMESPACE_USE // This class defines a function that will return the square root // of its argument. class FunctionSquareRoot : public Function { public: /** * Execute an XPath function object. The function must return a valid * XObject. * * @param executionContext executing context * @param context current context node * @param opPos current op position * @param args vector of pointers to XObject arguments * @return pointer to the result XObject */ virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* /* context */, const XObjectPtr arg, const Locator* /* locator */) const { if (args.size() != 1) { executionContext.error("The square-root() function takes one argument!", context); } assert(args[0] != 0); // Use the XObjectFactory createNumber() method to create an XObject // corresponding to the XSLT number data type. return executionContext.getXObjectFactory().createNumber( sqrt(args[0]->num())); } /** * Implement clone() so Xalan can copy the square-root function into * its own function table. * * @return pointer to the new object */ // For compilers that do not support covariant return types, // clone() must be declared to return the base type. #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionSquareRoot* #endif clone() const { return new FunctionSquareRoot(*this); } private: // The assignment and equality operators are not implemented... FunctionSquareRoot& operator=(const FunctionSquareRoot&); bool operator==(const FunctionSquareRoot&) const; }

    XalanTransformer provides methods for installing and uninstalling external functions:

    • installExternalFunction() makes the function available in the current instance of XalanTransformer. Use uninstallExternalFunction() to remove the function.

    • installExternalFunctionGlobal() makes the function available globally. Use uninstallExternalFunctionGlobal() to remove the function. The global install and uninstall operations are not thread-safe. However, all global functions should be thread-safe, because multiple threads could call a particular function instance at the same time.

    These methods include arguments for the namespace, the function name, and the function implementation.

    When you install an extension function, the function inhabits the namespace you designate. For information about XML namespaces, see Namespaces in XML.

    The following code fragment installs locally the square root function defined above, and binds it to the extension-function name "square-root" in the namespace "http://MyExternalFunction.mycompany.org" so it can be accessed from stylesheets. Keep in mind that the function name does not need to be the same as the name of the function class, and that a function name may be used more than once provided that each function with that name is installed in a different namespace.

    #include <xalanc/Include/PlatformDefinitions.hpp> #include <xercesc/util/PlatformUtils.hpp> #include <xalanc/XalanTransformer/XalanTransformer.hpp> // You have created a header file for FunctionSquareRoot. #include <MyFunctions/FunctionSquareRoot.hpp> // The namespace... const XalanDOMString theNamespace("http://MyExternalFunction.mycompany.org"); theXalanTransformer.installExternalFunction(theNamespace, XalanDOMString("square-root"), FunctionSquareRoot());

    For an example that installs three functions, see the External Functions sample.

    To use the extension function in a stylesheet, you must do the following:

    1. Declare the extension function namespace.

      xmlns:prefix=URI

      The prefix identifies the namespace, and URI matches the namespace specified when the function is installed.

      By default, namespace declarations are included in the transformation output. To exclude namespaces from the output, use

      exclude-result-prefixes="prefix-1 prefix-2 ..."

      in the stylesheet element or

      xsl:exclude-result-prefixes="prefix-1 prefix-2 ..."

      in a literal result element or extension element.

    2. Call the extension function in the same manner you would call an XPath function. The function name you use in the stylesheet is a Qualified Name (QName) made up of the prefix you declared in step 1 and the function name you specified when you installed the function.

      You can use XPath expressions, literals (for string, boolean, and number), and values returned by other functions to specify function arguments.

    Suppose, for example, you are working with XML documents containing area elements like <area value="397"/>, where the value attribute identifies the area of a square.

    The following stylesheet declares the square-root function namespace (the prefix is up to you), instructs the processor not to copy the namespace declaration to the result tree, and uses the square-root function to return the square root of //area/@value:

    <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:external="http://ExternalFunction.xalan-c.xml.apache.org" exclude-result-prefixes="external"> <xsl:template match="//area"> <out> The area of the square is <xsl:value-of select="@value"/> square units. The length of each side is <xsl:value-of select="external:square-root(@value)"/> units </out>

    This stylesheet converts <area value="397"/> into the following output:

    <out> The area of the square is 397 square units. The length of each side is 19.9249 units. </out>

    For a slightly more complex variation on this example, see the External Functions sample.

    Please keep in mind that all LocationPath expressions return a node-set, even if the expression only returns a single attribute or a text node (node-sets with one member). You can use the XSLT string() function to convert a node-set value to string, and the number() function to convert a node-set value to number (a double).

    If you pass a node-set to an extension function, be sure to set up the function to process a node-set.

    Suppose, for example, you have a ProcessNodes function class that uses

    const NodeRefListBase& theNodeList = args[0]->nodeset();

    in the execute() method to get a reference to the node-set.

    Assuming you install the function as "ProcessNodes" and use the "node-ext" prefix in a stylesheet to refer to the ProcessNodes function namespace, any of the following function calls are syntactically possible:

    <!--Process the current node-->
    <xsl:variable name="success" select="node-ext:ProcessNodes(.)"/>

    <!--Process all nodes in current context-->
    <xsl:variable name="success" select="node-ext:ProcessNodes(*)"/>

    <!-- Process all nodes -->
    <xsl:variable name="success" select="node-ext:ProcessNodes(/*)"/>

    <!--Process the foo/baz nodes in current context -->
    <xsl:variable name="success" select="node-ext:ProcessNodes(foo/baz)"/>

    <!--Process the/foo/baz and /bar/saz nodes -->
    <xsl:variable name="success" select="node-ext:ProcessNodes(/foo/baz | /bar/saz)"/>

    The NodeRefListBase is in fact a list of references into the XML document, so keep in mind that getNextSibling(), for example, gets you the next sibling in the document, which may not be the next Node in the node-set.

    xalan-c-1.11/c/xdocs/sources/xalan/install-save.xml0000664000175000000640000001563312035043470021233 0ustar stevesamba
    • Install Source Packages
    • Install Binary Packages
      • Install Windows Packages
      • InstallUNIX Packages
      • Other Packages
    • Install Documentation Packages

    A pre-requisite for using the Xalan-C/C++ XSLT library is to have a working Xerces-C/C++ XML Parser library. Xerces-C/C++ must be of version 3.0 or newer. Xerces-C/C++ Version 3.1.1 is preferred.

    The Xalan-C/C++ project is providing several types of packages.

    Source packages contain all of the source code to build the Xalan-C/C++ library, the sample programs, and the documentation. There are UNIX scripts and Windows project files by which the library and sample programs can be built. There are also scripts for building the User Guide web pages and a Doxygen configuration for building the interactive API Reference.

    Binary packages contain compiled libraries and the Xalan command line program. The binary packages also contain C/C++ header files for basic software development.

    Documentation packages contain pre-built directories of web page html files for the Xalan-C/C++ User Guide and the interactive API Reference for programmers.

    We have no package managers for source packages. You just extract the contents of the distribution zip file or tar file into a source directory of your choosing.

    You also need to have the necessary C/C++ compiler tools installed and a working copy of the Xerces-C/C++ XML parser library.

    Building the User Guide from sources requires a working Xalan command line program.

    Building the interactive API Reference requires a UNIX or Linux system with a current copy of Doxygen and GraphViz installed.

    The building of a library from sources results in a directory from which a binary package can be made. UNIX and Linux builds are automatically targeted to an install destination. Installing a Windows build requires that the specific compiled products be copied to a usable destination directory.

    The binary packages distributed by zip files and tar files are usually extracted to the install {target} directory. After extracting the contents, you then need to manually perform some minor system configuration.

    Packages that are handled by a package manager are usually installed and configured according to package maintainer.

    The Xalan-C and Xerces-C packages can be installed to the same {target} directory tree. The debug and release builds have different names for the shared *.DLL files.

    Windows operating systems require that the {target}\bin directory be added to the PATH environment. You can make the path a permanent part of the SYSTEM or user login DESKTOP environment. The PATH environment variable should contain an entry where the {target}\bin\*.DLL files are found.

    1. Right-Click on the computer icon.
    2. Select Properties.
    3. Select Advanced System Settings.
    4. Select Environment Variables.
    5. Add the {target}\bin directory to the system PATH environment variable.

    The XP, NT, 2000 and 2003 systems allow environment variables to be set explicitly to individual user accounts. The Vista, Win-7, and 2008 systems have security administration that gets in the way of updating individual user environments.

    In a command window or a command environment, you can add the following shell command to set a temporary path to the XALAN {target}\bin directory.

    set PATH=%PATH%;{target}\bin

    The path to the Xalan command line executable program should be added to the PATH environment variable.

    The path to the shared objects should be added to the system configuration or overridden by specific entry in an environment by which shared objects can be found.

    Here is some more detailed information on UNIX Runtime configuration.

    These packages are usually installed and configured by a package manager. You should refer to the documentation provided by the package maintainer.

    The documentation packages are distributed as tar files and zip files. You just extract the files into a directory that is reachable by your favorite web browser. The head of the documentation tree starts at the {docs}/xalan-c directory.

    The documentation package contains the html pages for the Operator Guide and the apiDocs interactive application program interface. There are two documentation packages available for download. One contains the apiDocs with over 300 MB of interactive graphics. The other includes the apiDocs without the volume of interactive graphics. You need only install the package that serves your needs.

    The documentation is a snapshot equivalent of the public website for the Apache Xalan-C/C++ project.

    xalan-c-1.11/c/xdocs/sources/xalan/overview.xml0000664000175000000640000002162112035043470020471 0ustar stevesamba
    • Introduction
    • &xslt4c; Features
    • Getting to work with &xslt4c;
    • Getting up to speed with XSLT
    • Glossary

    &xslt4c; (named after a rare musical instrument) implements the and the . XSLT is the first part of the XSL stylesheet language for XML. It includes the XSL Transformation vocabulary and XPath, a language for addressing parts of XML documents. For links to background materials, discussion groups, frequently asked questions, and tutorials on XSLT, see Getting up to speed with XSLT.

    XSL also includes a vocabulary for formatting documents, which is not part of &xslt4c;. For more information, see and the Apache XML FOP (Formatting Objects Project) .

    You use the XSLT language to compose XSL stylesheets. An XSL stylesheet contains instructions for transforming XML documents from one document type to another document type (XML, HTML, or other). In structural terms, an XSL stylesheet specifies the transformation of one tree of nodes (the XML input) into another tree of nodes (the output or transformation result).

    The XSL stylesheet may generate and refer to cascading style sheets (CSS) as part of its output.

    In the following example, the foo.xsl stylesheet is used to transform foo.xml into foo.out:

    foo.xml:

    <?xml version="1.0"?> <doc>Hello</doc>

    foo.xsl:

    <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="doc"> <out><xsl:value-of select="."/></out> </xsl:template> </xsl:stylesheet>

    foo.out:

    <out>Hello</out>
    • &xslt4c; fully implements the .
    • &xslt4c; incorporates the .

    • &xslt4c; uses &xml4c; to parse XML documents and XSL stylesheets.

      The input may appear in the form of a file or URL, a stream, or a . &xslt4c; performs the transformations specified in the XSL stylesheet and produces a file, a stream, or a DOM as you specify when you set up the transformation.

    • Along with a complete API for performing transformations in your C++ applications, &xslt4c; provides a command line utility for convenient file-to-file transformations.

    • &xslt4c; supports C++ extension functions

    For instructions and some suggestions about how to get started using &xslt4c;, see Downloading &xslt4c;, Building &xslt4c;, and Installing &xslt4c;.

    If you are still working through the details of the XSLT spec (the W3C 1.0 Recommendation), you may want to consult one or more of the following:

    • Crane Softwright's Free preview of Practical Transformation Using XSLT and XPath

    • Doug Tidwell's XSLT, O'Reilly, 2001

    • Bob DuCharme's XSLT Quickly, Manning Publications, 2001

    • John Robert Gardner and Zarella Rendon's XSLT and XPath: A Guide to Transformations, Prentice-Hall, 2001

    • Elliotte Rusty Harold's Chapter 17 of the XML Bible: XSL Transformations

    • The Mulberry XSL-List -- Open Forum on XSL (of interest to XSL users at all levels)

    • Objects by Design's Transforming XMI to HTML (oriented towards XMI, "an XML-based, stream representation of a UML model," but also covers "generic" XML transformations) and their related XSLT by Example

    • OASIS (the Organization for the Advancement of Structured Information Standards): Extensible Stylesheet Language (XSL) by Robin Cover

    • Aaron Skonnard and Martin Gudgin's Essential XML Quick Reference: A Programmer's Reference to XML, XPath, XSLT, XML Schema, SOAP and More. This reference is published by Addison Wesley, 2003, ISBN/0201740958.

    When you come across other useful introductory or background materials, please email , so we can add them to this list.

    The XML namespace for XSLT. An XML namespace is a collection of element and attribute names, identified by a Unique Resource Identifier (URI), which often takes the form of a URL, but is really just a unique string, not a pointer to a web page. The XSLT namespace URI is http://www.w3.org/1999/XSL/Transform. In each XSLT stylesheet, you must declare this namespace in the stylesheet element tag and bind it to a local prefix. Like the XSLT specification, we always use xsl as the XSLT namespace prefix in our descriptions and examples, although you are free to bind any prefix to this namespace.

    Any tag associated with the XSLT namespace.

    An element, usually with child elements, that specifies a "rule" or set of instructions to perform when a particular kind of node is encountered in the source tree.

    Any tag that occurs inside an xsl:template element and is associated with the XSLT namespace.

    The XML tree input to the XSL process.

    The tree that is output by the XSL process.

    The part of a template that defines the kind(s) of nodes to which the template applies.

    For more definitions of XSLT terminology, see Dave Pawson's XSLT Terminology Clarification and the Glossary in Michael Kay's XSLT Programmer's Reference.

    xalan-c-1.11/c/xdocs/sources/xalan/faq.xml0000664000175000000640000005310412035043470017373 0ustar stevesamba Where do I go to learn about XSLT?

    The definitive sources are the W3C XSLT and XPath recommendations: and .

    For a brief listing of tutorials, discussion forums, and other materials, see Getting up to speed with XSLT.

    Where can I ask a question?

    For specific questions on &xslt4c;, see list archives: xalan-c-users and xalan-dev. You must subscribe to these Apache mailing lists before posting your questions.

    The Apache Software Foundation has information on how you can subscribe to the mailing lists.

    You can post messages to the lists by sending mail to:
    Post message to xalan-c-users. (User's list)
    Post message to xalan-dev list. (Developer's list)

    Again, please review the archives before posting a new question.

    What is &xml4c; and why do I need it?

    &xml4c; is a validating XML parser written in a portable subset of C++. &xml4c; makes it easy to give your application the ability to read and write XML data. Like &xslt4c;, &xml4c; is available from the Apache XML site: http://xerces.apache.org

    Which version of Xerces should I be using?

    The &xslt4c; release notes includes information about the &xml4c; release with which the &xslt4c; release has been coordinated and tested. See Status

    Should I be using the Xerces DOM or Xalan DOM?

    The Xalan DOM implementation is highly optimised for transformations. However, whilst you can build documents in the Xalan DOM, subsequent modification will not work. The Xalan DOM is designed to be either an input or an output from a transformation, not as a general DOM implementation.

    So in cases where you want to simply transform documents using Xalan, using the internal DOM implementation is the best approach.

    In cases where you want to modify the DOM document on the fly, you should use the Xerces DOM as the base document. You can wrap the Xerces DOM in a wrapper (see passing in a Xerces DOM) to then use as an input to a Xalan transformation. Alternatively you can output the result of a transformation to a Xerces DOM document (see working with DOM input and output). In either case, the Xerces document can be freely modified. However, after you modify the document, you need to re-build the wrapper so that any changes are replicated in the Xalan wrappers.

    I have encountered problem executing the &xslt4c; sample applications after rebuilding them under Win32 Environment (Windows NT 4.0, SP3). When I tried to execute the sample, I receive the error message "Debug Assertion Failed! ... Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)".

    You may be mixing debug and release versions of executables and libraries. In other words, if you are compiling the sample for debug, then you should link with the debug version of the &xslt4c; and &xml4c; libraries and run with the debug version of the dynamic link libraries.

    You must also make sure your application is linking with the Debug multithreaded DLL run-time library or the Multithreaded DLL run-time library. To check this setting do the following in Visual C++:

    1. Select Settings from the Project menu.

    2. Click the C/C++ tab.

    3. In the Category drop-down list, select Code Generation.

    4. In the Use run-time library drop-down list, select Multithreaded DLL for the Win32 Release configuration, or select Debug Multithreaded DLL for the Win32 Debug configuration.

    Once you have changed this setting, you must rebuild your project.

    What do I need to rebuild &xslt4c; on Windows?

    In order to build Xalan-C++ on Windows, you will need the following:

    • The Xalan-C/C++ source distribution package.
    • The Xerces-C/C++ source distribution package or a compatible binary distribution package.
    • A compatible Microsoft Visual Studio .NET (2003, 2005, 2008, 2010) software development platform.

    The Xalan-C/C++ Version 1.11 (pre-release) is available from the Apache Subversion repository at http://svn.apache.org/repos/asf/xalan/c/trunk/.

    After Xalan-C/C++ Version 1.11 is released, it can be downloaded from: Xalan Distributions.

    The Xerces-C/C++ Version 3.1.1 is can be downloaded from: Xerces Distributions.

    If you are building with the IBM-ICU International Components for Unicode library, you will need to rebuild both the Xerces and Xalan libraries.

    For more details, see Steps for doing a Windows build.

    What do I need to rebuild &xslt4c; on UNIX?

    To build &xslt4c; on supported UNIX platforms, you need &xml4c;, the GNU make utility, and a supported C++ compiler. For more details see: Steps for doing a UNIX build.

    I get errors in the Makefile when running the make utility. What's wrong?

    You must use the GNU make utility. Other make utilities may not work with the Xalan Makefile

    What is ICU and why do I need it?

    The IBM-ICU International Components for Unicode(ICU) is a C and C++ library that provides robust and full-featured Unicode support on a wide variety of platforms. &xslt4c; uses the ICU to extend support for encoding, number formatting, and sorting.

    The ICU is available for download from http://oss.software.ibm.com/icu/index.html.

    Xalan release 1.10 was tested with &icu-current;. The curent Xalan release 1.11 is not fully tested with IBM-ICU.

    For more details see: Using the International Components for Unicode (ICU).

    I am getting a tar checksum error on Solaris. What's the problem?

    The Solaris tar utility you are using does not properly handle files with long pathnames. You must use GNU tar (gtar), which handles arbitrarily long pathnames and is freely available on every platform on which &xslt4c; is supported. If you don't already have GNU tar installed on your system, you can obtain it from the Free Software Foundation http://www.gnu.org/software/tar/tar.html. For additional background information on this problem, see the online manual GNU tar and POSIX tar for the utility.

    Is it possible to run &xslt4c; from an Apache server?

    A simple Apache module called ApacheModuleXSLT is provided as a sample. It demonstrates how to integrate &xslt4c; with Apache.

    Is &xslt4c; thread-safe?

    Instances of XalanTransformer are not thread-safe; each thread should use its own instance.

    In order to support very efficient use in multi-threaded applications, &xslt4c; is designed to avoid synchronization as much as possible. Each thread of execution is required to have its own set of "support" objects that contain the state of the transformation. Accordingly, no synchronization is required when multiple threads are executing.

    Parsed ("compiled") stylesheets (see Compiling stylesheets) and parsed source documents may be freely shared by multiple threads of execution without worrying about providing synchronized access to them. The only exception to this rule: You use XercesParserLiaison to parse a document after calling XercesParserLiaison::setBuildBridgeNodes(false) or XercesParserLiaison::setThreadSafe(false). In this case, the document cannot be shared by multiple threads of execution. For reasons of performance, we do not recommend the use of XercesParserLiaison, so this should not be an issue for most applications.

    All other objects in &xslt4c; are not thread-safe. Each thread must have its own instance of each object.

    See the ThreadSafe sample program for more information.

    What can I do to speed up transformations?

    To maximize performance, here are some suggestions for you to keep in mind as you set up your applications:

    • Use a compiled stylesheet when you expect to use the stylesheet more than once.

    • Set up your stylesheets to function efficiently.

      • Don't use "//" (descendant axes) patterns near the root of a large document.

      • Use xsl:key elements and the key() function as an efficient way to retrieve node sets.

      • Where possible, use pattern matching rather than xsl:if or xsl:when statements.

      • xsl:for-each is fast because it does not require pattern matching.

      • Keep in mind that xsl:sort prevents incremental processing.

      • When you create variables, <xsl:variable name="fooElem" select="foo"/> is usually faster than <xsl:variable name="fooElem"><xsl:value-of-select="foo"/></xsl:variable>.

      • Be careful using the last() function.

      • The use of index predicates within match patterns can be expensive.

    Can I validate an XSL stylesheet?

    An XSL stylesheet is an XML document, so it can have a DOCTYPE and be subject to validation, but you probably will have to write a custom DTD for the purpose.

    The XSLT Recommendation includes a DTD Fragment for XSL Stylesheets with some indications of what you need to do to create a complete DTD for a given stylesheet. Keep in mind that stylesheets can include literal result elements and produce output that is not valid XML.

    You can use the xsl:stylesheet doctype defined in xsl-html40s.dtd for stylesheets that generate HTML.

    What does the XalanDOMException HIERARCHY_REQUEST_ERR mean?

    It means that an attempt was made to add a node to a DOM that would create an invalid structure. For example, text nodes are not allowed as children of the document node.

    This is a common error when attempting to transform to DOM. Source documents and stylesheets that might produce valid serialized XML might not produce value DOM. The usual suspect is text nodes being generated before the document element is generated.

    If you think you have seen this error because of a bug in Xalan-C++'s source tree implementation, please post a bug report on Bugzilla, and attach a minimal source document and stylesheet that produce the problem to the bug report.

    Who do I submit patches to?

    Your contributions are much appreciated! You can e-mail your patches to or raise an issue on the Jira issue tracking system.

    The Xalan projects use Jira as the issue tracking system. Any significant bug or feature request is posted to this system. You must subscribe to the system in order to submit patches and raise issues.

    • Subscribe to Jira at: https://issues.apache.org/jira
    • Browse the issues at: https://issues.apache.org/jira/browse/XALANC

    Issues posted to the project on Jira at XALANC are automatically posted to the

    Our mailing lists are moderated. You should subscribe to the mailing list in order to post a message, otherwise message delivery requires manual intervention or may be dropped.

    How do I output a transformation to a DOM, a file, an in-memory buffer, or as input to another transformation? Since the C++ language can automatically construct an XSLTResultTarget from any of its constructor's argument types, you usually don't need to create one explicitly.

    The output parameter of XalanTransformer::transform() is an XSLTResultTarget which has many constructors.

    Output to a file:

    • The easiest way is to use a null-terminated string containing the file name to create an XSLTResultTarget. Or, use an instance of std::ofstream. The command line executables, and many of the sample applications use file names, so take a look through the source code for more information.

    Output to an in-memory buffer:

    • Use an instance of std::ostrstream or std::ostringstream to create an XSLTResultTarget. See the StreamTransform sample for more information.

    Input to another transformation:

    • Any of the previous output targets could be used as the input to another transformation, but the FormatterToSourceTree is probably the best for efficiency reasons. See the source code for the TestXSLT command line program for more information.
    Why won't XSLTInputSource work with std::istrstream on Sun Solaris using Forte/Sun Workshop compiler?

    There is a bug in Sun's C++ standard library implementation for the Forte/Workshop compiler. The short answer is that you need to get a patch. The bugzilla subsystem for Xalan issue tracking is no longer available. The ticket recorded here included a patch.

    The issue is resolved if you use the SunStudio platform for your code development. The Solaris SunStudio is now available from Oracle.

    My transformation outputs to a XalanDocument (actually XalanSourceTreeDocument underneath) but W3C DOM functions like DOMElement::setAttribute don't work! Am I going crazy or what?

    No, you aren't going crazy. Xalan's default source tree is read-only for efficiency. If you need a DOM that supports modifications, use the Xerces DOM instead. See the TransformToXercesDOM sample for more information.

    XalanTransformer outputs errors to the console. How do I, for example, output error to a file?

    By default, XalanTransformer creates a XalanTransformerProblemListener (a subclass of ProblemListener) that writes output to std::cerr. To change this you can:

    • Redirect std::cerr from the command line.
    • Call XalanTranformer::setWarningStream with a different std::ostream before calling XalanTransformer::transform.
    • Instantiate your own XalanTransformerProblemListener with a different output stream and call XalanTransformer::setProblemListener() before calling XalanTransformer::transform().
    • Subclass some ProblemListener type and do custom handling of errors (you still then need to tell XalanTransformer instances to use your ProblemListener.)

    In most case you probably want to do one of the first two.

    How do I programmatically get the file name, line number, and column number for an error in an XML file?

    Create a custom ErrorHandler (a &xml4c; class) and call XalanTransformer::setErrorHandler before parsing any sources.

    How do I make a char* out of XalanDOMString (or vice-versa)?

    See the static method XalanDOMString::transcode, or the functions TranscodeToLocalCodePage in the API documentation. However, you should be very careful when transcoding Unicode characters to the local code page, because not all Unicode characters can be represented.

    Is there a table of error codes somewhere? How about a summary of what methods throw which exceptions?

    There isn't, but we're working on it.

    The Xalan extension functions (xalan:node-set, etc.) don't work for me. Help!

    Did you declare the namespace on the xsl:stylesheet or xsl:transform element? It should look like this:

    <xsl:stylesheet version="1.0" xmlns:xalan="http://xml.apache.org/xalan"> ...rest of stylesheet

    If you did and you still have problems, you might want to ask the mailing list.

    Why can't I ouput my results to a file on Windows 95/98?

    Well, you can, but it doesn't always work. Neither Windows 95 or 98 are supported or tested. There have been reports of problems on it, especially regarding Unicode support. See this post.

    Why does Xalan emit a warning when using the XSLT function format-number()?

    Did you build with ICU support? See Using the International Components for Unicode (ICU).

    Is there a Perl wrapper for &xslt4c;?

    There is no Apache Perl wrapper, however Edwin Pratomo has written a wrapper for &xslt4c; version 1.4 that can be found on CPAN

    Why can't I find the LocalMsgIndex.hpp file?

    The LocalMsgIndex.hpp file is not shipped with the distributions because this file is generated during compile time. This file is created at the start of the build process and customized for the locale and message set you are using.

    On Windows, the LocalMsgIndex.hpp header is generated by the Localization project. By building any project that has a dependency on the Localization project, will trigger the Message Localization component to built and the LocalMsgIndex.hpp to be generated.

    On Windows binary distributions, the LocalMsgIndex.hpp file is a member of the "Include" directory.

    On Unix binary distributions, the LocalMsgIndex.hpp file is a member of the "include/xalanc/PlatformSupport" directory.

    xalan-c-1.11/c/xdocs/sources/xalan/download.xml0000664000175000000640000003267412035044055020444 0ustar stevesamba
    • Downloading What You Need
    • Downloading Notes
    • Source Packages
    • Documentation Packages
    • Binary Packages
    • Verify Downloaded Packages
    • Platform Compatibility

    We are distributing the source package for the Xalan-C/C++ library, sample programs, and documentation. We are also distributing assembled documentation packages for your browser. Some selected platforms also have binary packages.

    The Xalan-C/C++ 1.11 library requires the Xerces-C/C++ XML Parser 3.0 or newer, version 3.1.1 is preferred.

    The source package contains all the scripts needed to build the library, sample programs, and documentation for a wide variety of Windows and UNIX platforms. The documentation package provides usable html documentation that is already assembled for your web browsers.

    Building the API Reference documents requires a current version of the Doxygen and GraphViz programs for UNIX or Linux. We have not tried building the API Reference on a Windows platform. A usable API Reference is included with the documentation package.

    Releases are distributed via various mirror sites around the world, and the links below will direct you to a mirror near you. Alternative mirror locations are also provided.

    You must verify the integrity of the downloaded files using signatures downloaded from the Apache master distribution directory.

    Access to the latest (and possibly unstable) source can be accessed via SVN

    Archives of old Xalan-C/C++ releases can be found at the Apache Xalan Archives and the Old Apache XML Archives.

    Archives of old Xerces-C/C++ parser distributions can be found at the Apache Xerces Archives and the Old Apache XML Archives.

    Xalan-C/C++ KEYS

    • xalan-c-1.11-src.tar.gz
    • xalan-c-1.11-src.zip

    You can download the Xalan-C/C++ source packages from the Apache Mirrors.

    You should verify your packages against the trusted signatures posted on the Apache master distribution site

    These documentation packages can be built from the Xalan-C/C++ source distributions on Linux or UNIX systems. Windows systems can only build the basic webpages without the apiDocs interactive API (Application Program Interface) pages.

    The html-full is a very large package (355+ MB). It contains the interactive graphics images that map the include file relationships and class relationships. The html-nograf (42 MB) just contains tabular relationships without the large volume of generated graphics.

    Xalan-C/C++ KEYS

    • xalan-c-1.11-docs-html-full.tar.gz
    • xalan-c-1.11-docs-html-full.zip
    • xalan-c-1.11-docs-html-nograf.tar.gz
    • xalan-c-1.11-docs-html-nograf.zip

    You can download the Xalan-C/C++ documentation packages from the Apache Mirrors.

    You should verify your packages against the trusted signatures posted on the Apache master distribution site

    We are distributing compiled binary packages for several platforms. The Xalan-C/C++ documentation is provided as a separate package. We would like to distribute binary packages for platforms on which Xerces-C/C++ has binary packages distributed.

    Both the Xalan (XSLT) and Xerces (XML Parser) libraries should both be compiled with the same version of C++ compiler. A mismatch of compiler versions is known to create runtime library reference errors. If you cannot find a compatible Xerces library, you should obtain the Xerces sources and compile both libraries.

    Binary packages labeled xalan_combined have compiled libraries for both Xalan-C/C++ and Xerces-C/C++. All binary packages include the Xalan or xalan.exe command line styleshet transformation processor.

    The development cycles for Xerces-C/C++ and Xalan-C/C++ are separately managed. There is no synchronization of product distribution.

    Windows Packages - 32 BIT

    • xalan-c-1.11-x86-windows-vc71.zip for MS VS 2003
    • xalan-c-1.11-x86-windows-vc8.zip for MS VS 2005
    • xalan-c-1.11-x86-windows-vc9.zip for MS VS 2008
    • xalan-c-1.11-x86-windows-vc10.zip for MS VS 2010

    Combined with Xerces Parser

    • xalan_combined-c-1.11-x86-windows-vc71.zip for MS VS 2003
    • xalan_combined-c-1.11-x86-windows-vc8.zip for MS VS 2005
    • xalan_combined-c-1.11-x86-windows-vc9.zip for MS VS 2008
    • xalan_combined-c-1.11-x86-windows-vc10.zip for MS VS 2010

    Windows Packages - 64 BIT

    • xalan-c-1.11-x86_64-windows-vc8.zip for MS VS 2005
    • xalan-c-1.11-x86_64-windows-vc9.zip for MS VS 2008
    • xalan-c-1.11-x86_64-windows-vc10.zip for MS VS 2010

    Combined with Xerces Parser

    • xalan_combined-c-1.11-x86_64-windows-vc8.zip for MS VS 2005
    • xalan_combined-c-1.11-x86_64-windows-vc9.zip for MS VS 2008
    • xalan_combined-c-1.11-x86_64-windows-vc10.zip for MS VS 2010

    BSD Packages - 64 BIT

    • xalan-c-1.11-x86_64-freebsd_9-gcc_4_2.tar.gz
    • xalan_combined-c-1.11-x86_64-freebsd_9-gcc_4_2.tar.gz

    Linux Packages

    • xalan-c-1.11-x86_64-linux_2_6_32-gcc_4_4.tar.gz
    • xalan_combined-c-1.11-x86_64-linux_2_6_32-gcc_4_4.tar.gz

    You can download the Xalan-C/C++ compiled binary packages from the Apache Mirrors.

    You should verify your packages against the trusted signatures posted on the Apache master distribution site

    It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. You should only download the KEYS and the (asc/md5) signature files from the Apache Master Distribution. The Apache Mirrors of previous sections should be used to download the products.

    • Apache Mirror Xalan-C Sources
    • Apache Master Xalan-C Sources - for Signature Files
    • Apache Mirror Xalan-C Documentation
    • Apache Master Xalan-C Documentation - for Signature Files
    • Apache Mirror Xalan-C Binary Packages
    • Apache Master Xalan-C Binary Packages - for Signature Files

    Make sure you get the signature file for the particular distribution from the master directory, rather than from a mirror. Then verify the signatures using:

    % pgpk -a KEYS % pgpv <archive-name>.tar.gz.asc or % pgp -ka KEYS % pgp <archive-name>.tar.gz.asc or % gpg --import KEYS % gpg --verify <archive-name>.tar.gz.asc

    Alternatively, you can verify the MD5 signature on the files. A unix program called md5 or md5sum is included in many unix distributions. It is also available as part of GNU Textutils. Windows users can get binary md5 programs from here, here, or here.

    We currently have no one committed to release UNIX and Linux binary packages. If you have scripts to build these packages, your help would be appreciated. You can contribute by posting your comments to the xalan-dev mailing list.

    The compiler version used for each platform is listed in the table below. The build platforms shown here have Xerces-C/C++ binary package support.
    Platform - Operating System Compilers
    Windows X86 VC7.1, VC8, VC9, VC10
    Windows X86_64 VC8, VC9, VC10
    HPUX ia64 ACC 6
    HPUX ia64_64 ACC 6
    AIX powerpc xlc 7.0
    AIX powerpc_64 xlc 7.0
    SOLARIS sparc cc 5.10
    SOLARIS sparc_64 cc 5.10
    SOLARIS X86 cc 5.10
    SOLARIS X86_64 cc 5.10
    LINUX X86 gcc 3.4
    Linux X86_64 gcc 3.4
    MAC OSX X86 gcc 4.0

    Building for platforms other than those listed will require a build of the Xerces-C/C++ XML Parser library from the sources. Use of Xalan and Xerces libraries compiled with different versions of compilers may cause problems

    Use GNU tar to untar the Solaris distribution file; see A tar checksum error on Solaris.

    If you want to take advantage of the support for number formatting, sorting, and encoding the ICU provides, you should also download and install the ; see Using the ICU.

    The IBM ICU is supported with Xerces-C version 2.8. Xerces-C version 3 has introduced transcoding support modules, currently being evaluated for Xalan XSLT transcoders.

    To access previous releases of &xslt4c;, visit the Xalan-C archive directory
    xalan-c-1.11/c/xdocs/sources/xalan/test-faqs.xml0000664000175000000640000000310012035043470020522 0ustar stevesamba Test Question #1

    Test Answer #1

    Test Question #2

    Test Answer #2

    Test Question #3

    Test Answer #3

    Test Question #4

    Test Answer #4

    Test Question #5

    Test Answer #5

    Test Question #6

    Test Answer #6

    This item has more than one answer

    Test Question #7

    Test Answer #7

    Test Question #8

    Test Answer #8

    Test Question #9

    Test Answer #10

    Test Question #11

    Test Answer #11

    Test Question #12

    Test Answer #12

    Test Question #13

    Test Answer #13

    xalan-c-1.11/c/xdocs/sources/xalan/buildlibs.xml0000664000175000000640000006663312035043470020610 0ustar stevesamba
    • The Distribution Source Tools
      • Prepare Windows Build Scripts"
      • Prepare Unix Build Scripts
    • Windows Build Environment
      • Windows Basic Build Instruction
      • Sample Windows Build Command File
      • Installing the Xalan Library on Windows
    • UNIX Build Environment
      • Finding Runtime Libraries
      • Building the Xalan-C/C++ XSLT Libraries for UNIX
    • Reference on Unix Platforms and C++ Compilers
    • Xerces-C/C++ Transcoders and Plug-in Modules

    The Xalan-C/C++ XSLT library is built upon the Xerces-C/C++ XML Parser library. Before compiling the Xalan-C/C++ XSLT library, you must have a usable Xerces-C/C++ library.

    You can either install a compatible binary distribution of Xerces-C/C++ or build your own from a source distribution of Xerces-C/C++. You can gain additional capability if you build the Xerces-C/C++ XML Parser library from sources. The Xerces-C/C++ binary distribution is not built for the IBM-ICU libraries. The IBM-ICU libraries provide additional transcoding services.

    Building from the source code packages for Xerces and Xalan libraries ensures that the resulting packages are proper for your system. There are various binary distributions available, but incompatibilities between C++ compilers (even between compiler versions) are known to cause issues with sharing of libraries.

    You can get more information on the Xerces-C/C++ distributions at the http://xerces.apache.org/xerces-c web site.

    We are including in the distribution some script files that can help with build environment setup and distribution package creation. These script packages are working examples that developers can use for their own work.

    • (src)/scripts/xalan-ms-scripts.zip For Windows Packages
    • (src)/scripts/xalan-unix-scripts.tar For Unix/Linux Packages

    The following discussions in this chapter describe the rules by which these scripts were written.

    I use the C:\Apache\xalan-builds\ directory as the home path for building Windows packages. You may need to edit the scripts for your own package build location.

    You will need a copy of Microsoft Visual Studio .NET installed on your development computer.

    1. Create your package building directory.
    2. Unzip the xalan-ms-scripts.zip into your package building directory.
    3. Copy the Xerces-C sources into a builds subdirectory xerces-src-31.
    4. Copy the Xalan-C sources into a builds subdirectory xalan-src-11.
    5. You need the Xerces-C binaries available before building the Xalan-C sources.
      • Build the Xerces-C sources using an appropriate xerces-build-31-*.bat script. This script launches Microsoft Visual Studio with an appropriate environment set.
      • Construct the Xerces-C binary package using the appropriate xerces-inst-31-*.bat script. This binary package is later used for the XERCESCPKG environment variable.
    6. You can now create the Xalan-C binary package.
      • Build the Xalan-C sources using an appropriate xalan-build-11-31-*.bat script. This script launches Microsoft Visual Studio with an appropriate environment set.
      • Construct the Xalan-C binary package using the apppropriate xalan-inst-11-31-*.bat script. This binary package can later be used for the XALANCPKG environment variable.
    7. You can now copy the (XERCESCPKG-31)/bin to your Windows installation directory.
    8. You can now copy the (XALANCPKG-11-31)/bin to your Windows installation directory.
    9. You can also merge the (XERCESCPKG-31)/include and (XALANCPKG-11-31)/include to your Windows installation directory.
    10. You can also merge the (XERCESCPKG-31)/lib and (XALANCPKG-11-31)/lib to your Windows installation directory.

    I use my $HOME directory as the path into which xalan-unix-scripts.tar is extracted. I create subdirectory xerces-src for the Xerces-C sources and another subdirectory xalan-src for the Xalan-C sources. I then create separate directories into which the actual build process takes place.

    Directory Xerces-Build is where I make the Xerces-C binaries.

    Directory Xalan-Build is where I make the Xalan-C binaries.

    The following scripts are used to make and install the release build of binary products to the /opt/apache/ target directory path. Connect to the appropriate build directory and execute the appropriate script.

    • xerces-build.sh
    • xalan-build.sh

    The following scripts are used to make and install the debug build of binary products to the /opt/apache/debug/ target directory path. Connect to the appropriate build directory and execute the appropriate script.

    • xerces-build-debug.sh
    • xalan-build-debug.sh

    Build support for Microsoft Visual Studio (VC6) is deprecated.

    Building Xalan-C/C++ with Microsoft Visual Studio (VC6) requires the Xerces-C/C++ version 2.8 or older releases. Microsoft VC6 is removed from the Xerces-C/C++ Version 3.x releases.

    Building Xalan-C/C++ with Microsoft Visual Studio .NET 2008 (VC9) requires Xerces-C/C++ version 3.1 or newer. Building with Microsoft Visual Studio .NET 2010 (VC10) requires Xerces-C/C++ version 3.1.1 or newer.

    Environment variables XERCESCROOT and XALANCROOT are required. Environment ICUROOT is used only if building Xalan-C/C++ with IBM-ICU library support.

    XERCESCROOTThe Xerces-C/C++ installation directory
    XALANCROOTThe Xalan-C/C++ source directory
    ICUROOTThe IBM-ICU installation directory (only if building with ICU support)

    I like to create command or batch files to setup the build environment variables and start the Visual Studio .NET development system using the custom build environment. I find this much easier than navigating the graphical interface to add custom build environments. The Microsoft *.vsprops custom property files are not available in the early versions of Visual Studio .NET platforms.

    If you want to create binary packages from the sources, you may wish to look at the Windows Build Command File in the next section.

    A quick experiment in building for Windows is documented in the remainder of this section.

    I have Visual Studio 2005, 2008, 2010 on one computer and VC6 and Visual Studio 2003 installed on another computer.

    Microsoft Visual Studio .NET products will usually install a Visual Studio Command Prompt icon in the Visual Studio Tools subfolder for each version of Visual Studio installed on your computer. The Visual Studio Command Prompt automatically sets a basic development environment using a "vsvars32.bat" or "vcvarsall.bat" script for 32-bit or 64-bit platform builds, and leaves you at the command line for customizing your environment.

    You then define the XERCESCROOT, XALANCROOT, and ICUROOT environment variables.

    If the Xerces-C DLL files are not in directory %XERCESCROOT%\bin, you must add a directory to the PATH environment variable so the Xerces-C DLL files can be found.

    You then launch the Visual Studio .NET by calling devenv with a path to the Xalan.sln file as a parameter.

    The following section describes how you can build your own scripts to create binary packages from Xalan-C compiled sources for the various versions of Microsoft Visual Studio products.

    I like to use this template for both Xerces-C and Xalan-C builds from sources. The sample shown here is for Xalan-C/C++ because the installation of Xerces-C/C++ should already have been done.

    SET XERCESCROOT="path to xerces-c installation" SET XALANCROOT="sources\xalan\c\"

    Set the xalan project path for your version of Microsoft Visual Studio .NET.

    :: VS 2003 (VC7.1) SET XALANCPROJDIR=%XALANCROOT%\Projects\Win32\VC7.1 :: VS 2005 (VC8) SET XALANCPROJDIR=%XALANCROOT%\Projects\Win32\VC8 :: VS 2008 (VC9) SET XALANCPROJDIR=%XALANCROOT%\Projects\Win32\VC9 :: VS 2010 (VC10) SET XALANCPROJDIR=%XALANCROOT%\Projects\Win32\VC10

    Set some environment variables so we can easily copy or install the products after they have been built.

    :: VS 2003 (VC7.1) SET XALANCBUILDDIR=%XALANCROOT%\Build\Win32\VC7.1 :: VS 2005 (VC8) SET XALANCBUILDDIR=%XALANCROOT%\Build\Win32\VC8 :: VS 2008 (VC9) SET XALANCBUILDDIR=%XALANCROOT%\Build\Win32\VC9 :: VS 2010 (VC10) SET XALANCBUILDDIR=%XALANCROOT%\Build\Win32\VC10

    We use this Visual Studio .NET solution file.

    SET XALANCBUILDSLN=%XALANCPROJDIR%\xalan.sln

    The $(variable) is expanded inside Visual Studio.
    The %variable% is expanded by the cmd utility before launching the Visual Studio.

    SET PATH=%WINDIR%\system32;%WINDIR%;%WINDIR%\system32\Wbem SET INCLUDE= SET LIB= SET LIBPATH= SET SOURCE=

    Set the default environment variables for your version of Microsoft Visual Studio .NET.

    :: VS 2000 (VC7) - obsolete call "%VS70COMNTOOLS%vsvars32.bat" :: VS 2003 (VC7.1) 32-bit platform call "%VS71COMNTOOLS%vsvars32.bat" :: VS 2005 (VC8) 32-bit platform call "%VS80COMNTOOLS%vsvars32.bat" :: VS 2005 (VC8) 64-bit platform call "%VS80COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64 :: VS 2008 (VC9) 32-bit platform call "%VS90COMNTOOLS%vsvars32.bat" :: VS 2008 (VC9) 64-bit platform call "%VS90COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64 :: VS 2010 (VC10) 32-bit platform call "%VS100COMNTOOLS%vsvars32.bat" :: VS 2010 (VC10) 64-bit platform call "%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64

    The LIBPATH and SOURCE environment variables may not be properly set by the vsvars32.bat command file. You may wish to start your Visual Studio .NET application without any custom environment and examine the Tools -> C/C++ project defaults for the various libraries. Then specifically set the paths in the build command file for your project.

    The Xalan-C and Xerces-C libraries do not use the Microsoft Framework, the "mfc" and the "atl" directives. Microsoft is deprecating their "mfc" Microsoft Foundation Classes.

    Define the necessary environment variables for building the Xalan-C/C++ libraries and sample programs.

    SET PATH=%PATH%;%XERCESCROOT%\bin SET INCLUDE=%INCLUDE%;%XERCESCROOT%\include;%XERCESCROOT%\src SET INCLUDE=%INCLUDE%;%XALANCROOT%\src SET LIB=%LIB%;%XERCESCROOT%\lib

    If you are going to build for IBM-ICU support, then add the following environments.

    SET ICUROOT="path to ibm-icu installation" SET PATH=%PATH%;%ICUROOT%\bin SET INCLUDE=%INCLUDE%;%ICUROOT%\include SET LIB=%LIB%;%ICUROOT%\lib;%ICUROOT%\data

    Now we should be ready to start the Microsoft Visual Studio .NET using our custom environment using the %XALANCBUILDSLN% solution.

    devenv.exe "%XALANCBUILDSLN%" /useenv

    The following command script will install the binary and header files to a target directory that is compatible with the XALANCROOT environment variable for creating applications. Environment variables other than XALANCTARGET are defined in the previous section, the Visual Studio .NET build example.

    SET XALANCTARGET="path-to-target-directory" MKDIR "%XALANCTARGET%\bin" MKDIR "%XALANCTARGET%\include" MKDIR "%XALANCTARGET%\lib" CD "%XALANCBUILDDIR%\Release\Nls" COPY *.hpp "%XALANCTARGET%"\include CD "%XALANCBUILDDIR%\Release" COPY *.DLL "%XALANCTARGET%\bin" COPY *.LIB "%XALANCTARGET%\lib" COPY *.EXP "%XALANCTARGET%\lib" CD "%XALANCBUILDDIR%\Debug" COPY *.DLL "%XALANCTARGET%\bin" COPY *.PDB "%XALANCTARGET%\bin" COPY *.LIB "%XALANCTARGET%\lib" COPY *.EXP "%XALANCTARGET%\lib" CD "%XALANCROOT%\src XCOPY xalanc\*.hpp "%XALANCTARGET%\include\xalanc" /E /C /I /R /Y XCOPY xalanc\*.h "%XALANCTARGET%\include\xalanc" /E /C /I /R /Y

    I don't like building sources using root or superuser login. I like to do builds in a directory separated from the source tree. A debug build and release build will create shared objects of the same name. I like to target these builds to separate directory trees.

    Release builds are targeted at the /usr/local file system.

    Debug builds are targeted at the /opt/apache/debug file system.

    Source trees are referenced wherever convenient. Using the (--srcdir) configuration parameter allows the source tree to be separate from the build tree. The source tree can even reside on read-only media.

    Product builds are done in a build directory path separate from the source tree. This is the working directory from where you perform your builds and installs.

    Source Trees: (--srcdir) configuration parameter

       /opt/xerces/c/<trunk>/<the Xerces-C/C++ XML parser library source distribution>
       /opt/xalan/c/<trunk>/<the Xalan-C/C++ XSLT library source distribution>

    If the source distribution is well-constructed, the source directory trees can be read-only.

    Binary Installation Trees: (--prefix) configuration parameter

       /usr/local/  <the target for the release binary installation>
           ./bin     The sample programs
           ./lib     The shared and static library files
           ./include   The library header files

       /opt/apache/debug/  <the target for the debug binary installation>
           ./bin     The sample programs
           ./lib     The shared and static library files
           ./include   The library header files

    The default (--prefix) value is /usr/local which I use for release builds.

    I choose (--prefix) value of /opt/apache/debug for debug builds.

    Build Tree: The build working directory tree

       /<user-directory>/Build/

    You can use any empty file system or directory path with write access. Starting with an empty directory is a quick way to do a clean build. Make this empty directory to be your current working directory.

    I also like to make some shell scripts so that the build process can be automated. I locate these scripts outside of the Build directory so they don't get lost when I purge directory content.

       ../build-xerces-lib.sh

       ../build-xalan-lib.sh

       ../build-xalan-app.sh

    I generate these shell scripts with a text editor and use them to minimize keyboard typing errors.

    The various types of UNIX operating systems have differing requirements for finding libraries at runtime.

    Operating SystemLibrary Path Environment
    Solaris and LinuxLD_LIBRARY_PATH
    HP-UXSHLIB_PATH
    AIX and BSDLIBPATH
    Mac OS XDYLD_LIBRARY_PATH
    Cygwin and MinGWPATH

    The Xalan-C/C++ and Xerces-C/C++ shared library objects must be installed in a reachable library path for your platform. The make step creates the libraries in the lib subdirectory of your working directory. The make install step installs these shared objects to the designated {prefix}/lib directory or another directory defined by the --libdir configuration parameter.

    In many cases, the /usr/local/lib is already cached in /etc/ld.so.cache or included by /etc/ld.so.conf. The library path environment variable is then used for exceptions. The explicit library path environment variable usually takes precedence over the other methods of finding shared library runtimes. This is useful if you wish to use a debug environment on the same platform that also includes release libraries of the same name.

    I don't like building sources from a root or superuser login. I also like to do builds in a directory separated from the source tree.

    If your sources tree is read-only and some required files are not executable, then you need to copy the source to writable media and change the execute attributes of specific files. This command sequence will copy an entire directory tree from {source-dir} to {dest-dir}.

    cd {source-dir} find . | cpio -pdmuv {dest-dir}

    Connect to the {xalan-src} directory and make specific files executable.

    cd {xalan-src} chmod 755 runConfigure configure install-sh

    Connect to your empty build directory and construct a script for building the Xalan-C/C++ XSLT products.

    The Xalan-C/C++ configuration process uses the runConfigure script as a front-end to the automake configure script. Your shell command script should therefore use the runConfigure script.

    runConfigure Options
    OptionDescription
    -pBuild platform: aix, linux, freebsd, netbsd, solaris, hp-10, hp-11, hp11-ia64, irix, tru64, macosx, cygwin
    -cC compiler name: gcc, cc, c89, xlc, xlc_r, acc (default = gcc)
    -xC++ compiler name: g++, CC, C89, xlC, xlC_r, aCC (default = g++)
    -dIndicates a debug build, takes no values, default is No Debug
    -tTranscoder to use: 'icu', (Default is null, the Xerces-C/C++ transcoder)
    -mType of localization support: inmem, icu, nls (default is inmem)
    -MLocale for message localization: "en_US"
    -rThreads option: pthread, dce (default is pthread)
    -bSpecify 32 or 64 bit build (Default is 32-bit)
    On Linux, the 32/64 build is determined by the compiler, kernel, and glibc.
    -PInstall root directory: value is assigned to the --prefix configure parameter
    -lExtra link options (assigned to LDFLAGS)
    -zExtra compiler options (assigned to CFLAGS and CXXFLAGS)
    -CExtra configuration options (i.e. --srcdir=${SourceDir})
    -hPrint the runConfigure help and exit

    Here are the names of some C/C++ compilers associated with commercial UNIX operating systems used to build Xalan-C/C++ and Xerces-C/C++ packages.

    SystemPlatformC CompilerC++ CompilerComment
    AIXaixxlc_rxlC_rthread support
    AIXaixxlcxlCno thread support
    Cygwincygwingccg++
    HP-UXhp-11ccaCC
    HP-UXhp-11-ia64ccaCC
    SolarissolarisccCC

    The following example shows you how to construct a usable script with your favorite text editor.

    #!/bin/sh # Script to build and install Xalan-C/C++ products from sources # The Source and Target Directories for Debug Build # SourceDir="--srcdir=/opt/xalan/c/trunk" # DestDir="--prefix=/opt/apache/debug" # The Source and Target Directories for Release Build SourceDir="--srcdir=/opt/xalan/c/trunk" DestDir="--prefix=/usr/local" # The Xerces and Xalan package directories export XALANCROOT=${SourceDir} export XERCESCROOT=${DestDir} # If compiling with IBM-ICU support, the ICUROOT environment variable # needs to be defined to specify where the ICU libraries are installed. # Specifically, the following directories are accessed: # ${ICUROOT}/lib, ${ICUROOT}/include, ${ICUROOT}/data # export ICUROOT=/usr/local export PATH=$PATH:${SourceDir} # Debug Configure # runConfigure -p linux -d -c gcc -x g++ -P "${DestDir}" \ # -C "--srcdir=${SourceDir}" # Release Configure runConfigure -p linux -c gcc -x g++ -P "${DestDir}" \ -C "--srcdir=${SourceDir}" # Connect to configured src subdirectory to build the library without # sample programs. If you run make from your build directory, then the # library and all sample programs will be built. cd src make clean make # As a user with permissions to write to ${DestDir} install the Xalan-C/C++ products # ${DestDir}/bin the Xalan command-line utility and sample programs # ${DestDir)/lib the Xalan-C/C++ static and dynamic libraries # ${DestDir}/include/xalanc/* The header files. make install ## End of sample build script.

    Some compilers and platforms may need configuration options and variables that differ from the default Linux build. Beware that the runConfigure script for Xalan-C/C++ is a front-end that calls the configure script. The following table is reference information for the build of Xerces-C/C++ version 3.x. The C++ compiler for Xerces should be the same as used for Xalan builds.

    Configuration Options For Unix Platforms
    Solaris x86Sun CC
    ./configure CXX=CC CC=cc
    Solaris x86-64Sun CC
    ./configure CXX=cc CC=cc CFLAGS=-xarch=amd64 CXXFLAGS=-xarch=amd64
    (newer Sun CC versions use -m64 instead of -arch=amd64)
    Solaris SparcSun CC
    ./configure CXX=CC CC=cc
    Solaris Sparc v9Sun CC
    ./configure CXX=cc CC=cc CFLAGS=-xarch=v9 CXXFLAGS=-xarch=v9
    (newer Sun CC versions use -m64 instead of -arch=v9)
    AIX PowerPCIBM XLC++
    ./configure CXX=xlc_r CC=xlc_r
    gmake libxerces_c_1a LDFLAGS=-qmkshrobj
    AIX PowerPC-64IBM XLC++
    ./configure CXX=xlc_r CC=xlc_r CXXFLAGS=-q64 CFLAGS=-q64
    gmake libxerces_c_1a LDFLAGS=-qmkshrobj
    HP-UX 1a-64-32HP aCC
    ./configure CXX=aCC CC=aCC CFLAGS=-mt CXXFLAGS=-mt LDFLAGS=-mt
    HP-UX 1a-64HP aCC
    ./configure CXX=aCC CC=aCC CFLAGS=-mt CXXFLAGS=-"mt +DD64" LDFLAGS="-mt +DD64"
    Mac OS X x86-64GCC
    ./configure CFLAGS="-arch x86_64" CXXFLAGS="-arch x86_64"
    Mac OS X PowerPC-64GCC
    ./configure CFLAGS="-arch ppc64" CXXFLAGS="-arch ppc64"
    Mac OS X x86/PowerPCGCC
    ./configure --disable-dependency-tracking CFLAGS="arch i386 -arch ppc"
    CXXFLAGS="-arch i386 -arch ppc"
    MinGW x86GCC
    ./configure LDFLAGS=-no-undefined
    Cygwin x86GCC
    ./configure LDFLAGS=-no-undefined

    Xerces-C/C++ XML Parsers have undergone some additional modularity features. In the version 3 series, the transcoders are now being implemented as runtime modules. Use of the transcoding modules is still experimental for Xalan-C/C++ transformation applications. The basic transcoder capability still exists. Xerces-C/C++ version 2 series had transcoder libraries explicitly built and installed.

    A plug-in memory management architecture was introduced in Xerces-C/C++ version 2.7. The plug-in memory management of Xerces-C/C++ is also supported by Xalan-C/C++ applications.

    xalan-c-1.11/c/xdocs/sources/xalan/KEYS0000664000175000000640000000436312035043470016603 0ustar stevesambaThis file contains the PGP keys of various Xalan developers. Please don't use them for email unless you have to. Their main purpose is code signing. Xalan users: pgp < KEYS Xalan developers: pgp -kxa and append it to this file. Robert Weir -----BEGIN PGP PUBLIC KEY BLOCK----- Version: PGPfreeware 6.5.1 for non-commercial use mQGiBDgkhusRBADPjF2sbjCOC9A6CSwukoXCWMOaSLT1WPo2HH+xYOofXpMUxNNc bpNsgsV8PDhptd4bPfTCDtKl4/9oJQr36fgM6FuIoq+i3VCtyxwTvzaVClteh6bo y8I3OrYow1e+adFmjpWc3bX5kj8X1vAP+Kq61KEQwk4BU7BVzt5ROJyYBwCg/678 cy/aq7P/ToxSFNOPxqEBsyED/i8oOYzVXo0w9rC4khsJ9ST0qfvu9a1NMW7djlCn QarFjrOcA8OpKjQNxkcgMrRHgPQM0diAKAKDCfIQeM8cmfw+tTb7znOrlrhIas6Y 2f13UiKOoeT1NlMsojVWQ/LCGCF7sYIZrbmeOgA+6tCazxpHl+ggZ5/fNPM/Ct52 zNnxA/9Wr3MzzH/JuYFwyFXFn9pDL/hYtbZKGJhT3hzp4R50J+UBDTZ+6ff6/g6a 6MRTNqdgk9O/V9yrSZpMuQEna/fwjm5OcG9DsgpD23KuUl0l7VoDS6/3brPdMg2G 16gh+nW78S2Ctx5G/LiTKZ06dmZ5pVaTxG9op9Vd5jCZF2i7P7QmUm9iZXJ0IEMu IFdlaXIgPHJvYmVydF93ZWlyQGxvdHVzLmNvbT6JAE4EEBECAA4FAjgkhusECwMC AQIZAQAKCRBR6z7xV3Za8g+SAKDl8D33vCcGP8M1asMRkMdvLlyrEgCg3izyhGfJ iaDay5TTmzsiWKiP3je0I1JvYmVydCBDLiBXZWlyIDxyd2VpckBjeWJlcmNvbS5u ZXQ+iQBLBBARAgALBQI4JIffBAsDAgEACgkQUes+8Vd2WvJu/gCeJFgUuR+wcdan oJx4wpf9NHvXv+MAoP28cqLzv15cZPC5RvbtXymsNol+tCRSb2JlcnQgQy4gV2Vp ciA8cm9id2VpckBob3RtYWlsLmNvbT6JAEsEEBECAAsFAjgkiCMECwMCAQAKCRBR 6z7xV3Za8uk1AJ9I7PcEkKcRuKuwzuShKyHblJAKPwCgxO4ZaV0h/VQ4Rmu26Zyr 6/bHZA65Ag0EOCSG6xAIAPZCV7cIfwgXcqK61qlC8wXo+VMROU+28W65Szgg2gGn VqMU6Y9AVfPQB8bLQ6mUrfdMZIZJ+AyDvWXpF9Sh01D49Vlf3HZSTz09jdvOmeFX klnN/biudE/F/Ha8g8VHMGHOfMlm/xX5u/2RXscBqtNbno2gpXI61Brwv0YAWCvl 9Ij9WE5J280gtJ3kkQc2azNsOA1FHQ98iLMcfFstjvbzySPAQ/ClWxiNjrtVjLhd ONM0/XwXV0OjHRhs3jMhLLUq/zzhsSlAGBGNfISnCnLWhsQDGcgHKXrKlQzZlp+r 0ApQmwJG0wg9ZqRdQZ+cfL2JSyIZJrqrol7DVekyCzsAAgIIALZiDVEp4qPLEi4X 5cJVcNvqmsft2qvfxiesiOJc1a7IbECXXUjYbSFG4GkOAd3LFqgznakus4BqNxyL PZPZ5qDpimFEAspELAwNaVFwYHnu8YLaf1V2R22WImDXjssSKaDY0iJT68v+69FU BlMbHpKmK4uVCflBdfGEmVBoZaNMqWjcr4KfvwRTwPa06GcF11Ol5ld/ZBdVCrQb lRpnMpriiRqdY81uWAvc3zONwjoU5InTryQp7RVe8uCDdDskJbSXUgAOiE8w8jXf cDFq482nSu5maqE7Qhr4sv5CMb5LjiZeAyVxNdYg2VMd2afef+TnkiBM91ITbOCA AquWEJ+JAEYEGBECAAYFAjgkhusACgkQUes+8Vd2WvLlLACg/LAuccXl5181u2vP 8j2yaW7cdyYAoOYLdsQGtHv+5DYuqCTjVjJtevqb =fA+F -----END PGP PUBLIC KEY BLOCK----- xalan-c-1.11/c/xdocs/sources/xalan-graphic/0000775000175000000640000000000012037700125017511 5ustar stevesambaxalan-c-1.11/c/xdocs/sources/xalan-graphic/icu.gif0000664000175000000640000000565111555300364020774 0ustar stevesambaGIF89a, H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIM̙`O:o JtO<<*iѧP"Zǣ6袐;F Ԥ}$7_IV4Vh$mHqd dmؖ3fIiF@ot[_"EhCIfEv$9~iyГH>uJ:)$s6 ikj$59x ig+].᱆؎#ي%b^ TUh{F|mW\wKohK^x/h>Vo'2m>,EnOqEu}n[Y̐"b+%*28% sgyum([ΫũTt Si%ѩ|=%OC}N⺴Ac֥L׼lmO]\n/,uOq|7B{-|.qf8ىf/y߅wu䕙m2(w"u.}q}V7Zt~ۅ:!m_-^?/{νf{[TǛyofF-[ڏvwx|~e>~}~³ ?ܑzԚuB+b;)&<ylK8( l#$H²tchB{߫i'':|> C!}F| Dlhrՙ"kun=ZܢH׵ V8{2ުzY[##F[L/QY.cUHBː&3n-|6 gQ2+#e[x8HUFa95YFp -2Riqp GgR/ E" M'K&╽-cM@R0dNsS)Z B Tӏ N\\(C4-\Ғ(gAjx J-iUv<\|%ݩi$5*h(A |g敳wW9ժj*AM VƔP:@EYb~Ja/ejIɄP\j9;b#ɣ@ʯ2ItaCh֍i֍=zhz_9IuS]=TiF![Jϲ0)fcYh6K1ў^O$f‘.06(TfJ^2i1kY)Uz5Se*%*T7MK!MX (aYmr7vlmi=NA哝U&5vv`\3<:L "/<۷xUq 'M22B0S q`T$) nC"@ؒe`Ml<V~*9ZL%cu-?WiHaxOg^iU5n/8gժLnɼ@6RsQE *݂퉭~{DZVծrx:z=Mꆪl{4錀wo:M,}iWD3oX>4([1zӉ'=FŢΫunFx׾d9dQ|Өy:"E+i^ _g^5mӑkHn~l"V|a8vUie[>VKoR𜦛!ka+KQ$TFd]9栱9w^pZO*?IcWSORQ{I=|]-'K o1>RPwֿ>zW*ξJcW)}Z򇴟s5ҿTUө}ZϹO psp>}Z򇵟sϦiik1ԾKCϹ:i Ɲ ?[?9>RPv5K 3ZM7S/k>h>%G]tӿd_?^O=,g}tӇ}c}tN}^򇵟suӿNuӿ\}:({Y:Xiקzi׮BG({Y:X:m?5lǶz>PuiץUk)N}^򇵟sn"ry[ߑYBG=w_/vfӨsG^yߥ pծO/Vp Ϲ|jY~W)Sߕ ϧ =>gܿ? +Qߕ N?k>ѨM8ͷ=tT?ti*}MBfGe2y]9ZC$[?>(}×WɭM[I_(ؙ[1)淩ֿ}5 k o7crIzy;_35Mn,yV$?%2Z+FN"iy(m)-1ZumۑXWzVO5_ .-SͳY1ڊ29=~ڮ֯څ3+@ҮER{xU x[|igD$X`a#*ķ><\iMzѼoy-##GFĝÞ'a?Ə;5+|N.=yYOGK %a2Ȍ]Mnp󊮃ѝHcjSM+,4=[wN&@g>44MWwN.@oc˰}]w_½._^`y5-_ύoFK}]w}.? V]X^Ϥ.eㅕ~SM~W_E/˰}Yw9!gu>)}WWE]`r}S|V]hZ N ?Ge>xI|px|ߢ˰}Yw0OӅ[tQv.0_ɧeO|עK}Yw227M8E'ov.pOߕ8FoʯG>ot­G֛՗sp$JdXYG18'kb:~8}ٚ~WM3<=yÞ-ܭ+\l'<+5nYHF gAj(AΒ`q?\֋i67A 0+JqߧkZ?OW9fxIoJ&YkuAp='{;hi1Okb-1܎{9zF-fki6F r \JB'>=RL<.p=+ﵸ1 ; =p~Va랢G'k6viť٭ލ(3aq0DvUL*Nenwe^Y"C)* HJ!^fdݾ۳ʙ'dEd48'_"K>o{{ Ub:gO\QHm|jg߰~66}ŝ5}zVniatbur}%zg:t?k)=aI{kWRD߾.DaB3| a'a4zuk2;CA@3X00 H<=- mc-4W#jG ;LCsLW0FMG-_HTxT0~9|u\9 ^$0XAqyt !$\|J[%oe[KD'2!bߞw^i%6Y<-9a‚$=Ie67CxPDQR۸ (lxU },C 9nZG@Q|n Ι M$ Mk©=1IRKCjYz)-+ 2|yf?ݒyufF#{K9+1tUb";d-*zR˩[)a[2o<۰]n1 ӶI)t0$ u,lLfFH @lG6Nxz8Z(Zh G.  Gw ^8K f@~\ =ZYffl 2` ܧ$r2ȖDbdS d."!~TU4Eŷ%PnFK'%OS眀RMvͅCki5ğky$YXܹs,`2;xhiW f#mr.XT"ޮ. A#j>((m{aWu?6rO ?EUӰoGZi_NmZi_NmZi_NmZi_NmZiկ99?w QG?w QTt?GܖBZ(}>J1fpF"6W5ŵK}rVx2C[ .3xRg`:u+G 2N;4#{kzWFٛu їq~VSsTzs:-4چ<[lw)vs!# pܞn1yɭPYjZ0sp`C2*D68RiQɦ .P{iEK901(((5 Cj sړbx(JXXTWG]`[u akO)! [-s-# 7MsyRs3-=DmtM5&tg:hUܲ34qdd19E|->ca S&GSm;QۊvZbMfOG\}Ā3ʒ + yTע(W%brqHbDѬ-]`Ap}+G?a-CI$S#r_[E<;Bh1&XMc6@-5'uoP|c=/6j=r×^e rx]Xa݁ӧ5wDIu71տ瞗O5G&:SiƫcKWOoCB# ;GCn:+UAJѬtj6nlF<+0 QGڢGTP+ֹ */?*/?Z?OVW.䶶֒ <ԑGQ7#w85n֏Ai^-[뒳m BPa%qOj{;C_şE9}6Rq٤9#ս+X"66/1lppxe<9⇊W'99__qZ]%֮Dp<.SɈgk R?r*Vca#SM?ۦVI"Ӳ.Gؒm%%c:qgZvzG W+:fYHA#5xZ_΍~ݨ@WYB 뒡 <w>gto&i'P`F^REuR?vZ qqIi'5mJnm9eBdA*IhȕFuzf=;jo :.<kqhLnBtFcYڌZ5K<ش3`ޘp|Z!]&tHoXRF9FP܀3s |D"Pki⿳[)2J\H lN'mI::Zy[RхxpH ;\wΣ {ncnӏE<5]\"wCƚ4۰.݅ #IWr:KK>bG b;' >h~è5r<5'H7Wr4C3)cK(=6mEPEPEPEPtCxmIR;&I+mé=NMEIF9̿4گ/MgQN4__?__΢KKu\ W_&W_&hj4j5EGUeUe(?گ/Mگ/MgQEYhYk:.}/G}/YQp4__Mc-ȸhepydy@#Qp2?_%X_{mer. bїwqКEgߵQHz[++aY!aRA#֧E1xhp<7n зnQUv)`xk3t`xk3ur\O_-_-Q.ʻ<5Bޙp?<5BޙpR+PM>ywU zg zgKfEƎywU zg zgݛ-G{Febu?ٟ99Wc7_-_-p 5 ܷ)ɔ<<.ʻ?<5Bޙp?<5Bޙp3z/H:;մx彖95EYX9:u?ٟ2ޙp6KG5_HJiR=p9#G<*AKKYv)0*v*pH#PG+ϧsQtī4A]j[ov41b)R|na j?so /-Vy[wFO&U#;.iiV64?Cg,}K5xR7mIkanne>Zsy|yqpjvssmq5ywA2B#v=p}+Ѽ%iwRZL%vRu4N$+If9 aKce3IL$k.~` kLjtoMB9!UKh<\#J_ b`܎2OItu(u9\$kv$n>Vpp̽O:'fiu]"==\q@fYwGa⿷hDV)trP*OFc* F\Cekx/DN7Lf1ڴhUE$l]O!sW<-ik5쌳VKsk1V*'aeqe=֛ ս7?jY6\898@(((C\6?/ 0*QE%Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@zoP&{`C^Oq!`>[͏T+'s#Uq#G_"FCZ*"82=A`s tviXBZcz=NrrNI5;֢N/ ȡhSY|>/_l6Iy`ۆOȡg_W?8?|Qͯii,v0FFR w\xTrm7:Xg)lLwDl1W"6VP11g/o_+.wƗ7Vs+.7ak@z _c}+Zr犓Vs?X%vSӑ>[|Fr1_XU!MR//<"*0nrNk;֚Y0-l2?TwU\4IJ却Ā36I~b +j_2m#FּծyzqYO^$石ZTޓ-Z9;p O_c4g7BWa .]CN(c"(bU?u_[K=&tphJ} ngVÿչXzgoܠf?w QG?w QM.֏Aዹ-O>$Q|b':[EslkkkqtBeT@ n\gڥuWgQEr@feviG=5sHm5xZ՛uta)ʒ9ָƅN}t{x?'NmAs54Kun3}GzT-*ÒFulOPf{/*W~|[i#ql2%:}Z>uzl[y9l? $}߃ 5/ XG53ZLәd6o0dM+2X)ܱSZm쬍h εwsFF?}*1^n2 ;մy#ү-< +/`|݀l@0tMJ.nỶ| `8 #rEwUﭾq=ɋ$Yn$~8eVS:*((((C\6?/ 0*R3*)f`I=-UԿw1sPic?m4i_zt[ []RUǶԆfI#j>pYwk:_y9%ԎUp1#DHp-E; ;4i_V܍<$Q}͒8d".)rKq"vy=Wr$bX%1#q X.]ӰoGa[Z;4Wk wB"2($CKiXRVu-^)313'ft i_Nmszޯi׎~lMI#E!*w3mc4vτ;ɚ3J4P 4_ ?a?ƫ!i&uζgi20V&pn+GEq=ro" @_'}1 W'(\῵ &mo{t{ W'(\m'-uKqņ%Qx!lvdWQ?пG"~J8‹W[?ÿMC Ƣshfe{hK K2I^ qws+ C?c@WX.pV-xQùkʃ'*;z/8< ƷR5 tɤwvSv95AmmOCik+kk"[~Z@`xAQqxAQq%"1w%i֤=uOY1QssMtbmn.\;hL-ˌ2{TJ,(Q̱!iŦɵgk9`##*xe9G9$xrqx]1`<Z^[-֬BP<.3w޹p+KJ$dEh=VRa7A+ q>>Tk`$!]LWm6\022j 6z<> ;KQ?,>`-uo' Km>mf ^7HgP 98PAI7ТΎ-SvhrUrq.pqk?+deu{5 XFL\ԾtgOŵY-{pѼ,]ҹl|vpy;:͖|4KK{3yau`#yb*#'(<q@?%!~}/e67ym 2R S) Qx=ڽq""J`1I!FH5}B{mBV-Ԯ,L D U@C.*ρQciOkciqn$hZՌHS$bBak&>yx$dE 6HJD&>.> ndp_;A;0.7-ckuPtsBʩ#˝ / ^ ՁlKlc^Kj4bXbv#4&$Z:©2\3)^~`DnAB7F5[‡E翖Uy,$QI`L$ne$[@Q@Q@Q@k?׏&J*UWSUzyHf5υK$ֱ[[^ofu$rNuG&@Mf>DMtotyC[&Av~36%q[-̶M#'ӿ瞥ˏ7G2cSEbE-]Iԧ ]lSۀsз;EнTV/ƥBޣm z㴮?e.FisXMj]O=%D͞G)% 0}x'ӂt/e?mMњNZ .?iRe=NhbJ34Vя-͜ƿWu ?M_(:~4]Gzg{m}n4/H2nUQN4ӰRn ( ( ( ( ( ( ( qPfq !8g`2w/=BtXo+NqЍgK}cmrqS&%Bq ={+=~, */?*/?\'+3·fZT%Z}@ x#9w?\hm_5[]N|"+$lԂsN;GBKJuBR;`8jֺ]kG1pxe9}s^y}X6: <-Wr,ar>yV{VR22On>D*]U;K+c#hJ:,9$l1R紺kֈ ƹSәb%yƜZ%ݭjMuyBFA!A.GA2h5\KqHHęڌ#Ъ b߇R8tJRw4"݈a}|vv'Ѯ!v1-븏J>ݕcp9 z4=!KNOnY̅e;#j*Oo+WڔwWF0_h˅eGh#ܗ19BH,z,-ND.r1 hMwI5['Mm !y ZhF5ZhxED[yܞH.njt`X ܧ?'Rq@((((( sں\6*q^ɫUCYҮhWwSS׎qS{(8𕞙K|XCzCKga,I ~>ظZC,ař@9=.+K#sZ m~cĩoq"Z\$ec `K=zm;SⳇQүԠL<,p؇{_ؔqO^ɯO:=gR֡k*Gnt.̅r0#0 R9jqu)鶖w0[[,o 0Qr<` gE+H1bKhZG.Gf,9mĭ=CZ_ 2Jc0>Y.܆;ً[{LW2IrzRa1Y,4U;:}[ɦάb O?#ҵ[%Q֥%0ZмLJ^ | 2v, h,Vԯtk.=%w"&C"-Os Ya-vvbXp0KwZhVڞ𬌶Ii"&aTuєapdkaeɨyQ;ڠ{#,<¾jn  /ZYMrm)fw`X% D*_M\Mww&;D4I *B>cw=E/'X fw;q(ϾN:L<嶕"cDW!'kp69W ֮Hqdb,xy*NsQuoAo=թ,Y$veT DRǰ;Nh6]xcIӵ{Hl`:/ֱ"I&`X3|r}}K藑]htvkTp[. ${G$oZO-"kcZ19wXP{YiF խw+G:ER Wa@\1Lz:EenE䲗Xl@3r8v6$QJUd;W ܅֕ hz2M&s{;$Ȃ*Gh1߆5?j><*2HR(beW*8FX3 +xLKMN/>{}>j/$q%@1r`TA_ MmL$e$ sTs\-F F;CKԴKȄ?Ep2eFX.DԤxsϻtӵ .bq4/aKuu;GdTKȓt'qz~P[}I:kP$l%PDWp{Wlm XvɫK4Ivd-ٍBB4QnPBʄrUCYI/+go%Ģ 7E,Bp=GWsqdLLz=ZD6{-ZMDeԼͯ[_Ou̴%ÿo#*)LB =y__jV9̷rwpk*"6tSs"F!Wʟ0rVڄh٭Ht.YOl<|ÜLAMuzʼjĶwwvγFqKKH5i"IqxFHzJrr11 hquO3}%YnI¡>Дf.KlLt+kdZ5ن<33QR㔃DCQĿu挱$rI3Ar3Yx8Mf͔pu#ⲀOJ ׈aKTݲꌘR7wEdbn\]hzmP?11N5 KrNdrsaMnv{s0Fo+l5Ah=mўqXfOZPN;[Tmᏹu8o!+[8zbeBѮO3q^_gSw굕ZEK7y =?_V98"c""9Ay}?J? GWȎPx_O԰0ai?\T :(wZu5tϵbj!?xc˨NQT3/~:}fMGZ] /--' 2+6ԠnA^YJ5 gW.݉k/lxx?7o9 l:WLKkh(EN= 0^%~L]Tɍo+_fs1"m#j9p91Q{W9i-g_ ƣeK7iO$Buz?]{ }YG5xnʬ] 0#  X&ZuKK\ qhҳ1apDĀgCj _'M{Y܂"2r j#jZCioX@-j$DD`V,yNo [+yn+.Xu4R@0#` 0Uu^DƇ)\'|w,Cj6%IDGlv #HP%JWa~u7dyobUU X1m4K;{:}"c: px'g$S-I-[.u04Dؐʫr- IScQ恨iZqp0Z'YUCpC\> ^[.nc){f_,AN^c'3%a;E%j !YlgSp/i0drYusI~q\q}f-2A4%q5[ Px oUk{&|CH-\#7 E-u i[ZY %id-3ZMH,@C6[ۢVm=GR^;e1ywLI~BsS9Ϸ>=)QEQEQEQEQEQEQEQES\qN4u2^˹o<æ *CQ>]at?p^7@!JŪ0|$Q0@' n*>Q+e=sdr8o#fw`nFޤrNNjKɛf~jƏX-F`Uc$ǀm9 a. DF8nSF!g#~^;cw3]EcӀ? /On&2)#}~z|(<,-_Kş ş @t?Gs_.*hq?PxkEBlcZk.@ɦ#'R׭4预Ȳm(vݴrGx,$#U؃zWxC*qӋXY< a<ۈ `F-[]'͵2DkrŘGxLi㝎.9ESϛ7-9C5iw,DpB0ȬORye* 6u_Hv%Lamm䁳|;-_GkK {2[.Zi)H6W;;,{ s I39uS&7=WI5MP4žxF9\姂-ƦZBmڭۿͼ>t! I{XU51u>l+Ndo+6φL:a[#2Iо'utu w7[,lF RS"8Oo 2WebcqX^pIe)4/,u|UuG7vp[.uh70b`vL##9؞%LYE$V_eͽ*8;8 tLn1jO ݗfss}} TnkV tuY W!O2KUL,@;ZqV֩\F `GnXpNm6:yb iN}5a]dFSvK ,Z54T43$pn+v=gDqn'w׺[ݽM>-2 ,Aݴ@*H=F+}3DFI܈QX`ȃ\y'Jo#[[8\Gp̂CKd*XV] }orx`0_qjeY3no V/Q,2N?2@= k2mRNa [N6#4`d04OXXw&fkGѡM9Kl6GOs >^ʿIRx ;vQcHE в;=&fK-~+fR5,[e#9WS4c=͝3\* Br2M+K5 ^?^, F̘ #%?.~^q?V۟ }G@s;>d_3Y̯QvmoHe6̋LBGJ_-R,๚"Unctds$IY/j'=n7gyZRtRfOS3۬s3wI>2JDdzJjt q_L2F#5N:-g,-)e8{7n; ?1\@9oFs=úX-g16C>I.|o?jHR&YA\iyѣXeKK1$5Q !WmRnx[OU}sKj<-ܷɶuڌ[T,,"}B+$^ZHjm8y2gSu mrzcKnWVP_y>\r)fU*Td䲆⻝3O[ˏ k^ܰGfV/SorqMܠ|PQXfȳ춝of/Ypr(y4MM "]gOI).X,ecg8٢uoyIvVqE(eLҁu䃻9B|^|&1Ն6JEcMɯ`t-2=ʅwRv4%լV?:@%s\2x@V,"t搤Wmv'nr` Foou ӣcs0Q 18۽|Er ܢy<_mp--絊mdF{MWc;݃</z徥$\;$W jf eIQ4W6-V[e}{JF )[m  /v%[6X"5F)X1An.F->fRTHQe;S_+cz{t폒C)OuGN1=vȘȎPx_O#}~, */?*/?\'*}踪{EAOZO( ֝Mn3@zm4f;ӗP wF|r߹~>uZ%73\\HWn$s29U⦽u}"K-%-ɌIoml/pF ^@A$#[ #KskPPFbˇ+p<[o5)Z"6)wk?cu}y:4mlc PL]\ÌG |Ek[E%Fٚ[wњsՙ726 Bx7h9*0Rʓ';lk\mD%K O~P8N d>j0E4cl|~>Arl kn.c2Z\Oyq\LG )#16|_t[L:e'Ui2OyY 4kmcV%,xQ?/͕$$TB{eִ֞;ƷHZC.3IMs75-7KkS0. #6ݶh>rM+d&G/Ѥcֱvlc}He? @=+OmR i3x$#`9UY: :$TubU~UPvpU݌ghbkN><{aٻolV+ !;-/ʗcIr]31ܺ KLCwzdP^?_W@k?׏Ԙ* q5j_ He}]N44Ci.pдbCT>`Í靸FXxz+)4XnVD&NRc'L`֮,b4Xb7O83r++pGZ_x=:YFI3m.K%<hE=uԋ[O- j ՞u$k7 "mTV<K[] L"opHd.ͯO XjP[z\dlD34QT| H(bKnk^ximF);yJY|2]x. q .tGf0| }>Q4˽c[24NXn`T/ٷg!&lm`_wX,Mړ@`yJi7LxD{c'`034-Uē#rJT<䫩#QH1]gG -ֱMf$!YِŹ oqvH,! bnў 3O4ϖOGLgcWO&wC%mً,w* Y96ڇ4QgeBDe_1_1P @4&{Hc[@zdt%+|xQ qee7tf!7YQpmc2eRWj |#Iisw}Zx-䙥i4pZ+#. roIvVO/ޝGwfhMrZo>ؼ62^f3Zĉ6VH5̸ V${RO_HtmᙤhWpũ$7>-I$LXZb;˕q!< $Nu[Y7l5@/ RStǦ  +O:m}lm!K<2Ju(`BȪTom#'rKejWTV[;=)@,"D9ȃVm^m6 mm/ V RiF `I0YxU]BU0280s0" 6HK_˶ek49", melUlh +sARj b+ɠ]72$mN *zvkJ]^B1jOc!X#(UfR@ާh*(ob ܬt=N5xf&Ou˒py6)ojs[O63,*A H+rWX7`y"Qp*0qD v-wV}Fů.VHغ*~dن`&<b;=!RoWU{P|as #jƏiHDgf)YhwlTdHzz(jmnQy֗K)aȐM  3򜝯5iv6bȢJ[9D#|yks(-ӾZyشT+$%ӰY:Fi:v-,y%YD#hfw>qqs?nc}^޷#yUI7d [i;^㭢8[O j"U8~lh 'TdSujzFasYIO3e*H$(s%ُqEqzTƵxdseH|STLnrǀ>l,};=`I`L0A!8@]{i{M֬ǫ\/YIv1 U>mRxX1zQ鋪ɨ\;'Y6S+~ ʧ36>[i;ָn.#$PQ-K|#NޥA#IEQENcՎ5]ɿo|ݞwY흽[@X`fպۤg=P:`Hz#Ғ4v)]2QXtۧl|nOz~˨r:pӶ>AE>Dr?֯O<%兣``xAQqxAQqHhq?Y^ZHP4REﺧF,܎RqչZ?OW9fxIoJ&YkuAp=]Q~W(VXI{j摬jܵmֳyї$1e<9渑ƅN}t{x?'g0xkKdhLSڄ|`/#LӵLJӡԭ46pG/@,<0T;FK7Mżgmq;g^÷7֥xZo?jm|VH21k'~ui$]ھsqo Vop+&X˪H\p9FGZ\KrjRm*ppbb~V,6pI7Zi1:h}6srѽ+i`A,#^ LMmtgau"Io,o("٭yRi\3Yzg9Ouw6 0l`0gTٍݓ_QYph4."){?7G|Q6rͥhY,LךdiVE6 R&:5&+bl;hinuܮ*sP^xB]^8a6G'*`}r}+ey[]m8Km+IB<Իu˟Ag57WP]H]LGWfm"/C;R?-j~aV8BX1BrV#9\V̚ uK(1=(>13s-bx j+,,- tUB(17.łšyK`a*on#b3BcɑYfFPo}Qom-^dNhV!xI&-wōA闶FZqs`7^0p&[/ WqnW4v6hm+h^3$ҴdR[IWQTxp!N1@^Ɯ^%t`ik{.&'P@fP$2@r`yk<%i[.YS]Ȓ-XK7d `0P 웭?.|G%iliɛs Cjr X\A!r NU{eSoRm2\\^Z.?l 5[Q]pЁ3~/y[KD[R9cU,HՂH;d0 庞[TH ,!rqZQ'7-O;y/`Kn s,slPHss -o+fϬh}(۾ E|ɍzYjK# $Ҝ34Rp#^T (f}o,2N%/&;]9{` KwK suh|+ԴBBdh =>yv}[~vfߏ'00|?`l2$_h{hxIdfwtX:]Õq[P-8g[xd-WI;ۥy,Ibyt_(+ZΒy$1c!bNiWCEcXn<=I#.T`V%SÐBd9`ޕv;ARإ(2QXtۧl|nOz~˨r:pӶ>DE>Dr?֯O<%兣``xAQqxAQqHhq?Y^ZHP4REﺧF,܎RqչZ?OW9fxIoJ&YkuAp=]Q~W(fXIfs؏`sW4bXڳnG^R@<2G=s\HJB'>=p+KJ${1߭td&kkhU扚dB̡{Tԗ>9!a#YDA*][lx4Q*~'# jXb2\4sj`1Mn \lnOrj}mB;K{v*e-UF@㴓5TѴֽ3E Eo{j0䑌}HdCsX ` XsX n8gսN%ʧ]N=KX=bB H/?.4~Њ$ M˱``*m\!6ne>ǺA<~~xEoG>emurKu |RA= / jZm-O i$ To3&Fqdp]Cok>uqq,?g yl1jHwcnv,IjWZΟso upN\)ikMYI˥x&rW^м?dgIiIm&|-+ܪ~˼|˸Z'%׭5k{UxMr$ tVM1p)l{t ǦiQEQERZ("47R ͝2Ko̰q'*=AzxmQ$*Jl̏p:FʻQO^X^ 筻@1G'c Ԫխ֓r0E*l$PB56kfhN_OQZq]+m%/&%%A `\ g_Kћc߹" 73Ea |tJ<'?=׌ckb5GsRbքD)nŢ))8░(C)OuGN1=vf!g#~^;cLdSG(</ GahjQxXZ>Z?w QG?w QT.֏A>ai?\U="'-'[ESQEQEQEQEQEQEQEQECxm]P^?_R`Tڏ?&mGAwI ZcxKD-kfAUl924֨-N,I)ONqʏKa/arі?V$ݤ+"Ywx_Zu? =_sӌ_EU!DSס,uI^F׮b=N%\z9g (kIĿkۧlziE]QE]S@t?Gs_.*hq?PxkEB)((((((((C\6?/ 0*U]OAWV QڀZ"BYjѹcvDj\f}Pq \bYr+G +MFᨶՒdn9%d%9wd qkIhP$3!b!{Do&mEM *Ez}7Gz}7XtRXOXhOXk.7?/?/âDo&Do&csQ=bQ=b:(XOXhOXk.7?/?/âDo&Do&cmDu44d7\QWUK<5N~o:px{僀]r:=qPd{~vȼǧz{t폑h]r:=p S_*:pӶ>CӀ8OnZxN6?C{/cǧz{t폐t=?ۧl|)ӯ͏^:uz#q;c98O wtc?.9N~l8zNGN==vh]r:=p S_*:pӶ>CӀ8OnZxN6?C{/cǧz{t폐t=?ۧl|)ӯ͏^:uz#q;c98O wtc?.9N~l8zNGN==vh]r:=p S_*:pӶ>CӀ8OnZxN6?C{ vqc*:pӶ>@8 }(mx=)S9EtJ=/:h2CʕI7F0[0q.Kjqi0؛8Ѧ3yfx:N{c vxƗN]{czܥp3M*TKIH<61~"Uq\ր0Ћx,1˯];tywmx?au`B/;?. bwmͷ@_hEЋx,1˯];tywmx?au`B/;?. bwmͷ@_hEЋx,1˯];tywmx?au`B/;?. bwmͷ@_hEai?\U="'-'[ESQEQEQEQEQEQEQEQECxm]P^?_R`T{'vF-Z{'wF-IG6?<_-`G,ʭ#y8Hy捭KٵVa- xIV])@'z׹z/vby<gv̀ zvnKw*A 0`r F#|C=C]fl.!Wy-K4HIܧ Cj kE1:L$Kw7+*v\ٳ/f#/ $k!pCqv7WpYDI6! r`?xVo>ܮڊ`"aBиb@S)82CxR=^MjnR@ó)TGLJ m Y[kqT]i {(ܬ!nj8v5E_cAM9l.oVDH7Fz"* e|]wm<X0WmUW99+ѵ+贽*P9cv8cP]_CݷEʅu$ȡFUpO+GLjk:iw]D3n ׫Q@]q/hWnoo,l4qNvd+̸yZv*^BQUoӭi^h~i$X׸,3zT*0!3cpHERԵ$ӣ\Oq'm#mf !Gʬr .EVOYYZhc'2H=2 4U;TSk LE(IhA, r1W +ۧooM+c;UA$5,0Y]]cXE;_eb剺1#+23߯J(_Eisc!{9Z\PZYJX|%$qy>QU-*PWXKk(#w?QLu849̖8dyp #$(N}F mFEỴh6} YUt& Uݵ~9ryFW=w K磴Q YBL W!4|!.lIR5^0GXd3mRsŲ _YD&9n#[ r4>a*3"+[Z;H,hŦtp+pcL<)1\1ՆvbvV9l$ʻƀBᦏ?7om4P\ڤj E! ꄱU, 0[]IM>O-ĉia$ nU$eA b ƴ-t6ǃm/+UpZ:aP8N-ZxR^'+y-s&Ț? [X fkk«C[~|cs5+}B;}7:n2_})#bviQx\ڞFӠ{k1JHX$ɩmgRap3[D.Iw l߬Ow- :[SY$e%>SO[ P5m Ũ-G6,[yrw& 4=6M2I8Qbm5Psq(2w]?I717E ~DO]ZκU巇5n(NQ9UԜd?xsVYK4- ;/n<BUzIEvv=qRI KI 7"d d\mGוK۫xH"`)aHz ޾C[p XR< ʎK+%J8PE"ʶ_&HdMܙ;U1b9j:V&gl]8AD@|LO$ ^)T28)pܘ>Fuyפu|ȭD EaJ `qKGm$^fnM|vXGn1W,If('Qg'sgZMk˙KHQDV݂ʥr;|ݢ{5'ЖK>K[@|2g V-"]8ZZGonAlR@tyWhQ@uOZz]C=gAj(gAj)%"'-'Z?OTqPhb ( ( ( ( ( ( ( (?/ 5 CjL WPdūUWPA ͶX]E'5% c$gѷ4dRzH TmWhemsR7Tn}+a[#mҏs4kΊݮ-CgaDN1M-+gzV?ܹi??!IYt+SYYI-I!pZ!x l>P[qpE<8v(l' F01sB\4MrhSRKȯnIeY4U8DV-++%,N#x#"%-oB\4Mrh1)`ie͊Gܥ>tS3Oji?o>&bhfR9e.'ipG;AwB\4Mrh5+`m<\1 ܼI `L%𭌁?{r6xʲ[ӪȈTF>EihC˟B\4MVR+ٯo.bX̗ 0NUT)FhH%h %!&fDXBB>x!xW?!I.O&+OiW7nf C@,9"4Eh<3Zz֧yu\I.5g.O&s4w[{"/EJ^I$HTFS4ۃ8Yiuoumq}}-s"CX^0HB,o,0zd Ї? 'G?ܹi?k% ̒J{WrY olv3('ʻc#G^[귰}!E,a5sB\4Mrh ?l˪j&Ia,DɅb#F]˴?5t0ۈ'K3cªmA՛֣Ї? 'G?ܹi?EUЇ? 'G?ܹi?EUЇ? 'G?ܹi?EUЇ? 'G?ܹi?EUЇ? 'G?ܹi?EUЇ? 'G?ܹi?EUЇ? 'G?ܹi?EUЇ? 'G?ܹi?EUЇ? 'G?ܹi?EUЇ? 'G?ܹi?EUЇ? 'G?ܹi?EUЇ? 'G?ܹi?5OZz}\Gqp[Όo  gAj(gAj)%̀"2ii縌,HB9#'|IsjzhEB/OUsSX?"ȉQDO*(X?"ȉQDO*(X?"ȉQDO*(X?"ȉQDO*(X?"ȉQDO*(X?"ȉQDO*(X?"ȉQDO*(X?"ȉQDO*(X:\|z'Y7U ǂ2GOjE #M))h2=_'Q|dʒ`G|d7]ό9RQ@??r_'TP{Ou%(u>2IEG|d7]ό9RQ@??r_'TP{Ou%(u>2IEG|d7]ό9RQ@??r_'TP{Ou%(u>2IEG|d7]ό9RQ@??r_'TP{Ou%(u>2IEG|d7]ό9RQ@??r_'TP{Ou%(u>2IEG|d7]ό9RQ@??r_'TP{Ou%3c |?YqA'4Q@>,T_-E,T_-E4#Z?OT55"c ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ץNmIm-T,%q3PkNpbFMo]ojբ2n?e+?F]ojլ]]Uf;wxehZIaHé 2G!KqC.Y5ط2#W+q6 /']2PZ#g7g{go-&v{bX!.V5 <$@ط2#QqC.Y5j@νk{hWXya |VnԼ=]]=ͥΪINxTe"\ "@ZcE_}jJ(7GX=ƭM,61Lм.‘_rG!r^v"ٮ#"%,)/ H@1G\5NJM>mN,m VB:g`B͜|`(j^"ӢKk녚o2X\l{LciT>~m4y>~m5J߶xѤmqw #eU&8$GP2S2c=y ^Iuw;@ /\jdE޺ђPؙ?/|_9?/ͿơEM'E'E??:.i}giO/ٍwOoOo6>!յ[k[n1J(ă+6{֧{lӍfqemwOoOoh1/nŽ[r_ SѮ%4[F,T u=~~ cI(?*/?*/?cA**bV?KQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEV?fLgHRww`OCwgml۾7:Fʞh$ÏX?_A +C2]?/ϥxc#bio&>T~%^^Y\۾7E2oV#V Gw?\?/&Wľ/lȌ۱8WN8=)6Gk1 HpvTxc#bh;.i@c {~N;.iG!sH4藾`i"('#ڷ| DŽ5۩kQ4/&,ŢĶ! mL(?vǘ;5_J?? *w>jגX\̎'*o[-K{}LOL9m~O^;OT ?? *8O yr4'sF;'joe<'ʋ߷8\}j#'OP{whҾ Ƞ`.X *vmWj#'OP;>UTn% wtLOT tagmB?_/~1րNm4i_=6;OT a?ơh$K`"|Лi}{@m?S(wD6Qxr'(EfEZGVv 'yeXk=X#U1ͰqO[wD6;OT a?Ə;5_Q@m?S(5 Fۥ[vc 4xwE'wD?´#8cHEHB(*8TN?~?ş w֢#jRYeUVU s*NmP0ӰoG(NmvmWh;4i_??a?Ɗ(ӰoG(NmvmWh;4i_??a?Ɗ(ӰoG(NmvmWh;4i_??a?Ɗ(ӰoG(NmvmWh;4i_??a?Ɗ(ӰoG(NmvmWh;4i_??a?Ɗ(ӰoG(NmvmWh;4i_??a?Ɗ(ӰoG(NmvmWh;4i_??a?Ɗ(ӰoG(NmvmWh;4i_??a?Ɗ(ӰoG(NmvmWh;4i_??a?Ɗ(li 2084QExalan-c-1.11/c/xdocs/sources/xalan-graphic/options-include.gif0000664000175000000640000007626611555300364023342 0ustar stevesambaGIF89a!k)k)k)s1s1s1{9{!9{!9!B)B)J)J1J1R1R9R9Z9ZBBBBZBcJJJJcJcJkRkRsRsZsZ{Z{c{cckkkkkksss{{{{{΄΄ք֌֌ތޔޔ甽眜便,H*\ȰÇ#JHŋ3jȱ#AH"& ) D0O:L ;B""nd/_5{}IxI's>u'V tI!فŔL ]~ p,/V<zSgz3V@~ :Ր" dUU` OTdzWrAp'q&dn᧧ Wq~.WHm I$]-g݇.i~ffi9[e%"LթK,(`jAHm]k2Ū؃t#n6 QF+nmfv+kQ겻n+[+pl 7 CpOl[wF,llgL&\(r0,4\30\P<@DmG'L7m@LC- Tm ,P5 p5`݀ = 4kCp?tK=|O} ^x7xd9P\wyx t@ ꫋ >> n{ Û@)$|*0 -<} -@O} 1P} s2p_20_泏/<_??` Ѐ<@:p3 h4 ` @L;4"@j/!ֲFp͆6dFlkS nvKb7o~ %XD\Ǹ \ r` Ƙ2nsg:@XصΎng; gB.lg9r{Þ 'Y5( f`q|6e n>6)U9?~Adɿ=-> &0i@ 8(4:S$KB,f\mVUZ ixC͆c+:&ĵшqܖhANt8ӊW".N.Θq`&q \!nGܕ$YlTQuW7;G\d,UeSdn[VS8Enԓv<Tv@IEnfTyUo}?UgrKg/eUpxe'yW!DiƁW(zrWSXrf66{GtD,XY'kP{,Pkstc|7c8tFCVul|Ku&\PX\`}SSnfH]&~#=w1]1~T3^f浆^^Kg_E@/.0.q `LĈyȁ zi57aX@zO7{JOs%'PeZZfc%QjdlQd&:sddvdKG3R%+4eR}WVvWj`>rgFT퇆7oP%g(K?gg tx LJx6VD i BH)g5az启gsjh{Y@{Z4tyP`dF;c=X|uvQlVlK}L;P4vɵ\cm}H\vaCwU>h^LEoOgpVV^bpd@(Ҏxx 8AhQyAy848iqrYC$Ca aWso#b {dbigSPIZ6|WAH:Rl!PQ!m[di}`wTX4eS[֌Ԛuf'JG~ix^MYgTuUnxq8xdXx%0_ɜVL@#rLg r BzM'Gr5߉f6jX777ukIgFQkT|@FiGY璿GhmQv}Tmȸv&I[h٦'\P6xYgvHiWlnp7dT{>Oo[UWxb;de{b@[A4`T`;`x`XjaHjNzcÐBdɞ$~s*s>Pct'uF3 @:S :mJ5vȃn]mg}5wiojJV{׆K)V@ɻtLBAq`u4`T5duQ*J{XZ{8ّZg")lTS[Xm2%Fc[72hTLrlʰM^,Ų2$-St˗˄,V#ȔlYÜ ̰RԜL<3\c6,Cƣ \1[ۼƯNlʟʾ,4Cʂ οοl ΏI̥̼L|\]l1mmȴQ,<= ϱl]MyľL1+m<<-Mȼ3 J ;"į\ԕ,SB|#J dc=gdcf]e}q=o,4' 5ԷM1W]хm)} q|`-ӈmDk=l usBtְڥm׭-uoۧmi۶-ۺmpֱ {ּr j]-ԉ+׊-VGMAʌ7]-ݕ8<=MчN7)H|/2=%П-/nc,0%} ]ޝ-/]Y,ά--쨩ZLa NDp@.6/%]/ڌ;N1Qf~g.ӡ-1J؄ B-^%-.X/Rms>.FN˜9S) qZvxvr<}/0ʖE^0ȂC^|^hrpNQDZNSm1n,0=o!s9N<;|1}||p݇R~>|쫮؎~ s윞s.^\M~NսƊ֌^h.}: ݇c|m,"~^c}4obO?/}a9/ ^Q-]>袆\H~l, wpnpL%Olo`^wp`ঞᄒrsTvlĎ? opr)/T=Zmǃ~Wٷ$O ] o@{C/M=>_nj_؜K. MDQƟ_'OSVnn؈EP dȢ 8A Rб G ?aE@'6N^[a&XN78P >e!X 6,9ɘW}sw䐉)=Kw1Gw- 37o``j* ֓B3=k;̣7^zj2o.#Ov;j"d#(ؖ?b Z ^jQoAȀ,h>*r31{([2Ȼq @d1&:N8xNЖ[mܭ4G#)rл3>%B SK- ,Q4ӵ(EJ=PM%4G/;#s 㬛jJ, JuT8353VRX5m,=fҎWa;XTEZmwcCmNTZL:UbetPfY}tNb]+bpE#Ku%T-6A#xawOX2׋{V`] : 4^S&~Xَ3Tb%uVOShNgʪx.޷e=;UgCxnnsF}o]ޔnWz!Viy,R$9~ΰ$X;K=iɭqiOYvvE]cyAb FMRna7 (꫷>ĶqQ &{,'G|_7?}D|%௟_|K h?/_xj90#n`O"d8}2B'1( j :5z*TY)Czsvd,&ψy#h+AyN*D:*ЌnqgS*OtgPmGT{rT$Iyz`r#I~֭oi*241,=TMTDL :GCJn>WTe^ FNԩgOK!Tqrҫ:RիYzVj +^:Ě1]cY,ԋys)SQTt,(7juxeOЎ-#JGI;^t4_ 1Բ}؊bMWh#`k^6ՖegR~z~'3%mmv[uuҺ4"B˄sw/zUt|:מ(6YpruLM\]4ݕ̆eF󳴅pz=ǒ[:J_nKHbGr9mdS/U4u\v+6Ic,Д}V],`-yKb>F'wSU$ZU|2d[ތ{.m5{duz-7yY˓b( eU ݝݵjwo=c~aY)_}+; ҩA<,@l\@q@ D@ @@ @ @@L:)5( AaA AAL|A AB U'sD xB(B)B*B+B,B-B.B/(\k0,C3Ck lj:CCiȑ߃V̓BPllGhE"/bt{ę|LG{GwGŇai3%UYu!t<džHn8)G|${ȉt6ik ǘ#ɈGȲɐI cal" 8|I4Gɉ\!4'JdLH[ȕ,G~IJ,ʸ?sJ{|HLJ˯\ǧ$K`H+\ESˈK\ a9K\lITKԸDujdIzhVl\>&jVl%V^ Wp7pmիѿі#BBwWxwWyWzW}W~WWWXWy4X؅-X8RMnXXXXX YYmMYYB[Y}ُHU/ɖ *YYYY ZZZ ]ڢmZ} ڧڦXV=ZZ [ڱ5۲-E[m갴=[[ um1\-\=+\9-BJ\%URǭ\bS"]L035U52-:2K]ԭSސ XExԉE£zeljӡ\[sƅ\4^%E\uX#ިڅޕ6ۥcP6=\@={?z5]u `__%]& }I_e|,KD;XTq)u=eSV"XE1_]q‘#խTnԁ÷`45[[*~ۻ*^L-n]0^`5 ^brCD>B޹xѴn{1{7qfa<ƭb?FaR-a &qm ĊI|s4;6kus5``_0V.fb[~8ŕ36^dX_HUuŢvC:C#]AV@DN[,dga"`;h0>;#U8Pe{; TSV/K=E>\rg|;SgeKf\5Uԛ]^93YSJNhh>X"?ØaifbH!Jѫu) ~6eYvhˠ{m"> F!\+kj~hfT@>D&kz^Ģgd;+bs6F : _MgݓcS~ j{j>i;dĞS>b4qu0HU괦g.H2n[i)ٖ.9p ^*6&+k]ۻҦf.c98c__Y   o*p6p!_&o ' pp:pipp&-M qqqϩAw!q?Gr%O _GX&w(qr$y\ #Zu5r0s1s2/s3B8s5C<-gFs:OI]ћ. 9s@t?sf֖sAotGOFwQ-t0}tLt!d[Y4P#fi*DZ/Y<͒8j z|e6/?5𛹳8usWi>3Qej;=kY}Lb,(FmC]A 3K0c-8U>jЎGXcݪ'&s}ItE6gb.~CR"42C:IU=(P,f3r,hC+ђ=-jSY -`úe𶷾-p+=.r2}s]R6#cUoFM7حbvuJ߶uaU4wl\ſ֡$9\IZdk-p3Ke 얬z-c9.Qp>O7if? o+lǎr ϣ>Z"ںZnu:^#0^3{@.ݍ}ҟD^=nS[Ͻaձ:%|7j0_G]"1xӭuy:/~ǭIz͋DqYLaMgZt\mM,`_aݲ=Y ^^FdЪa].` Jq )Iq8^1]!]E q] bD X])(} (Mݝ muItJGaj'-O jjIAaSL!a9R~#0 ڊaT"$zxb*UJ)`n n!B@ .t!QE\!!$AB#c#ac1&܄5*Uα@06c5@0/3BBc46c65^T#4# !3^a =>40 :~l#<"Q@6;zNA#9#>BH<<*d7dFF4 "Hh#"bGLQC% %Z3 %OVQ<CzNAO!0HJ0$`#RDbMRBl;QPZeRN"QU2.#WT-$Y2e%UG8%T֡\EDeWV"1^ƥPe%W %^2_)ecXY|Te5&Dh^h9GiB 2|B&T# 7Zl~nffmo):e{fK\# gKڤo&gnmJBHrZDilq: w:NGЦm&y'**jEJ VNQ"J$R'o6Oc Z_W5@8%o"p69hgV?'I9ЃA#%9y,W=DVŁeb9 QGd6~q&B 22#&[hB,V%f'k&zJ&{&$:';FxMuaRayR(iK)8)")(KaI>m` :Qڧ%ΤPivaBLb%^b&*V !zM A&~Bkb8bZp2eR#Z.f9n2 k+l)먖^|^`F >(̶QzlS@i䡤,&m"+)*NIfXVa-nmE+,-ז-0a%[lylbv ->!U߲"ՁbH'~h -im29ānk9."fi$JEz$ .瓀mVڌ(T鬮+c%^JaRSNb)2gn)x6bNaf"@p(Κdeҥl.*Kg`n*)&9~ /Fini,>-!uR~h*"&Ykwoni-N{).䥼kRDȶ:B  ,RkU "^ E򞜡Ű0p Ӱ 0 01OBlX?qBH W_H1c[DW\11q11~u1ceyw q !@r"/2"'#?2$'82$@%_2dr&7&3's4@2)@+@L,O@,2.[-_X//_/g1sl@$s2s@3op4w@4SsX55k@t38@79:<dz< г=>>s 3@@@@A B+t @B7t @CKt PtE_4F@EF@ pGH|tIIJJJ4tL4MM@N4OO4P5QQQo<51T[V2W2rX#"YG$TZ5&w''(r)7)r*_5,r,2.߲.r/20 4v0s1\2WeofKfo5s5{@ts9:j:<<3m>v?n4oA3C?4D7EGtDEˀF/r׀G |GGG@u pwLy4N@N{@O'5}O}۷PRMXKuTOUO5 cVwu!5'X5;2Y;$uZ[gZs'8(5)^2+2`2-Ca`bO/b3vd71kd3e;4C3gK5sh{|376js9@;3<@mns@6B 4CC3tC?tq7E#rWrt  4A'pw 7@Dr9HCsyt[7c7v4w{ww78w{|5ҍW@e=uOuku k{!:zW'558@u{_'_2Ca#K{Gv2K6es;g6w4y{3hi3j6<9k3_9˻= 3oyK9۹77tGGS7g7{wwxJx3:yzG:Mﴥ5ǡtu^7SE@<$U'D3X#r?cZ%7{'ԗ+c,ϲ-s}0}0[;1}1e?3 y5{h=76vޓ#!b `Ĉ&HXbF)6Z1Eȍ!S Y2E*Zlf0gl!#F8yʘϠ5fԨaQHqQFS8NVYࡣWbaGYi{ "E0\"0*eBH^a  &Df2@7K&P@s &`hW'0 i'}{ܻ0ݛA w@'!9ϥC zv s> _(ozgh! g`w8= ;AA  A:Cp$҈D:iN2IYJ)&\\A&vډfaRʨ22** k,l 0S K̻:LΜK" , OdD۳=0̀lMFsc H}t@RcNÎ;;T&HsϽO?o \Ab%tP +B2DH!Fphڅ"ѢK4ᄌ>:Q$QBŗ̍q&ԭFyI , HZ Jߪ8JJ.z #lb6͔. ܜ19-Ӳ$L2% tЗ `6EqsG+4tNˎ;.V_}U=`M=ھqݕW{핃; ٖ0" C#pEŕZ%u[&viǞvqy7)|dҪD+Ma,R2K1&s;x8 R2@ӳ?CFmH8L1eh5TK}|UWuU<ד ӠV/`e0nHC DU"H\&!  ;qpB9XNH! 9%tV„%Kh[hEM؛#)1]3d*SfײAOy;kt==zψs)djSҲ4 UP 35X=|]~9mb*Dl!|طu\H(%.]5sRr#4JR~I*SUFW)NaWj˖dKnW1YwȂW2-xLp"̤8(LQ9bzcHq1hZѦC-|2gj=Y}fG<~62Y"5dQZ QF-NpdI,yA)qrz$z _F2e瞒ʩ4I`3XWKP-[K f!ŀɓO?27U6գ$b_lqN}:4qGjRնįx@kkM2!i T[ < %`l2pRr>W"$"ńKW BJ [:f d{p6 ì eH0ѧa>ԠPzpgE%57Kg)K!GcM3^;iT]>]MVnΰW+<5Y'5T@ uZQ`5-"԰ m(hI9 >8$b.C%HUэԤ^m8̥冭b"cY<ᭌEڌ5yM4u\G5Oƪb:I˪'TbEwݧk=/{ , 9]dKпu\h{q9QxMVH#0+r#-iIQGڔzK, &J[zҙ/KSZwȎf涹eiNCӔFaM^ӚE/=mhU%#u۴pS2x>*O/ǕXu $ D!@%r_DEhaerY0q3ʠLK^2JGYRJJH Nji*p?⺋1تXdi17c)i`]B|G=))Q@*sʩzSծ#63Ve L~z@{A!K_fMx3K";u&3();$k_H-  3:3ܒJ1K xLSU$/qlXgfςlhOҵjg|n]Y5A:z=Ϗ/  R|n60)bX+N]yɍT"AFbTIfwYp-~koqK?/ov%0Op 0#P)GpIpO09/x(NXi P+{P|ns0p 0v W0P0 Gⴊ = A0 Kp 3 Q P  PP`w.0 ې p -% q SP sP =M,q*p_1'c Oa1/%3Q0qQTpmiPG1eu?5Q9es0 H!qs1pP1q 1qp{]GE7PP#;R"Qq"01#qW $R!I K$C0%C |('d(('R(2()r)XQ'Q2`*=_+#!R%$Gr "drIP&1dR2)R))*./ S1( S(rvS)()S(R0)3+0s2R01'3*=0RQ=R$.HS2  iG5}0L77.118a2i92kQ8/ps3YxHQ7/Sl',7 5yjSw&W=Ͳ:s ScS, smr sA?1C+%t T%p!t/t'Et;Z5t%S5G{GGU=#q9T@+>3t&3QBg9aE@tIc4A4.2J>!8?<L ?L%tS1G-.6fT +ODT*E0Ht0t P{C_4QMQoE7T .7<{MQG;pb!Z6[oQ˖o qkaekp+_9]vQo]WsvqX5;1dҖsdÄSKYO CAS7kv__q iS;?0^vNY 6Z){SQkeakp9Ygjo;wzQ0emVYwlyji!\#7\TaplgdՇwn{/'7s={6tpr+&q~eWP|7uAPհr'r u˷ReR7vc8rnpqg~-zw6U rպ2irB]QѝkջOڍNw;){532{5{)%5U//) \4A35Dt)S1 |0m3343/5Ѣ%cߖ+TU%2c8{{DAa"Im:qęsq;36OIcSr/ɫ4[$aZ;˼C{|˽ԃ_۪iՓ9pw!cu<#\wĪ<Į=ӽ{atG=s[אJ];ՋZS˝? UqF-:`7Ku 7 -=Ŋ7sH#]W"[O=c}U\s9;$[73b5ԍa=8T׵Dz@SCP᳴ԵڃZ >]>Ϸ\[iе:k<Ӳ_}aځct|S9kBSy!}+;]}+ -}ٓ%ջ,ڏm<[Qz!o^ޣ~࿒w孻^ڿqިC19C=>_śV=iv޽SC}u|a5G[CnV )]7s>øP{0q\[׶;Ͻ7+|ج8Em! O^rb#2#ґ>"1(aI 5raU]Jfl7ч!oU%PVQ §31z S(֧eMZXaBH;5zem#([DfX_ZncN QI'qeňxJ:geWIIXwVK*U-ʸ eȜkvڗ\%Fݜ$8["68"$wb}:NeѶS) XDy)\e=Wa&kRIrA,tnvyӋXw5yc rQdZBzHҩޙs򋧬][~",ާ#N0:$UFi޹SrB1lv{ߴ!_%`JyR ,g'j,?_I24C?=ڮ=tShq>&C0/ߨn ;lQ|sıD~,Ju'jycgSz!iW*1[lU=k /7@{4~.]p6E,ڜ|R jp?p$, OrPi4RYTp4a Y L'nf&qD,$*qLl(q-F@X6Hq\%> V!E$H "͂: b8ы9X"IjH@J̣Z`;챇+1AHJrN0X$M ')y$a*=KX+_G+Ka\~Q9e I$&3Gh3$^Ff>o\&7 N((ִ!VʘiDxQ<ÉO);4y̧A(?R$- +fYЃj, Yg& Q&(3pRӣC9)>dT=-Mo%MO9:.ׄ IOLh4iSOS{.5?8g}"s%V\*=1Zմ>?/T S-՛UdXFhhڻF8%k@ZՄɚB$Eͳ:+S H KL$-fN-5 ];ztU8Pe'T[2MV7TP ar.oKU5{cq;L2>-BJMwmY}S]&ԨFQ.St&}өNUdS+-׽a G lK\6DžB/B7"I:5 c)SCls=$ v2eOZ$s4}ozd%յ׫/H0,0 3^I,f̵<3(~ +"%OFjfz0&2:mB,(׀\3mcȀ_{SK@~[z,兜a.rfT7gX9HuV Qyzy舍'wV('~Gg>DHXxLn&FCv)$QW(Lxg;|l+ewk8gK"R/{X2p#x&x7,)L*ȍ,"9H~8}X#R}1xVR b-vhH-qeQHvf$a%J2&(؋wHH%$X}bËi7PhrHGHA-}A|~Px*2"H}(AtW;w]ьaE)k+)n1u|u,)(G",ff2]Ȗ/bn5CwIr4ь1}ӏfֈsACyQzÈ H_džS9!{]1Ri-Ҹb4^TV1HBӑo鑹C;6}m0)qh-AQwcorvJ$K~7é:Xꈎ߉3!X3{7Ij(?Nxnu- ;閽4ަ.v8){11V^D0Ya%ؙܹ!9g0#T㞔pzWȢkIzx9 *mH;73z}fZ9g*) CDH[JDw_*bʥBTgJf:cZnlڥo^Zu:qzr vJikڧꦁzi\xʧJ MhڦxzJjʧ{Z•p ꃪ :>ꪭ z@se%ʪʫj** Ɗ0p=pڬڪ:>|GzهF6ĭ *JB@B,Y`i*5Ewr8V ^j1Q ,F9˰ DKe29+VְʊRhYY+E!3^KYeK) Ec*X8V#+U\7_ԲUaIhZ X+TP煴MI;eQ%…<+[ |PخxcdN Ub5{`RNku]5K^u4˰A{չGdUkh^4e_v`u_9붖KU 6Vŷ۴Ruw;[å˲]k^_[0zKc[x;e([YuvwX5]p`OXTV_KT{,Է\3 hV\λW[`u;`yߋ)[Wk˼+{K~ThOkiK]|ۼ<0SYf\KqkSv;˾P[‹Ƌ+$ ^`y{`;]L]pEivEZeL櫷6⻸@,[{V[]۸髹6 vpgc+=KDN4k`TFNG܊`i;w,t2Y<ȍiyLbE,;șdcJS؅ɚL)űJɯ:ʥ juDo06y"!ʻl"V6#,LLPl쳢˴sS=4JKO,Ό[^<A,_IgKΟvke,LU͸{VkQKo^l{]WL|P[| ,YY|Л7T2ŧX,(̼!}ΞЗ#µmLuμ;\\}35fzWL xΒ|] +W( ^Zk`RjL0}+llMP\.DNN# >EneQE E0=^i])hnwDvE;Uh DALNXnzN;LVm( MCNԑTO}یz6Q>V^Wu>τj֬Ѧ)} ̫,!xc(m׹.-g{б==hHMˍ\2.nŒL뽞s eݽ.L5Î\w% ׹@\_ϛ%u븰E 'HێH?^ܭ%n|"}֢kMk\yǒ.DH M%͞܉M [9ix>p]_Җ!߅:O3jt_ ޥau]謤~~oQ>-An/~fS|pBXm. ̈8qn_oRcytΚpN猏ş i?6P_Oy>46_dW=fް޸,Oo"f3.qi DPB >QD-^ĘQF=J8"DJ9i(D"JN޴y&LBTPEETPK>UԩM^zϚ.uҥI"0b$IR'&oL5Oߏ>o@M+@ Ot3Op P3䐰 ; <ϼέATC_)9 J/eE ԐT/2(?l G#rJ&w-7/R;,L"LEɔ319-MԴ<:+[Ok3=`%^MB]X34c|f"x-b _1 ! B.[$d[ޖX1Wi FY[Rv:hh`yhmw`yg`fBiz[&[;pnFgůtŋpR -ծ0 KX6_g]/vvm6ue}8yNwxߙu/WOW{剠>uW}߹&6myPw]`8?ДG9B'?pC`d"Qp`ӕC7l ߴ(8 FpX1ZA}-ԐFߵl֯hiR fADo 14a%Dc DigN ŮA1gL1B;inl[ߎ5t1_u,ŪALVBPg@cXȄ$z )>ZHlc x<n$Âæ(D !QTd+lg3".q)#/aYIX{\־v6R{m$yKENz%ui/ seCN/xLg7} %ͅ^ q__c=Io&׿荆"V9 >dbOb&z7@i0/ m4>Pԉ-AAoTmY)3]‹⭘nzW;4ezۼQnMlsϮf ^}sliFxNZa %Tud^/lsVJoKg;?yא(M%K.sݐYI Gn;FzԳ}-.u?7Ve闗]fmѾ]ngws{w=;սNcRBtV8gvxO<5g|;?z4CϺI/zЯ=eǞu1ȏܻ>o{G~_vVKx|O~}ߧ;JNӏ~}.<3ɴ_g߽S3@<@DK;4Xk@ @4s8@4AK;;=K=#AT=9e s1"$#$DB#)*{ s8|B+(0$S%vے2C07CA.8t>? wb`DDDDTCtGdHlDHDIKLMDNNOEO$P,Q4TDUY+D(|9ɜɢ$J@󮏓<ʧtʨ̽ =lJU3ʣ| eEt1cK˳4˴,˵DKT˶˷d 6Kʽ$Md0L0zCּN0CǘLC=lA(%vČ|ļ +Ntts˻Y;H'<ʏcI$#ΌcGOTIxԒ3.ˤTB|FlàS9LsdYCdmEO(T>Z-C%׹*UVUB٘<|dtՔB[mVlDmcV:Ŭ֛q%9U Ru%U1R UbDU%ٹWusݒ#WcXFW&?ʋ%قكuןͼTXAu$SׂzKPdI%Z0SڒUثMDVDGKITI OV\N5mZۺEքZ ۾ۿ%\TP}DJDT-[-[|4OM\2۬}; -%5[!YͥYX۟z?e}UBAغ;ZXڒe͍אP\̝[BRٕۜ7,a݆^ޤDYDԡS8ЦDLvmu] _%^,X5VY=xȍ[ܮ[EN\]d`XYZ [ V`^QZvE`ō`@] F;xalan-c-1.11/c/xdocs/sources/xalan-graphic/options-sane.gif0000664000175000000640000012001211555300364022620 0ustar stevesambaGIF89aAt3f3333f333ff3fffff3f3f̙3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fff̙ffff3fffff3f̙3333f33̙3ff3ffff̙f3f̙3f̙̙3f̙3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3f!,At Hi&Oi :6j[HD?z\$5'6 )bK ++ R#ǒaH#ʘWrtyP'K&n3)P#&=yЈ/3ND́9sOuTLٚ|JeOgY^ZT̻Jh]Uю%zڿǐ#KL˘3k̹ϠCMӨS^ͺkͣ8N6'c/rdTKM-Vj(Mcy mdr>;dyՕ>L|{_qזO_jۄ yzu|DE]~a^9y']~q)zÅQ7aG !T8F +B-" 00 1,Ȣ O N2$GF2#UdEY 1PD\`fEPE1dfn>AmePYg2iŚ'nßE[YŢ[jB:h.ǟr[PGZVyκ RErȮ ȫ +,"&N{l͊-!l!*R۬!b/ L*k!FAC0^'AѬ^#8(1U gYj&3c=B-eEh! h*!66 lG#р6%B m`(bmFjd#9G;Zt I2"'2JR$0@L`QDUITX``&٩qv qpzB;4 uʤW!vV%;+LjR+ըBRnR=EJTUr7\ Yj^LSoY,w,C*\ֵr!K>xk]"E.k^ f5PbX #X; 7ز,`*`l6,RC6*HŧqmPg4L!lh?qGD)^HE=ҕX%B:)L.L2BSޘ3MTZह,esX%9Y!S](3yI2jvԪ65HnyngWXU*UW钰ҥ%*\aoXS0>|–.g&˙mqs0 ~ПV[{EpX[ z cl( P1"h#"Ϡ]teCZPgJC*F5,*Vc0B((.lb?d3۔D18G{stt88J(5[0&͉qTT3mNZ܉)6uM} %;Vu]%%PnhwJVբt7*TRT|aMa2ZUm\VVe-y/~ڌf3?o}ʟ©._ l0Uж(0vl` -( ֬cqw&g6hh&w1FyjhD[/5J`?8r`Yg#1M4b:YH27JҐb881v[܀5ILhj_z 7&Ɏ\*a1b$Vӱ.P1{S)a)p$?nV*T}JrIy]f^ɊjQ6\Rg-rij;{. kGΆـ|ؿ=bX#&rBC td`0]_dTȲfq{,\VLD,$Y2Y-'Mr̔.?>"/sss #Z /[t3OH7OCOT0H/2$3],Af1)C20Oc]C])j8C)D6%^oD4S3XSEDtakxAk!qkCxD"\8\\"=BF zHWhzEydž!Uom%Un[e9֒G`5o94z|“vc2)ҧ;'dd"<.+G.B.eM<'gT?墌h?0?U0OO1}u&s1B!iT2)D2i(4]ӈv/37$CrWEU575VD485}R w4@x"SU8$(I00I^z~$pչ9]"nyVh)8Dn9\5odbm:);@:&JJpJ*MfW;;WqXJ+YڃeLX6r>Hsꧡ؄-MЄfDNx‹xM?.D/g \@%shB1#2%C31ǵui-D44]Ei+CC0QejQD5@E56?X)a_!aSQ89†8z$J/M%}D9&[XzX"ngXz2ґi28-Y9vbW,釟KVs:1occc;(R+;JY}+ˣJbJIv+PX㔾;( ,#eEԢ-b@f*M,dF⊼2ge? M/:u/ڌU/fO c1NhOB5BT/1%QѨOģCQ3f6S1Qu;v84.D>5Y^?5ID?!*ӠC_TP W2yйY #"gxG yY:R6:ۑ*{{T']eby9t(cgⓉbI#: G;IC*m%XzbKxNy+PdzE)q!,״C؊MMD f/T?Ũ?/%j1􂘆tƣuSghUP)hP4+.#]ZcTC3n^wYwRZ Ҭ#,seYҸx4/?y 8OOAsB#0OգiA@iCj63(2"uťdvu]lQHCFULSw q>8!ڐw0E4eS[t`5"nz#r$7RBu%O G|G4Ko$a&FuBd2'#{F8yɥSoJ@G)}"}KrJJd┻R#**+ ,$*ͳR,"eee&MĖ>8>)Zk?\givNZN7* 2LuJu\*!({ eBi4T UZİ`2Еj,d]B aQbC4^c2w=3E\3k_*E.R657r##$ y/l"}$G"ALFB#VDBn8z;R9 vf9'qUÞ-i&-fK/'?[z0/5jgZOU/p1{fhTOC241ΕB euZLę*Q'BQ1?vY w >Իa*5eDP0 ܣ 0GH @@ݿ Yxwv<`7FSN#@RGkt% F&=y%snU:%cU{9'U8yg:BphI(o&|''o(Z),dB+q+Tw@ZT0 }YZwY6WD[4>l>R`4lJ``"}LznD#_$4n4{$sGr9UwxG4lU(}:c;@cɰO XTWz#.a9MR&]G{UCӎTT҇)FɊ2ʚd|韲:kEsՉoUK:q}ΫLmK~t%,Xt.Ɋ,)Y-3.{?mx.zgD@@[%Ih Cuu䣑31B+]7BV*22ȎɎ" )E%Dw+85G\3 MwQx|!q 1a\!!xсb1sEB1_P51i  {!|q6 )N\hCARX B Vhq"̋5zD3̕!QfI0H_JD#CAcTXY;ݩb lWxנbڭq\6K6X,Đ%wYvV ?x+YzRw?L:i{'Ә84K&:x̶aڊ꽉bWԘMͥcS2-ȮO]&戳{pޚ=mac8s*cTFep:،zl2HJYPLE{l.G$*'u#^+[٠n =jM\ h6<WPAWI c760WB7f1aj4b8(?f s"=㤞Q*p`G,r 'k"$(IBWl##Yɵ2,W&L\t'R')emh5D6DsGMY*ټ6KwoFn8 9dqicL!|h)SU ?h3$ X=RKC/$\CZi'3#Z#;3e*-- @E!FᇙBp)LQbE!|*TQԥ@)LP>]K !ԠtN(ZէP Q/)MzӜb2)PJTpjS:.uVMUr_ 3eE,{OF͒S%o &~DVYNŤ AiWT*6IgH#ljcТDKS (U6[QTiE QPS>PY.{)7 S;hSny;z )tw=/v׋]<=/bw.xՋ_Wu/`~7,^0| \0(@ڌcY6dg㚔'$5!|lco/@AcʖII&mM)XgS~(z@SVjA%$4iˢYh)Ehկue畊xLӉϞdJ{#'F8J>tFvmC, ܳ5eIĥdc8,5UN fR?UHN O.dЩ dddcjc 8"HrSXv5q4H#tzLz:GG\jQdK9b#(&sB:X_˸F!"+"Z95$D򯛜Iv8IIT  ={P mI#G(Lyq{'l0@;0"G?^^ɓ-ã"{=/^yL~zGפƭD-C2˩ }8g÷DvYQoBW)| ǯw0xWC S$ʊ2'EN[Q6Ļ+=a=4sY ?j:y1LR<3)h; @1T({::'[X#jQ=k5$3Z??3?k.|!썈DC>=@;`A 8>'s(s&9m󹕒4@:K CC @s9:3<_"|C'AĆBk5O9X{=xz ?j`8!D#BJ>BŬF.iT!5C *!98DBJ@^[Lm(elFfV#?+BIf:͞<ɟ)ߜڬ{<ɺ= EքIy ļ+BH74Ƚx+µ92ýcH(ի|\x2OPt í# a,3AA8lNDxTD3A>L[<1;Q,eMF\T3CхЧJ,E2CSu#$%l`8?U) D0x+bd |j0C븉HⰈuD =VkHB65nlEh  ZtAYjY (k$*%y0h4ʡ5;?ڮ%Z=xO( n wi.ȋ?#ՊWۘ(;ZLAS i]'ٰ[,j98HąPP$; B\8Y=ē^ ]Q*d~*>,Ҫm3$] #ŠB%Н*Q3C!a]@c^t^0]@]B0^i MWcQQB`}G + |]+cReS'[9H_C2|.Ec r#cu` 0ԡ^ZQ&z UPZ@aڡ؃bXDѡc#F6|X))bDHtK3aBaaaxK\a&J@Z!bh 7wC;"dьSQ6Xs%CZ +b)!TpQp*2`  ɨө CS0<Ȃ:/0mG a ``dPu$oNOvP]b[.8fef`6Yoly65o"~әc1#( h ?ֶtHΈ-LYk`6c1Ή0@ejՠ^gJ $[ ƈسi?pªZ*)B*کr*)=*+Q渼 91g,;%*.q5)Yĕ溤n.h`yM^`jz1 dB1.XneX&ۮ*1횰0/ ,/:/0bek/2l+/Vlz/Ȧ/k־k.mmRt0^%pk:>R*Rܩ@xj`4[]njnєJn;&irv)RP889Mop;  p9p ;p7Kh 8؄Gpwpf;D{/v"ylSDaD!`]rj-j_%*orprlr4r땴1g!\&op&nC<p/GqCw pKp<(p_?7qD/tGtE_!QQ>6 i \zsv=hQ u`YnBJ0&ge!ID߄'q?qGqp7ppwGt wQ w|'Pp ?qUF QޡA3jdTqn~K%xֹk爆۾ Zdb~ن7@sfQm'Sp qW@w7q~~t'qgJxqq_t{'I_t7 qOᾤdn|u1ZQFvI`Syu7W4{2{Nrs $X`)|$KA`>B@Q,$uOgp<џtupDqvqptuqwt/qwԷ7"琜tARnj)ߦyh .~eboj-f6wgrqϺ!j#TxF {ԨCHm)&R7B"$?9 ('RJrY#'fM97oƩ4K9q,D4睡3NJP] Sed.t1BbLYzUEPNB1waHd|WI1MoL$fq$b]Rg\+s:WEQ-vKhN9i\6D<!#;F.B;y"yn4OR3PtH$QUP}zjY$V0N=P(c(|RˉVDc#"vI&iXogbc^#35"jC2Qآ6*ا*HMTыgvh(P"*X ͊țĢ} - ΅0v$Kksr/(I4/xXP!6 7KU•;)UBV! 1>Nu;!(qJWBi|Zw} s 0)4 P0Sم1*JQS./y&)Cn]QC&ӠW* (Y4oMDa3MaVA U:#zty~Mf/}U,mh^vv)=tgWE2I#uBqe~ld7ޣ6۝??W*?H;_gkl?ǾzX&O W +-^i `4 ͟љe\}48`ߙIŜ .il- 4e鈉 \Ɂ q :(` qʩYAYi 8!0-UNFo)(̘ 5P 3՜P!a%"ٝЄhXqǚ0ѡdF1!܋8ba@"$j0- +E!* Е[*g l`(ҝ^ܹ]1 "#* 5D~ մJi!AF--F_ ZނM!p+;VD$^=`+Q'bɽ#nK,f>:=#AՖ~=:BA8l"Ad+a9:@e}؟NJ+@D\ "ꢁN+a#2IeX쵀 .Ǣ*P=#1ƲIlv"gK.Fbm,H+B,̈l*r#av'bbkw+k.D&V$Jԫ2Hc؅&- rN6+iҤhH.r&s'r$^ZKm.,bnI}iҊ^ll) ٙAx PFJ%!u(Mȹ)NYɢ9 \mmX󍞹웙u#T/0Gbh/poCr"(ojGA(hM֩o >UF/NQ+nxKn.%"ididr*𠒩- PwFW.V%!9?Pe85eIupIjAdXuFITƬCq*mT]Cz\1GmmˢV;$^꬙0vqצV?.0E`%j-qjT1e.:!w-"kbN#&!K2P2lN@_) 3_tZ2\T(JOݰІղI}EJ}!0ek-r &i2rn2sQ s'43324 SƜ+/D9/i,oekFnǒ&F,;w)b31!3Fe&=[cNg=d^+Ъn˅Ye9wtg 14+,Eƒ( 'C -΍~tJt(cA'KqrKӆOMu5x5N+48W(^KRg:ICt!,rVaF%v/Iq:~7\8Ǎi=⥙yC[~9"ATry?75s#c{68K`:m8S[>Vikݼɵ:altvGx?[/^M_-"N*=`G-BCs-/8g&R˰-ab1gu0*ٖx \4,}܍wCz}U]O&&arwrCeXD9WJk=?A ҂sfmKpbg~܎c뜌s]}kc:`۳ѹ ϻx]656h5pk1M y38,sRKg)lcP;<.l:{_˟\7{{Νxνg'>$U0ϯ>2kaw \o%TKPo 7iC,淚J!oF rܔ.#{`_4quK0/ClvC2 <"3kfoFR ^úX;*ZHzsX"K8aD!Q3/fԂ3ZSϦ^>@LZA|C8j?!F8bE1fԸcGA8!Q(J7"T%/,%B/oė`M@YLsf:wB-gO0mit)ҖV|jUkJfbseڥIlJm(QdQY%>Wh9paÇ'VUjvNkujۯA+/:ZSt fcKwcnuF.M徔lPZDӖUڎn]5_1cg՚^rjJo45BB(:2\}{4Z\P"TB Q@G!d#$T ? Q*BL,PA? B GB,pALp/ +,B=4r?D%E1NEsDQftR?Ð@yPH )$ $|OL+.kQ,z"D~CBOI)\ђ&O)S,#SxuTT*JVVbU*R"WXU_Y͢X_kW`qRU WU%YSOvV_%5VQ\wW_VZc@euՕTv`}5mUlŕ\[ţ^^Ww=vym^hIշ,͖\jO% &M* VC!KaY7R ec4%T矁=mt6軫T.dQ&S(0ZjD.><믃YP+.)&G6?.诠!$Ro$eq Ы\׳e7TF"5s>GADMGsI(3btAwoT=}v݅<1% \"/mj;(FH}k[/SWx[o?ϗ_ӯ0|l+,AEلT!HrY1x7I~_>AЄVE D?N&W KGC!>r z,C ?8}%] ]8C0F7B(fE)$cI\ T(^FF9>rDHѮ0sӝYH?.[hE1;8>sHns-g댣 qKo ?lBdq@%Bvȿ> D?"\-(C@/{IY$)<&JK5&2Ňg*XYs~QZ݆jAXyQuugRDD4ktl=Nw#jB,\)u$T 4:au^`'QNǽo|tLz%Q^J;/BPUpm!A,5C{!_\X6\~i} W*~N=QO244Nop|O'سmU*:^鉡dPM1 "e|o m%d)m&Ox=Z̳*JP(s1MwzgD#(TTtν1t#&Xy43/_h0+ʃ}Ŵ),ipG9 'JҺ!xL{ sLt34I6~f':4E]m_[N Ez}*OKG\fm2YVZtwV]%}6(ܕp3Y߁ק?9^+<\\8Ttnr qNi/P/uei<` p ]9ogC1N'oȳ"u?QI ӱBL =vnjP`ǥ߷L_kKm߂3&F4ۛjT7?+)Zal44e|Bpm.%xi›کz6vSYK)? |{wO}? o;=LQc-jaiƤ<kt\@%\BzΛ/%H Ԙ*gz0xB@(BX@8 T&-64(MoSO:ܴ MdFH¡Xm+vrxr*l~0:|dϼ [ --\p mp u(Ƽ^#tp5%C-9 "Sl|C!L.&͎O6خ B3(B <.&"6%Q97P%11V {H0;3 B1 lް<+v.*'Z4ZbǨ Ӌ*n"Ԭ Ql А3AG/Q&q8ő8rN Jjvmzn+(3E)0լܱ* <oƭ)Z./4 6"rd&ƞFf %!bl&Tr!zoSԜ6b . 92+xNr0 C+!",\1x"!*|!ɐ&^%.5b٠+z+oΐ땤.FtXt*qYqI//'# Str/K-%Q-q@+&;u9s7Eg:HD]2Sx<301+ǑAɫ+S%6n)3`!!?Ug@6SFK"0R!:>tQs+"iSdT< 4tF.͓KS**C#LWK#-Dֆ4 -bJ+?'<)EqF) A%T!P"T4:ɳ5brچ#!%$T5K!:3S:.&G?a+}3IW{@QW4bq,.^u<8p^ <܊<6sK;SO5:2t:T!S!ױ,)r&O28T"* @5;:gsV?CPNr*U.1*˻6A g[+kF+5VS2R@QT}A137T1YS5w脳3`q/q426إ ƒ**Nxm4TX\"EoG1Qެi )x7UVEPc,(: %&qd8ب󲎌7CMkULN B /L(P_K#wz3tsR*yyL8b5ypoj1vEHG8o5 /Ky.ψ{H%ݸ,|Nyb&BO螎"7M'MSqx2 oBʐ6ٙ_›CXp7d(䭗 %3΄HBdNDID?FFNDAG$ADHHHBKO*τ@̄KM:ZHBPDz@z?DA" E?.G4IZd CLhX:Qa3vSJn̆=A{&6e$<ےL-BVH#|HPtn,d&|ˎXK; '*Ƣ= -J3 K|˺>g.C`M25U5^||l̛n#,6:^w4.|Mp[TPyY8K^P߭ mfޯ#>j|b J3kq~j'`m WZ[0R;8xpN)~WLocKo螗i/M4mi2 QJ)pM+NԷ2`UC/֘r-S,&>ONzq7orU&-wGJ7P_3Y %fONLk@eQ Wo&5&_Y;8GJ}k;s(/':efOםR?jԦQA.搠B[xQBj0.4H$nj7GË?.aʼn*TE!$s!ʝ1Yn fΙzL2Ӧ=hP;"ZF6=J(u5E'˿tڽ7޽| 8 !fs۪R6e:)VWVH1lMLQ3Gԩf/Y;]ZrVAjuTAvzqڻv,b55QSV>{>m $d6֖OORIuNvBه|we-GӁF[ODP`)F9SkM] !tBj%PAF!TGc6ވՄzmibpbǡ5A$A3\E% a})~M-٤e0QbEyJf$gNFBb9eDJt)$J;nJʌ9h&z:thw AmFN JRCVeH$1]"jrzE髤gSRjLjIBقZVCVU!i.HM!S,Jm^=QlI,e&ӫVZF-_KwK znkEDYf/}NnkPUR[_<`b r"'@W@i)o`pL/c(lfp"p>3rk3N+VXnH+4TLL(GLe2ӎvjUEzV AEMzwy+475ZEXW{钜rnƹ {WasȹKL! JP\kߎ{{ m$@_\_"A]ͭz^ U. [COTU|`?/tA)Dk HZ򑕐un4&!FS-I֗+o,izS) ;Rh!dÖV`d0hB. l' e 0 ,Iݢ-qz` |ы|">E1zQOUDEq#ψ9$#|6BiT4W!EFCQ$DRrj$ytkqi[Ve'r9bKH=Eo ٢R7;#"G[V^- '${IL)jjS"V}?1ͶyS 'Ø:= qVsS-ĴN4:# ˄nzSc2ɸB~P~=dф\\0"= &OKrճ"Jf¢R:)ڗI!bFBLm`υ E ^:Y.Ij嘽Kl]}&V&ȹJ[As"zW8 ] D=uu̶ j/]? ΦRIJNr'na ,TH cBhamy8 XR#oT8f 8;._w[_Yo/ ڤesIh kJj<*B0wW.\v+G!06qfMPTᆵ9XӄKV\2D dӣt\_7ӳUsG.I'Iy:5bT뙟'#lH2*.CjM^@Do9I?)FzІ SMfџܔ!4jKKyomxسWp#!Hȗj/ͰATl"PK S!ȡ{_zтe$(Yf!VrH*ɲ#ϿwM7a9B$7^va0'R6GݜJ_~9gNl}C ';ilJ{c {L,<~2ur=^{Q7̜C܃=ԘNcCZp?hL?W:"5^]mCrAA+"FBB!DQ?B/!_TC#/ b@>yDy#~/|wQ<-OOǼ9ȏ"'Q޳^%! Hs9\C5O<Е9T;]@X9LrRS*jI$ ؁A o}e?qK{uoVe#)$ ˮz(F&N1SA.27T)- ˹乣s|  DQp$UKQ5W"70{t-G7=!B+voR'üc ƋC9"3 Q\?!';r gbdkb 93mb$ pr{a?l3Krƿ0rH?' -wj˟))rnIAIs[>NpWqHw4 %dNp_N>L ih)O1ց.msE%Ufwē IAUR7AL`g/ll,RXq<_Fܛďƭep=tf],w&T1;S" (݃94*AU(SL1%:0:: ʳ<2Trʺ jL,Eu/A@h!'"PR0CcAUͶHdQf4d\0޼ ,nNΥ<2JxFr"{=)@a31ڀx|x-v&11e|!f #!jzeP*mCf!z M$+!z Pqk6 "Ao k},*s+xY)^AIqwI&֭>t?TՓzu=HU`uPuGVENLfHXNKm!FbUbVRTGaCQt-.޻a9eӏ{Ϧ'][kg1y! # E[eM?VbG GW F/QFKcpkɚ[.+C~uT)0qGkrz X![XKPnRW#c`Fa[^\V~QӔKnnvfbt(1̥݋ޥh))kL$`#HiaTPVG%dqoQG4\nVqdHVNn8uRTi'WvQhZLg 1 )+&jT2fj@QS.c)r܏э챲϶Pr w 60" ߴ˽ PPvA|L>jHm)4nG!E$YI)UdٲD 8 ƒ Iyρcs(CjNތʳ4RySL)NUEjVF~:WJ!2jϵm0n_=gzeX!e̙5oY͛"3U’B$__&nlMF-7_}o6]`"GZi8};}[dn0nA'T%4J$Tܕ73J{s#L_A+Sp*|݋.~EʡҞ#pK6d̴iٰ^押AyCqŬ9Ɋ&B $d 'кTJK>Qhxfnki9:hhΑھsIIQnCz,C߻(vzJ:'WK<hF62]kn(m45v)^.8MyǓB^0ռ켢 /Woz՟GE홷Y^m)~ v!,- ߚg&Bs鄪#Tg27:U0b\`ИrǃoHwOL(O;nP$gbKx yw lRHş Dca6@S^u5%q0C> 1ZS`b !.t.BЎ$f@rd[J $8l_Ix?Qy݄4ITJkU "0Zb([41R :X *+d/}1(ur0.q2DPD*|M1I 13X} M3Ay'Fu6s͗m3pb)H hhjVL9i*a£it%HqÍN8)Jg9N7Db&Q' <!'v=vRd"4?ʗ%(JRȥ`D YM" zTeR!`k%_IN8QcY-0 ]DUOjrB]r-FQTBSTF )劊pjcQH%lAm &\Ve. 9iM>5A jG#NT,q9ήKBuԷ&K,lR63-O"VDʦ|G5ԁ('9F0,Ř\P<}el'uu5ދKW6lkD|qhgsRaR92I(JSD ҹT)T$ IHīl6\ǥFAHiTXbȧ-eZ%W kU 09M49ee)zٕ`F3Kfޘ!yL ^k{qb\W]GY!vNԧk@(óNC%?h)у Jү *Bߤo.t.?ԍϳFa'3,EqJWۋu*MVBR: hSmNBIE @ݦ.S=S|w-1)IwR9GE8PQsCb-oBnTx*l\R9$gi7rx) 6_.ۼ9Gxj4Ed"Ў@js5kͅȈG5H!OLo ڸ1̹ûH:xS,p_ʥ q^6@׹*B?~!ُ53A(P{ ,l)!|–A=Y TymEbq+6}G1OsGFE}ǘ]}ADfp:՚j:<'&8aSh &7#$K 88#j, 99)ʆk9h9|KA1$㓚 \;.04 T35X2O @+"R{*Q㦘0eAs$< B#*|7XBw#;YSA6 Ҁ m ㉠@@,CԊC5/ +U xIܾ -%zhĺ4UD(;2sѳ6 82E1DāA$ <  FDE>&D(J/"uQ-k[0b 6{,d+LZ1\1ԩwҸ58-ك @ZCKY K=xJe<;|Jc3@HbLFTF|&٫Q̮QBq; 8Ʋ#t(-ͧKD <cP  oKFM? c;_CNv xD"؈ZɢhII[@P<PйYQT1|Aў Vcʡћ˟+ʗ D/XL]THf!BGQHRr6l#)R8)IBDR(][1-DQ J.mQʓ] : )oD$T?R;ŜQԏs1)B1T>ME/ :-PL$4z1rϴǴ$*70jW Y}4lZUfҺ ` n0ØKB%qU g1UE:QTI 5pWL" ҬWr33Iz-Lh  eT }A̧~ L;}<׿ԏr9 K;!i(/E( K61}1G;AYO=ؗeٚ=HDdYBG;T|ll TXCŢTB?@Q(T(QBQ(۶5[BQ۸EQB0[?[T5۱=۴-U[۰ۮ[Z[Q0ܸ\Z[5[U[}[Э\mۻ۽m[==U\?x\ō\å\5ܮڰ[ܵ]]ǵ[[\}]ԍݯݶх\]]ʛ5q=GY xڌ=P'*;Ђ>*Ȃ)_*_-,))Ȃ>;(;_____ `6``f`;``  an``%>`N,XaF ~`a a$`%Nqq'P8vˊHQߞLW=ܫc> = : RU4,>5^R KdI j>𡚁 -X<9\ "eV~ì6~ 3MH_VNV]dׯڍ@ 0f b6aֈdgVid feFkj%lmfi&p10t4*t7]>ĿZg&p^fVfhht^htoNggFbVVh&igh5)a!TPÃ|NwN)LCЍnh˘hhFhifV6uS U9C|~󡂈Cq{e6aiq>k~萸F>瀎hFꅖhlfrt~jyiΧX ze.? ikd肶kоhn.fvnNmmmFiIя= ec.1 ?>=)Ms ~fnڶhlvkm&njmqq=]8u>:5~Z`^nZc砼>0Bo>pkm6>o>m.цpOjmJ% )p%A@;ß<<|XЮ no7pfoq^o_p"lӏ_ݠ0K!f={g,9 AV&m$O 7m6grkn;h#6j$g&֮s>зǴe21i!Hn09 tzgےbKtykE| B!c(mU2OF@1ֽQP(Zos?fa(ۺE]T]T䞠j|8抡eH tza_4.a* }Ç;Zt2w!(:rNx닞lGVA_~s'l iˣk_]9jUv|KOFxxOVq='j &*ߚ,p"d X ;Q9fms~m55/x g|/|w?{nq!B[ [ ?v{V$r%Z$;TF{ΊN}Wh'x /r~x͇'pdz Qe I*!h'F}"?P w"Gq&z/wow{չx JO>j Q C 6ο/b̨q#ǎ? )r$ɒ&OĈo!5m !C Qi={bŝFD ԣPLHTRV?6EiҠZN1ؔ$U(TFq+; vm̆QeMx1Ǝ'6HVav hd3.;VUIwL $٪Æ.jݐ1N2eʝ)Yɂ*Xfsf˗S8 :Z*/~7Qdpq<ԡڿMwY~ͷXO wBC,-TAIA\Yz,Gآ/]uWaٹ;أ-ff("_e' VM3 g?RY1B(y_tbW<j^f4JLMf54MA2hG4ɔD$ ڨBNTcC~dމل Zwe3b_yudALi>&NiM)2fCJǦ$@2d{2kYUIX-Winfi n˭W)ir7Ӗ* q/hA45UG,*mV `&Z}nqƼ%( 7lD%2 i+{;󼑲Qָ&|Vl֪fѥ5mn4Ζi$sݙ*QѹA9JR(+w^23GEXAƬDnK{1X SK̈́uzɰ2x8`rNJzYOmJݠNh~;ɯ5U|㴒 ˁt3_P: ))ܥcLRCGNv9B^ڿv6ScmmZgŵumrc9 t `{6qu}lv[0:;w_ClԂNq{B{y߃UvBH2wq\䖩xOݔ Ivr+o9ns㨰)] r%-g+}-W=9/˵^"h)?o[ʖ`uDT!B(D ~ |Z ?e-|Qqֱ{zwy{nQ< w3^[|"Eb"C`}ibbzMℵL--e.Y//J( ^#t*b/"c9)%5nb6.6D75͘9P¤$>,Ox`P|eb|ٛ钇ua%t"SVSW-eQbeˡ1Fy}S~Ɖ%UUR#eEedaX[~eTVWQQ%N*eWE%QF]aa*Z%cdb蓚1X*mB64fRQW.ad$?fAPw6d"Afvd1&n&oDpv]g!$%gEgkud`c:g׽rtgl^'C Y(C؂N؆bℒRjz5D㈲Yԉfh(dh扄tR~6I^՗e'n{ai▦eהZ%)^_io)"rxkݸ1`,.V*J^ؗV])d!iy9hE vUPVzꚦ}'-4Ƣ-ߑje J*jjuݭ2XݡvW碚(c骅*2Vk~jkr5ykʹDȒfmA(~| NZ"_k1k ++"Iz2Kҩ5FHN,W2+Z6,`&jؐ]`گ]#4 {<]5AcyȘv)iʬlo{ 4,*bj,-kmr(R "~XԖκхg)lM4RA_ceX-]LS)عU^4\&ޕERju js*.2.Nevn2L>.9Z;-#]ݠL`Nda$2h ..ʘ* z[I٣+Vh][.air^bbW"$:Zf(K '+ )+̑&Z| 0ӽd#"p"-M00k9o~>FdIIJY]Q#~W{zVRڢ/&qk /,U$ ׯ on20Z(xꅔA-]rrtOz=^-`DŢc5#p66~3.8 4ΰa3g;B<37AF>?3N0@LoMRs8# bC3tvA;u?U^\Ϛ'e+9di^K&4cԴfr4tt 5sa`RtS4J.dRkDM_S$ADqfhJH[ݦ%  nF2qگQGa{v `$*R}BI6ga6vJ6NvUvh3Nl6r H DLEb;nؐ i[Dk,Ʀ/noF$]ri5eo<^.Vu{Qa6>rwCiVwws7y2%n{g{ewuwW7sWuX\y=xC,D~fAQ>Dw"nvyт7sFz(7]x4;,@bfḯ8;hקTc쐯xBj/5sCuW$ܾHGs9aеlB>BIm'mc+$ċ$`cA؊mj7nڡjE)th$xYFbV馓)- :R^zc3?z#yNzɣ.2CәdgVg0CՐ3:C=tDs'+B8!32Zf;?Tܦr]cYB g0٨#$$wKYGYY<;;{BBN,{HC^DD;&sE+7xbՈ=hp^tLhLoަi'.neU^#O{9|0R؟2?>qK+egˮկ/2n׋3Bwꖓ}BCWY6Ip/ˣGH9m 9RL<B3j".vZ>7<U37&tDg^\~r@{~̹UoSKץ>\ÒKH>Tp44R+[@f0X6PǫyC׏Zvr&drg0ɚiÿ5jNx@jjg Dj"$(!Ë R.C 4)D1-Zqeǚ ClHdJ[6TYQLQ3ĝ#iR-P JGsP*YgԤSLx5BxRKѳokoW ϥlQ!?S f[0tl2Z;7^0ʤ+ys恫 jҴ'ijü~$۱}9s2|y->KΤP̋/U&*$(뉻P*G2 R0,\.@$҆C?*GBY o1+BKG됚AzP@+r$EBjF8 J8M1ê3"3' .H̓O$(l2<| EܻND:'LlG t9+]΄4PGBGE & MuHEU8% ei14Jp%( r̥ Y:Lf]4nh^J[ռ4ŝvͭ([e]v^mӠz]VPvDcQ BFB? &%8dTbUQ ee?t6!7jMOn}rC-'ۍ9ꧦ=óWg ܜ!\zAiF;l6޵ʹ=8ѻY{1oz#c -" )" **,:'Тէx]t-=G)V# &>QPYXxQ(Va?X3f㍇a1aM>y!΢ojD_|]ƐU8,Zt=)}ZJ;)Ir]$H2A"`>¬8i`M.:@i$ XB1 iXC1#]^:ϕs,WD\09u};))^UJ4mߔEi#E@*#Oy?QgF+<[FDGl`@w}eYRљ-EIuSԴ6Wt:RV(J5LTiOOJӥڴ8K:h܂U!R.GrԤ%0X+DV~4ɊtI2rxֻijQ_1sX MMa+HKruL*Yve;NcM0W;~`kZ=a-#?L}ċrHV*<1ngת,v$]0%[Hvit#g](=s]6[y% zT/d݇𗣎B/H{ d[RVzV!0쇙^-bcۘ8 [c Za~-n9LOXz$S G b2F1C88.1 2B#x[rlb6Xʅ,7l;ޗ+d kfvf5,CV[735gYrޤK /4aO'Y͡>̜EzΨ4*lraFkAtl:=s<rg:ӽNw]=9.Tbn鎇ӝiNs3"A'm{ XrfIw*›j8:pw6™p]%Ovn{.kGry7>i9m;!7tw|ny_ta|͡>pnUO7pҶүS;xalan-c-1.11/c/xdocs/sources/xalan-graphic/xalan-c-unixdist.gif0000664000175000000640000000600711555300364023400 0ustar stevesambaGIF89a;,; H*\ȰÇ#JHŋ3jȱǏ CIdI `˗) f́3T3Û>M JhP; d9&ON. g҆MʵkƣVs.JeR:֫۷pe**MjޕKks/ߝUczW`䰅j,bt;CEZX]}cOM۳a}Ίokq۽M7mp)'k7T蕃߽9s˅ZZ]z?;87@is]n]Xŷ߃f hU|`JY6_hAhIv`xđ8`m"x&<@)DiH&L6PF)%FTYXfQh)q`Zy%d?~a.yS板%hɦCt)Wag~Ēl/ɴhm)⠔} hO:*gV騖鞉(ⱇ٧*kG)B~8I *lDڊ+FkQ^J-jfߖkI >KCɋ_EۧLVA0C 06 g\P `q{݆o~1*;%w &51A1c:s=@1EӋ@?.MnUg\wXĕz[E g}_G罈Y7jR6mH 2akxg#>*᜽%$ppyN2Zx]u_NzݠNC.H2a5\vȳZW7;[ֻ5o ~NA~w}FJǑ7.LTޑi3_.GmKӫX+F{kNf<2ꗘ c$F—]Ig^~em݊Bd FnQ.uFJ`Xy-ZC!#+i_RYNj㪢֮-Kw^ NEg 24. "#M.Zc:%9 !Fsl6G&UyoE!ߘ6%qHʛgerlw$LN~QQ3ړQH7ۘK#ѲTQ]qlv美-r<`\y#J:<ʠk$|_v*=\U7Kԝ%s}a!Y$Ƅ0̈جqQL0":SRB&PW5bD4Qj27$Wn V%IE~\|L$-t&%%iT! {p7?vU2tJSj*G:)v`R:RRq2Mj"vUk!ɣ*WT sRYNUЮނ.׍t!)Lh=QUI mڨ2ڍ0e\ kS"VZW1 Qo@%_whз#Yг|;QIEWN9٬*2vŚ ȴ9^h(2޸to/zޫJO=M=F}4-E Mm[ 6Cڻp;@em~e>X6tĨ09%K׺~Uk]4 _0D|Y&WSfFFYO򫅋\u:/0dZ{sQ'\^jR߷-ye7(`=O)~T.26ωG)2F> rl!8eӐqrYF7;XUk ̧^koշ1} \ J66O#VkNv#bgB ɔh@EpUEi{pulSTEV܌'6jnVbLh mb:-\z.푻xZزwBik6ez~Шj'";2[fޗp:O>)Ks(ExҗtM+3{tE2aJ´o[Hb{ BML R\ݘlYa{sKICf3VCKvtm=gկrs!b3H6oY m\DQ0Sn]luۂ>2ʞؿfQCAM'KHo?2Џ~;xalan-c-1.11/c/xdocs/sources/xalan-graphic/xerces-icu.gif0000664000175000000640000001057011555300364022257 0ustar stevesambaGIF89a_,_ H*\ȰÇ#JHŋ3jȱǏ C&I:4R˗0cRd)̂,sɳ˖-}鳨ѣ3TrhКO <$ҫXkN_jgYhbZSpFzVݻ2J%ةa6azɂ=;WŃqLۮT/S•CFm`cOzkOcfmVڠ_ͻ Nȓ+_μУKNسؾ=w? iÏ__{+tOߠr3/ dy챗|%(A d^wV5uP(Uh\a`p :hB8dR֊K袆f^XH@wxYf6E`\;Xb?du%G^doLE93^"4Y&[R֥='&d 2fZ\ǝ}~&_&袌6jFQ}V PViBAI5A 8(ؽ q7'J*JRN'` ڋRwN:esrث.{]M*@ZJ*6'㺧l(ޕ /joY/i⾕;"~fb-b7|J|猐k1R?[ޯc"WIx,q); '4\$(lWޒ,E˝N+nkU''o\w{beZvOIUBv, S&3LKHv+-7Fv߼j:{2aUSq =UIQ86i,AtXK-:.%};I_ѹ-*RJ|pWUg?/x=ۺ=LW?6ٮ#9w}\`Vg _ =p!.DEP}B,w&:3p_gFZ]F6D.!K&%7v,"ࠧ%/i<`TCq/H*V2`7EX}Yt3hd=Aҩ+#?ÙN SL Qq•|$NT:К:.rB$aEI؅>r=u*8EUci`JXESC=yӞYeeAPgDPFӆ&-y šqO3.MbNf;ЎMj[ζ6U6cmWe ChpQd˻_L_Δ[{Nv>wiN51*xC`+'N/2.ͪ/uc: H=:[30b؇;)E*F Mvd>g-tb:s\13q[jI ctYnDg&}}5P[jzxim֜[ [}sj9^Ʀe`#wNcDq3ups_Mҙ˂GxCb7o_k~[w]w;=eonC<Kԓv֟6r}l?+*=[7;M<8237_OV3BEn-vg@vuxZƀ%zZ8l2ANum8Y]3m!H;8MSl XYc,h~#kW/7ag"FT lւrMi(؁Pm'Xe>灣W\̖2jfKcԇRs@EA,VGӆ%lNX=j(RCfB8SEQ<7*(4o5.Fj[8cZ"[exfkݵ&@džD1&Êo)H BSmX?6peq~ɘ_>hшr*KX.7vPv&EsA73;Flh2/&X is\HG=峎;G7wkB7} _h|X.Hmhq?q_o Ҙ)Gs82ؘRwU.A*1(Ftu y/i𨂀4%cinW3-yBxwWP|+%{( ]UpeMy^ShTxfڧ|FQ_ c$cggvZz]tThᷕ0+\B ؑyq8ّDËHU\nȎm&cchq9f+)yY(iXX؅K 9.mIq)l˩͉X98xNO~ir6E`9b^\J՝37]^rvcIc} GYT]Vh%zz'|Wtuh쉛q'B$(0xX6vdMtX5x19BYh)Ln ~;8"MIIkiiOtClT<\}j]AE`\B91d[~7E}e}OR6KX"l vHeRY!TJ)w T,ٌÛ6VaIRؚ#*X WlHsXzeQ+1}hcD;59H/;xalan-c-1.11/c/xdocs/sources/xslt-resources/0000775000175000000640000000000012037700125017775 5ustar stevesambaxalan-c-1.11/c/xdocs/sources/xslt-resources/apache-xalan.css0000664000175000000640000001362311730071354023042 0ustar stevesamba/* Xalan-C/C++ Project Web Pages (css) Stylesheet */ /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* This (css) stylesheet renders the xhtml web pages that were generated * from StyleBook XML markup using the "xalan-book.xslt" transformation. */ html > bod {left:0;} body { /* background-color: white; */ background-color: #f8f8f0; color: black; padding: 0; margin: 0; font-family: arial, "lucida console", san-serif; } /* Emulate table align=center */ div.centered, td.centered { text-align: center; } div.centered table { margin: 0 auto; text-align: left; } /* * ID Sections */ #content { width: 80%; float: left; font-size: 12pt; padding-top: 1em; padding-left: 5px; margin-left: 10px; border-left: 1px solid #aaa; } #navLeft { clear: left; width: 15%; float: left; padding: 2px; margin-left: 1%; color: red; position: relative; left: 1px; background-color: #eee; } .navGroup { color: Black; font-size: 14pt; } #title { color: black; background-color: #eee; text-align: center; border-bottom: 1px solid #aaa; padding: 0; vertical-align: middle; } table.HdrTitle { font-size: 18pt; } table.HdrButtons { font-size: 8pt; background-color: #ccf; align: "center"; border: "1"; } #footer { clear: both; margin: 0 2em; color: #444; background-color: #ddd; text-align: center; padding: .5em 0; font-size: 75%; border-top: 1px solid #aaa; } /* * Anchors */ a { color: blue; text-decoration: undedrline; } a img { border: 0; } a:hover { text-decoration: none; background-color: #d7c9c9; } /* * Headers */ h1 {} #title h1 { padding: 1px 0; margin: 0; float: right; width: 60%; font-size: 20pt; text-align: center; } #content h1 { background-color: #8af } h2 {} #title h2 { font-size: 14pt; width: 60%; text-alignment: center; padding: 1px 0; margin: 0; } #content h2 { background-color: #9bf } #content h2.year { background-color: #ddd; text-align: center; } h3 {} #content h3.monthName { background-color: #333; text-align: center; } #content h3 { background-color: #acf } h4{} #content h4.eventTitle { margin-left: 1%; border-bottom: 1px solid blue; } #content h4 { background-color: #cdf } /* * Tables */ th {} td {} th.content {background-color: #4BD } td.content {background-color: #AEF } /* * Lists and navLeft */ ul {} #navLeft ul { list-style-type: none; margin: 0; padding: 0; } #navLeft ul li { margin: 0; } #navLeft ul li p { margin: 0; } #navLeft ul li ul { list-style-type: none; font-size: 90%; margin: 0 2em; } #navLeft ul li ul li { margin: 0; } /* * Paragraphs */ p {} #navLeft p { text-align: center; padding: 0 auto; margin: 0; } #footer p { padding: 0; } #content p.topalign { vertical-align: middle; height: 2em; text-align: center; width: 100%; padding: .5em; border: 1px solid #ddd; } #content p.topalign img { vertical-align: middle; text-align: text-middle; } #content p.quote { color:black; font-style: italic; font-size: 110%; margin-left: 10%; margin-right: 10%; padding 1em; border: 1px solid #ddd; text-align: center; } #content p.navbar { font-size: 90%; text-align: center; border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; } blockquote {} blockquote.note { font-size: 80%; border: 1px solid #ddd; background-color: #eee; } td.noteImg { background-color: white; border: 0; } td.noteTxt { background-color: white; font-size: 120%; border: 2px solid #ddd; background-color: #eee; } /** ** UNSPECIFIED IN APACHE STYLEBOOK DTD ** .. and .. ** * * td.cautionImg { * background-color: white; * border: 0; * } * * td.cautionTxt { * background-color: white; * font-size: 120%; * border: 2px solid #ddd; * background-color: #eee; * } * * * td.warningImg { * background-color: white; * border: 0; * } * * td.warningTxt { * background-color: white; * font-size: 120%; * border: 2px solid #ddd; * background-color: #eee; * } * **/ blockquote.source { font-size: 75%; } code { font-size: 75%; } /* * Special Table (note) */ #notediv div { background-color: white } table.note { width: 90%; } td.noteImg { background-color: white; vertical-align: top; border: 0; width: 24; } td.noteTxt { color: black; background-color: #eee; font-size: 90%; border: 2px solid; border-color: #ccc; } /* * Images */ img {} #footer img { border: 0; } /* * Document Divisions */ div {} /* * Pre */ pre {} /* * Generic Classes */ .indented { margin-left: 3%; } .topBanner { float: right; margin: 0; border: 0; vertical-align: middle; } .noborder { border: 0; margin: 0; } xalan-c-1.11/c/xdocs/sources/xslt-resources/asf_logo.png0000664000175000000640000003014711567444100022306 0ustar stevesambaPNG  IHDRB<6bKGD pHYs  tIME .B IDATxyU}{[Nҝ",:.㸌:㸍3:* . \$d{߾}QJN'D@ϧ?]U9g/8F{ޥ<Ӝ3+nGlp֙gZ^k[]kN? YO0"qL<줷v -W-'P82rqsSӲpb-?v6ݺₕۚ|mmy@ӛo>ϼFa|xԎ޶'~wF0UR r*w( v*q?K[Sᩧ?OHEe7'>4H| m4 ? o==Mm Bxߧі==)SEj_l r*쯶RI֋ޅ5M3|rdiiW-zzz4ߴ]wFqLx|lߩ[^*kصui[-~{b؞CjTK#S$G&KPcRUOZ3=N<*@*4Bhٖ5%ymm5>cgq=#<mzfvk]Zth4>;M~v&c=™2L-HS`g$iYkyΧLm|[|s i̳qӯ \~7ͻ^QS*MhOhZ8?fxq,*^6sYg;|n&9afjK*EZ4r2E2n JBU챆9Y`[>=c dRJF6mA,Nz@hhLc'~M*kˡQZjRǟP?fa?N)ŵx Ka_@X,ژa\7m޺c-%gcqU4@{ʒS7_[yotha|o/cAΫ~.>3O?ˢ;Ҫpwۦ[N;=񖖖-ؿƅ 9&9pCS kFӠ5B82Ǟn8 k5^ℴ*j}bcQ7~2Mv}FVE.izb8UTUK1e)avIZ:'|4AWzg\9ҘY*tAEN UܝF_uZcO} }$>0yc;6̻S  k xg+&+RZYCV_3G~\ps0N5u]hGw< k(G:o|j1Z6vw׋"}ŗ$uv<{zm)oczӍz Z4#ZW5% kB?;`n3OJTo E!"0HV-!$ hUL BHobPF LPhBi|*|fXfY *0kszG5NSCдWj8w?=txzi/!>_1mp,mimMcS@gx#es8OZ׵ S].f nԮ{3+=;q9P}є[:Uױ<`/sqFCr3{|д Ľӣ眴r9ܾ5"O䨷%IgmL e/Ô5ƌ=xaG #B(5Go!!IH]ne[0:>kez~cDoIhOQGiǔH i ]I) j3T;-qB !CS4#_m\rCK5CO_뉱Dfz3>WsrQ V)1-718_1i+7[H%JpӭыL\[7wØaXx>\˫>'K젛b1"ը^8f?=Ko>7Isu0w5.EhWu bv)@ӅU'(%wm\ w!8S1i-$LjQN:脱 Y Tz3}$  I+C`Ң*eJadz=vE ]c _;~QI5Ʊ"*XGmMUZ-ds+y oGY[̊svDλ\FHٹ6'?3ixO#[]R?~xvù.N47 qDyd0aQrk4h)\ Ko4{c#}SlQZ7xt49S)ƶ8Mpj]{mv'>ȞCSTO&-Z:2MQVf$ME ^OtћN^f9%e');AN0Qc/PUkQ*hjLvόLҮ3, LYcD(_NcV(%{Q*%z!{,B&-mvL43/'j+Z݀{}0Z9x \FGyߠzbBvTFi3kZp$ h+ &4[nEwwcge˒}wܗ9o8?#yD+Aga1!Ҫ#gAIcRhUtLvf0da1mO=d]@@-Ejy r&_#BZl'{ C4jQj5>k lLIA7:lP B]:ZF L) mJK"]S+)2Q NoXVm(o)E\3}~R%M(@J} ^Mm!l~FRwwwK|Tww7;wiozMϭg"H׆|pp=Z4$NNA9~4tش#Tj%C)VI8^ 8$EHy Cifd̒`HI(>CC'T d:_;A&gMЂ if,ZaKH-ztPSd8_ 2(WX4,L#59ڢ3:ߩEu yV.=_X&'ngl;vhTGha|A\g2ŏ=:\K(%x%th6 +m[7](mYoZxZ ܃?dž,K&CDLj5XdNC",iZZ[G J:4_:ȖD5@]UqʥٯY'*IFXg\K0j\ g?w(nuwc\/ sYY N[3uU_q:`Ss&B,4q'PuU2hHOx('pJ잘"BL:t1çMӅN/c,q:E]dhV0cD@f8II ԇ i TJg4&mOjMbr!XFغocMI総ZX|*RBԶ*r}sU:[!]4i hP;ʘa|ip8Emq,-q¹a\tGx[kt@ ]ߊD0 >E:Yw WC>{gGn4!Dd!D" *:Wڹ}!'94c~ .Rh8y* 3#, TqU`ےζJ&R9Vu-nT 8qnzC1øJD\7ˣO*p`5ƿ"J,RDZc&fWw /@N2,/!.R߱cG՚.ܾE%4m}t=<Ȯ'XNT=,;Ù~wXhi 4RcRX}" aiVBv "69v!Kg-~YKVe^Ԫd"!ho&\̳̌ʲ ^FTh(Lrl`̐50p"Ͳ*grlsqn!:ϲ'Z;*>3ˆ7~v6VXFʟp=o^ 'gJF icy@'f'~2nŘǏF V0>|'3X> Be ca$^JQOOO@A\$"DA6adLIL㿣|Csdh4;s:"0 yF"h'tULoU}rHNF!AFY(l:di!V mgXaC"Y4/ G/yUԉ 2K0ry! Y*"O{] Lѽ=3tWgp-*ID|d7ngrp*]mLM'+9{#fujA*Q3^s铦ķ.u/ qӜz ƤR­jyh|zzzš!Eʀд).psr9 $=p8-38H’LK6dvIuM KcKM++i􌥨a#lstCl2օ1? S2CMeA2aƙH!ݢ?'Ȅc1曡{AlOhᗂS!tY-Z"l9E HG Cy&3*pE"-ïMӋ"rw'!BDB\"R:%a>#J#tiC!c$FFӄ6bftU":Xz eɟj9wOQQJ-2Rٻ!I{/5jjJ-Od?/[IޗŞj?Sh& c0tqĔԪkh&[LD**Pͯmۺ|p{@Ml$U.g B'R:xN"0 |t;[SiVP{|ECC *h FW'XوOߚe|eM,N9fK_CUM-e3!AT!mI߇i"LHiy/!vvBRJ{дSфl;""Ф$]`I&isLJ$ۖ1:Ÿ//F"W -o^Jivww%ᕾ[Mai̫p1(SlHE2,H`ZRRX)B;C ] d TI(&@L"D;R !!I)e)e0#AR Ii?L8{$rwwW<j-V&1_U-fpB|>,ٳcGb-RK)U]BHiMy[GXwwwEHÉ8+gq qzۀsqӼOql5/ן|s`NFxmy_3.(&_{kxuh.kjVSS#GV-J&_a\ #nܺ s"/C8>bI(j1Wz lEprJHQ/^z7 lIܩp< 8@bP8Şwgߪ(ַ NPAU1u-b.Z qӜq=7ȁ|qTV։pRwM3y?\p%'Ux%85Ep*/?R"e9X)̀.^u-fӮq<=KT8[p)*Je'M͍_s]q@F9XVu8Q5 T11s0IDAT0g׆S/>638V֯x1xb" lO)f]W{N)Jt:v5M9vNK1ۊyK y9.Qɥ*pEN߇Ԯ\8Ua.} Mmj+^nMe }> _]`{Z9 p"/Uĩl.\;d[Nwҹ\+G'꽊*Ї]mwk;=(E٪(UQ~J<NTWKXt=3] e~3'(4q|3 wh4V~p }]ϩJkQb=$f_ULV*1fUK$phxt>S i8>%=FK9xIG[D"xy2^51h踍ZQbR7͜ҙ8sAz>`C+.P֡|},L\*nCŬ{>\`Msw12Ňc=ξ!T,As# *=?G3]`Kg9c R\ 9y=jWD 0k=`m4gbqRQSpdBYU=cY4ՈJ]qqSݫƣ-q^+9/bI{NSN+qbZޭ\0Q:]"tY\U1ø^G=]3zԼΘaPrnBܘalz+Ho[\cєXRR>TTu+?E-ʴ[~7sSzu7(Պ i˸r2|=8NU(C5CsV=EbSq{ԌZ`M-2q*eMs:f(sR׻ΕP;J]RC=rVX<,kf/ 5R6"w|t9 oI?[n}%V+|ҳJ(!`eE|k(VSGC7Cʛ]QڹWςx +\"O1B16:grcT{.{ҕ. yg>խc\SO{t|6qqq=}?%]Y\]g]R >]RRWԼ5f~u_{>>v+SsfuUF%JMr>T"M+;TenPDh=n%إR,%Tp}]琹>Q)X6<ʺRs?3~ VbB ~ ժ[ɣ[KG5_4OJaWeWz_2X|ZU7G͕YW ̹T럚>T~K/Ij< 8>Mɽ^FWr*YνT)B K*c>B=O+W/Q7eb"cB[B_Wzo_8o15[Ϙg>TƩηJsEݥJ͑]FRt9CURst3r\DBCY 2;[2Zh~Z^Uy*s{8fwCy Np شy~'8^eIX/| '+zt5O~wAu%&E.\i!3)҉8{q߭rݼtӝO=EZ=F2&y;A3n|&nyQCqt/2m'^벮Ut\ v]{:!S>}߂cn=yc߇T~h)qvT]Sv-S=O88K _ݿ?ÿ>:}x(n,X]Mޣ'uq_!t%n+Vsp+>NraU֭\xk1;AQ/$zȱ'WʴߣD>*}KxNJlVl .b#JPTﲩD?8hH+8|"j+#7;)#̡zQ? RrAcqP7͛ʜ:C{yR0N)n<8.N<{Mץ2lrcX,u}x~L c^fq2O4O4O4O4O4O4O4O4O4O4O4O4OEԪIENDB`xalan-c-1.11/c/xdocs/sources/xslt-resources/note.gif0000664000175000000640000000044711573171550021446 0ustar stevesambaGIF89a;Xww8PPP(ikk6sg~^^5퇵g,PI/gźH^} #"2F皱\ D=0.JdRZ 0 (V-”Hd悁p= \DtbmmHEqjx ^ Wjn<tm Hq  fvhvXz =] S ɶhU=bQG;xalan-c-1.11/c/xdocs/sources/xslt-resources/XalanC-Logo-tm.png0000664000175000000640000001033411632436640023176 0ustar stevesambaPNG  IHDReχdsRGBbKGD pHYsaa?itIME 2\IDATx]Mh$JI>_l('zY шe!!@2sB6M vaC 8fr^>Y:K)^;^{%ˡwzzzFW]^z$I:4'E I@$ I$$I $I@$ I$$I $I@$ I$$I $I@$ IрZc]KƨK5hBwetnaH H% gH1Hi e),1֠UB p:եcX3G,㗁&8;ԅMODTbj VZ@j(s=}5P]͸'57gea|)BΕY LowaeYc P*m|` 1"bdw0;+hP4 ٯA$/&i`q R3F 0!3.}5'xe@ yY"6* x |>N?.JެJ5mwhWQ^ŘNh )V3J9fQQ3+hbVFq+~E$PrO@@4J fy4 +`*s|'ؾYRap!"s12)EnTȅ+4q'2+Aށ b ] j|ͤ8L|xj{A@`&Jw+{`B R\H\ Bi>P>YrR'nv#J򫅢$(Vֳ6 7L~pRT{I5VA|0'h6FhWFzjWօѨ@ƨ$ð pC}kY`}Q:KiQ/MVW`^ju3ˬn;F;`@P?,Rv1uNY.5.EG~m2 v;\7`8Y~<&} UUlnT4RE3x15fb 8C\g-w2 utE5q(|XŵvڙG֤G{ +2-cU9 [ ZB᙭f}ϷktIlq'+ASI,oȬpWGsJ2ۛ4 K̕VYʚvZ-ߩ 32DIn;?e@J#pCXL rG  EhWYFo/[*d='OETaFx5.%R:s5"D4u}rw"3bܮyaK|SgX-6ߡgcV:}`Wjt3sqET]O6^Pi%z%0-F1 bQ׊SJa'z1pͯApx,3W#Q4<ʂ{1 ^@C?}o1}];RGL=a>L1dD%+rr JbJϲcDFKu1FiOϷj'W zoT)uſ' P5 ]ĹG@W0>`yǿ{T (#|).Y姪k_`8 xE:C[>™+ 3wvMJɡs?:@8+ p[<=̃oc?>,EYaA/5_ޡ;wɿK p)Bپ}@(Qa344>'JW#P',Fg1OEІ79Q^x01_>*E*c*~k'ݨɪvy".'WS@e S`/^̾Px6>|5Χm[]¿]ϳOkǴѳOk=+ls:T,כX@jU2kiνE72V yT=)T4lF12ƭJQ%W ;dxQush, 2~25࣏6Vo * LqB%U4@ FD1F'Wcv=]POdF&MԮo.0? W4[TY*epޚ)Sx%2OumWk|e| nq}UA#. <M} 4g(u˅iAOĘOD ^ POΤV"ޛ+. <Z`+|n$J_>Ro09Ypc)ʼohH3P)sh$hp˷h_= =\s%b꒦^Yr 'e:ϥ̻:i<ёQ3SdmJP ]][#*-s\X2w(8o1:xgDUd.$i.8"$Iz$I $&3y&kEfi 'ͮ5(6d%fvAtjfĥ\OuwEaX{(;YuMPѷOUBGE2tGEIdJY]j69@N!פӴ@ c*][lf84NήLmVϚku$H*Y{+%w:Ga``*x@p0^%{0bkt|j۫_~o|QHQ=XE#3R.|pDwg6)i`}T5(݈mQNhS: :L݆qRnL7'b+;i#6E Dһy}Ԓ`qU'w8EȊW$N|c(Rw2`2p:<jE '`mMS`R' zQ4E4_#"Iؾe%[4G Y(o(RkXq+k 7G3ޖ A~yN27x dЂn+6ȭ{ma l)ۃe*6w6G([ب%Fk%inl7_IY[]>{UlKAu7wFxƖ)[A.Sq eXƪbCP6P` ގ3ʠv@`{x;C`1-nTl>MDn\߄ @v\N`*߻|nj~sWatL!$׻/Qw%4fWzUň*&$/H A $/H A $/H A $H^ xA5#; ?dP1i3AVhP>*xwiUh"32DNGdy~ZYN[2+?khoRCXq3$lNit1VIW$L.}ҝ@}_&39]!)/eYrf3]H煄REHO3bKvE't` 7&נѪD.BH葞$I{C(8z}r&񿏔'7PuM@<0v!)Lr<ܡ{L6#_~](LBCဏ::56ew3jtzeZD΃WNyM[tzOzFV{$0We%KmWEQƜZI ts6[o &hCOAX^s2<6CTC(:%ww&Uh>k1|L=7oK@O%brIvJ *$y=zصDQ8> gزgm*_(gx618#Y{apݼȋPgK3fmSw̠n&mCx͆Qm)5J143H#)ca`>hi*)sVu#l;ҤkSMq_|sTҰ eP+-f=bUE7ZeH> }?;OF7Tk_umLu"/D9?˹b۩b=qx9vH ρ=ӵ1St$`cx1N,ŒS~LK9Y %Men&27Bx^uJPvx杧9FT1<gwxefx9~IIiYdD+[ǓߟwgvS?Yg.ૻeJ=sD~o0`i&WOg6؟tƞR"Dy]H٣r ,Ǔ).?}ɝb 'w# ۓ{ݎ7O'ORRE\¤/ ts8rb??w}stsG7' tF]wߔ GӏTNFT~t$ $({RϹRʷTUg3N4M~L|^|Zm5| _|Z*i|C(HC-;Ogz0g^y`?OHuC3QGVaTcT^x@<*3j\EnSpƝGQ3Pv- pTnܖeŅ=}c6;[㝞^;<@k/'"?/Hmg8(so~SVy(32u0rhhMxpky淲ʙ|+JcIW O#2,i]J-1Ew;# 3wY.>.jN3"lfSmOaZq.*>?mGm L`n;32n n_󨑩t';<ҕntnx'-ܩă&w,j!x I&Yh}W a'W×qŚ$[Ug,=$$/o;%>n6|X]޵$)_Y FPyt)oLdvN0څ:dt͗oXyᝬiV=l r.QlʺO!Ŀ\T8a{?0:;FcsaU38˙$%w` W@ʲ[ )ަ2H if@xIl>JL#%#!1֕ hE~pymp9<ϮYjcW zr>ByײW.`K. ݄}v{ *CPѺbt;I?r3@ZoQU=>yVu\Xe.dzwx.( %9yg-~vw{ФuTQźBڥ: ; mIDG; Rl mmP[;w[;ںȯmk :J㵷9./{lvt#TP -HPnk@m kh6THڪKMҎub]r)xeln`ire({E}ޣ'C&ŭ{zi0^7%!Ԟ wcƪ^xYY;3}~Daۦټ4It@dP%^XD, xAJ+KIENDB`xalan-c-1.11/c/xdocs/sources/xslt-resources/Xalan-Trademark.txt0000664000175000000640000000345511630453560023526 0ustar stevesamba The XALAN Logo - Trademark Description -------------------------------------- Prepared By: Steven J. Hathaway (shathaway@apache.org) September 3, 2011 Prepared for: The Apache Software Foundation -------------------------------------- Graphic: A stylized version of the African Xalam instrument. Note: the difference in spelling. Xalam is the African Musical Instrument Xalan is the Apache Xalan Software Project TEXT FONTS SIZE AND STYLE: TM (trademark symbol) Font: Arial Size: 14pt Style: Bold) XSLT Font: Arial Size: 22pt Style: Bold Apache Software Foundation (trademark name) Font: Arial Size: 18pt Style: Bold Note: 2 space characters between words Xalan (trademark name) Font: Segoe Print Size: 48pt Style: Bold Xalan-C (trademark name) Font: Segoe Print Size: 48pt Style: Bold Xalan-J (trademark name) Font: Segoe Print Size: 48pt Style: Bold INSTRUMENT GRAPHIC (vector equations) Vertical Width: 0.75 inch (3/4) HorizontalLength: 3.667 inch (3 2/3) Oval on the left, neck and butt on the right. Oval Width: 0.75 inch (3/4) Oval Length: 1.583 inch (1 7/12) Neck Width: 0.167 inch (1/6) Butt Width: 0.25 inch (1/4) Butt Length: 0.417 inch (5/12) Description of instrument logo Oval: simulation of a gourd sound chamber With orange gradation hues Neck: rectangle simulating a round fingerboard With yellow-green gradation hues Butt: rounded rectangle simulating end of neck With olive-green hue String Anchor: rounded rectangle on the gourd With olive-green hue 2 strings: the full length from Anchor to Butt 2 strings: tied to neck, at 1/2 length from Anchor to Butt 3 Loose Tie Strings on the Butt, simulating tuning anchors xalan-c-1.11/c/xdocs/sources/make-book.sh0000775000175000000640000000221512032735144017203 0ustar stevesamba#!/bin/sh # # Bourne shell script to create Xalan-C documentation pages # # SET THE LIBRARY PATH FOR YOUR OPERATING SYSTEM, REQUIRED BY "Xalan" PROGRAM # # SOLARIS AND LINUX # export LD_LIBRARY_PATH=/usr/local/lib # # AIX AND BSD # export LIBPATH=/usr/local/lib # # HPUX # export SHLIB_PATH=/usr/local/lib # # MAC OS/X # export DYLD_LIBRARY_PATH=/usr/local/lib # # CYGWIN AND MINGW # export PATH=$PATH;/usr/local/lib # umask 0002 mkdir -p ../../build/docs/xalan-c/resources make-xalan.sh usagepatterns make-xalan.sh samples make-xalan.sh resources # make-xalan.sh build_instruct make-xalan.sh install make-xalan.sh download make-xalan.sh overview make-xalan.sh charter # make-xalan.sh history make-xalan.sh whatsnew make-xalan.sh extensionslib make-xalan.sh commandline make-xalan.sh readme make-xalan.sh releasenotes make-xalan.sh programming make-xalan.sh getstarted make-xalan.sh index make-xalan.sh extensions make-xalan.sh faq # make-xalan.sh test-faqs make-xalan.sh license make-xalan.sh buildlibs make-xalan.sh secureweb make-xalan.sh builddocs cp xalan-graphic/*.* ../../build/docs/xalan-c cp xslt-resources/*.* ../../build/docs/xalan-c/resources xalan-c-1.11/c/xdocs/sources/make-xalan.sh0000775000175000000640000000572412025261254017362 0ustar stevesamba#!/bin/sh # # Bourne shell script to create a single xalan-c webpage # Parameter $1 is the basename of the page to generate. # #------------------------------------------------------------- # # Set the current path to include the "Xalan" stylesheet transformation utility # # $1 The document filename (without extension) to transform # # -- The Environment Variables for this script -- # # ${XALANBOOKXML} The navigation file for this project # # ${XALANCMD} The Xalan command-line XSLT transformation utility # # ${XALANSTYLE} The XSLT stylesheet to # # ${XALANSRCDIR} Source directory of STYLEBOOK markup XML documents # # ${XALANOUTDIR} Target directory of XHTML web page documents # # ${XALANLOGOIMG} Web Page Logo # # ${XALANLOGOWIDTH} Web Page Logo Width # # ${XALANLOGOHEIGHT} Web Page Logo Height # # ${XALANLOGOLINK} Active Link for Web Page Logo # # ${XALANTITLELINK} Active Link for Web Page Title # # ${WEBCREATED} Web Page Creation Date # # -- The XSLT Stylesheet Top-Level Parameters # # sectionid Top-level stylesheet parameter (document file id) # # createdate Top-level stylesheet parameter (web page creation date) # # logoimage Apache Trademark Logo Image # # logolink Logo Image - hot link # # bookxml The .xml file for navigation # # booklink The Hot-Link for Book Title in Header # # Set some environment variables XALANBOOKXML=xalan.xml XALANCMD=Xalan XALANSTYLE=stylebook.xslt XALANSRCDIR=xalan XALANOUTDIR=../../build/docs/xalan-c XALANLOGOIMG=resources/XalanC-Logo-tm.png XALANLOGOWIDTH=190 XALANLOGOHEIGHT=90 XALANLOGOLINK=../index.html XALANTITLELINK=index.html WEBCREATED=`date +"%a %F"` ## DEBUG BEGIN #echo INPUT PARAM = $1 #echo XALANBOOKXML = ${XALANBOOKXML} #echo XALANCMD = ${XALANCMD} #echo XALANSTYLE = ${XALANSTYLE} #echo XALANSRCDIR = ${XALANSRCDIR} #echo XALANOUTDIR = ${XALANOUTDIR} #echo XALANLOGOIMG = ${XALANLOGOIMG} #echo XALANLOGOWIDTH = ${XALANLOGOWIDTH} #echo XALANLOGOHEIGHT = ${XALANLOGOHEIGHT} #echo XALANLOGOLINK = ${XALANLOGOLINK} #echo XALANTITLELINK = ${XALANTITLELINK} #echo WEBCREATED = ${WEBCREATED} #exit ## DEBUG END # # Create Target Directories # if [ ! -d "${XALANOUTDIR}" ]; then mkdir -p "${XALANOUTDIR}" fi #IF EXIST "%XALANOUTDIR%" GOTO NEXT1 #MKDIR "%XALANOUTDIR%" #:NEXT1 if [ ! -d "${XALANOUTDIR}/resources" ] ; then mkdir -p "${XALANOUTDIR}/resources" fi #IF EXIST "%XALANOUTDIR%/resources" GOTO NEXT2 #MKDIR "%XALANOUTDIR%/resources" #:NEXT2 # # Now create the specific web page from StyleBook XML # "${XALANCMD}" \ -p sectionid "'$1'" \ -p xmlsources "'${XALANSRCDIR}'" \ -p createdate "'${WEBCREATED}'" \ -p logoimage "'${XALANLOGOIMG}'" \ -p logowidth "'${XALANLOGOWIDTH}'" \ -p logoheight "'${XALANLOGOHEIGHT}'" \ -p logolink "'${XALANLOGOLINK}'" \ -p bookxml "'${XALANBOOKXML}'" \ -p booklink "'${XALANTITLELINK}'" \ "${XALANSRCDIR}/$1.xml" "${XALANSTYLE}" >"${XALANOUTDIR}/$1.html" xalan-c-1.11/c/xdocs/style/0000775000175000000640000000000012037700125014450 5ustar stevesambaxalan-c-1.11/c/xdocs/style/dtd/0000775000175000000640000000000012037700125015223 5ustar stevesambaxalan-c-1.11/c/xdocs/style/dtd/blocks.ent0000664000175000000640000000155002263613200017206 0ustar stevesamba %markupEntity; xalan-c-1.11/c/xdocs/style/dtd/book.dtd0000664000175000000640000000335111631675754016676 0ustar stevesamba %externalEntity; xalan-c-1.11/c/xdocs/style/dtd/changes.dtd0000664000175000000640000000115102263613200017323 0ustar stevesamba %markupEntity; xalan-c-1.11/c/xdocs/style/dtd/characters.ent0000664000175000000640000010076202263613200020055 0ustar stevesamba xalan-c-1.11/c/xdocs/style/dtd/document.dtd0000664000175000000640000000076602263613200017544 0ustar stevesamba %blocksEntity; xalan-c-1.11/c/xdocs/style/dtd/faqs.dtd0000664000175000000640000000133511632437504016664 0ustar stevesamba %blocksEntity; xalan-c-1.11/c/xdocs/style/dtd/links.ent0000664000175000000640000000127002263613200017050 0ustar stevesamba xalan-c-1.11/c/xdocs/style/dtd/markup.ent0000664000175000000640000000117007227313244017240 0ustar stevesamba %externalEntity; %charEntity; %linksEntity; xalan-c-1.11/c/xdocs/Stylebook-Changes.txt0000664000175000000640000000135712033456371017407 0ustar stevesamba RECOMMENDED StyleBook Changes:: The stylesheets for Xalan-C/++ do not support the Stylebook . Especially since the child element does not support a label. I was going to display the label with enhanced font, and treat the similar to a , ... etc. The element in Stylebook currently does not support a "label" attribute. Change to the StyleBook DTD is required. The element should support the following children of document hidden faqs changes external The element should not support the following children. group separator entry This change of is a significant departure from the Apache StyleBook Java Engine. xalan-c-1.11/c/xdocs/make-apiDocs.sh0000775000175000000640000000253212033456371016155 0ustar stevesamba#!/bin/sh # # Script file to create Xalan-C apiDocs # # This script requires current versions of "Doxygen" and # "GraphViz (dot)" programs to be installed on your UNIX. # # Various OS's have different ways of specifying the library path # # Solaris and Linux # LD_LIBRARY_PATH=/usr/local/lib # # HP-UX # SHLIB_PATH=/usr/local/lib # # AIX and BSD # LIBPATH=/usr/local/lib # # Mac OS X # DYLD_LIBRARY_PATH=/usr/local/lib # # Cygwin and MinGW # PATH= # # Add the current directory to the PATH for nested scripts PATH=$PATH:. # Add the PATH for the Xalan program # export PATH=/usr/local/bin:$PATH # Make the necessary target paths if [ ! -d ../build/docs/apiDocs ] ; then mkdir -p ../build/docs/apiDocs fi if [ ! -d ../build/docs/xalan-c ] ; then mkdir -p ../build/docs/xalan-c fi # Create the xalan-c apiDocs using (doxygen) and (dot). doxygen DoxyfileXalan # We may not want the many *.md5 files rm ../build/docs/apiDocs/html/*.md5 # Copy the Apache Trademark Graphic cp html/apiDocs/asf_logo_wide.gif ../build/docs/apiDocs/html # Move the apiDocs to the xalan-c website tree if [ -e ../build/docs/xalan-c/apiDocs ] ; then rm -rf ../build/docs/xalan-c/apiDocs fi mv ../build/docs/apiDocs/html ../build/docs/xalan-c/apiDocs # # Done with xalan-c apiDocs build # # # Chain to sources to create xalan-c website pages # cd sources make-book.sh cd .. xalan-c-1.11/c/xdocs/DoxyfileXalan-nograf0000664000175000000640000002705612033456371017275 0ustar stevesamba# FILE: DoxyfileXalan # # This file is automatically generated using DOXYWIZARD # to create web pages for the Apache XALAN-C project. # # Software Release Versions Used # doxygen version 1.71 # graphviz version 2.26.3 # # The apiDocs web pages are created by invoking the following command: # doxygen DoxyfileXalan # # After the web pages are created in directory ../build/docs/apiDocs/html/ # you should copy the apache feather logo image into that directory. # # cp html/apiDocs/asf_logo_wide.gif ../build/docs/apiDocs/html # #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = "Xalan-C++ API" PROJECT_NUMBER = OUTPUT_DIRECTORY = ../build/docs/apiDocs CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = YES QT_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO INHERIT_DOCS = YES SEPARATE_MEMBER_PAGES = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO OPTIMIZE_FOR_FORTRAN = NO OPTIMIZE_OUTPUT_VHDL = NO EXTENSION_MAPPING = BUILTIN_STL_SUPPORT = NO CPP_CLI_SUPPORT = NO SIP_SUPPORT = NO IDL_PROPERTY_SUPPORT = YES DISTRIBUTE_GROUP_DOC = NO SUBGROUPING = YES TYPEDEF_HIDES_STRUCT = NO SYMBOL_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = NO EXTRACT_STATIC = NO EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO EXTRACT_ANON_NSPACES = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = YES HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES FORCE_LOCAL_INCLUDES = NO INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_MEMBERS_CTORS_1ST = NO SORT_GROUP_NAMES = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES SHOW_DIRECTORIES = NO SHOW_FILES = YES SHOW_NAMESPACES = YES FILE_VERSION_FILTER = LAYOUT_FILE = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_NO_PARAMDOC = NO WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../src/xalanc \ ../src/xalanc/Utils/MsgCreator \ ../src/xalanc/Utils/XalanMsgLib \ ../src/xalanc/XalanExtensions \ ../src/xalanc/Harness \ ../src/xalanc/TestXSLT \ ../src/xalanc/XalanSourceTree \ ../src/xalanc/XSLT \ ../src/xalanc/NLS \ ../src/xalanc/Include \ ../src/xalanc/XalanTransformer \ ../src/xalanc/ICUBridge \ ../src/xalanc/DOMSupport \ ../src/xalanc/PlatformSupport \ ../src/xalanc/TestXPath \ ../src/xalanc/XalanExe \ ../src/xalanc/XPathCAPI \ ../src/xalanc/XalanDOM \ ../src/xalanc/XercesParserLiaison \ ../src/xalanc/XercesParserLiaison/Deprecated \ ../src/xalanc/XalanEXSLT \ ../src/xalanc/XMLSupport \ ../src/xalanc/XPath INPUT_ENCODING = UTF-8 FILE_PATTERNS = *.hpp \ *.h RECURSIVE = NO EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXCLUDE_SYMBOLS = EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = YES INLINE_SOURCES = NO STRIP_CODE_COMMENTS = NO REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO REFERENCES_LINK_SOURCE = YES USE_HTAGS = NO VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = YES COLS_IN_ALPHA_INDEX = 3 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = html/apiDocs/header-local.html HTML_FOOTER = html/apiDocs/footer.html HTML_STYLESHEET = HTML_COLORSTYLE_HUE = 220 HTML_COLORSTYLE_SAT = 100 HTML_COLORSTYLE_GAMMA = 80 HTML_TIMESTAMP = YES HTML_ALIGN_MEMBERS = NO HTML_DYNAMIC_SECTIONS = NO GENERATE_DOCSET = NO DOCSET_FEEDNAME = "Doxygen generated docs" DOCSET_BUNDLE_ID = org.doxygen.Project DOCSET_PUBLISHER_ID = org.doxygen.Publisher DOCSET_PUBLISHER_NAME = Publisher GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO CHM_INDEX_ENCODING = BINARY_TOC = NO TOC_EXPAND = NO GENERATE_QHP = NO QCH_FILE = QHP_NAMESPACE = org.doxygen.Project QHP_VIRTUAL_FOLDER = doc QHP_CUST_FILTER_NAME = QHP_CUST_FILTER_ATTRS = QHP_SECT_FILTER_ATTRS = QHG_LOCATION = GENERATE_ECLIPSEHELP = NO ECLIPSE_DOC_ID = org.doxygen.Project DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO USE_INLINE_TREES = NO TREEVIEW_WIDTH = 250 EXT_LINKS_IN_WINDOW = NO FORMULA_FONTSIZE = 10 FORMULA_TRANSPARENT = YES SEARCHENGINE = NO SERVER_BASED_SEARCH = NO #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = YES USE_PDFLATEX = YES LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO LATEX_SOURCE_CODE = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = YES EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = NO MSCGEN_PATH = HIDE_UNDOC_RELATIONS = YES HAVE_DOT = NO DOT_NUM_THREADS = 0 DOT_FONTNAME = FreeSans.ttf DOT_FONTSIZE = 10 DOT_FONTPATH = CLASS_GRAPH = YES COLLABORATION_GRAPH = YES GROUP_GRAPHS = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO CALLER_GRAPH = NO GRAPHICAL_HIERARCHY = YES DIRECTORY_GRAPH = YES DOT_IMAGE_FORMAT = png DOT_PATH = DOTFILE_DIRS = DOT_GRAPH_MAX_NODES = 80 MAX_DOT_GRAPH_DEPTH = 0 DOT_TRANSPARENT = NO DOT_MULTI_TARGETS = NO GENERATE_LEGEND = YES DOT_CLEANUP = YES xalan-c-1.11/c/xdocs/make-apiDocs-nograf.sh0000755000175000000640000000253412033456371017427 0ustar stevesamba#!/bin/sh # # Script file to create Xalan-C apiDocs # # This script requires current versions of "Doxygen" and # "GraphViz (dot)" programs to be installed on your UNIX. # # Various OS's have different ways of specifying the library path # # Solaris and Linux # LD_LIBRARY_PATH=/usr/local/lib # # HP-UX # SHLIB_PATH=/usr/local/lib # # AIX and BSD # LIBPATH=/usr/local/lib # # Mac OS X # DYLD_LIBRARY_PATH=/usr/local/lib # # Cygwin and MinGW # PATH= # # Add the current directory to the PATH for nested scripts PATH=$PATH:. # Add the PATH for the Xalan program # export PATH=/usr/local/bin:$PATH # Make the necessary target paths if [ ! -d ../build/docs/apiDocs ] ; then mkdir -p ../build/docs/apiDocs fi if [ ! -d ../build/docs/xalan-c ] ; then mkdir -p ../build/docs/xalan-c fi # Create the xalan-c apiDocs using (doxygen) only. doxygen DoxyfileXalan-nograf # We may not want the many *.md5 files rm ../build/docs/apiDocs/html/*.md5 # Copy the Apache Trademark Graphic cp html/apiDocs/asf_logo_wide.gif ../build/docs/apiDocs/html # Move the apiDocs to the xalan-c website tree if [ -e ../build/docs/xalan-c/apiDocs ] ; then rm -rf ../build/docs/xalan-c/apiDocs fi mv ../build/docs/apiDocs/html ../build/docs/xalan-c/apiDocs # # Done with xalan-c apiDocs build # # # Chain to sources to create xalan-c website pages # cd sources make-book.sh cd .. xalan-c-1.11/c/src/0002775000175000000640000000000012037700125012761 5ustar stevesambaxalan-c-1.11/c/src/xalanc/0002775000175000000640000000000012037700125014227 5ustar stevesambaxalan-c-1.11/c/src/xalanc/PlatformSupport/0002775000175000000640000000000012037700125017410 5ustar stevesambaxalan-c-1.11/c/src/xalanc/PlatformSupport/XalanNullOutputStream.hpp0000664000175000000640000000355111731656102024423 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANNULLOUTPUTSTREAM_HEADER_GUARD_1357924680) #define XALANNULLOUTPUTSTREAM_HEADER_GUARD_1357924680 // Base include file. Must be first. #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT XalanNullOutputStream : public XalanOutputStream { public : explicit XalanNullOutputStream(MemoryManager& theManager); virtual ~XalanNullOutputStream(); protected: // These are inherited from XalanOutputStream... virtual void writeData( const char* theBuffer, size_type theBufferLength); virtual void doFlush(); private: // These are not implemented... XalanNullOutputStream(const XalanNullOutputStream&); XalanNullOutputStream& operator=(const XalanNullOutputStream&); bool operator==(const XalanNullOutputStream&) const; }; XALAN_CPP_NAMESPACE_END #endif // NULLTEXTOUTPUTSTREAM_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanICUMessageLoader.cpp0000664000175000000640000001223011731656102024155 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined XALAN_ICU_MSG_LOADER // Class header file. #include "XalanICUMessageLoader.hpp" #include "PlatformSupportInit.hpp" #include "DOMStringHelper.hpp" #include "unicode/uloc.h" #include "unicode/udata.h" #include #include #include "xalanc/Include/XalanVersion.hpp" #if defined(XALAN_WINDOWS) #define XALAN_MESSAGES_NAME XalanMessages #else #define XALAN_MESSAGES_NAME xalanMsg #endif #define XALAN_MESSAGES_NAME_W_UNDERSCORE INVK_CAT2_RAW_NUMERIC(XALAN_MESSAGES_NAME,_) #define MAKE_STRING(a) #a #define INVK_MAKE_STRING(a) MAKE_STRING(a) #if defined(XALAN_WINDOWS) #if _MSC_VER >= 1400 #define ENTRY_POINT_SUFFIX _dat #define PACKAGE_NAME_SUFFIX #else #ifdef NDEBUG_SYMBOLS // release with symbols #define ENTRY_POINT_SUFFIX S_dat #define PACKAGE_NAME_SUFFIX S #elif NDEBUG // release #define ENTRY_POINT_SUFFIX _dat #define PACKAGE_NAME_SUFFIX #elif _DEBUG // debug only #define ENTRY_POINT_SUFFIX D_dat #define PACKAGE_NAME_SUFFIX D #endif // NDEBUG_SYMBOLS #endif // _MSC_VER >= 1400 #define PACKAGE_NAME INVK_CAT3_RAW_NUMERIC(XALAN_MESSAGES_NAME_W_UNDERSCORE,\ INVK_CAT2_RAW_NUMERIC_SEP_UNDERSCORE(XALAN_VERSION_MAJOR,XALAN_VERSION_MINOR),\ PACKAGE_NAME_SUFFIX) #define ICUDLL_ENTRYPOINT_NAME INVK_CAT3_RAW_NUMERIC(XALAN_MESSAGES_NAME_W_UNDERSCORE,\ INVK_CAT2_RAW_NUMERIC_SEP_UNDERSCORE(XALAN_VERSION_MAJOR,XALAN_VERSION_MINOR),\ ENTRY_POINT_SUFFIX) #else // NON-WINDOWS systems #define ICUDLL_ENTRYPOINT_NAME INVK_CAT2_RAW_NUMERIC(XALAN_MESSAGES_NAME_W_UNDERSCORE,dat) #define PACKAGE_NAME XALAN_MESSAGES_NAME #endif // XALAN_WINDOWS static const char* const sPackageName=INVK_MAKE_STRING(PACKAGE_NAME); extern "C" const char U_IMPORT ICUDLL_ENTRYPOINT_NAME []; XALAN_CPP_NAMESPACE_BEGIN XALAN_USING_XERCES(XMLMsgLoader) XALAN_USING_XERCES(XMLString) // --------------------------------------------------------------------------- // Local static methods // --------------------------------------------------------------------------- /* * Resource Data Reference. * * The data is packaged as a dll (or .so or whatever, depending on the platform) that exports a data symbol. * The application (thic *.cpp) references that symbol here, and will pass the data address to ICU, which * will then be able to fetch resources from the data. */ static const char* domainName = INVK_MAKE_STRING(XALAN_PRODUCT); XalanICUMessageLoader::XalanICUMessageLoader(MemoryManager &theManager): m_localeBundle(0), m_domainBundle(0), m_unknownMessage("The message was not found in the ICU resource bundle.", theManager) { UErrorCode err = U_ZERO_ERROR; udata_setAppData(sPackageName, &ICUDLL_ENTRYPOINT_NAME, &err); if (! U_SUCCESS(err)) { assert( 0 ); } const char* szLocal = XMLMsgLoader::getLocale(); if ( szLocal == 0 ) { // We failed to get local from Xerces, let's try our own default. szLocal="en_US"; } m_localeBundle = ures_open(sPackageName, szLocal , &err); if (!U_SUCCESS(err) || m_localeBundle == 0) { assert( 0 ); } err = U_ZERO_ERROR; m_domainBundle = ures_getByKey(m_localeBundle, domainName, 0, &err); if (!U_SUCCESS(err) || m_domainBundle == 0) { assert( 0 ); } } XalanICUMessageLoader::~XalanICUMessageLoader() { ures_close(m_domainBundle); ures_close(m_localeBundle); } bool XalanICUMessageLoader::loadMsg( XalanMessages::Codes msgToLoad, XalanDOMChar* toFill, XalanSize_t maxChars) { bool bResult = true; UErrorCode err = U_ZERO_ERROR; int32_t strLen = 0; // Assuming array format const UChar * const name = ures_getStringByIndex(m_domainBundle, (int32_t)msgToLoad+1, &strLen, &err); if (!U_SUCCESS(err) || (name == 0)) { XalanCopy(m_unknownMessage.c_str(), m_unknownMessage.c_str() + m_unknownMessage.length() + 1, toFill); return false; } const XalanSize_t retStrLen = static_cast(strLen + 1 ) > maxChars ? maxChars : static_cast(strLen + 1); XalanCopy(name, name + retStrLen, toFill); return bResult; } XALAN_CPP_NAMESPACE_END #endif // defined (XALAN_ICU_MSG_LOADER) xalan-c-1.11/c/src/xalanc/PlatformSupport/URISupport.hpp0000664000175000000640000002017211731656102022162 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(URISUPPORT_HEADER_GUARD_1357924680) #define URISUPPORT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN typedef XERCES_CPP_NAMESPACE_QUALIFIER XMLURL XMLURLType; class XALAN_PLATFORMSUPPORT_EXPORT URISupport { public: typedef XalanAutoPtr URLAutoPtrType; /** * Determine the fully qualified URI for a string. * * @param urlString string to qualify * @return auto pointer to fully qualified URI */ static URLAutoPtrType getURLFromString(const XalanDOMString& urlString, MemoryManager& theManager) { return getURLFromString(urlString.c_str(), theManager); } /** * Determine the fully qualified URI for a string. * * @param urlString string to qualify * @param url to update with the qualified string. */ static void getURLFromString( const XalanDOMString& urlString, XMLURLType& url, MemoryManager& theManager) { getURLFromString(urlString.c_str(), url, theManager); } /** * Determine the fully qualified URI for a string. * * @param urlString string to qualify * @return auto pointer to fully qualified URI */ static URLAutoPtrType getURLFromString(const XalanDOMChar* urlString, MemoryManager& theManager); /** * Determine the fully qualified URI for a string. * * @param urlString string to qualify * @param url to update with the qualified string. */ static void getURLFromString( const XalanDOMChar* urlString, XMLURLType& url, MemoryManager& theManager) { XalanDOMString buffer(theManager); getURLStringFromString(urlString, buffer); url.setURL(buffer.c_str()); } /** * Determine the fully qualified URI for a string. * * @param urlString string to qualify * @param base base location for URI * @return auto pointer to fully qualified URI */ static URLAutoPtrType getURLFromString( const XalanDOMString& urlString, const XalanDOMString& base, MemoryManager& theManager) { XalanDOMString theResult(theManager); getURLStringFromString(urlString, base, theResult); return getURLFromString(theResult, theManager); } /** * Determine the fully qualified URI for a string. * * @param urlString string to qualify * @param base base location for URI * @return auto pointer to fully qualified URI */ static URLAutoPtrType getURLFromString( const XalanDOMChar* urlString, const XalanDOMChar* base); /** * Determine the fully qualified URI for a string. * * @param urlString string to qualify * @return string to fully qualified URI */ static void getURLStringFromString( const XalanDOMString& urlString, XalanDOMString& theNormalizedURI) { getURLStringFromString(urlString.c_str(), urlString.length(), theNormalizedURI); } /** * Determine the fully qualified URI for a string. * * @param urlString string to qualify * @param theNormalizedURI fully qualified URI */ static void getURLStringFromString( const XalanDOMChar* urlString, XalanDOMString& theNormalizedURI) { assert(urlString != 0); getURLStringFromString( urlString, XalanDOMString::length(urlString), theNormalizedURI); } /** * Determine the fully qualified URI for a string. * * @param urlString string to qualify * @param len the length of urlString * @param theNormalizedURI fully qualified URI */ static void getURLStringFromString( const XalanDOMChar* urlString, XalanDOMString::size_type len, XalanDOMString& theNormalizedURI); /** * Determine the fully qualified URI for a string. * * @param urlString string to qualify * @param base base location for URI * @param theNormalizedURI fully qualified URI */ static void getURLStringFromString( const XalanDOMString& urlString, const XalanDOMString& base, XalanDOMString& theNormalizedURI) { getURLStringFromString(urlString.c_str(), base.c_str(), theNormalizedURI); } /** * Determine the fully qualified URI for a string. * * @param urlString string to qualify * @param base base location for URI * @param theNormalizedURI fully qualified URI */ static void getURLStringFromString( const XalanDOMChar* urlString, const XalanDOMChar* base, XalanDOMString& theNormalizedURI) { assert(urlString != 0 && base != 0); getURLStringFromString( urlString, XalanDOMString::length(urlString), base, XalanDOMString::length(base), theNormalizedURI); } /** * Determine the fully qualified URI for a string. * * @param urlString string to qualify * @param base base location for URI * @param theNormalizedURI fully qualified URI */ static void getURLStringFromString( const XalanDOMChar* urlString, XalanDOMString::size_type urlStringLen, const XalanDOMChar* base, XalanDOMString::size_type baseLen, XalanDOMString& theNormalizedURI); /** * Normalizes the string passed in, replacing * \ with /. * * @param urlString string to normalize * @return a reference to the passed parameter */ static XalanDOMString& NormalizeURIText(XalanDOMString& uriString); /** * Normalizes the string passed in, replacing * \ with /. * * @param urlString string to normalize * @return a copy of the normalized URI */ class InvalidURIException : public XSLException { public: /** * Construct an InvalidURIException. * * @param theMessage the error message */ InvalidURIException( const XalanDOMString& theMessage, MemoryManager& theManager, const Locator* theLocator); /** * Construct an InvalidURIException. * * @param theMessage the error message */ InvalidURIException( const XalanDOMString& theMessage, MemoryManager& theManager); virtual ~InvalidURIException(); virtual const XalanDOMChar* getType() const; private: }; static const XalanDOMChar s_fileProtocolString1[]; static const XalanDOMChar s_fileProtocolString2[]; }; XALAN_CPP_NAMESPACE_END #endif // URISUPPORT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanToXercesTranscoderWrapper.cpp0000664000175000000640000001020711731656102026225 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanToXercesTranscoderWrapper.hpp" #include #include #include #include typedef XERCES_CPP_NAMESPACE_QUALIFIER XMLException XMLExceptionType; XALAN_CPP_NAMESPACE_BEGIN XalanToXercesTranscoderWrapper::XalanToXercesTranscoderWrapper( MemoryManager& theManager, XMLTranscoderType& theTranscoder) : XalanOutputTranscoder(theManager), m_transcoder(&theTranscoder) { } XalanToXercesTranscoderWrapper* XalanToXercesTranscoderWrapper::create( MemoryManager& theManager, XMLTranscoderType& theTranscoder) { typedef XalanToXercesTranscoderWrapper ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( theManager, theTranscoder); theGuard.release(); return theResult; } XalanToXercesTranscoderWrapper::~XalanToXercesTranscoderWrapper() { delete m_transcoder; } XalanToXercesTranscoderWrapper::eCode XalanToXercesTranscoderWrapper::transcode( const XalanDOMChar* theSourceData, size_type theSourceCount, XalanXMLByte* theTarget, size_type theTargetSize, size_type& theSourceCharsTranscoded, size_type& theTargetBytesUsed) { eCode theCode = XalanTranscodingServices::OK; try { theTargetBytesUsed = m_transcoder->transcodeTo( theSourceData, theSourceCount, theTarget, theTargetSize, theSourceCharsTranscoded, // $$$ ToDo: Eventually, we're going to want to // replace this with UnRep_Throw, and let the // caller try to recover. // XMLTranscoderType::UnRep_Throw); XMLTranscoderType::UnRep_RepChar); } catch(const XMLExceptionType&) { theSourceCharsTranscoded = 0; theTargetBytesUsed = 0; theCode = XalanTranscodingServices::InternalFailure; } return theCode; } XalanToXercesTranscoderWrapper::eCode XalanToXercesTranscoderWrapper::transcode( const XalanXMLByte* theSourceData, size_type theSourceCount, XalanDOMChar* theTarget, size_type theTargetSize, size_type& theSourceCharsTranscoded, size_type& theTargetBytesUsed, unsigned char* theCharSizes) { eCode theCode = XalanTranscodingServices::OK; try { theTargetBytesUsed = m_transcoder->transcodeFrom( theSourceData, theSourceCount, theTarget, theTargetSize, theSourceCharsTranscoded, theCharSizes); } catch(const XMLExceptionType&) { theSourceCharsTranscoded = 0; theTargetBytesUsed = 0; theCode = XalanTranscodingServices::InternalFailure; } return theCode; } bool XalanToXercesTranscoderWrapper::canTranscodeTo(XalanUnicodeChar theChar) const { return m_transcoder->canTranscodeTo(theChar); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/DOMStringHelper.cpp0000664000175000000640000013335211731656102023074 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "DOMStringHelper.hpp" #include #include #include #include #include #if defined(XALAN_WINDOWS) #include #include #endif #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include #include "DoubleSupport.hpp" #include "XalanOutputStream.hpp" #include "XalanUnicode.hpp" XALAN_CPP_NAMESPACE_BEGIN #if defined (XALAN_STRICT_ANSI_HEADERS) using std::size_t; #endif // The maximum number of digits that sprintf can put in a buffer. // 100 for now. We're using this because we want to avoid transcoding // number strings when we don't have to, const size_t MAX_PRINTF_DIGITS = 100; // The maximum number of characters for a floating point number. const size_t MAX_FLOAT_CHARACTERS = 100; static XalanDOMChar theNaNString[] = { XalanUnicode::charLetter_N, XalanUnicode::charLetter_a, XalanUnicode::charLetter_N, 0 }; static const XalanDOMChar theNegativeInfinityString[] = { XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_I, XalanUnicode::charLetter_n, XalanUnicode::charLetter_f, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_i, XalanUnicode::charLetter_t, XalanUnicode::charLetter_y, 0 }; static const XalanDOMChar thePositiveInfinityString[] = { XalanUnicode::charLetter_I, XalanUnicode::charLetter_n, XalanUnicode::charLetter_f, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_i, XalanUnicode::charLetter_t, XalanUnicode::charLetter_y, 0 }; static const XalanDOMChar theZeroString[] = { XalanUnicode::charDigit_0, 0 }; XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString::size_type) indexOf( const XalanDOMChar* theString, XalanDOMString::size_type theStringLength, const XalanDOMChar* theSubstring, XalanDOMString::size_type theSubstringLength) { assert(theString != 0); assert(theSubstring != 0); // If the substring is longer than the string, then // it's not a substring. if (theStringLength < theSubstringLength) { return theStringLength; } else { bool fMatch = false; XalanDOMString::size_type theStringIndex = 0; // While we haven't matched, and we haven't finished with the // first string, and the number of characters left in the first // string is greater than the length of the second string, try // to match the strings. while(fMatch == false && theStringIndex < theStringLength && theStringLength - theStringIndex >= theSubstringLength) { // We always start over from the beginning of the second string. XalanDOMString::size_type theSubstringIndex = 0; // This variable will be incremented to index into the first // string. That way, we preserve the first string index for // when we have to restart the following loop with the next // position in the first string. XalanDOMString::size_type theOffset = 0; // Compare the characters in the two strings, at the // current indices, until the characters don't match. while(theStringIndex < theStringLength && theSubstringIndex < theSubstringLength && theString[theStringIndex + theOffset] == theSubstring[theSubstringIndex]) { theOffset++; theSubstringIndex++; } // If we've reached the end of the second string, // then we've found a match. if (theSubstringIndex == theSubstringLength) { fMatch = true; } else { theStringIndex++; } } return fMatch == false ? theStringLength : theStringIndex; } } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString::size_type) indexOf( const XalanDOMString& theString, const XalanDOMString& theSubstring) { if (theString.empty() == true) { return 0; } else if (theSubstring.empty() == true) { return theString.length(); } else { return indexOf(theString.c_str(), theSubstring.c_str()); } } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString::size_type) lastIndexOf( const XalanDOMChar* theString, XalanDOMChar theChar) { const XalanDOMString::size_type theLength = length(theString); if (theLength == 0) { return theLength; } else { XalanDOMString::size_type theIndex = theLength; while(theIndex > 0 && theString[theIndex - 1] != theChar) { theIndex--; } return theIndex == 0 ? theLength : theIndex - 1; } } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(bool) startsWith( const XalanDOMChar* theString, XalanDOMString::size_type theStringLength, const XalanDOMChar* theSubstring, XalanDOMString::size_type theSubstringLength) { if (theSubstringLength == 0) { // Make this work like Java... return true; } else if (theStringLength < theSubstringLength) { return false; } else { XalanDOMString::size_type i = 0; // Compare each character... for (; i < theSubstringLength && theString[i] == theSubstring[i]; ++i) { ; } // If we've gotten to the end of the substring, then // return true. if (i == theSubstringLength) { return true; } else { return false; } } } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(bool) endsWith( const XalanDOMChar* theString, XalanDOMString::size_type theStringLength, const XalanDOMChar* theSubstring, XalanDOMString::size_type theSubstringLength) { assert(theString != 0); assert(theSubstring != 0); bool fResult = false; // If the substring is longer, there's no point in continuing. if (theSubstringLength > 0 && theStringLength >= theSubstringLength) { XalanDOMString::size_type i = theStringLength; XalanDOMString::size_type j = theSubstringLength; // Compare each character... for (; j > 0 && theString[i - 1] == theSubstring[j - 1]; --j, --i) { ; } // If we've gotten to the beginning of the substring, then // return true. if (j == 0) { fResult = true; } } return fResult; } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(void) OutputString(XalanOutputStream& theStream, const CharVectorType& theString) { if (theString.empty() == false) { theStream.write(c_str(theString)); } } XALAN_USING_STD(ostream) #if defined(XALAN_CLASSIC_IOSTREAMS) typedef int streamsize; #else XALAN_USING_STD(streamsize) #endif XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(void) OutputString( ostream& theStream, const CharVectorType& theString) { if (theString.empty() == false) { assert( static_cast(static_cast(theString.size())) == theString.size()); theStream.write( &*theString.begin(), static_cast(theString.size())); } } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(void) OutputString(XalanOutputStream& theStream, const XalanDOMChar* theString) { if (theString != 0) { theStream.write(theString); } } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(void) OutputString( ostream& theStream, const XalanDOMChar* theString, MemoryManager& theMemoryManager) { CharVectorType theVector(theMemoryManager); TranscodeToLocalCodePage(theString, theVector, false, '?'); OutputString(theStream, theVector); } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) substring( const XalanDOMChar* theString, XalanDOMString& theSubstring, XalanDOMString::size_type theStartIndex, XalanDOMString::size_type theEndIndex) { assert(theString != 0); const XalanDOMString::size_type theStringLength = length(theString); // $$$ ToDo: In Java-land, any failing of this // assertion would result in an exception being thrown. assert(theStartIndex <= theStringLength); if (theStartIndex == theStringLength) { // This is allowed, and should return an empty string. theSubstring.clear(); } else { const XalanDOMString::size_type theLength = theEndIndex == XalanDOMString::npos ? theStringLength - theStartIndex : theEndIndex - theStartIndex; assert(theStartIndex + theLength <= theStringLength); theSubstring.assign(theString + theStartIndex, theLength); } return theSubstring; } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(void) substring( const XalanDOMString& theString, XalanDOMString& theSubstring, XalanDOMString::size_type theStartIndex, XalanDOMString::size_type theEndIndex) { const XalanDOMString::size_type theStringLength = theString.length(); assert(theStartIndex <= theStringLength); if (theStartIndex == theStringLength) { // This is allowed, and should return an empty string. theSubstring.clear(); } else { const XalanDOMString::size_type theLength = theEndIndex == XalanDOMString::npos ? theStringLength - theStartIndex : theEndIndex - theStartIndex; if (theLength == 0) { theSubstring.clear(); } else { assert(theStartIndex + theLength <= theStringLength); theString.substr(theSubstring, theStartIndex, theLength); } } } template OutputIteratorType TransformString( InputIteratorType theInputBegin, InputIteratorType theInputEnd, OutputIteratorType theOutputIterator, FunctionType theFunction) { return XALAN_STD_QUALIFIER transform( theInputBegin, theInputEnd, theOutputIterator, theFunction); } template XalanDOMString& TransformString( const XalanDOMChar* theInputString, XalanDOMString::size_type theInputStringLength, FunctionType theFunction, XalanDOMString& theConvertedString) { assert(theInputString != 0); TransformString( theInputString, theInputString + theInputStringLength, XALAN_STD_QUALIFIER back_inserter(theConvertedString), theFunction); return theConvertedString; } template XalanDOMString& TransformXalanDOMString( const XalanDOMString& theInputString, FunctionType theFunction, XalanDOMString& theResult) { const XalanDOMString::size_type theStringLength = theInputString.length(); if (theStringLength == 0) { theResult = theInputString; } else { const XalanDOMChar* const theBuffer = theInputString.c_str(); assert(theBuffer != 0); TransformString(theBuffer, theStringLength, theFunction, theResult); } return theResult; } template XalanDOMString& TransformString( FunctionType theFunction, XalanDOMString& theString) { TransformString( theString.begin(), theString.end(), theString.begin(), theFunction); return theString; } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) toLowerCaseASCII( const XalanDOMChar* theString, XalanDOMString& theResult) { TransformString(theString, length(theString), toLowerASCII, theResult); return theResult; } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) toLowerCaseASCII( const XalanDOMString& theString, XalanDOMString& theResult) { TransformXalanDOMString(theString, toLowerASCII, theResult); return theResult; } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) toLowerCaseASCII(XalanDOMString& theString) { TransformString(toLowerASCII, theString); return theString; } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) toUpperCaseASCII( const XalanDOMChar* theString, XalanDOMString& theResult) { TransformString(theString, length(theString), toUpperASCII, theResult); return theResult; } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) toUpperCaseASCII( const XalanDOMString& theString, XalanDOMString& theResult) { TransformXalanDOMString(theString, toUpperASCII, theResult); return theResult; } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) toUpperCaseASCII(XalanDOMString& theString) { TransformString(toUpperASCII, theString); return theString; } template class IdentityTransform { public: OutputCharType operator()(InputCharType theChar) const { return OutputCharType(theChar); } }; template class CaseFlipTransform { public: CharType operator()(CharType theChar) const { return flipCaseASCII(theChar); } }; template IdentityTransform makeIdentityTransform( const InputCharType*, const OutputCharType*) { return IdentityTransform(); } IdentityTransform makeCharIdentityTransform() { char theDummy; return makeIdentityTransform(&theDummy, &theDummy); } IdentityTransform makeXalanDOMCharIdentityTransform() { XalanDOMChar theDummy; return makeIdentityTransform(&theDummy, &theDummy); } template int doCompare( const Type* theLHS, SizeType theLHSLength, const Type* theRHS, SizeType theRHSLength, FunctionType theTransformFunction) { // We don't really have to order, so save some time... if (theLHSLength < theRHSLength) { return -1; } else if (theRHSLength < theLHSLength) { return 1; } else { Type theLHSChar = Type(0); Type theRHSChar = Type(0); for(SizeType i = 0; i < theLHSLength; i++) { theLHSChar = theTransformFunction(theLHS[i]); theRHSChar = theTransformFunction(theRHS[i]); if (theLHSChar != theRHSChar) { break; } } return int(theLHSChar - theRHSChar); } } template int doCollationCompare( const Type* theLHS, SizeType theLHSLength, const Type* theRHS, SizeType theRHSLength, FunctionType theTransformFunction) { int theResult = 0; if (theLHSLength != 0 || theRHSLength != 0) { Type theLHSChar = Type(0); Type theRHSChar = Type(0); SizeType i = 0; for(; i < theLHSLength && i < theRHSLength; i++) { theLHSChar = theTransformFunction(theLHS[i]); theRHSChar = theTransformFunction(theRHS[i]); if (theLHSChar != theRHSChar) { break; } } if (i == theLHSLength) { // We reached the end of theLHS... if (i != theRHSLength) { // but not the end of theRHS. theResult = -1; } } else if (i == theRHSLength) { // We reached the end of theRHS string... if (i != theLHSLength) { // but not the end of theLHS string. theResult = 1; } } else { // We didn't reach the end of _either_ string, so // return the difference between the two characters // that caused the problem. theResult = theLHSChar - theRHSChar; } } return theResult; } template int doCollationCompare( const Type* theLHS, const Type* theRHS, FunctionType theTransformFunction) { assert(theLHS != 0); assert(theRHS != 0); size_t i = 0; Type theLHSChar; Type theRHSChar; for (;;) { theLHSChar = theTransformFunction(theLHS[i]); theRHSChar = theTransformFunction(theRHS[i]); if (theLHSChar == static_cast(0) || theLHSChar != theRHSChar) { break; } else { ++i; } } return theLHSChar - theRHSChar; } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(int) compare( const CharVectorType& theLHS, const CharVectorType& theRHS) { return doCompare( c_str(theLHS), theLHS.size(), c_str(theRHS), theRHS.size(), makeCharIdentityTransform()); } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(int) compare( const XalanDOMChar* theLHS, XalanDOMString::size_type theLHSLength, const XalanDOMChar* theRHS, XalanDOMString::size_type theRHSLength) { return doCompare( theLHS, theLHSLength, theRHS, theRHSLength, makeXalanDOMCharIdentityTransform()); } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(int) compareIgnoreCaseASCII( const XalanDOMChar* theLHS, XalanDOMString::size_type theLHSLength, const XalanDOMChar* theRHS, XalanDOMString::size_type theRHSLength) { return doCompare( theLHS, theLHSLength, theRHS, theRHSLength, toUpperASCII); } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(int) collationCompare( const XalanDOMChar* theLHS, XalanDOMString::size_type theLHSLength, const XalanDOMChar* theRHS, XalanDOMString::size_type theRHSLength) { return doCollationCompare( theLHS, theLHSLength, theRHS, theRHSLength, makeXalanDOMCharIdentityTransform()); } #if defined(XALAN_USE_WINDOWS_COLLATION) static _locale_t s_locale; #endif XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(int) collationCompare( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS) { #if defined(XALAN_USE_WINDOWS_COLLATION) return _wcscoll_l(theLHS, theRHS, s_locale); #else return doCollationCompare( theLHS, theRHS, makeXalanDOMCharIdentityTransform()); #endif } template bool doEquals( const Type* theLHS, const Type* theRHS, SizeType theLength, FunctionType theTransformFunction) { assert(theLHS != 0 && theRHS != 0); if (theLength == 0) { return true; } else { const Type* const theEnd = theLHS + theLength; while(theTransformFunction(*theLHS) == theTransformFunction(*theRHS)) { ++theLHS; if (theLHS == theEnd) { return true; } else { ++theRHS; } } return false; } } template bool doEqualsIgnoreCase( const Type* theLHS, const Type* theRHS, SizeType theLength, FunctionType theToUpperFunction) { // Check each character, converting to uppercase // for the test. for(SizeType i = 0; i < theLength; i++) { const Type charLHS = theLHS[i]; const Type charRHS = theRHS[i]; if (charLHS != charRHS && Type(theToUpperFunction(charLHS)) != charRHS && charLHS != Type(theToUpperFunction(charRHS))) { return false; } } return true; } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(bool) equals( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, XalanDOMString::size_type theLength) { return doEquals( theLHS, theRHS, theLength, makeXalanDOMCharIdentityTransform()); } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(bool) equalsIgnoreCaseASCII( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, XalanDOMString::size_type theLength) { return doEqualsIgnoreCase( theLHS, theRHS, theLength, toUpperASCII); } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMCharVectorType&) MakeXalanDOMCharVector( const char* data, XalanDOMCharVectorType& theResult, bool fTranscode) { assert(data != 0); if (fTranscode == true) { // Create a vector which includes the terminating 0. TranscodeFromLocalCodePage(data, theResult, true); } else { // Include the terminating null byte... const XalanDOMString::size_type theLength = XalanDOMString::length(data) + 1; theResult.reserve(theLength); XALAN_STD_QUALIFIER copy( data, data + theLength, XALAN_STD_QUALIFIER back_inserter(theResult)); } return theResult; } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMCharVectorType&) MakeXalanDOMCharVector(const XalanDOMChar* data, XalanDOMCharVectorType& theResult) { assert(data != 0); const XalanDOMString::size_type theLength = length(data); XalanDOMCharVectorType tmpVector(data, data + theLength + 1,theResult.getMemoryManager()); theResult.swap(tmpVector); // Create a vector which includes the terminating 0. return theResult; } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(void) CopyWideStringToVector( const XalanDOMChar* theString, CharVectorType& theVector) { const XalanDOMString::size_type theLength = length(theString); if (theLength != 0) { theVector.reserve(theVector.size() + theLength + 1); for(XalanDOMString::size_type i = 0; i < theLength; i++) { // Assert that the truncation will not affect the resulting character. assert(theString[i] == char(theString[i])); theVector.push_back(char(theString[i])); } // Put a terminating 0 byte. theVector.push_back(0); } } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(void) CopyStringToVector( const char* theString, CharVectorType& theVector) { theVector.insert( theVector.end(), theString, theString + XalanDOMString::length(theString) + 1); } template Type WideStringToIntegral( const XalanDOMChar* theString, Type /* theDummy */) { if (theString == 0 || DoubleSupport::isValid(theString) == false) { return Type(0); } else { // OK, now we know we have a valid string, so start converting... Type theResult = 0; // Consume any leading whitespace (which we allow) while(isXMLWhitespace(*theString) == true) { ++theString; } const bool isNegative = *theString == XalanUnicode::charHyphenMinus ? true : false; if (isNegative == true) { ++theString; } while(*theString != 0) { if (*theString >= XalanUnicode::charDigit_0 && *theString <= XalanUnicode::charDigit_9) { theResult *= 10; theResult += *theString - XalanUnicode::charDigit_0; ++theString; } else if (isXMLWhitespace(*theString) == true) { // This must be trailing whitespace... break; } else { // An non-numeric character was encountered, so stop... return 0; } } return isNegative == true ? -theResult : theResult; } } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(int) WideStringToInt(const XalanDOMChar* theString) { return WideStringToIntegral(theString, int(0)); } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(long) WideStringToLong(const XalanDOMChar* theString) { return WideStringToIntegral(theString, long(0)); } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(unsigned long) WideStringToUnsignedLong(const XalanDOMChar* theString) { return WideStringToIntegral(theString, (unsigned long)0); } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(double) WideStringToDouble( const XalanDOMChar* theString, MemoryManager& theManager) { return DoubleSupport::toDouble(theString, theManager); } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) trim( const XalanDOMString& theString, XalanDOMString& theResult) { if (theString.empty()) { theResult.erase(); return theResult; } const XalanDOMString::size_type strLen = theString.length(); assert(strLen > 0); // index of first non-whitespace character XalanDOMString::size_type leadingSpace = 0; for (; leadingSpace < strLen; ++leadingSpace) if (!isXMLWhitespace(theString[leadingSpace])) break; // index of last non-whitespace character XalanDOMString::size_type trailingSpace = strLen -1; for (; trailingSpace > 0; --trailingSpace) if (!isXMLWhitespace(theString[trailingSpace])) break; substring(theString, theResult, leadingSpace, trailingSpace + 1); return theResult; } // A very cheap decimal number transcoder... template class DecimalNumberTranscodeTransform { public: OutputCharType operator()(InputCharType theChar) const { switch(theChar) { case '-': return OutputCharType(XalanUnicode::charHyphenMinus); break; case '.': return OutputCharType(XalanUnicode::charFullStop); break; case '0': return OutputCharType(XalanUnicode::charDigit_0); break; case '1': return OutputCharType(XalanUnicode::charDigit_1); break; case '2': return OutputCharType(XalanUnicode::charDigit_2); break; case '3': return OutputCharType(XalanUnicode::charDigit_3); break; case '4': return OutputCharType(XalanUnicode::charDigit_4); break; case '5': return OutputCharType(XalanUnicode::charDigit_5); break; case '6': return OutputCharType(XalanUnicode::charDigit_6); break; case '7': return OutputCharType(XalanUnicode::charDigit_7); break; case '8': return OutputCharType(XalanUnicode::charDigit_8); break; case '9': return OutputCharType(XalanUnicode::charDigit_9); break; default: return OutputCharType(0); break; } } }; template DecimalNumberTranscodeTransform makeDecimalNumberTranscodeTransform( const InputCharType*, const OutputCharType*) { return DecimalNumberTranscodeTransform(); } // A very cheap hex number transcoder... template class HexadecimalNumberTranscodeTransform : public DecimalNumberTranscodeTransform { public: typedef DecimalNumberTranscodeTransform BaseClassType; OutputCharType operator()(InputCharType theChar) const { switch(theChar) { case 'A': return OutputCharType(XalanUnicode::charLetter_A); break; case 'a': return OutputCharType(XalanUnicode::charLetter_a); break; case 'B': return OutputCharType(XalanUnicode::charLetter_B); break; case 'b': return OutputCharType(XalanUnicode::charLetter_b); break; case 'C': return OutputCharType(XalanUnicode::charLetter_C); break; case 'c': return OutputCharType(XalanUnicode::charLetter_c); break; case 'D': return OutputCharType(XalanUnicode::charLetter_D); break; case 'd': return OutputCharType(XalanUnicode::charLetter_d); break; case 'E': return OutputCharType(XalanUnicode::charLetter_E); break; case 'e': return OutputCharType(XalanUnicode::charLetter_e); break; case 'F': return OutputCharType(XalanUnicode::charLetter_F); break; case 'f': return OutputCharType(XalanUnicode::charLetter_f); break; default: return BaseClassType::operator()(theChar); break; } } }; template OutputIteratorType TranscodeNumber( InputIteratorType theInputBegin, InputIteratorType theInputEnd, OutputIteratorType theOutputIterator) { return TransformString( theInputBegin, theInputEnd, theOutputIterator, #if defined(XALAN_NON_ASCII_PLATFORM) HexadecimalNumberTranscodeTransform()); #else IdentityTransform()); #endif } static const char* const thePrintfStrings[] = { "%.10f", "%.11f", "%.12f", "%.13f", "%.14f", "%.15f", "%.16f", "%.17f", "%.18f", "%.19f", "%.20f", "%.21f", "%.22f", "%.23f", "%.24f", "%.25f", "%.26f", "%.27f", "%.28f", "%.29f", "%.30f", "%.31f", "%.32f", "%.33f", "%.34f", "%.35f", 0 }; XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) PointerToDOMString( const void* theValue, XalanDOMString& theResult) { char theBuffer[MAX_PRINTF_DIGITS + 1]; #if defined(XALAN_STRICT_ANSI_HEADERS) XALAN_USING_STD(sprintf); #endif const int theCharsWritten = sprintf(theBuffer, "%p", theValue); assert(theCharsWritten != 0); theResult.reserve(theResult.length() + theCharsWritten); TranscodeNumber( theBuffer, theBuffer + theCharsWritten, XALAN_STD_QUALIFIER back_inserter(theResult)); return theResult; } void DOMStringHelper::NumberToCharacters( double theValue, FormatterListener& formatterListener, MemberFunctionPtr function) { if (DoubleSupport::isNaN(theValue) == true) { (formatterListener.*function)( theNaNString, sizeof(theNaNString) / sizeof(theNaNString[0]) - 1); } else if (DoubleSupport::isPositiveInfinity(theValue) == true) { (formatterListener.*function)( thePositiveInfinityString, sizeof(thePositiveInfinityString) / sizeof(thePositiveInfinityString[0]) - 1); } else if (DoubleSupport::isNegativeInfinity(theValue) == true) { (formatterListener.*function)( theNegativeInfinityString, sizeof(theNegativeInfinityString) / sizeof(theNegativeInfinityString[0]) - 1); } else if (DoubleSupport::isPositiveZero(theValue) == true || DoubleSupport::isNegativeZero(theValue) == true) { (formatterListener.*function)( theZeroString, sizeof(theZeroString) / sizeof(theZeroString[0]) - 1); } else if (static_cast(theValue) == theValue) { NumberToCharacters(static_cast(theValue), formatterListener, function); } else { char theBuffer[MAX_PRINTF_DIGITS + 1]; #if defined(XALAN_STRICT_ANSI_HEADERS) XALAN_USING_STD(sprintf) XALAN_USING_STD(atof) XALAN_USING_STD(isdigit) #endif const char* const * thePrintfString = thePrintfStrings; int theCharsWritten = 0; do { theCharsWritten = sprintf(theBuffer, *thePrintfString, theValue); assert(theCharsWritten != 0); ++thePrintfString; } while(atof(theBuffer) != theValue && *thePrintfString != 0); // First, cleanup the output to conform to the XPath standard, // which says no trailing '0's for the decimal portion. // So start with the last digit, and search until we find // the last correct character for the output. // Also, according to the XPath standard, any values without // a fractional part are printed as integers. There's always // a decimal point, so we have to strip stuff away... // Now, move back while there are zeros... while(theBuffer[--theCharsWritten] == '0') { } int theCurrentIndex = theCharsWritten; // If a decimal point stopped the loop, then // we don't want to preserve it. Otherwise, // another digit stopped the loop, so we must // preserve it. if(isdigit(theBuffer[theCharsWritten])) { ++theCharsWritten; } // Some other character other than '.' can be the // separator. This can happen if the locale is // not the "C" locale, etc. If that's the case, // replace it with '.'. while(theCurrentIndex > 0) { if (isdigit(theBuffer[theCurrentIndex])) { --theCurrentIndex; } else { if (theBuffer[theCurrentIndex] != '.') { theBuffer[theCurrentIndex] = '.'; } break; } } XalanDOMChar theResult[MAX_PRINTF_DIGITS + 1]; TranscodeNumber( theBuffer, theBuffer + theCharsWritten, &theResult[0]); (formatterListener.*function)( theResult, theCharsWritten); } } template XalanDOMChar* ScalarToDecimalString( ScalarType theValue, XalanDOMChar* theOutput) { // Null terminate it... *theOutput = 0; if (theValue < 0) { do { *--theOutput = XalanDOMChar(-(theValue % 10) + XalanUnicode::charDigit_0); // OK, we're done with it... theValue /= 10; } while(theValue != 0); *--theOutput = XalanUnicode::charHyphenMinus; } else { do { *--theOutput = XalanDOMChar(theValue % 10 + XalanUnicode::charDigit_0); // OK, we're done with it... theValue /= 10; } while(theValue != 0); } return theOutput; } template XalanDOMString& ScalarToDecimalString( ScalarType theValue, XalanDOMString& theResult) { // We don't need to transcode, so just make it a // wide character string... XalanDOMChar theBuffer[MAX_PRINTF_DIGITS + 1]; XalanDOMChar* const theEnd = &theBuffer[MAX_PRINTF_DIGITS]; XalanDOMChar* const theBegin = ScalarToDecimalString(theValue, theEnd); theResult.append( theBegin, XalanDOMString::size_type(theEnd - theBegin)); return theResult; } template XalanDOMChar* UnsignedScalarToHexadecimalString( ScalarType theValue, XalanDOMChar* theOutput) { if (theValue >= 0) { // Null terminate it... *theOutput = 0; do { // Next spot... --theOutput; const ScalarType theTemp = theValue % 16; // Isolate the left most character. if (theTemp >= 0 && theTemp <= 9) { *theOutput = XalanDOMChar(theTemp + XalanUnicode::charDigit_0); } else { assert(theTemp >= 10 && theTemp <= 15); *theOutput = XalanDOMChar(theTemp - 10 + XalanUnicode::charLetter_A); } // OK, we're done with it... theValue /= 16; } while(theValue != 0); } return theOutput; } template XalanDOMString& UnsignedScalarToHexadecimalString( ScalarType theValue, XalanDOMString& theResult) { if (theValue >= 0) { // We don't need to transcode, so just make it a // wide character string... XalanDOMChar theBuffer[MAX_PRINTF_DIGITS + 1]; XalanDOMChar* const theEnd = &theBuffer[MAX_PRINTF_DIGITS]; XalanDOMChar* const theBegin = UnsignedScalarToHexadecimalString(theValue, theEnd); theResult.append( theBegin, XalanDOMString::size_type(theEnd - theBegin)); } return theResult; } void DOMStringHelper::NumberToCharacters( long theValue, FormatterListener& formatterListener, MemberFunctionPtr function) { XalanDOMChar theBuffer[MAX_PRINTF_DIGITS + 1]; const XalanDOMChar* const theResult = ScalarToDecimalString( theValue, &theBuffer[MAX_PRINTF_DIGITS]); (formatterListener.*function)(theResult, XalanDOMString::length(theResult)); } void DOMStringHelper::NumberToCharacters( XALAN_INT64 theValue, FormatterListener& formatterListener, MemberFunctionPtr function) { XalanDOMChar theBuffer[MAX_PRINTF_DIGITS + 1]; const XalanDOMChar* const theResult = ScalarToDecimalString( theValue, &theBuffer[MAX_PRINTF_DIGITS]); (formatterListener.*function)(theResult, XalanDOMString::length(theResult)); } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) NumberToDOMString( XALAN_INT64 theValue, XalanDOMString& theResult) { return ScalarToDecimalString(theValue, theResult); } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) NumberToDOMString( XALAN_UINT64 theValue, XalanDOMString& theResult) { return ScalarToDecimalString(theValue, theResult); } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) NumberToDOMString( double theValue, XalanDOMString& theResult) { if (DoubleSupport::isNaN(theValue) == true) { theResult.append( theNaNString, sizeof(theNaNString) / sizeof(theNaNString[0]) - 1); } else if (DoubleSupport::isPositiveInfinity(theValue) == true) { theResult.append( thePositiveInfinityString, sizeof(thePositiveInfinityString) / sizeof(thePositiveInfinityString[0]) - 1); } else if (DoubleSupport::isNegativeInfinity(theValue) == true) { theResult.append( theNegativeInfinityString, sizeof(theNegativeInfinityString) / sizeof(theNegativeInfinityString[0]) - 1); } else if (DoubleSupport::isPositiveZero(theValue) == true || DoubleSupport::isNegativeZero(theValue) == true) { theResult.append( theZeroString, sizeof(theZeroString) / sizeof(theZeroString[0]) - 1); } else if (static_cast(theValue) == theValue) { NumberToDOMString(static_cast(theValue), theResult); } else { char theBuffer[MAX_PRINTF_DIGITS + 1]; #if defined(XALAN_STRICT_ANSI_HEADERS) XALAN_USING_STD(sprintf) XALAN_USING_STD(atof) XALAN_USING_STD(isdigit) #endif const char* const * thePrintfString = thePrintfStrings; int theCharsWritten = 0; do { theCharsWritten = sprintf(theBuffer, *thePrintfString, theValue); assert(theCharsWritten != 0); ++thePrintfString; } while(atof(theBuffer) != theValue && *thePrintfString != 0); // First, cleanup the output to conform to the XPath standard, // which says no trailing '0's for the decimal portion. // So start with the last digit, and search until we find // the last correct character for the output. // Also, according to the XPath standard, any values without // a fractional part are printed as integers. There's always // a decimal point, so we have to strip stuff away... // Now, move back while there are zeros... while(theBuffer[--theCharsWritten] == '0') { } int theCurrentIndex = theCharsWritten; // If a decimal point stopped the loop, then // we don't want to preserve it. Otherwise, // another digit stopped the loop, so we must // preserve it. if(isdigit(theBuffer[theCharsWritten])) { ++theCharsWritten; } // Some other character other than '.' can be the // separator. This can happen if the locale is // not the "C" locale, etc. If that's the case, // replace it with '.'. while(theCurrentIndex > 0) { if (isdigit(theBuffer[theCurrentIndex])) { --theCurrentIndex; } else { if (theBuffer[theCurrentIndex] != '.') { theBuffer[theCurrentIndex] = '.'; } break; } } theResult.reserve(theResult.length() + theCharsWritten); TranscodeNumber( theBuffer, theBuffer + theCharsWritten, XALAN_STD_QUALIFIER back_inserter(theResult)); } return theResult; } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) NumberToHexDOMString( XALAN_UINT64 theValue, XalanDOMString& theResult) { return UnsignedScalarToHexadecimalString(theValue, theResult); } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) NumberToHexDOMString( XALAN_INT64 theValue, XalanDOMString& theResult) { return UnsignedScalarToHexadecimalString(theValue, theResult); } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(bool) isXMLWhitespace(const XalanDOMString& string) { const XalanDOMString::size_type theLength = string.length(); if (theLength == 0) { return true; } else { const XalanDOMChar* const theBuffer = string.c_str(); assert(theBuffer != 0); return isXMLWhitespace(theBuffer, 0, theLength); } } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(bool) isXMLWhitespace( const XalanDOMChar ch[], XalanDOMString::size_type start, XalanDOMString::size_type length) { const XalanDOMString::size_type end = start + length; for(XalanDOMString::size_type s = start; s < end; s++) { if (!isXMLWhitespace(ch[s])) return false; } return true; } void DOMStringHelper::initialize(MemoryManager& /* theMemoryManager */) { #if defined(XALAN_USE_WINDOWS_COLLATION) s_locale = _create_locale(LC_COLLATE, ""); #endif } void DOMStringHelper::terminate() { #if defined(XALAN_USE_WINDOWS_COLLATION) _free_locale(s_locale); #endif } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanDOMStringHashTable.cpp0000664000175000000640000001125311731656102024467 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XalanDOMStringHashTable.hpp" #include #include "DOMStringHelper.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanDOMStringHashTable::XalanDOMStringHashTable( MemoryManager& theManager, size_t theBucketCount, size_t theBucketSize) : m_bucketCount(theBucketCount), m_bucketSize(theBucketSize), m_buckets(theManager), m_count(0), m_collisions(0) { m_buckets.resize(theBucketCount); } void XalanDOMStringHashTable::clear() { for(size_t i = 0; i < m_bucketCount; ++i) { m_buckets[i].clear(); } #if !defined(NDEBUG) m_collisions = 0; #endif m_count = 0; } void XalanDOMStringHashTable::getBucketCounts(BucketCountsType& theVector) const { for (size_t i = 0; i < m_bucketCount; ++i) { const bucket_size_type size = m_buckets[i].size(); theVector.push_back(size); } } struct equalsXalanDOMString { equalsXalanDOMString( const XalanDOMChar* theString, XalanDOMString::size_type theLength) : m_string(theString), m_length(theLength) { } bool operator()(const XalanDOMString* theString) const { assert(theString != 0); if (m_length != theString->length()) { return false; } else { return equals(m_string, theString->c_str(), m_length); } } private: const XalanDOMChar* const m_string; const XalanDOMString::size_type m_length; }; const XalanDOMString* XalanDOMStringHashTable::find( const XalanDOMString& theString, size_t* theBucketIndex) const { return find( theString.c_str(), theString.length(), theBucketIndex); } const XalanDOMString* XalanDOMStringHashTable::find( const XalanDOMChar* theString, XalanDOMString::size_type theLength, size_t* theBucketIndex) const { assert(theString != 0); const XalanDOMString::size_type theActualLength = theLength == XalanDOMString::npos ? length(theString) : theLength; const size_t theHash = XalanDOMString::hash(theString, theActualLength); const size_t theLocalBucketIndex = theHash % m_bucketCount; assert(theLocalBucketIndex < m_bucketCount); const BucketType& theBucket = m_buckets[theLocalBucketIndex]; if (theBucketIndex != 0) { *theBucketIndex = theLocalBucketIndex; } XALAN_USING_STD(find_if) const BucketType::const_iterator i = find_if( theBucket.begin(), theBucket.end(), equalsXalanDOMString(theString, theActualLength)); if (i == theBucket.end()) { return 0; } else { return *i; } } void XalanDOMStringHashTable::insert(const XalanDOMString& theString) { const size_t theHash = theString.hash(); const size_t theBucketIndex = theHash % m_bucketCount; assert(theBucketIndex < m_bucketCount); BucketType& theBucket = m_buckets[theBucketIndex]; #if !defined(NDEBUG) if (theBucket.empty() == false) { ++m_collisions; } #endif theBucket.reserve(m_bucketSize); theBucket.push_back(&theString); ++m_count; } void XalanDOMStringHashTable::insert( const XalanDOMString& theString, size_t theBucketIndex) { assert(theBucketIndex == theString.hash() % m_bucketCount); assert(theBucketIndex < m_bucketCount); BucketType& theBucket = m_buckets[theBucketIndex]; #if !defined(NDEBUG) if (theBucket.empty() == false) { ++m_collisions; } #endif theBucket.reserve(m_bucketSize); theBucket.push_back(&theString); ++m_count; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/NamedNodeMapAttributeList.cpp0000664000175000000640000000656611731656102025144 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "NamedNodeMapAttributeList.hpp" #include #include #include "DOMStringHelper.hpp" #include "XalanUnicode.hpp" XALAN_CPP_NAMESPACE_BEGIN const XalanDOMChar NamedNodeMapAttributeList::s_typeString[] = { XalanUnicode::charLetter_C, XalanUnicode::charLetter_D, XalanUnicode::charLetter_A, XalanUnicode::charLetter_T, XalanUnicode::charLetter_A, 0 }; NamedNodeMapAttributeList::NamedNodeMapAttributeList( const XalanNamedNodeMap& theMap, MemoryManager& theManager) : ParentType(), m_nodeMap(theMap), m_length(theMap.getLength()), m_memoryManager(theManager) { assert(length(s_typeString) > 0); } NamedNodeMapAttributeList::~NamedNodeMapAttributeList() { } XalanSize_t NamedNodeMapAttributeList::getLength() const { return m_nodeMap.getLength(); } const XMLCh* NamedNodeMapAttributeList::getName(const XalanSize_t index) const { if (index >= m_length) { return 0; } else { const XalanNode* const theAttribute = m_nodeMap.item(m_length - 1 - index); assert(theAttribute != 0); return theAttribute->getNodeName().c_str(); } } const XMLCh* NamedNodeMapAttributeList::getType(const XalanSize_t index) const { if (index >= m_length) { return 0; } else { return s_typeString; } } const XMLCh* NamedNodeMapAttributeList::getValue(const XalanSize_t index) const { if (index >= m_length) { return 0; } else { const XalanNode* const theAttribute = m_nodeMap.item(m_length - 1 - index); assert(theAttribute != 0); return theAttribute->getNodeValue().c_str(); } } const XMLCh* NamedNodeMapAttributeList::getType(const XMLCh* const name) const { const XalanNode* theNode = m_nodeMap.getNamedItem(XalanDOMString(name, m_memoryManager)); if (theNode == 0) { return 0; } else { return s_typeString; } } const XMLCh* NamedNodeMapAttributeList::getValue(const XMLCh* const name) const { const XalanNode* theNode = m_nodeMap.getNamedItem(XalanDOMString(name, m_memoryManager)); if (theNode == 0) { return 0; } else { return theNode->getNodeValue().c_str(); } } const XMLCh* NamedNodeMapAttributeList::getValue(const char* const name) const { XalanDOMString theBuffer(m_memoryManager); return getValue(TranscodeFromLocalCodePage(name, theBuffer).c_str()); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/AttributesImpl.cpp0000664000175000000640000003137511731656102023100 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "AttributesImpl.hpp" #include #include #include #include #include "AttributeVectorEntryExtended.hpp" XALAN_CPP_NAMESPACE_BEGIN AttributesImpl::AttributesImpl(MemoryManager& theManager) : AttributesType(), m_attributesVector(theManager), m_cacheVector(theManager) { } AttributesImpl::~AttributesImpl() { // Clean up everything... clear(); assert(m_attributesVector.empty() == true); deleteEntries(m_cacheVector); } AttributesImpl::AttributesImpl( const AttributesImpl& theSource, MemoryManager& theManager) : AttributesType(), m_attributesVector(theManager), m_cacheVector(theManager) { // Use the assignment operator to do the dirty work... *this = theSource; assert(getLength() == theSource.getLength()); } AttributesImpl::AttributesImpl(const AttributesType& theSource, MemoryManager& theManager) : AttributesType(), m_attributesVector(theManager), m_cacheVector(theManager) { // Use the assignment operator to do the dirty work... *this = theSource; assert(getLength() == theSource.getLength()); } void AttributesImpl::deleteEntries(AttributesVectorType& theVector) { // Delete all of the objects in the vector. XALAN_STD_QUALIFIER for_each( theVector.begin(), theVector.end(), DeleteFunctor(theVector.getMemoryManager())); } AttributesImpl& AttributesImpl::operator=(const AttributesImpl& theRHS) { if (this != &theRHS) { // Note that we can't chain up to our base class operator=() // because it's private. // Some temporary structures to hold everything // until we're done. AttributesVectorType tempVector(getMemoryManager()); const XalanSize_t theLength = theRHS.getLength(); if (theLength > 0) { // Reserve the appropriate capacity right now... tempVector.reserve(theLength); // This will delete everything in tempVector when we're done... CollectionDeleteGuard > theGuard(tempVector); typedef AttributesVectorType::const_iterator const_iterator; const const_iterator theEnd = theRHS.m_attributesVector.end(); // Copy the vector entries, and build the index map... for(const_iterator i = theRHS.m_attributesVector.begin(); i != theEnd; ++i) { AttributeVectorEntryExtended* const theEntry = *i; assert(theEntry != 0); // Add the item... tempVector.push_back( getNewEntry( &*theEntry->m_Name.begin(), &*theEntry->m_Type.begin(), &*theEntry->m_Value.begin(), &*theEntry->m_uri.begin(), &*theEntry->m_localName.begin())); } // OK, we're safe, so swap the contents of the // containers. This is guaranteed not to throw. m_attributesVector.swap(tempVector); } assert(getLength() == theLength); } return *this; } AttributesImpl& AttributesImpl::operator=(const AttributesType& theRHS) { if (this != &theRHS) { // Note that we can't chain up to our base class operator=() // because it's private. // Add all of the attributes to this temp list, // then swap at the end. This means we're exception // safe and don't need any try blocks. AttributesImpl theTempList(getMemoryManager()); const XalanSize_t theLength = theRHS.getLength(); theTempList.reserve(theLength); // Add each attribute. for(XalanSize_t i = 0; i < theLength; i++) { theTempList.addAttribute( theRHS.getURI(i), theRHS.getLocalName(i), theRHS.getQName(i), theRHS.getType(i), theRHS.getValue(i)); } // Now that the temp list is built, swap everything. This is // guaranteed not to throw. swap(theTempList); } return *this; } XalanSize_t AttributesImpl::getLength() const { return unsigned(m_attributesVector.size()); } const XMLCh* AttributesImpl::getURI(const XalanSize_t index) const { assert(index < getLength()); return &*m_attributesVector[index]->m_uri.begin(); } const XMLCh* AttributesImpl::getLocalName(const XalanSize_t index) const { assert(index < getLength()); return &*m_attributesVector[index]->m_localName.begin(); } const XMLCh* AttributesImpl::getQName(const XalanSize_t index) const { assert(index < getLength()); return &*m_attributesVector[index]->m_Name.begin(); } const XMLCh* AttributesImpl::getType(const XalanSize_t index) const { assert(index < getLength()); return &*m_attributesVector[index]->m_Type.begin(); } const XMLCh* AttributesImpl::getValue(const XalanSize_t index) const { assert(index < getLength()); return &*m_attributesVector[index]->m_Value.begin(); } struct NameCompareFunctor { NameCompareFunctor(const XMLCh* theQName) : m_qname(theQName) { } bool operator()(const AttributeVectorEntryExtended* theEntry) const { return equals(&*theEntry->m_Name.begin(), m_qname); } private: const XMLCh* const m_qname; }; struct URIAndLocalNameCompareFunctor { URIAndLocalNameCompareFunctor( const XMLCh* theURI, const XMLCh* theLocalName) : m_uri(theURI), m_localName(theLocalName) { } bool operator()(const AttributeVectorEntryExtended* theEntry) const { return equals(&*theEntry->m_uri.begin(), m_uri) && equals(&*theEntry->m_localName.begin(), m_localName) ; } private: const XMLCh* const m_uri; const XMLCh* const m_localName; }; const XMLCh* AttributesImpl::getType(const XMLCh* const qname) const { const int theIndex = getIndex(qname); if (theIndex == -1) { return 0; } else { return getType(theIndex); } } const XMLCh* AttributesImpl::getValue(const XMLCh* const qname) const { const int theIndex = getIndex(qname); if (theIndex == -1) { return 0; } else { return getValue(theIndex); } } const XMLCh* AttributesImpl::getType( const XMLCh* const uri, const XMLCh* const localName) const { const int theIndex = getIndex(uri, localName); if (theIndex == -1) { return 0; } else { return getType(theIndex); } } const XMLCh* AttributesImpl::getValue( const XMLCh* const uri, const XMLCh* const localName) const { const int theIndex = getIndex(uri, localName); if (theIndex == -1) { return 0; } else { return getValue(theIndex); } } bool AttributesImpl::getIndex( const XMLCh* const uri, const XMLCh* const localPart, XalanSize_t& index) const { const int tempIndex = getIndex(uri, localPart); if (tempIndex == -1) { return false; } else { index = tempIndex; return true; } } int AttributesImpl::getIndex( const XMLCh* const uri, const XMLCh* const localPart) const { assert(uri != 0 && localPart != 0); const AttributesVectorType::const_iterator i = XALAN_STD_QUALIFIER find_if( m_attributesVector.begin(), m_attributesVector.end(), URIAndLocalNameCompareFunctor(uri, localPart)); if (i != m_attributesVector.end()) { // Found it, so return the index, which is the difference between // begin() and i. return int(i - m_attributesVector.begin()); } else { return -1; } } bool AttributesImpl::getIndex( const XMLCh* const qName, XalanSize_t& index) const { const int tempIndex = getIndex(qName); if (tempIndex == -1) { return false; } else { index = tempIndex; return true; } } int AttributesImpl::getIndex(const XMLCh* const qname) const { assert(qname != 0); const AttributesVectorType::const_iterator i = XALAN_STD_QUALIFIER find_if( m_attributesVector.begin(), m_attributesVector.end(), NameCompareFunctor(qname)); if (i != m_attributesVector.end()) { // Found it, so return the index, which is the difference between // begin() and i. return int(i - m_attributesVector.begin()); } else { return -1; } } void AttributesImpl::clear() { m_cacheVector.insert(m_cacheVector.end(), m_attributesVector.begin(), m_attributesVector.end()); // Clear everything out. m_attributesVector.clear(); } void AttributesImpl::addAttribute( const XMLCh* uri, const XMLCh* localName, const XMLCh* name, const XMLCh* type, const XMLCh* value) { assert(name != 0); assert(type != 0); assert(value != 0); typedef AttributeVectorEntry::XMLChVectorType XMLChVectorType; if (m_attributesVector.capacity() == 0) { m_attributesVector.reserve(eDefaultVectorSize); } typedef XalanMemMgrAutoPtr AutoPtr; AutoPtr theEntry(getMemoryManager(), getNewEntry(name, type, value, uri, localName)); // Add the new one. m_attributesVector.push_back(theEntry.get()); theEntry.release(); } AttributeVectorEntryExtended* AttributesImpl::getNewEntry( const XMLCh* name, const XMLCh* type, const XMLCh* value, const XMLCh* uri, const XMLCh* localName) { assert(name != 0); assert(type != 0); assert(value != 0); assert(uri != 0); assert(localName != 0); if (m_cacheVector.empty() == true) { return AttributeVectorEntryExtended::create(name, value, type, uri, localName,getMemoryManager()); } else { AttributeVectorEntryExtended* const theEntry = m_cacheVector.back(); theEntry->clear(); assert(theEntry->m_Name.empty() == true && theEntry->m_Value.empty() == true && theEntry->m_Type.empty() == true && theEntry->m_uri.empty() == true && theEntry->m_localName.empty() == true); theEntry->m_Name.insert(theEntry->m_Name.begin(), name, AttributeVectorEntry::endArray(name) + 1); theEntry->m_Value.insert(theEntry->m_Value.begin(), value, AttributeVectorEntry::endArray(value) + 1); theEntry->m_Type.insert(theEntry->m_Type.begin(), type, AttributeVectorEntry::endArray(type) + 1); theEntry->m_uri.insert(theEntry->m_uri.begin(), uri, AttributeVectorEntry::endArray(uri) + 1); theEntry->m_localName.insert(theEntry->m_localName.begin(), localName, AttributeVectorEntry::endArray(localName) + 1); m_cacheVector.pop_back(); return theEntry; } } bool AttributesImpl::removeAttribute(const XMLCh* name) { assert(name != 0); bool fResult = false; // Update the attribute, if it's already there... const AttributesVectorType::iterator i = XALAN_STD_QUALIFIER find_if( m_attributesVector.begin(), m_attributesVector.end(), NameCompareFunctor(name)); if (i != m_attributesVector.end()) { m_cacheVector.push_back(*i); m_attributesVector.erase(i); fResult = true; } return fResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanDecimalFormatSymbols.hpp0000664000175000000640000002513111731656102025172 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANDECIMALFORMATSYMBOLS_HEADER_GUARD_1357924680) #define XALANDECIMALFORMATSYMBOLS_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT XalanDecimalFormatSymbols { public: // Eventually, this constructor should take a locale to determine // all of the stuff it needs to know. But locales are implemented // on all of our platforms yet. explicit XalanDecimalFormatSymbols(MemoryManager& theManager); XalanDecimalFormatSymbols(const XalanDecimalFormatSymbols& theSource, MemoryManager& theManager); ~XalanDecimalFormatSymbols(); XalanDecimalFormatSymbols& operator=(const XalanDecimalFormatSymbols& theRHS); /** * Retrieve the string denoting the local currency, "$", for example * * @return string used for local currency */ const XalanDOMString& getCurrencySymbol() const { return m_currencySymbol; } /** * Retrieve the character used for decimal sign, '.' for example * * @return character used for decimal sign */ XalanDOMChar getDecimalSeparator() const { return m_decimalSeparator; } /** * Retrieve character used for a digit in a pattern * * @return character used for a digit in a pattern */ XalanDOMChar getDigit() const { return m_digit; } /** * Retrieve the character used for thousands separator, "," for example * * @return character used for thousands separator */ XalanDOMChar getGroupingSeparator() const { return m_groupingSeparator; } /** * Retrieve the string used to represent infinity * * @return string used to represent infinity */ const XalanDOMString& getInfinity() const { return m_infinity; } /** * Retrieve the international string denoting the local currency * * @return international string denoting the local currency */ const XalanDOMString& getInternationalCurrencySymbol() const { return m_internationalCurrencySymbol; } /** * Retrieve the character used to represent minus sign * * @return character used to represent minus sign */ XalanDOMChar getMinusSign() const { return m_minusSign; } /** * Retrieve the monetary decimal separator * * @return character used to separate decimal portion of currency */ XalanDOMChar getMonetaryDecimalSeparator() const { return m_monetaryDecimalSeparator; } /** * Retrieve the string used for a numeric value that cannot be represented * as a number * * @return string representing "not a number" value */ const XalanDOMString& getNaN() const { return m_NaN; } /** * Retrieve the character used to separate positive and negative * subpatterns in a pattern * * @return character used to separate positive and negative subpatterns */ XalanDOMChar getPatternSeparator() const { return m_patternSeparator; } /** * Retrieve the character used for percent sign, "%," for example * * @return character used for percent sign */ XalanDOMChar getPercent() const { return m_percent; } /** * Retrieve the character used for per thousand sign * * @return character used for per thousand sign */ XalanDOMChar getPerMill() const { return m_perMill; } /** * Retrieve the character used for zero * * @return character used for zero */ XalanDOMChar getZeroDigit() const { return m_zeroDigit; } /** * Sets the string denoting the local currency, "$", for example * * @param theCurrencySymbol symbol used for local currency */ void setCurrencySymbol(const XalanDOMString& theCurrencySymbol) { m_currencySymbol = theCurrencySymbol; } /** * Sets the string denoting the local currency, "$", for example * * @param theCurrencySymbol symbol used for local currency */ void setCurrencySymbol(const XalanDOMChar* theCurrencySymbol) { assert(theCurrencySymbol != 0); m_currencySymbol = theCurrencySymbol; } /** * Sets the character used for decimal sign, '.' for example * * @param theDecimalSeparator character used for decimal sign */ void setDecimalSeparator(XalanDOMChar theDecimalSeparator) { m_decimalSeparator = theDecimalSeparator; } /** * Sets the character used for a digit in a pattern * * @param theDigit character used for a digit in a pattern */ void setDigit(XalanDOMChar theDigit) { m_digit = theDigit; } /** * Sets the character used for thousands separator, "," for example * * @param theGroupingSeparator character used for thousands separator */ void setGroupingSeparator(XalanDOMChar theGroupingSeparator) { m_groupingSeparator = theGroupingSeparator; } /** * Sets the string used to represent infinity * * @param theInfinity string used to represent infinity */ void setInfinity(const XalanDOMString& theInfinity) { m_infinity = theInfinity; } /** * Sets the string used to represent infinity * * @param theInfinity string used to represent infinity */ void setInfinity(const XalanDOMChar* theInfinity) { assert(theInfinity != 0); m_infinity = theInfinity; } /** * Sets the international string denoting the local currency * * @param theInternationalCurrencySymbol international string denoting the * local currency */ void setInternationalCurrencySymbol(const XalanDOMString& theInternationalCurrencySymbol) { m_internationalCurrencySymbol = theInternationalCurrencySymbol; } /** * Sets the international string denoting the local currency * * @param theInternationalCurrencySymbol international string denoting the * local currency */ void setInternationalCurrencySymbol(const XalanDOMChar* theInternationalCurrencySymbol) { assert(theInternationalCurrencySymbol != 0); m_internationalCurrencySymbol = theInternationalCurrencySymbol; } /** * Sets the character used to represent minus sign * * @param theMinusSign character used to represent minus sign */ void setMinusSign(XalanDOMChar theMinusSign) { m_minusSign = theMinusSign; } /** * Sets the monetary decimal separator * * @param theMonetaryDecimalSeparator character used to separate decimal * portion of currency */ void setMonetaryDecimalSeparator(XalanDOMChar theMonetaryDecimalSeparator) { m_monetaryDecimalSeparator = theMonetaryDecimalSeparator; } /** * Sets the string used for a numeric value that cannot be represented * as a number * * @param theNaN string representing "not a number" value */ void setNaN(const XalanDOMString& theNaN) { m_NaN = theNaN; } /** * Sets the string used for a numeric value that cannot be represented * as a number * * @param theNaN string representing "not a number" value */ void setNaN(const XalanDOMChar* theNaN) { assert(theNaN != 0); m_NaN = theNaN; } /** * Sets the character used to separate positive and negative subpatterns in * a pattern * * @param thePatternSeparator character used to separate positive and * negative subpatterns */ void setPatternSeparator(XalanDOMChar thePatternSeparator) { m_patternSeparator = thePatternSeparator; } /** * Sets the character used for percent sign, "%," for example * * @param thePercent character used for percent sign */ void setPercent(XalanDOMChar thePercent) { m_percent = thePercent; } /** * Sets the character used for per thousand sign * * @param thePerMill character used for per thousand sign */ void setPerMill(XalanDOMChar thePerMill) { m_perMill = thePerMill; } /** * Sets the character used for zero * * @param theZeroDigit character used for zero */ void setZeroDigit(XalanDOMChar theZeroDigit) { m_zeroDigit = theZeroDigit; } bool operator==(const XalanDecimalFormatSymbols& theRHS) const; bool operator!=(const XalanDecimalFormatSymbols& theRHS) const { return !operator==(theRHS); } private: // not implemented XalanDecimalFormatSymbols(); XalanDecimalFormatSymbols(const XalanDecimalFormatSymbols&); XalanDOMString m_currencySymbol; XalanDOMChar m_decimalSeparator; XalanDOMChar m_digit; XalanDOMChar m_groupingSeparator; XalanDOMString m_infinity; XalanDOMString m_internationalCurrencySymbol; XalanDOMChar m_minusSign; XalanDOMChar m_monetaryDecimalSeparator; XalanDOMString m_NaN; XalanDOMChar m_patternSeparator; XalanDOMChar m_percent; XalanDOMChar m_perMill; XalanDOMChar m_zeroDigit; }; XALAN_CPP_NAMESPACE_END #endif // XALANDECIMALFORMATSYMBOLS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanStdOutputStream.cpp0000664000175000000640000001417211731656102024237 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XalanStdOutputStream.hpp" #include #if !defined(XALAN_CLASSIC_IOSTREAMS) #include #endif #include "DOMStringHelper.hpp" #include "XalanMessageLoader.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanStdOutputStream::XalanStdOutputStream(StreamType& theOutputStream, MemoryManager& theManager) : XalanOutputStream(theManager), #if !defined(XALAN_NEWLINE_IS_CRLF) m_outputStream(theOutputStream) #else m_outputStream(theOutputStream), m_newlineString(0), m_newlineStringLength(0) #endif { // This will make sure that cerr is not buffered... if (&m_outputStream == &XALAN_STD_QUALIFIER cerr) { setBufferSize(0); #if defined(XALAN_NEWLINE_IS_CRLF) m_newlineString = s_nlString; m_newlineStringLength = s_nlStringLength; #endif } #if defined(XALAN_NEWLINE_IS_CRLF) else if (&m_outputStream == &XALAN_STD_QUALIFIER cout) { m_newlineString = s_nlString; m_newlineStringLength = s_nlStringLength; } else { m_newlineString = s_nlCRString; m_newlineStringLength = s_nlCRStringLength; } #endif } XalanStdOutputStream* XalanStdOutputStream::create( StreamType& theOutputStream, MemoryManager& theManager) { typedef XalanStdOutputStream ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( theOutputStream, theManager); theGuard.release(); return theResult; } XalanStdOutputStream::~XalanStdOutputStream() { } #if defined(XALAN_NEWLINE_IS_CRLF) void XalanStdOutputStream::newline() { assert(m_newlineString != 0 && length(m_newlineString) == m_newlineStringLength); write(m_newlineString, m_newlineStringLength); } const XalanDOMChar* XalanStdOutputStream::getNewlineString() const { assert(m_newlineString != 0); return m_newlineString; } #endif void XalanStdOutputStream::doFlush() { // Don't try to flush if the stream is in a bad state... if (m_outputStream) { m_outputStream.flush(); if (!m_outputStream) { #if defined(XALAN_STRICT_ANSI_HEADERS) using namespace std; #endif XalanDOMString thebuffer(getMemoryManager()); throw XalanStdOutputStreamWriteException(errno, thebuffer); } } } void XalanStdOutputStream::writeData( const char* theBuffer, size_type theBufferLength) { assert(static_cast(static_cast(theBufferLength)) == theBufferLength); m_outputStream.write(theBuffer, StreamSizeType(theBufferLength)); if (!m_outputStream) { #if defined(XALAN_STRICT_ANSI_HEADERS) using namespace std; #endif XalanDOMString thebuffer(getMemoryManager()); throw XalanStdOutputStreamWriteException(errno, thebuffer); } } static XalanDOMString& FormatMessageLocal( const XalanDOMString& theMessage, int theErrorCode, XalanDOMString& theResult) { theResult.assign(theMessage); XalanDOMString theStrErrCode(theResult.getMemoryManager()); XalanDOMString theStrErrMsg(theResult.getMemoryManager()); NumberToDOMString(theErrorCode, theStrErrCode); theResult.append( XalanMessageLoader::getMessage( theStrErrMsg, XalanMessages::MessageErrorCodeWas_1Param, theStrErrCode)); return theResult; } const XalanDOMChar XalanStdOutputStream::XalanStdOutputStreamWriteException::m_type[] = { XalanUnicode::charLetter_X, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_S, XalanUnicode::charLetter_t, XalanUnicode::charLetter_d, XalanUnicode::charLetter_O, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_p, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_S, XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_e, XalanUnicode::charLetter_a, XalanUnicode::charLetter_m, XalanUnicode::charLetter_W, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_E, XalanUnicode::charLetter_x, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_p, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; XalanStdOutputStream::XalanStdOutputStreamWriteException::XalanStdOutputStreamWriteException( int theErrorCode, XalanDOMString& theBuffer) : XalanOutputStreamException( FormatMessageLocal( XalanMessageLoader::getMessage( theBuffer, XalanMessages::ErrorWritingToStdStream), theErrorCode, theBuffer), theBuffer.getMemoryManager(), 0) { } XalanStdOutputStream::XalanStdOutputStreamWriteException::~XalanStdOutputStreamWriteException() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanDOMStringCache.cpp0000664000175000000640000000574211731656102023645 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanDOMStringCache.hpp" #include #include "DOMStringHelper.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanDOMStringCache::XalanDOMStringCache( MemoryManager& theManager, XalanSize_t theMaximumSize) : m_availableList(theManager), m_busyList(theManager), m_maximumSize(theMaximumSize), m_allocator(theManager, XalanDOMStringReusableAllocator::eDefaultBlockSize) { } XalanDOMStringCache::~XalanDOMStringCache() { clear(); } XalanDOMString& XalanDOMStringCache::get() { if (m_availableList.empty() == true) { XalanDOMString& theString = m_allocator.create(); m_busyList.push_back(&theString); return theString; } else { XalanDOMString* const theString = m_availableList.back(); assert(theString != 0); m_availableList.pop_back(); m_busyList.push_back(theString); return *theString; } } bool XalanDOMStringCache::release(XalanDOMString& theString) { XALAN_USING_STD(find) StringListType::iterator i = find(m_busyList.begin(), m_busyList.end(), &theString); if (i == m_busyList.end()) { return false; } else { if (m_availableList.size() > m_maximumSize) { m_allocator.destroy(theString); } else { theString.erase(); m_availableList.push_back(*i); } m_busyList.erase(i); return true; } } void XalanDOMStringCache::clear() { m_busyList.clear(); m_availableList.clear(); m_allocator.reset(); } void XalanDOMStringCache::reset() { const StringListType::size_type theSize = m_availableList.size(); while(m_busyList.empty() == false) { assert(m_busyList.back() != 0); if (theSize > m_maximumSize) { m_allocator.destroy(*m_busyList.back()); } else { m_busyList.back()->clear(); m_availableList.push_back(m_busyList.back()); } m_busyList.pop_back(); } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/StdBinInputStream.cpp0000664000175000000640000000361311731656102023501 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "StdBinInputStream.hpp" #include #if !defined(XALAN_CLASSIC_IOSTREAMS) #include #endif XALAN_CPP_NAMESPACE_BEGIN StdBinInputStream::StdBinInputStream(StreamType& theStream) : ParentType(), m_stream(theStream) { } StdBinInputStream::~StdBinInputStream() { } XalanFilePos StdBinInputStream::curPos() const { return m_stream.tellg(); } XalanSize_t StdBinInputStream::readBytes( XMLByte* const toFill, const XalanSize_t maxToRead) { assert(sizeof(XMLByte) == sizeof(char)); if (!m_stream) { return 0; } else { XALAN_USING_STD(streamsize) assert(static_cast(static_cast(maxToRead)) == maxToRead); #if !defined(XALAN_CLASSIC_IOSTREAMS) m_stream.read( reinterpret_cast(toFill), static_cast(maxToRead)); #else m_stream.read(toFill, maxToRead); #endif return m_stream.gcount(); } } const XalanDOMChar* StdBinInputStream::getContentType() const { return 0; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/Writer.hpp0000664000175000000640000000703711731656102021407 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(WRITER_HEADER_GUARD_1357924680) #define WRITER_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanOutputStream; class XALAN_PLATFORMSUPPORT_EXPORT Writer { public: Writer(); virtual ~Writer(); /** * Close the stream */ virtual void close() = 0; /** * Flush the stream */ virtual void flush() = 0; /** * Get the stream associated with the writer... */ virtual XalanOutputStream* getStream(); /** * Get the stream associated with the writer... */ virtual const XalanOutputStream* getStream() const; // Output functions #if defined(XALAN_INLINE_INITIALIZATION) static const size_t npos = ~0u; #else static const size_t npos; #endif /** * Writes a string * * @param s string to write * @param theOffset starting offset in string to begin writing, default 0 * @param theLength number of characters to write. If the length is npos, then the array is assumed to be null-terminated. */ virtual void write( const char* s, size_t theOffset = 0, size_t theLength = npos) = 0; /** * Writes a string * * @param s string to write * @param theOffset starting offset in string to begin writing, default 0 * @param theLength number of characters to write. If the length is XalanDOMString::npos, then the array is assumed to be null-terminated. */ virtual void write( const XalanDOMChar* s, XalanDOMString::size_type theOffset = 0, XalanDOMString::size_type theLength = XalanDOMString::npos) = 0; /** * Writes a character * * @param c character to write */ virtual void write(XalanDOMChar c) = 0; /** * Writes a string * * @param s string to write * @param theOffset starting offset in string to begin writing, default 0 * @param theLength number of characters to write. If the length is XalanDOMString::npos, then the entire string is printed. */ virtual void write( const XalanDOMString& s, XalanDOMString::size_type theOffset = 0, XalanDOMString::size_type theLength = XalanDOMString::npos) = 0; private: // Not implemented Writer(const Writer&); Writer& operator=(const Writer&); bool operator==(const Writer&); }; XALAN_CPP_NAMESPACE_END #endif // WRITER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanSimplePrefixResolver.hpp0000664000175000000640000000343411731656102025245 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSIMPLEPREFIXRESOLVER_HEADER_GUARD_1357924680) #define XALANSIMPLEPREFIXRESOLVER_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT XalanSimplePrefixResolver : public PrefixResolver { public: XalanSimplePrefixResolver( const XalanDOMString& thePrefix, const XalanDOMString& theNamespaceURI, const XalanDOMString& theURI); virtual ~XalanSimplePrefixResolver(); virtual const XalanDOMString* getNamespaceForPrefix(const XalanDOMString& prefix) const; virtual const XalanDOMString& getURI() const; public: const XalanDOMString& m_prefix; const XalanDOMString& m_namespaceURI; const XalanDOMString& m_uri; }; XALAN_CPP_NAMESPACE_END #endif // XALANSIMPLEPREFIXRESOLVER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/NullPrintWriter.cpp0000664000175000000640000000604711731656102023252 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "NullPrintWriter.hpp" XALAN_CPP_NAMESPACE_BEGIN NullPrintWriter::NullPrintWriter(MemoryManager& theManager) : PrintWriter(false, theManager) { } NullPrintWriter::~NullPrintWriter() { } bool NullPrintWriter::checkError() const { return false; } void NullPrintWriter::close() { } void NullPrintWriter::flush() { } void NullPrintWriter::write( const char* /* s */, size_t /* theOffset */, size_t /* theLength */) { } void NullPrintWriter::write( const XalanDOMChar* /* s */, XalanDOMString::size_type /* theOffset */, XalanDOMString::size_type /* theLength */) { } void NullPrintWriter::write(XalanDOMChar /* c */) { } void NullPrintWriter::write( const XalanDOMString& /* s */, XalanDOMString::size_type /* theOffset */, XalanDOMString::size_type /* theLength */) { } #if !defined(XALAN_BOOL_AS_INT) void NullPrintWriter::print(bool /* b */) { } #endif void NullPrintWriter::print(char /* c */) { } void NullPrintWriter::print( const char* /* s */, size_t /* theLength */) { } void NullPrintWriter::print( const XalanDOMChar* /* s */, XalanDOMString::size_type /* theLength */) { } void NullPrintWriter::print(double /* d */) { } void NullPrintWriter::print(int /* i */) { } void NullPrintWriter::print(long /* l */) { } void NullPrintWriter::print(const XalanDOMString& /* s */) { } void NullPrintWriter::println() { } #if !defined(XALAN_BOOL_AS_INT) void NullPrintWriter::println(bool /* x */) { } #endif void NullPrintWriter::println(char /* x */) { } void NullPrintWriter::println( const char* /* s */, size_t /* theLength */) { } void NullPrintWriter::println( const XalanDOMChar* /* s */, XalanDOMString::size_type /* theLength */) { } void NullPrintWriter::println(double /* x */) { } void NullPrintWriter::println(int /* x */) { } void NullPrintWriter::println(long /* x */) { } void NullPrintWriter::println(const XalanDOMString& /* s */) { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/DOMStringPrintWriter.hpp0000664000175000000640000000732411731656102024152 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(DOMSTRING_PRINTWRITER_HEADER_GUARD_1357924680) #define DOMSTRING_PRINTWRITER_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT DOMStringPrintWriter : public PrintWriter { public: DOMStringPrintWriter(XalanDOMString& theString); virtual ~DOMStringPrintWriter(); XalanDOMString& getString() const { return *m_outputString; } void setString(XalanDOMString& newString) { m_outputString = &newString; } // Output functions inherited from PrintWriter... virtual bool checkError() const; virtual void close(); virtual void flush(); virtual void write( const char* s, size_t theOffset = 0, size_t theLength = npos); virtual void write( const XalanDOMChar* s, XalanDOMString::size_type theOffset = 0, XalanDOMString::size_type theLength = XalanDOMString::npos); virtual void write(XalanDOMChar c); virtual void write( const XalanDOMString& s, XalanDOMString::size_type theOffset = 0, XalanDOMString::size_type theLength = XalanDOMString::npos); #if !defined(XALAN_BOOL_AS_INT) virtual void print(bool b); #endif virtual void print(char c); virtual void print( const char* s, size_t theLength = npos); virtual void print( const XalanDOMChar* s, XalanDOMString::size_type theLength = XalanDOMString::npos); virtual void print(double d); virtual void print(int i); virtual void print(long l); virtual void print(const XalanDOMString& s); virtual void println(); #if !defined(XALAN_BOOL_AS_INT) virtual void println(bool x); #endif virtual void println(char x); virtual void println( const char* s, size_t theLength = npos); virtual void println( const XalanDOMChar* s, XalanDOMString::size_type theLength = XalanDOMString::npos); virtual void println(double x); virtual void println(int x); virtual void println(long x); virtual void println(const XalanDOMString& s); protected: XalanDOMString* m_outputString; private: // Not implemented DOMStringPrintWriter(const DOMStringPrintWriter&); DOMStringPrintWriter& operator=(const DOMStringPrintWriter&); bool operator==(const DOMStringPrintWriter&); }; XALAN_CPP_NAMESPACE_END #endif // DOMSTRING_PRINTWRITER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanNamespace.hpp0000664000175000000640000000760011731656102023007 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANNAMESPACE_HEADER_GUARD_1357924680) #define XALANNAMESPACE_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanNamespace { public: explicit XalanNamespace(MemoryManager& theManager) : m_prefix(theManager), m_uri(theManager) { } /** * Construct a namespace for placement on the * result tree namespace stack. * * @param thePrefix namespace thePrefix * @param theURI URI of namespace */ XalanNamespace( const XalanDOMString& thePrefix, const XalanDOMString& theURI, MemoryManager& theManager) : m_prefix(thePrefix,theManager), m_uri(theURI, theManager) { } XalanNamespace( const XalanNamespace& other, MemoryManager& theManager) : m_prefix(other.m_prefix,theManager), m_uri(other.m_uri, theManager) { } ~XalanNamespace() { } /** * Retrieve the thePrefix for namespace * * @return thePrefix string */ const XalanDOMString& getPrefix() const { return m_prefix; } /** * Set the thePrefix for namespace * * @param thePrefix The new thePrefix value */ void setPrefix(const XalanDOMString& thePrefix) { m_prefix = thePrefix; } /** * Retrieve the URI for namespace * * @return URI string */ const XalanDOMString& getURI() const { return m_uri; } /** * Set the URI for namespace * * @param theURI The new theURI value */ void setURI(const XalanDOMString& theURI) { m_uri = theURI; } /** * Set the URI for namespace * * @param theURI The new theURI value */ void setURI(const XalanDOMChar* theURI) { assert(theURI != 0); m_uri = theURI; } /** * Set the URI for namespace * * @param theURI The new theURI value * @param len The length of the theURI */ void setURI( const XalanDOMChar* theURI, XalanDOMString::size_type len) { assert(theURI != 0); m_uri.assign(theURI, len); } bool empty() const { return m_prefix.empty() && m_uri.empty(); } void clear() { m_prefix.clear(); m_uri.clear(); } /** * Equality operator * * @param theRHS namespace to compare */ bool operator==(const XalanNamespace& theRHS) const { return equals(m_prefix, theRHS.m_prefix) && equals(m_uri, theRHS.m_uri); } private: //Not implemented XalanNamespace(); XalanNamespace(const XalanNamespace&); XalanDOMString m_prefix; XalanDOMString m_uri; }; XALAN_USES_MEMORY_MANAGER(XalanNamespace) XALAN_CPP_NAMESPACE_END #endif // ALANNAMESPACE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanNumberFormat.cpp0000664000175000000640000001167611731656102023517 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanNumberFormat.hpp" #include #include "DOMStringHelper.hpp" #include "XalanUnicode.hpp" XALAN_CPP_NAMESPACE_BEGIN const XalanDOMChar XalanNumberFormat::s_defaultGroupingSeparator[] = { XalanUnicode::charComma, 0 }; XalanNumberFormat::XalanNumberFormat(MemoryManager& theManager) : m_isGroupingUsed(false), m_groupingSeparator(s_defaultGroupingSeparator, theManager), m_groupingSize(3) // Default to US values { } XalanNumberFormat::~XalanNumberFormat() { } XalanDOMString& XalanNumberFormat::format( double theValue, XalanDOMString& theResult) { NumberToDOMString(theValue, theResult); applyGrouping(theResult, theResult); return theResult; } XalanDOMString& XalanNumberFormat::format( int theValue, XalanDOMString& theResult) { NumberToDOMString(theValue, theResult); applyGrouping(theResult, theResult); return theResult; } XalanDOMString& XalanNumberFormat::format( unsigned int theValue, XalanDOMString& theResult) { NumberToDOMString(theValue, theResult); applyGrouping(theResult, theResult); return theResult; } XalanDOMString& XalanNumberFormat::format( long theValue, XalanDOMString& theResult) { NumberToDOMString(theValue, theResult); applyGrouping(theResult, theResult); return theResult; } XalanDOMString& XalanNumberFormat::format( unsigned long theValue, XalanDOMString& theResult) { NumberToDOMString(theValue, theResult); applyGrouping(theResult, theResult); return theResult; } XalanDOMString& XalanNumberFormat::format( XALAN_INT64 theValue, XalanDOMString& theResult) { NumberToDOMString(theValue, theResult); applyGrouping(theResult, theResult); return theResult; } XalanDOMString& XalanNumberFormat::format( XALAN_UINT64 theValue, XalanDOMString& theResult) { NumberToDOMString(theValue, theResult); applyGrouping(theResult, theResult); return theResult; } /* * Convert a string value using the currently active values for grouping size * and separator; returns the converted string */ void XalanNumberFormat::applyGrouping( const XalanDOMString& value, XalanDOMString& result) { if (m_isGroupingUsed == false || m_groupingSize == 0) { result = value; } else { const XalanDOMString::size_type len = value.length(); if (len == 0) { result = value; } else { // Add two, so we leave one byte at the beginning as empty space const XalanDOMString::size_type bufsize = len + len / m_groupingSize + 2; XalanVector theGuard(result.getMemoryManager()); theGuard.resize(bufsize); XalanDOMChar* const buffer = &*theGuard.begin(); XalanDOMChar* p = &theGuard.back(); // Leave a null-terminator. *p-- = 0; for (XalanDOMString::size_type i = 0, ix = len - 1; i < len && p > buffer; i++, ix--) { const XalanDOMChar c = value[ix]; if (i && !(i% m_groupingSize)) { // Could be a multiple character separator?? for (long j = long(m_groupingSeparator.length() - 1); j >= 0 && p > buffer; j--) *p-- = m_groupingSeparator[j]; } *p-- = c; } result = ++p; } } } bool XalanNumberFormat::isGroupingUsed() const { return m_isGroupingUsed; } void XalanNumberFormat::setGroupingUsed(bool bUsed) { m_isGroupingUsed = bUsed; } void XalanNumberFormat::setGroupingSize(unsigned long size) { assert(size > 0); m_groupingSize = size; } void XalanNumberFormat::setGroupingSeparator(const XalanDOMString& s) { m_groupingSeparator = s; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/AttributeListImpl.hpp0000664000175000000640000001043011731656102023543 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(ATTRIBUTELISTIMPL_HEADER_GUARD_1357924680) #define ATTRIBUTELISTIMPL_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class AttributeVectorEntry; typedef XERCES_CPP_NAMESPACE_QUALIFIER AttributeList AttributeListType; class XALAN_PLATFORMSUPPORT_EXPORT AttributeListImpl : public AttributeListType { public: explicit AttributeListImpl(MemoryManager& theManager); virtual ~AttributeListImpl(); AttributeListImpl(const AttributeListImpl& theSource, MemoryManager& theManager); AttributeListImpl(const AttributeListType& theSource, MemoryManager& theManager); AttributeListImpl& operator=(const AttributeListImpl& theRHS); AttributeListImpl& operator=(const AttributeListType& theRHS); MemoryManager& getMemoryManager() { return m_AttributeVector.getMemoryManager(); } // These are inherited from AttributeList virtual XalanSize_t getLength() const; virtual const XMLCh* getName(const XalanSize_t index) const; virtual const XMLCh* getType(const XalanSize_t index) const; virtual const XMLCh* getValue(const XalanSize_t index) const; virtual const XMLCh* getType(const XMLCh* const name) const; virtual const XMLCh* getValue(const XMLCh* const name) const; virtual const XMLCh* getValue(const char* const name) const; // The mutators are new to this class. /** * Remove all attributes from the list */ virtual void clear(); /** * Adds an attribute to the attribute list * * @param name attribute name * @param type attribute type, "CDATA," for example * @param value attribute value */ virtual bool addAttribute( const XMLCh* name, const XMLCh* type, const XMLCh* value); /** * Removes an attribute from the attribute list * * @param name attribute name */ virtual bool removeAttribute(const XMLCh* name); /** * Swap the contents of two instances. This must _never_ * throw an exception. * * @param thOther The instance with which to swap. */ void swap(AttributeListImpl& theOther) { m_AttributeVector.swap(theOther.m_AttributeVector); } /** * Reserve room for the given number of * attributes. * * @param theCount The number to reserve */ void reserve(XalanSize_t theCount) { m_AttributeVector.reserve(theCount); } // This vector will hold the entries. typedef XalanVector AttributeVectorType; private: // This is not implemented. bool operator==(const AttributeListImpl&) const; // Default vector allocation size. enum { eDefaultVectorSize = 5 }; AttributeVectorEntry* getNewEntry( const XMLCh* name, const XMLCh* type, const XMLCh* value); // Helper function to delete entries... static void deleteEntries(AttributeVectorType& theVector); AttributeVectorType m_AttributeVector; AttributeVectorType m_cacheVector; }; XALAN_CPP_NAMESPACE_END #endif // ATTRIBUTELISTIMPL_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanFStreamOutputStream.hpp0000664000175000000640000000641511731656102025054 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANFSTREAMOUTPUTSTREAM_HEADER_GUARD_1357924680) #define XALANFSTREAMOUTPUTSTREAM_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN #if defined(XALAN_STRICT_ANSI_HEADERS) using std::FILE; #endif class XALAN_PLATFORMSUPPORT_EXPORT XalanFStreamOutputStream : public XalanOutputStream { public : enum { eDefaultBufferSize = 8192u }; /** * Construct a XalanFStreamOutputStream object. * * @param theHandle handle of file. Must not be null. * @param theBufferSize The size of the transcoding buffer */ XalanFStreamOutputStream( FILE* theFileHandle, MemoryManager& theManager, size_type theBufferSize = eDefaultBufferSize); static XalanFStreamOutputStream* create( FILE* theFileHandle, MemoryManager& theManager, size_type theBufferSize = eDefaultBufferSize); virtual ~XalanFStreamOutputStream(); class XALAN_PLATFORMSUPPORT_EXPORT XalanFStreamOutputStreamWriteException : public XalanOutputStream::XalanOutputStreamException { public: /** * Construct an XalanFStreamOutputStreamWriteException exception object for an exception * that occurred while writing to a file stream. * * @param theErrorCode number of error encountered */ XalanFStreamOutputStreamWriteException( int theErrorCode, XalanDOMString& theBuffer); virtual ~XalanFStreamOutputStreamWriteException(); virtual const XalanDOMChar* getType() const { return m_type; } private: static const XalanDOMChar m_type[]; }; protected: virtual void writeData( const char* theBuffer, size_type theBufferLength); virtual void doFlush(); private: // These are not implemented... XalanFStreamOutputStream(const XalanFStreamOutputStream&); XalanFStreamOutputStream& operator=(const XalanFStreamOutputStream&); bool operator==(const XalanFStreamOutputStream&) const; // Data members... FILE* const m_handle; }; XALAN_CPP_NAMESPACE_END #endif // XALANFSTREAMOUTPUTSTREAM_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XSLException.hpp0000664000175000000640000001325111731656102022453 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XSLEXCEPTION_HEADER_GUARD_1357924680) #define XSLEXCEPTION_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator LocatorType; XALAN_USING_XERCES(Locator) class XALAN_PLATFORMSUPPORT_EXPORT XSLException { public: /** * Constructor * * @param theMessage The message to display when exception thrown * @param theManager The MemoryManager instance to use. * @param theLocator The locator instance for error reporting, if any. */ XSLException( const XalanDOMString& theMessage, MemoryManager& theManager, const Locator* theLocator); /** * Constructor. Use this constructor when the message has * already been formatted. * * @param theMessage The message to display when exception thrown * @param theManager The MemoryManager instance to use. */ XSLException( const XalanDOMString& theMessage, MemoryManager& theManager); XSLException(const XSLException& other); virtual ~XSLException(); /** * Retrieve type of exception * * @return type of exception */ virtual const XalanDOMChar* getType() const = 0; /** * Retrieve message for exception * * @return exception message */ const XalanDOMString& getMessage() const { return m_message; } /** * Get the URI for the associated document, if any * * @return The URI. */ const XalanDOMString& getURI() const { return m_uri; } /** * Retrieve the line number. * * @return the line number */ XalanFileLoc getLineNumber() const { return m_lineNumber; } /** * Retrieve the column number. * * @return the column number */ XalanFileLoc getColumnNumber() const { return m_columnNumber; } const MemoryManager& getMemoryManager() const { return m_memoryManager; } MemoryManager& getMemoryManager() { return m_memoryManager; } XalanDOMString& defaultFormat(XalanDOMString& theBuffer) const; static XalanDOMString& defaultFormat( const XalanDOMString& theMessage, const XalanDOMString& theURI, XalanFileLoc theLineNumber, XalanFileLoc theColumnNumber, const XalanDOMChar* theType, XalanDOMString& theBuffer) { return defaultFormat( theMessage.c_str(), theMessage.size(), theURI.c_str(), theURI.size(), theLineNumber, theColumnNumber, theType, XalanDOMString::length(theType), theBuffer); } static XalanDOMString& defaultFormat( const XalanDOMChar* theMessage, const XalanDOMChar* theURI, XalanFileLoc theLineNumber, XalanFileLoc theColumnNumber, const XalanDOMChar* theType, XalanDOMString& theBuffer) { assert(theMessage != 0); return defaultFormat( theMessage, XalanDOMString::length(theMessage), theURI, theURI == 0 ? 0 : XalanDOMString::length(theURI), theLineNumber, theColumnNumber, theType, theType == 0 ? 0 : XalanDOMString::length(theType), theBuffer); } static XalanDOMString& defaultFormat( const XalanDOMChar* theMessage, const XalanDOMString::size_type theMessageLength, const XalanDOMChar* theURI, const XalanDOMString::size_type theURILength, XalanFileLoc theLineNumber, XalanFileLoc theColumnNumber, const XalanDOMChar* theType, const XalanDOMString::size_type theTypeLength, XalanDOMString& theBuffer); protected: MemoryManager& m_memoryManager; private: const XalanDOMString m_message; const XalanDOMString m_uri; const XalanFileLoc m_lineNumber; const XalanFileLoc m_columnNumber; // When true, the message has already formatted. const bool m_formatted; }; XALAN_CPP_NAMESPACE_END #endif // XSLEXCEPTION_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanLocator.hpp0000664000175000000640000001103512030774525022516 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANLOCATOR_HEADER_GUARD_1357924680) #define XALANLOCATOR_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN XALAN_USING_XERCES(Locator) /** * This class defines a base class for Locator derivations in Xalan. It was defined * because Xerces made changes in their Locator class which caused turbulence. */ class XALAN_PLATFORMSUPPORT_EXPORT XalanLocator : public Locator { public: typedef Locator ParentType; XalanLocator() {} virtual ~XalanLocator() {} virtual const XMLCh* getPublicId() const = 0; virtual const XMLCh* getSystemId() const = 0; virtual XalanFileLoc getLineNumber() const = 0; virtual XalanFileLoc getColumnNumber() const = 0; /** * Get the public identifier from a locator object. * @param theLocator A locator object inherited from Xerces. * @param theAlternateId A default name for a public identifier. * @return a null terminated XalanDOMChar string. */ static const XalanDOMChar* getPublicId( const Locator* theLocator, const XalanDOMChar* theAlternateId = getEmptyPtr()) { return theLocator == 0 ? theAlternateId : (theLocator->getPublicId() ? theLocator->getPublicId() : theAlternateId); } /** * Get the system identifier from a locator object. * @param theLocator A locator object inherited from Xerces. * @param theAlternateId A default name for a public identifier. * @return a null terminated XalanDOMChar string. */ static const XalanDOMChar* getSystemId( const Locator* theLocator, const XalanDOMChar* theAlternateId = getEmptyPtr()) { return theLocator == 0 ? theAlternateId : (theLocator->getSystemId() ? theLocator->getPublicId() : theAlternateId); } /** * Get the line number from a locator object. */ static XalanFileLoc getLineNumber(const ParentType* theLocator) { return theLocator == 0 ? getUnknownValue() : theLocator->getLineNumber(); } /** * Get the column number from a locator object. */ static XalanFileLoc getColumnNumber(const ParentType* theLocator) { return theLocator == 0 ? getUnknownValue() : theLocator->getColumnNumber(); } static XalanFileLoc getUnknownValue() { // The parser reports the maximum value of the XalanFileLoc // type for an unknown value. return ~static_cast(0); } static XalanFileLoc getUnknownDisplayValue() { // The parser reports the maximum value of the XalanFileLoc // type for an unknown value, but that is really non-sensical // for display purposes, so we use 0 instead. return static_cast(0); } static bool isUnknownValue(XalanFileLoc theLocation) { return theLocation == getUnknownValue(); } private: // Not defined... XalanLocator(const XalanLocator&); XalanLocator& operator=(const XalanLocator&); /** * Return static pointer to null XalanDOMChar. * This is crafted to overcome issues with compilers/linkers that * have problems initializing static integer members within a class. * * Replaces: static const int s_zero = 0; * Reference: &s_zero; */ static const XalanDOMChar * getEmptyPtr() { static const XalanDOMChar theZero = 0; static const XalanDOMChar * theEmpty = &theZero; return theEmpty; } }; XALAN_CPP_NAMESPACE_END #endif // PREFIXRESOLVER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanMemoryManagerDefault.cpp0000664000175000000640000000315211731656102025154 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanMemoryManagerDefault.hpp" #include "xercesc/util/OutOfMemoryException.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanMemoryManagerDefault::XalanMemoryManagerDefault() { } XalanMemoryManagerDefault::~XalanMemoryManagerDefault() { } void* XalanMemoryManagerDefault::allocate(size_type size) { XALAN_USING_XERCES(OutOfMemoryException) void* thePointer; try { thePointer = ::operator new(size); } catch(...) { throw OutOfMemoryException(); } if (thePointer != 0) { return thePointer; } throw OutOfMemoryException(); } void XalanMemoryManagerDefault::deallocate(void* pointer) { ::operator delete(pointer); } MemoryManager* XalanMemoryManagerDefault::getExceptionMemoryManager() { return this; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/PrintWriter.hpp0000664000175000000640000001021611731656102022415 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(PRINTWRITER_HEADER_GUARD_1357924680) #define PRINTWRITER_HEADER_GUARD_1357924680 // Base include file. Must be first. #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT PrintWriter : public Writer { public: /** * Constructor * * @param fAutoFlush if true, the output will not be buffered */ PrintWriter( bool fAutoFlush = false, MemoryManager& theManager XALAN_DEFAULT_MEMMGR); MemoryManager& getMemoryManager() { return m_memoryManager; } virtual ~PrintWriter(); /** * Flush the stream, then check the error status. * * @return true if no errors */ virtual bool checkError() const = 0; // Functions inherited from Writer... virtual void close() = 0; virtual void flush() = 0; // Output functions inherited from Writer... virtual void write( const char* s, size_t theOffset = 0, size_t theLength = npos) = 0; virtual void write( const XalanDOMChar* s, XalanDOMString::size_type theOffset = 0, XalanDOMString::size_type theLength = XalanDOMString::npos) = 0; virtual void write(XalanDOMChar c) = 0; virtual void write( const XalanDOMString& s, XalanDOMString::size_type theOffset = 0, XalanDOMString::size_type theLength = XalanDOMString::npos) = 0; // Output functions which are new... #if !defined(XALAN_BOOL_AS_INT) virtual void print(bool b) = 0; #endif virtual void print(char c) = 0; virtual void print( const char* s, size_t theLength = npos) = 0; virtual void print( const XalanDOMChar* s, XalanDOMString::size_type theLength = XalanDOMString::npos) = 0; virtual void print(double d) = 0; virtual void print(int i) = 0; virtual void print(long l) = 0; virtual void print(const XalanDOMString& s) = 0; virtual void println() = 0; #if !defined(XALAN_BOOL_AS_INT) virtual void println(bool b) = 0; #endif virtual void println(char x) = 0; virtual void println( const char* s, size_t theLength = npos) = 0; virtual void println( const XalanDOMChar* s, XalanDOMString::size_type theLength = XalanDOMString::npos) = 0; virtual void println(double x) = 0; virtual void println(int x) = 0; virtual void println(long x) = 0; virtual void println(const XalanDOMString& s) = 0; protected: const bool m_fAutoFlush; MemoryManager& m_memoryManager; // Some static strings to help derived classes... static const XalanDOMChar s_trueString[]; static const XalanDOMChar s_falseString[]; static const XalanDOMChar s_newlineString[]; private: // Not implemented PrintWriter(const PrintWriter&); PrintWriter& operator=(const PrintWriter&); bool operator==(const PrintWriter&); }; XALAN_CPP_NAMESPACE_END #endif // PRINTWRITER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanDOMStringAllocator.hpp0000664000175000000640000001320311731656102024556 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANDOMSTRINGALLOCATOR_INCLUDE_GUARD_12455133) #define XALANDOMSTRINGALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT XalanDOMStringAllocator { public: typedef XalanDOMString data_type; typedef data_type::size_type data_type_size_type; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; enum { eDefaultBlockSize = 32 }; /** * Construct an instance that will allocate in blocks of the specified size. * * @param theBlockSize The block size. */ XalanDOMStringAllocator(MemoryManager& theManager, size_type theBlockCount); ~XalanDOMStringAllocator(); /** * Create a XalanDOMString object. * * @return pointer to the new instance */ data_type* create(); /** * Create a XalanDOMString object. * * @param theString A pointer to a character string * @param theCount The number of characters in the string, or npos if the string is null-terminated. * * @return pointer to the new instance */ data_type* create( const char* theString, #if defined(_MSC_VER) && (_MSC_VER <= 1300) // $$$ ToDo: Some strange bug in MSVC++ complains when using data_type::npos here. data_type_size_type theCount = data_type_size_type(-1)); #else data_type_size_type theCount = data_type_size_type(data_type::npos)); #endif /** * Copy constructor * * @param theSource The source string for the copy * @param theStartPosition The position to start in the source string. * @param theCount The number of characters to copy from the source string. * * @return pointer to the new instance */ data_type* create( const data_type& theSource, data_type_size_type theStartPosition = 0, data_type_size_type theCount = data_type_size_type(data_type::npos)); /** * Create a XalanDOMString object. * * @param theString A pointer to a wide character string * @param theCount The number of characters in the string, or npos if the string is null-terminated. * * @return pointer to the new instance */ data_type* create( const XalanDOMChar* theString, data_type_size_type theCount = data_type_size_type(data_type::npos)); /** * Create a XalanDOMString object. * * @param theCount the size of the string * @param theChar the character used to initialize the string * * @return pointer to the new instance */ data_type* create( data_type_size_type theCount, XalanDOMChar theChar); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const data_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all instance objects from allocator. */ void reset() { m_allocator.reset(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } /** * Get a reference to the MemoryManager instance * for this instance. * * @return A reference to the MemoryManager instance. */ MemoryManager& getMemoryManager() { return m_allocator.getMemoryManager(); } /** * Get a reference to the MemoryManager instance * for this instance. * * @return A reference to the MemoryManager instance. */ const MemoryManager& getMemoryManager() const { return m_allocator.getMemoryManager(); } private: // Not implemented... XalanDOMStringAllocator(const XalanDOMStringAllocator&); XalanDOMStringAllocator& operator=(const XalanDOMStringAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANDOMSTRINGALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanFileOutputStream.cpp0000664000175000000640000002331011731656102024356 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XalanFileOutputStream.hpp" #if !defined(XALAN_WINDOWS) #include #endif #include "DOMStringHelper.hpp" #include "XalanMessageLoader.hpp" XALAN_CPP_NAMESPACE_BEGIN const XalanDOMChar XalanFileOutputStream::XalanFileOutputStreamOpenException::m_type[] = { XalanUnicode::charLetter_X, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_F, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, XalanUnicode::charLetter_e, XalanUnicode::charLetter_O, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_p, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_S, XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_e, XalanUnicode::charLetter_a, XalanUnicode::charLetter_m, XalanUnicode::charLetter_O, XalanUnicode::charLetter_p, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_E, XalanUnicode::charLetter_x, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_p, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; const XalanDOMChar XalanFileOutputStream::XalanFileOutputStreamWriteException::m_type[] = { XalanUnicode::charLetter_X, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_F, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, XalanUnicode::charLetter_e, XalanUnicode::charLetter_O, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_p, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_S, XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_e, XalanUnicode::charLetter_a, XalanUnicode::charLetter_m, XalanUnicode::charLetter_W, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_E, XalanUnicode::charLetter_x, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_p, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; static XalanFileOutputStream::HandleType openFile( const XalanDOMString& theFileName, MemoryManager& theManager) { typedef XalanFileOutputStream::HandleType HandleType; #if defined(XALAN_WINDOWS) HandleType theFileHandle = CreateFileW( theFileName.c_str(), GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); if (theFileHandle != INVALID_HANDLE_VALUE && theFileHandle != 0) { return theFileHandle; } else { CharVectorType theResult(theManager); TranscodeToLocalCodePage(theFileName, theResult, true); if (theResult.empty() == true) { return INVALID_HANDLE_VALUE; } else { const char* const tmpName = &theResult[0]; if (tmpName == 0) { return INVALID_HANDLE_VALUE; } else { return CreateFile( tmpName, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); } } } #else #if defined(XALAN_STRICT_ANSI_HEADERS) using std::fopen; #endif CharVectorType theResult(theManager); TranscodeToLocalCodePage(theFileName, theResult, true); if (theResult.empty() == true) { return 0; } else { const char* const tmpName = &theResult[0]; if (tmpName == 0) { return 0; } else { return fopen(tmpName, "wb"); } } #endif } XalanFileOutputStream::XalanFileOutputStream( const XalanDOMString& theFileName, MemoryManager& theManager, size_type theBufferSize) : XalanOutputStream(theManager, theBufferSize), m_fileName(theFileName, theManager), m_handle(openFile(theFileName, theManager)) { #if defined(XALAN_WINDOWS) if (m_handle == INVALID_HANDLE_VALUE) { XalanDOMString theBuffer(theManager); throw XalanFileOutputStreamOpenException( theFileName, GetLastError(), theBuffer); } #else if (m_handle == 0) { XalanDOMString theBuffer(theManager); throw XalanFileOutputStreamOpenException( theFileName, errno, theBuffer); } #endif } XalanFileOutputStream* XalanFileOutputStream::create( const XalanDOMString& theFileName, MemoryManager& theManager, size_type theBufferSize) { typedef XalanFileOutputStream ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( theFileName, theManager, theBufferSize); theGuard.release(); return theResult; } XalanFileOutputStream::~XalanFileOutputStream() { #if defined(XALAN_WINDOWS) if (m_handle != INVALID_HANDLE_VALUE) { CloseHandle(m_handle); } #else #if defined(XALAN_STRICT_ANSI_HEADERS) using std::fclose; #endif if (m_handle != 0) { fclose(m_handle); } #endif } void XalanFileOutputStream::doFlush() { #if !defined(XALAN_WINDOWS) #if defined(XALAN_STRICT_ANSI_HEADERS) using std::fflush; #endif if (fflush(m_handle) != 0) { XalanDOMString theBuffer(getMemoryManager()); throw XalanFileOutputStreamWriteException( m_fileName, errno, theBuffer); } #endif } void XalanFileOutputStream::writeData( const char* theBuffer, size_type theBufferLength) { #if defined(XALAN_WINDOWS) DWORD theBytesWritten; assert(size_t(DWORD(theBufferLength)) == theBufferLength); if (WriteFile(m_handle, theBuffer, DWORD(theBufferLength), &theBytesWritten, 0) == false || theBytesWritten != theBufferLength) { XalanDOMString theExceptionBuffer(getMemoryManager()); throw XalanFileOutputStreamWriteException( m_fileName, GetLastError(), theExceptionBuffer); } #else #if defined(XALAN_STRICT_ANSI_HEADERS) using std::fwrite; #endif const size_t theBytesWritten = fwrite(theBuffer, 1, theBufferLength, m_handle); if (theBytesWritten != theBufferLength) { XalanDOMString theExceptionBuffer(getMemoryManager()); throw XalanFileOutputStreamWriteException( m_fileName, errno, theExceptionBuffer); } #endif } XalanFileOutputStream::XalanFileOutputStreamOpenException::XalanFileOutputStreamOpenException( const XalanDOMString& theFileName, int theErrorCode, XalanDOMString& theBuffer, const Locator* theLocator) : XalanOutputStreamException( formatMessage( XalanMessageLoader::getMessage( theBuffer, XalanMessages::ErrorOpeningFile_1Param, theFileName), theErrorCode, theBuffer), theBuffer.getMemoryManager(), theLocator) { } XalanFileOutputStream::XalanFileOutputStreamOpenException::~XalanFileOutputStreamOpenException() { } XalanFileOutputStream::XalanFileOutputStreamWriteException::XalanFileOutputStreamWriteException( const XalanDOMString& theFileName, int theErrorCode, XalanDOMString& theBuffer, const Locator* theLocator) : XalanOutputStreamException( formatMessage( XalanMessageLoader::getMessage( theBuffer, XalanMessages::ErrorWritingFile_1Param, theFileName), theErrorCode, theBuffer), theBuffer.getMemoryManager(), theLocator) { } XalanFileOutputStream::XalanFileOutputStreamWriteException::~XalanFileOutputStreamWriteException() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanOutputStream.cpp0000664000175000000640000004725311731656102023572 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XalanOutputStream.hpp" #include #include "xalanc/Include/STLHelper.hpp" #include "XalanMessageLoader.hpp" #include "XalanTranscodingServices.hpp" XALAN_CPP_NAMESPACE_BEGIN const XalanDOMChar XalanOutputStream::s_nlString[] = { XalanUnicode::charLF, 0 }; const XalanDOMChar XalanOutputStream::s_nlCRString[] = { XalanUnicode::charCR, XalanUnicode::charLF, 0 }; const XalanDOMString::size_type XalanOutputStream::s_nlStringLength = sizeof(s_nlString) / sizeof(s_nlString[0]) - 1; const XalanDOMString::size_type XalanOutputStream::s_nlCRStringLength = sizeof(s_nlCRString) / sizeof(s_nlCRString[0]) - 1; XalanOutputStream::XalanOutputStream( MemoryManager& theManager, size_type theBufferSize, size_type theTranscoderBlockSize, bool fThrowTranscodeException) : m_transcoderBlockSize(theTranscoderBlockSize), m_transcoder(0), m_bufferSize(theBufferSize), m_buffer(theManager), m_encoding(theManager), m_writeAsUTF16(false), m_throwTranscodeException(fThrowTranscodeException), m_transcodingBuffer(theManager) { if (m_bufferSize == 0) { m_bufferSize = 1; } m_buffer.reserve(theBufferSize + 1); } XalanOutputStream::~XalanOutputStream() { XalanTranscodingServices::destroyTranscoder(m_transcoder); } void XalanOutputStream::write( const XalanDOMChar* theBuffer, size_type theBufferLength) { assert(theBuffer != 0); if (theBufferLength + m_buffer.size() > m_bufferSize) { flushBuffer(); } if (theBufferLength > m_bufferSize) { assert(m_buffer.empty() == true); doWrite(theBuffer, theBufferLength); } else { m_buffer.insert(m_buffer.end(), theBuffer, theBuffer + theBufferLength); } } void XalanOutputStream::transcode( const XalanDOMChar* theBuffer, size_type theBufferLength, TranscodeVectorType& theDestination) { if (m_transcoder == 0) { if (TranscodeToLocalCodePage( theBuffer, theBufferLength, theDestination) == false) { if (m_throwTranscodeException == true) { XalanDOMString theExceptionBuffer(theDestination.getMemoryManager()); throw TranscodingException( theExceptionBuffer, 0); } } } else { bool fDone = false; // Keep track of the total bytes we've added to the // destination vector, and the total bytes we've // eaten from theBuffer. size_type theTotalBytesFilled = 0; size_type theTotalBytesEaten = 0; // Keep track of the current position in the input buffer, // and amount remaining in the buffer, since we may not be // able to transcode it all at once. const XalanDOMChar* theBufferPosition = theBuffer; size_type theRemainingBufferLength = theBufferLength; // Keep track of the destination size, and the target size, which is // the size of the destination that has not yet been filled with // transcoded characters. Double the buffer size, in case we're // transcoding to a 16-bit encoding. // $$$ ToDo: We need to know the size of an encoding, so we can // do the right thing with the destination size. size_type theDestinationSize = theBufferLength * 2; size_type theTargetSize = theDestinationSize; do { // Resize the buffer... theDestination.resize(theDestinationSize + 1); size_type theSourceBytesEaten = 0; size_type theTargetBytesEaten = 0; XalanTranscodingServices::eCode theResult = m_transcoder->transcode( theBufferPosition, theRemainingBufferLength, reinterpret_cast(&theDestination[0]) + theTotalBytesFilled, theTargetSize, theSourceBytesEaten, theTargetBytesEaten); if(theResult != XalanTranscodingServices::OK) { if (m_throwTranscodeException == true) { XalanDOMString theExceptionBuffer(theDestination.getMemoryManager()); throw TranscodingException( theExceptionBuffer, 0); } } theTotalBytesFilled += theTargetBytesEaten; theTotalBytesEaten += theSourceBytesEaten; if (theTotalBytesEaten == theBufferLength) { fDone = true; } else { assert(theTotalBytesEaten < theBufferLength); // Update everything... theBufferPosition += theSourceBytesEaten; theRemainingBufferLength -= theSourceBytesEaten; // The new target size will always be the // current destination size, since we // grow by a factor of 2. This will // need to change if the factor is // every changed. theTargetSize = theDestinationSize; // Grow the destination by a factor of // two 2. See the previous comment if // you want to change this. theDestinationSize = theDestinationSize * 2; } } while(fDone == false); // Resize things, if there are any extra bytes... if (theDestination.size() != theTotalBytesFilled) { theDestination.resize(theTotalBytesFilled); } } } void XalanOutputStream::setOutputEncoding(const XalanDOMString& theEncoding) { // Flush, just in case. This should probably be an error... flushBuffer(); XalanTranscodingServices::destroyTranscoder(m_transcoder); m_transcoder = 0; XalanTranscodingServices::eCode theCode = XalanTranscodingServices::OK; if (XalanTranscodingServices::encodingIsUTF16(theEncoding) == true) { m_writeAsUTF16 = true; } else { m_transcoder = XalanTranscodingServices::makeNewTranscoder( getMemoryManager(), theEncoding, theCode, m_transcoderBlockSize); if (theCode == XalanTranscodingServices::UnsupportedEncoding || theCode == XalanTranscodingServices::SupportFilesNotFound) { XalanDOMString theBuffer(getMemoryManager()); throw UnsupportedEncodingException(theEncoding, theBuffer, 0); } else if (theCode != XalanTranscodingServices::OK) { XalanDOMString theBuffer(getMemoryManager()); throw TranscoderInternalFailureException(theEncoding, theBuffer, 0); } assert(m_transcoder != 0); } m_encoding = theEncoding; const XalanTranscodingServices::XalanXMLByte* theProlog = XalanTranscodingServices::getStreamProlog(theEncoding); assert(theProlog != 0); const size_type theLength = XalanTranscodingServices::length(theProlog); if (theLength > 0) { write(reinterpret_cast(theProlog), theLength); } } bool XalanOutputStream::canTranscodeTo(XalanUnicodeChar theChar) const { if (m_transcoder != 0) { return m_transcoder->canTranscodeTo(theChar); } else { // We'll always return true here, since an exception will be // thrown when we try to transcode. We'ed like to enable the // commented out line, if we can ever figure out how to see // if a character can be encoded. return true; } } void XalanOutputStream::flushBuffer() { if (m_buffer.empty() == false) { CollectionClearGuard theGuard(m_buffer); assert(size_type(m_buffer.size()) == m_buffer.size()); doWrite(&*m_buffer.begin(), size_type(m_buffer.size())); } assert(m_buffer.empty() == true); } void XalanOutputStream::doWrite( const XalanDOMChar* theBuffer, size_type theBufferLength) { assert(theBuffer != 0); if (m_writeAsUTF16 == true) { // This is a hack to write UTF-16 through as if it // were just chars. Saves lots of time "transcoding." writeData(reinterpret_cast(theBuffer), theBufferLength * 2); } else { transcode(theBuffer, theBufferLength, m_transcodingBuffer); assert(&m_transcodingBuffer[0] != 0); assert(size_type(m_transcodingBuffer.size()) == m_transcodingBuffer.size()); writeData( &m_transcodingBuffer[0], size_type(m_transcodingBuffer.size())); } } void XalanOutputStream::setBufferSize(size_type theBufferSize) { flushBuffer(); if (theBufferSize == 0) { m_bufferSize = 1; } else { m_bufferSize = theBufferSize; } if (m_buffer.size() < m_bufferSize) { // Enlarge the buffer... m_buffer.reserve(theBufferSize + 1); } else if (m_buffer.size() > m_bufferSize) { // Shrink the buffer. // Create a temp buffer and make it // the correct size. BufferType temp(getMemoryManager()); temp.reserve(theBufferSize + 1); // Swap temp with m_buffer so that // m_buffer is now the correct size. temp.swap(m_buffer); } } void XalanOutputStream::newline() { // We've had requests to make this a run-time switch, but for now, // it's compile time only... #if defined(XALAN_NEWLINE_IS_CRLF) write(s_nlCRString, s_nlCRStringLength); #else write(s_nlString, s_nlStringLength); #endif } const XalanDOMChar* XalanOutputStream::getNewlineString() const { // We've had requests to make this a run-time switch, but for now, // it's compile time only... #if defined(XALAN_NEWLINE_IS_CRLF) return s_nlCRString; #else return s_nlString; #endif } XalanOutputStream::XalanOutputStreamException::XalanOutputStreamException( const XalanDOMString& theMessage, MemoryManager& theManager, const Locator* theLocator) : XSLException( theMessage, theManager, theLocator) { } XalanOutputStream::XalanOutputStreamException::XalanOutputStreamException( const XalanDOMString& theMessage, MemoryManager& theManager) : XSLException( theMessage, theManager) { } XalanOutputStream::XalanOutputStreamException::XalanOutputStreamException(const XalanOutputStreamException& other): XSLException(other) { } XalanOutputStream::XalanOutputStreamException::~XalanOutputStreamException() { } const XalanDOMChar* XalanOutputStream::XalanOutputStreamException::getType() const { static const XalanDOMChar s_type[] = { XalanUnicode::charLetter_X, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_F, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, XalanUnicode::charLetter_e, XalanUnicode::charLetter_O, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_p, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_S, XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_e, XalanUnicode::charLetter_a, XalanUnicode::charLetter_m, XalanUnicode::charLetter_E, XalanUnicode::charLetter_x, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_p, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; return s_type; } const XalanDOMChar* XalanOutputStream::UnsupportedEncodingException::getType() const { static const XalanDOMChar s_type[] = { XalanUnicode::charLetter_U, XalanUnicode::charLetter_n, XalanUnicode::charLetter_s, XalanUnicode::charLetter_u, XalanUnicode::charLetter_p, XalanUnicode::charLetter_p, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_d, XalanUnicode::charLetter_E, XalanUnicode::charLetter_n, XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_d, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, XalanUnicode::charLetter_E, XalanUnicode::charLetter_x, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_p, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; return s_type; } XalanOutputStream::UnsupportedEncodingException::UnsupportedEncodingException( const XalanDOMString& theEncoding, XalanDOMString& theBuffer, const Locator* theLocator) : XalanOutputStreamException( XalanMessageLoader::getMessage( theBuffer, XalanMessages::UnsupportedEncoding_1Param, theEncoding), theBuffer.getMemoryManager(), theLocator), m_encoding( theEncoding, theBuffer.getMemoryManager()) { } XalanOutputStream::UnsupportedEncodingException::UnsupportedEncodingException( const XalanDOMString& theEncoding, XalanDOMString& theBuffer) : XalanOutputStreamException( XalanMessageLoader::getMessage( theBuffer, XalanMessages::UnsupportedEncoding_1Param, theEncoding), theBuffer.getMemoryManager()), m_encoding( theEncoding, theBuffer.getMemoryManager()) { } XalanOutputStream::UnsupportedEncodingException::~UnsupportedEncodingException() { } XalanOutputStream::TranscoderInternalFailureException::TranscoderInternalFailureException( const XalanDOMString& theEncoding, XalanDOMString& theBuffer, const Locator* theLocator) : XalanOutputStreamException( XalanMessageLoader::getMessage( theBuffer, XalanMessages::UnknownErrorOccurredWhileTranscodingToEncoding_1Param, theEncoding), theBuffer.getMemoryManager(), theLocator), m_encoding( theEncoding, theBuffer.getMemoryManager()) { } XalanOutputStream::TranscoderInternalFailureException::TranscoderInternalFailureException(const TranscoderInternalFailureException& other) : XalanOutputStreamException(other), m_encoding( other.m_encoding, other.m_memoryManager) { } XalanOutputStream::TranscoderInternalFailureException::~TranscoderInternalFailureException() { } const XalanDOMChar* XalanOutputStream::TranscoderInternalFailureException::getType() const { static const XalanDOMChar s_type[] = { XalanUnicode::charLetter_T, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_s, XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, XalanUnicode::charLetter_I, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, XalanUnicode::charLetter_n, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_F, XalanUnicode::charLetter_a, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, XalanUnicode::charLetter_u, XalanUnicode::charLetter_r, XalanUnicode::charLetter_e, XalanUnicode::charLetter_E, XalanUnicode::charLetter_x, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_p, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; return s_type; } XalanOutputStream::TranscodingException::TranscodingException( XalanDOMString& theBuffer, const Locator* theLocator) : XalanOutputStreamException( XalanMessageLoader::getMessage( theBuffer, XalanMessages::AnErrorOccurredWhileTranscoding), theBuffer.getMemoryManager(), theLocator) { } XalanOutputStream::TranscodingException::TranscodingException(const TranscodingException& other) : XalanOutputStreamException(other) { } XalanOutputStream::TranscodingException::~TranscodingException() { } const XalanDOMChar* XalanOutputStream::TranscodingException::getType() const { static const XalanDOMChar s_type[] = { XalanUnicode::charLetter_T, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_s, XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_d, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, XalanUnicode::charLetter_E, XalanUnicode::charLetter_x, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_p, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; return s_type; } XalanDOMString& XalanOutputStream::formatMessage( const XalanDOMString& theMessage, int theErrorCode, XalanDOMString& theBuffer) { XalanDOMString strErrorCode(theBuffer.getMemoryManager()); XalanDOMString strErrorMsg(theBuffer.getMemoryManager()); NumberToDOMString(theErrorCode, strErrorCode); theBuffer.assign(theMessage); XalanMessageLoader::getMessage( strErrorMsg, XalanMessages::SystemErrorCode_1Param, strErrorCode); theBuffer.append(strErrorMsg); return theBuffer; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/StringTokenizer.cpp0000664000175000000640000001272011731656102023262 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "StringTokenizer.hpp" #include #include "DOMStringHelper.hpp" #include "XalanUnicode.hpp" XALAN_CPP_NAMESPACE_BEGIN const XalanDOMChar StringTokenizer::s_defaultTokens[] = { XalanUnicode::charSpace, XalanUnicode::charHTab, XalanUnicode::charLF, XalanUnicode::charCR, 0, }; StringTokenizer::StringTokenizer( const XalanDOMString& theString, const XalanDOMString& theTokens, bool fReturnTokens) : m_string(theString.c_str()), m_tokens(theTokens.c_str()), m_returnTokens(fReturnTokens), m_currentIndex(0), m_stringLength(theString.length()), m_tokensLength(theTokens.length()) { } StringTokenizer::StringTokenizer( const XalanDOMString& theString, const XalanDOMChar* theTokens, bool fReturnTokens) : m_string(theString.c_str()), m_tokens(theTokens), m_returnTokens(fReturnTokens), m_currentIndex(0), m_stringLength(theString.length()), m_tokensLength(length(theTokens)) { assert(m_string != 0 && m_tokens != 0); } StringTokenizer::StringTokenizer( const XalanDOMChar* theString, const XalanDOMChar* theTokens, bool fReturnTokens) : m_string(theString), m_tokens(theTokens), m_returnTokens(fReturnTokens), m_currentIndex(0), m_stringLength(length(theString)), m_tokensLength(length(theTokens)) { assert(m_string != 0 && m_tokens != 0); } StringTokenizer::StringTokenizer( const XalanDOMChar* theString, const XalanDOMString& theTokens, bool fReturnTokens) : m_string(theString), m_tokens(theTokens.c_str()), m_returnTokens(fReturnTokens), m_currentIndex(0), m_stringLength(length(theString)), m_tokensLength(theTokens.length()) { assert(m_string != 0 && m_tokens != 0); } StringTokenizer::~StringTokenizer() { } bool StringTokenizer::hasMoreTokens() const { return countTokens() > 0 ? true : false; } void StringTokenizer::nextToken(XalanDOMString& theToken) { assert(m_currentIndex < m_stringLength); // Find the index of the next delimiter. XalanDOMString::size_type theIndex = FindNextDelimiterIndex(m_currentIndex); if (theIndex == m_currentIndex) { m_currentIndex = theIndex + 1; if (m_returnTokens == true) { // The next delimiter is at the current index. If we're // returning delimiters as tokens, then make that the // return value. Otherwise, return an empty string. substring( m_string, theToken, theIndex, theIndex + 1); } else if (m_currentIndex < m_stringLength) { nextToken( theToken ); } } else { if (theIndex == m_currentIndex) { theIndex = FindNextDelimiterIndex(m_currentIndex + 1); } assert(theIndex > m_currentIndex); substring( m_string, theToken, m_currentIndex, theIndex); m_currentIndex = theIndex; } } StringTokenizer::size_type StringTokenizer::countTokens() const { size_t theCount = 0; XalanDOMString::size_type theCurrentIndex = m_currentIndex; if (theCurrentIndex < m_stringLength) { while(theCurrentIndex < m_stringLength) { const XalanDOMString::size_type theNextIndex = FindNextDelimiterIndex(theCurrentIndex); if (theNextIndex == theCurrentIndex) { theCurrentIndex = theNextIndex + 1; if (m_returnTokens == true) { theCount++; } } else { theCount++; theCurrentIndex = theNextIndex; } } } return theCount; } XalanDOMString::size_type StringTokenizer::FindNextDelimiterIndex(XalanDOMString::size_type theStartIndex) const { bool fTokenFound = false; XalanDOMString::size_type theIndex = theStartIndex; while(theIndex < m_stringLength && fTokenFound == false) { const XalanDOMChar theCurrentChar = m_string[theIndex]; if (indexOf(m_tokens, theCurrentChar) < m_tokensLength) { fTokenFound = true; } else { theIndex++; } } return theIndex; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/ArenaBlockBase.hpp0000664000175000000640000001603311731656102022723 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(ARENABLOCKBASE_INCLUDE_GUARD_1357924680) #define ARENABLOCKBASE_INCLUDE_GUARD_1357924680 #include #include //#include #include #if !defined(XALAN_NO_SELECTIVE_TEMPLATE_INSTANTIATION) #include #endif XALAN_CPP_NAMESPACE_BEGIN #if defined(XALAN_NO_SELECTIVE_TEMPLATE_INSTANTIATION) template class ArenaBlockAllocator { public: typedef typename T size_type; typedef ptrdiff_t difference_type; typedef Type* pointer; typedef const Type* const_pointer; typedef Type& reference; typedef const Type& const_reference; typedef Type value_type; ArenaBlockAllocator(MemoryManager& theManager) : m_memoryManager(theManager) { } ~ArenaBlockAllocator() { } MemoryManager& getMemoryManager() { return m_memoryManager; } pointer allocate( size_type size, const void* /* hint */ = 0) { return (pointer)m_memoryManager.allocate(size * sizeof(Type)); } void deallocate( pointer p, size_type /* n */) { if(p != 0) { m_memoryManager.deallocate(p); } } private: // not defined ArenaBlockAllocator(const ArenaBlockAllocator&); ArenaBlockAllocator& operator=(const ArenaBlockAllocator&); MemoryManager& m_memoryManager; }; #endif template #else class SizeType = size_t> #endif class ArenaBlockBase { public: typedef ArenaBlockBase ThisType; #if defined(XALAN_NO_SELECTIVE_TEMPLATE_INSTANTIATION) typedef ArenaBlockAllocator AllocatorType; #else typedef XalanAllocator AllocatorType; #endif typedef SizeType size_type; MemoryManager& getMemoryManager() { return m_allocator.getMemoryManager(); } /* * Find out if there is a block available. * * @return true if one is available, false if not. */ bool blockAvailable() const { return m_objectCount < m_blockSize ? true : false; } /* * Find out if there are any block is allocated * * @return true if one is available, false if not. */ bool isEmpty() const { return m_objectCount == 0 ? true : false; } /* * Get the number of objects currently allocated in the * block. * * @return The number of objects allocated. */ size_type getCountAllocated() const { return m_objectCount; } /* * Get the block size, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockSize() const { return m_blockSize; } /* * Determine if this block owns the specified object block. * Note that, unlike ownsObject(), there does not need to * be an object at the address. * * @param theObject the address of the object * @return true if we own the object block, false if not. */ bool ownsBlock(const ObjectType* theObject) const { return isInBorders(theObject, m_blockSize); } protected: ArenaBlockBase( MemoryManager& theManager, size_type theBlockSize) : m_allocator(theManager), m_objectCount(0), m_blockSize(theBlockSize), #if defined(XALAN_NEW_STD_ALLOCATOR) m_objectBlock(m_allocator.allocate(m_blockSize)) #else m_objectBlock(m_allocator.allocate(m_blockSize, 0)) #endif { assert(theBlockSize > 0); assert(m_objectBlock != 0); } ~ArenaBlockBase() { // Release the memory... m_allocator.deallocate(m_objectBlock, m_blockSize); } /* * Determine if this block is located between beginning of the array * and the "rightBorder" array member (not included) * @param theObject the address of the object * rightBorder the right * @return true if we own the object block, false if not. */ bool isInBorders( const ObjectType* theObject, size_type rightBoundary) const { if ( rightBoundary > m_blockSize ) { rightBoundary = m_blockSize; } // Use less<>, since it's guaranteed to do pointer // comparisons correctly... XALAN_STD_QUALIFIER less functor; if (functor(theObject, m_objectBlock) == false && functor(theObject, m_objectBlock + rightBoundary) == true) { return true; } else { return false; } } /* * Determine the offset into the block for the given address. * Behavior is undefined if the address is not within our * block * * @param theObject the address of the object * @return the offset */ size_type getBlockOffset(const ObjectType* theObject) const { assert(size_type( (theObject - m_objectBlock) / sizeof(ObjectType) ) < m_blockSize); return theObject - m_objectBlock; } /* * Determine the address within our block of the object * at the specified offset. * Behavior is undefined if the offset is greater than the * block size. * * @param theObject the address of the object * @return the offset */ ObjectType* getBlockAddress(size_type theOffset) const { assert(theOffset < m_blockSize); return m_objectBlock + theOffset; } // data members... AllocatorType m_allocator; size_type m_objectCount; const size_type m_blockSize; ObjectType* m_objectBlock; private: // Not implemented... ArenaBlockBase(const ThisType&); ThisType& operator=(const ThisType&); bool operator==(const ThisType&) const; }; XALAN_CPP_NAMESPACE_END #endif // !defined(ARENABLOCKBASE_INCLUDE_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/PlatformSupport/ProblemListenerBase.cpp0000664000175000000640000000744511731656102024032 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "ProblemListenerBase.hpp" #include "xalanc/XalanDOM/XalanNode.hpp" #include "PrintWriter.hpp" #include "XalanLocator.hpp" #include "XalanMessageLoader.hpp" #include "XSLException.hpp" XALAN_CPP_NAMESPACE_BEGIN ProblemListenerBase::ProblemListenerBase() { } ProblemListenerBase::~ProblemListenerBase() { } void ProblemListenerBase::defaultFormat( PrintWriter& pw, eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode) { MemoryManager& theManager = pw.getMemoryManager(); XalanDOMString theTypeBuffer(theManager); XalanMessageLoader::getMessage( theTypeBuffer, s_messageCodes[source][classification]); XalanDOMString theBuffer(theManager); const XalanDOMChar* const uri = XalanLocator::getSystemId(locator); const XalanFileLoc lineNo = XalanLocator::getLineNumber(locator); const XalanFileLoc charOffset = XalanLocator::getLineNumber(locator); XSLException::defaultFormat( msg.c_str(), msg.length(), uri, uri == 0 ? 0 : length(uri), lineNo, charOffset, theTypeBuffer.c_str(), theTypeBuffer.length(), theBuffer); pw.println(theBuffer); if (0 != sourceNode) { pw.println( XalanMessageLoader::getMessage( theBuffer, XalanMessages::SourceTreeNode_1Param, sourceNode->getNodeName())); } } void ProblemListenerBase::defaultFormat( PrintWriter& pw, eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode) { MemoryManager& theManager = pw.getMemoryManager(); XalanDOMString theBuffer(theManager); pw.print( XalanMessageLoader::getMessage( theBuffer, s_messageCodes[source][classification])); pw.print(": "); pw.println(msg); if (0 != sourceNode) { pw.println( XalanMessageLoader::getMessage( theBuffer, XalanMessages::SourceTreeNode_1Param, sourceNode->getNodeName())); } } const XalanMessages::Codes ProblemListenerBase::s_messageCodes[eSourceCount][eClassificationCount] = { { XalanMessages::XMLMessage, XalanMessages::XMLWarning, XalanMessages::XMLError, }, { XalanMessages::XSLTMessage, XalanMessages::XSLTWarning, XalanMessages::XSLTError, }, { XalanMessages::XPathMessage, XalanMessages::XPathWarning, XalanMessages::XPathError, } }; XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanTranscodingServices.cpp0000664000175000000640000003546211731656102025074 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanTranscodingServices.hpp" #include #include #include #include "DOMStringHelper.hpp" #include "XalanMessageLoader.hpp" #include "XalanToXercesTranscoderWrapper.hpp" #include "XalanUTF16Transcoder.hpp" XALAN_CPP_NAMESPACE_BEGIN const XalanDOMChar XalanTranscodingServices::s_utf8String[] = { XalanUnicode::charLetter_U, XalanUnicode::charLetter_T, XalanUnicode::charLetter_F, XalanUnicode::charHyphenMinus, XalanUnicode::charDigit_8, 0 }; const XalanDOMChar XalanTranscodingServices::s_utf16String[] = { XalanUnicode::charLetter_U, XalanUnicode::charLetter_T, XalanUnicode::charLetter_F, XalanUnicode::charHyphenMinus, XalanUnicode::charDigit_1, XalanUnicode::charDigit_6, 0 }; const XalanDOMChar XalanTranscodingServices::s_utf16LEString[] = { XalanUnicode::charLetter_U, XalanUnicode::charLetter_T, XalanUnicode::charLetter_F, XalanUnicode::charHyphenMinus, XalanUnicode::charDigit_1, XalanUnicode::charDigit_6, XalanUnicode::charLetter_L, XalanUnicode::charLetter_E, 0 }; const XalanDOMChar XalanTranscodingServices::s_utf16BEString[] = { XalanUnicode::charLetter_U, XalanUnicode::charLetter_T, XalanUnicode::charLetter_F, XalanUnicode::charHyphenMinus, XalanUnicode::charDigit_1, XalanUnicode::charDigit_6, XalanUnicode::charLetter_B, XalanUnicode::charLetter_E, 0 }; const XalanDOMChar XalanTranscodingServices::s_utf32String[] = { XalanUnicode::charLetter_U, XalanUnicode::charLetter_T, XalanUnicode::charLetter_F, XalanUnicode::charHyphenMinus, XalanUnicode::charDigit_3, XalanUnicode::charDigit_2, 0 }; const XalanDOMChar XalanTranscodingServices::s_asciiString[] = { XalanUnicode::charLetter_A, XalanUnicode::charLetter_S, XalanUnicode::charLetter_C, XalanUnicode::charLetter_I, XalanUnicode::charLetter_I, 0 }; const XalanDOMChar XalanTranscodingServices::s_usASCIIString[] = { XalanUnicode::charLetter_U, XalanUnicode::charLetter_S, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_A, XalanUnicode::charLetter_S, XalanUnicode::charLetter_C, XalanUnicode::charLetter_I, XalanUnicode::charLetter_I, 0 }; const XalanDOMChar XalanTranscodingServices::s_windows1250String[] = { XalanUnicode::charLetter_W, XalanUnicode::charLetter_I, XalanUnicode::charLetter_N, XalanUnicode::charLetter_D, XalanUnicode::charLetter_O, XalanUnicode::charLetter_W, XalanUnicode::charLetter_S, XalanUnicode::charHyphenMinus, XalanUnicode::charDigit_1, XalanUnicode::charDigit_2, XalanUnicode::charDigit_5, XalanUnicode::charDigit_0, 0 }; const XalanDOMChar XalanTranscodingServices::s_iso88591String[] = { XalanUnicode::charLetter_I, XalanUnicode::charLetter_S, XalanUnicode::charLetter_O, XalanUnicode::charHyphenMinus, XalanUnicode::charDigit_8, XalanUnicode::charDigit_8, XalanUnicode::charDigit_5, XalanUnicode::charDigit_9, XalanUnicode::charHyphenMinus, XalanUnicode::charDigit_1, 0 }; const XalanDOMChar XalanTranscodingServices::s_shiftJISString[] = { XalanUnicode::charLetter_S, XalanUnicode::charLetter_H, XalanUnicode::charLetter_I, XalanUnicode::charLetter_F, XalanUnicode::charLetter_T, XalanUnicode::charLowLine, XalanUnicode::charLetter_J, XalanUnicode::charLetter_I, XalanUnicode::charLetter_S, 0 }; const XalanTranscodingServices::XalanXMLByte XalanTranscodingServices::s_dummyByteOrderMark[] = { XalanTranscodingServices::XalanXMLByte(0) }; const XalanTranscodingServices::XalanXMLByte XalanTranscodingServices::s_UTF8ByteOrderMark[] = { XalanTranscodingServices::XalanXMLByte(0xEF), XalanTranscodingServices::XalanXMLByte(0xBB), XalanTranscodingServices::XalanXMLByte(0xBF), XalanTranscodingServices::XalanXMLByte(0) }; const XalanDOMChar XalanTranscodingServices::s_UTF16ByteOrderMark[] = { XalanDOMChar(0xFEFF), XalanDOMChar(0) }; XALAN_USING_XERCES(XMLTransService) static XalanTranscodingServices::eCode translateCode(XMLTransService::Codes theCode) { if (theCode == XMLTransService::Ok) { return XalanTranscodingServices::OK; } else if (theCode == XMLTransService::UnsupportedEncoding) { return XalanTranscodingServices::UnsupportedEncoding; } else if (theCode == XMLTransService::InternalFailure) { return XalanTranscodingServices::InternalFailure; } else { assert(theCode == XMLTransService::SupportFilesNotFound); return XalanTranscodingServices::SupportFilesNotFound; } } XalanOutputTranscoder* XalanTranscodingServices::makeNewTranscoder( MemoryManager& theManager, const XalanDOMString& theEncodingName, eCode& theResult, size_type theBlockSize) { return makeNewTranscoder( theManager, theEncodingName.c_str(), theResult, theBlockSize); } XalanOutputTranscoder* XalanTranscodingServices::makeNewTranscoder( MemoryManager& theManager, const XalanDOMChar* theEncodingName, eCode& theResult, size_type theBlockSize) { XALAN_USING_XERCES(XMLPlatformUtils) assert(XMLPlatformUtils::fgTransService != 0); XalanOutputTranscoder* theTranscoder = 0; XMLTransService::Codes theCode = XMLTransService::Ok; if (encodingIsUTF16(theEncodingName) == true) { theResult = OK; theTranscoder = XalanUTF16Transcoder::create(theManager); } else { XALAN_USING_XERCES(XMLTranscoder) XMLTranscoder* theXercesTranscoder = XMLPlatformUtils::fgTransService->makeNewTranscoderFor( theEncodingName, theCode, #if _XERCES_VERSION >= 2030 theBlockSize, &theManager); #else theBlockSize); #endif theResult = translateCode(theCode); assert(theResult == XalanTranscodingServices::OK || theXercesTranscoder == 0); if (theResult == XalanTranscodingServices::OK) { theTranscoder = XalanToXercesTranscoderWrapper::create(theManager, *theXercesTranscoder); } } return theTranscoder; } void XalanTranscodingServices::destroyTranscoder(XalanOutputTranscoder* theTranscoder) { if( theTranscoder!= 0) { XalanDestroy( theTranscoder->getMemoryManager(), *theTranscoder); } } bool XalanTranscodingServices::encodingIsUTF8(const XalanDOMChar* theEncodingName) { return compareIgnoreCaseASCII(theEncodingName, s_utf8String) == 0 ? true : false; } bool XalanTranscodingServices::encodingIsUTF8(const XalanDOMString& theEncodingName) { return encodingIsUTF8(theEncodingName.c_str()); } bool XalanTranscodingServices::encodingIsUTF16(const XalanDOMChar* theEncodingName) { return compareIgnoreCaseASCII(theEncodingName, s_utf16String) == 0 || compareIgnoreCaseASCII(theEncodingName, s_utf16LEString) == 0 || compareIgnoreCaseASCII(theEncodingName, s_utf16BEString) == 0 ? true : false; } bool XalanTranscodingServices::encodingIsUTF16(const XalanDOMString& theEncodingName) { return encodingIsUTF16(theEncodingName.c_str()); } bool XalanTranscodingServices::encodingIsUTF32(const XalanDOMChar* theEncodingName) { return compareIgnoreCaseASCII(theEncodingName, s_utf32String) == 0 ? true : false; } bool XalanTranscodingServices::encodingIsUTF32(const XalanDOMString& theEncodingName) { return encodingIsUTF32(theEncodingName.c_str()); } const XalanTranscodingServices::XalanXMLByte* XalanTranscodingServices::getStreamProlog(const XalanDOMString& theEncodingName) { if (compareIgnoreCaseASCII(theEncodingName, s_utf16String) == 0) { return reinterpret_cast(s_UTF16ByteOrderMark); } else { return s_dummyByteOrderMark; } } XalanDOMChar XalanTranscodingServices::getMaximumCharacterValue(const XalanDOMString& theEncoding) { if (compareIgnoreCaseASCII(theEncoding, s_utf8String) == 0 || compareIgnoreCaseASCII(theEncoding, s_utf16String) == 0) { return static_cast(0xFFFFu); } else if (compareIgnoreCaseASCII(theEncoding, s_iso88591String) == 0) { return static_cast(0x00FFu); } else if (compareIgnoreCaseASCII(theEncoding, s_utf16LEString) == 0 || compareIgnoreCaseASCII(theEncoding, s_utf16BEString) == 0 || compareIgnoreCaseASCII(theEncoding, s_utf32String) == 0 || compareIgnoreCaseASCII(theEncoding, s_shiftJISString) == 0) { return static_cast(0xFFFFu); } else { return static_cast(0x007fu); } } XalanDOMChar XalanTranscodingServices::getMaximumCharacterValue() { // $$$ ToDo: We need to set this according to the local // code page, but how? Perhaps try to transcode various // strings with increasingly larger character values, using // DOMStringHelper's TranscodeToLocalCodePage()? Not exactly // what we need, but it may do. return XalanDOMChar(0x7fu); } bool XalanTranscodingServices::getBytesEqualChars(const XalanDOMString& theEncoding) { return equals(theEncoding, s_asciiString) || equals(theEncoding, s_usASCIIString) || equals(theEncoding, s_windows1250String); } const XalanDOMChar XalanTranscodingServices::MakeTranscoderException::s_type[] = { XalanUnicode::charLetter_M, XalanUnicode::charLetter_a, XalanUnicode::charLetter_k, XalanUnicode::charLetter_e, XalanUnicode::charLetter_T, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_s, XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, XalanUnicode::charLetter_E, XalanUnicode::charLetter_x, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_p, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; XalanTranscodingServices::MakeTranscoderException::MakeTranscoderException( eCode theCode, const XalanDOMChar* theEncoding, XalanDOMString& theBuffer, const Locator* theLocator) : XSLException( XalanMessageLoader::getMessage( theBuffer, XalanMessages::CreateTranscoderError_2Param, NumberToDOMString( static_cast(theCode), theBuffer).c_str(), theEncoding), theBuffer.getMemoryManager(), theLocator), m_code(theCode), m_encoding( theEncoding, theBuffer.getMemoryManager()) { } XalanTranscodingServices::MakeTranscoderException::MakeTranscoderException(const MakeTranscoderException& theSource) : XSLException(theSource), m_code(theSource.m_code), m_encoding( theSource.m_encoding, m_memoryManager) { } XalanTranscodingServices::MakeTranscoderException::~MakeTranscoderException() { } const XalanDOMChar XalanTranscodingServices::UnrepresentableCharacterException::s_type[] = { XalanUnicode::charLetter_U, XalanUnicode::charLetter_n, XalanUnicode::charLetter_r, XalanUnicode::charLetter_e, XalanUnicode::charLetter_p, XalanUnicode::charLetter_r, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, XalanUnicode::charLetter_b, XalanUnicode::charLetter_l, XalanUnicode::charLetter_e, XalanUnicode::charLetter_C, XalanUnicode::charLetter_h, XalanUnicode::charLetter_a, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, XalanUnicode::charLetter_E, XalanUnicode::charLetter_x, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_p, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; XalanTranscodingServices::UnrepresentableCharacterException::UnrepresentableCharacterException( XalanUnicodeChar theCharacter, const XalanDOMString& theEncoding, XalanDOMString& theBuffer, const Locator* theLocator) : XSLException( XalanMessageLoader::getMessage( theBuffer, XalanMessages::UnrepresentableCharacter_2Param, NumberToHexDOMString( theCharacter, theBuffer), theEncoding), theBuffer.getMemoryManager(), theLocator), m_badCharacter(theCharacter), m_encoding( theEncoding, m_memoryManager) { } XalanTranscodingServices::UnrepresentableCharacterException::UnrepresentableCharacterException(const UnrepresentableCharacterException& theSource) : XSLException(theSource), m_badCharacter(theSource.m_badCharacter), m_encoding( theSource.m_encoding, m_memoryManager) { } XalanTranscodingServices::UnrepresentableCharacterException::~UnrepresentableCharacterException() { } XalanOutputTranscoder::XalanOutputTranscoder(MemoryManager& theManager) : m_memoryManager(theManager) { } XalanOutputTranscoder::~XalanOutputTranscoder() { } void XalanTranscodingServices::initialize(MemoryManager& /* theManager */) { } void XalanTranscodingServices::terminate() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanMessageLoader.hpp0000664000175000000640000001223111731656102023622 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANMESSAGELOADER_HEADER_GUARD_1357924680) #define XALANMESSAGELOADER_HEADER_GUARD_1357924680 // Base include file. Must be first. #include "xalanc/PlatformSupport/PlatformSupportDefinitions.hpp" #include "xalanc/Include/XalanMemMgrAutoPtr.hpp" #include "xalanc/XalanDOM/XalanDOMString.hpp" #include "LocalMsgIndex.hpp" XALAN_CPP_NAMESPACE_BEGIN XALAN_USING_XERCES(MemoryManager) // class for calling fom outside of the module class XALAN_PLATFORMSUPPORT_EXPORT XalanMessageLoader { public: template class XalanMessageLoaderCreateFunct { public: Type* operator()(MemoryManager& theManager) { XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(Type))); Type* const theResult = new (theGuard.get()) Type(theManager); theGuard.release(); return theResult; } }; class XalanMessageLoaderDestructFunct { public: void operator()( MemoryManager& theManager, XalanMessageLoader* p) { assert(p != 0); XalanDestroy(theManager, *p); } }; virtual ~XalanMessageLoader(); XalanMessageLoader() { } static void initialize(MemoryManager& theManager); static void terminate(); static XalanDOMString& getMessage( XalanDOMString& theResultMessage, XalanMessages::Codes msgToLoad, const char* repText1 , const char* repText2 = 0, const char* repText3 = 0, const char* repText4 = 0); static XalanDOMString& getMessage( XalanDOMString& theResultMessage, XalanMessages::Codes msgToLoad, const XalanDOMChar* repText1, const XalanDOMChar* repText2 = 0, const XalanDOMChar* repText3 = 0, const XalanDOMChar* repText4 = 0); static XalanDOMString& getMessage( XalanDOMString& theResultMessage, XalanMessages::Codes msgToLoad); static XalanDOMString& getMessage( XalanDOMString& theResultMessage, XalanMessages::Codes msgToLoad, const XalanDOMString& repText1); static XalanDOMString& getMessage( XalanDOMString& theResultMessage, XalanMessages::Codes msgToLoad, const XalanDOMString& repText1, const XalanDOMString& repText2); static XalanDOMString& getMessage( XalanDOMString& theResultMessage, XalanMessages::Codes msgToLoad, const XalanDOMString& repText1, const XalanDOMString& repText2, const XalanDOMString& repText3); protected: virtual bool loadMsg( XalanMessages::Codes msgToLoad, XalanDOMChar* toFill, XalanSize_t maxChars) = 0; private: bool load( XalanMessages::Codes msgToLoad, MemoryManager& theMemoryManager, XalanDOMChar* toFill, XalanSize_t maxChars, const XalanDOMChar* repText1, const XalanDOMChar* repText2 = 0, const XalanDOMChar* repText3 = 0, const XalanDOMChar* repText4 = 0); bool load( XalanMessages::Codes msgToLoad, MemoryManager& theManager, XalanDOMChar* toFill, XalanSize_t maxChars, const char* repText1 , const char* repText2 = 0, const char* repText3 = 0, const char* repText4 = 0); XalanMessageLoader(const XalanMessageLoader&); XalanMessageLoader& operator=(const XalanMessageLoader&); static XalanMessageLoader* s_msgLoader; }; XALAN_CPP_NAMESPACE_END #endif // XALANMESSAGELOADER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanBitmap.hpp0000664000175000000640000000671611731656102022336 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANBITMAP_HEADER_GUARD_1357924680) #define XALANBITMAP_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT XalanBitmap { public: // The basic storage unit for the bitmaps. typedef char UnitType; // A handy typedef... typedef size_t size_type; // Really all we're assuming is that a char is at least // 8 bits. If it's more, then we'll just waste some // space. This may need to be adjusted for various // platforms, or perhaps change to using an integral of // a known size, so that we don't waste any space. enum { eBitsPerUnit = 8 }; /** * Construct an instance with room for the specified number * of bits. * * @param theSize The number of bits in the map. */ XalanBitmap(MemoryManager& theManager, size_type theSize); ~XalanBitmap(); /** * Determine if a bit is set. * * @param theBit The number of the bit to check. * @return true if the bit is set, false if not. */ bool isSet(size_type theBit) const { assert(theBit >= m_size); return m_bitmap[theBit / eBitsPerUnit] & s_setMasks[theBit % eBitsPerUnit] ? true : false; } /** * Set a bit. * * @param theBit The number of the bit to set. */ void set(size_type theBit) { assert(theBit < m_size); m_bitmap[theBit / eBitsPerUnit] |= s_setMasks[theBit % eBitsPerUnit]; } /** * Clear a bit. * * @param theBit The number of the bit to clear. */ void clear(size_type theBit) { assert(theBit < m_size); m_bitmap[theBit / eBitsPerUnit] &= s_clearMasks[theBit % eBitsPerUnit]; } /** * Toggle a bit. * * @param theBit The number of the bit to toggle. */ void toggle(size_type theBit) { assert(theBit < m_size); m_bitmap[theBit / eBitsPerUnit] ^= s_setMasks[theBit % eBitsPerUnit]; } /** * Clear all of the bits. */ void clearAll(); /** * Get the size of the map. * * @return The number of bits in the map. */ size_type getSize() const { return m_size; } private: static const int s_setMasks[]; static const int s_clearMasks[]; typedef XalanVector BitmapVectorType; const size_type m_size; BitmapVectorType m_bitmap; }; XALAN_CPP_NAMESPACE_END #endif // XALANBITMAP_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/DoubleSupport.cpp0000664000175000000640000004073311731656102022735 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "DoubleSupport.hpp" #include #include #include #if !defined(XALAN_NO_STD_NUMERIC_LIMITS) #include #endif #include "DOMStringHelper.hpp" #include "XalanUnicode.hpp" XALAN_CPP_NAMESPACE_BEGIN #if defined(XALAN_NO_STD_NUMERIC_LIMITS) DoubleSupport::NumberUnion DoubleSupport::s_NaN; #else const DoubleSupport::NumberUnion DoubleSupport::s_NaN = { #if defined(XALAN_NO_STD_NAMESPACE) numeric_limits::quiet_NaN() #else std::numeric_limits::quiet_NaN() #endif }; #endif const DoubleSupport::NumberUnion DoubleSupport::s_positiveInfinity = { HUGE_VAL }; const DoubleSupport::NumberUnion DoubleSupport::s_negativeInfinity = { -HUGE_VAL }; const DoubleSupport::NumberUnion DoubleSupport::s_positiveZero = { 0.0 }; const DoubleSupport::NumberUnion DoubleSupport::s_negativeZero = { -s_positiveZero.d }; void DoubleSupport::initialize() { #if defined(XALAN_NO_STD_NUMERIC_LIMITS) // We initialize this at here because some // platforms have had issues with signals // if we call sqrt(-2.01) during static // initialization. #if defined(XALAN_STRICT_ANSI_HEADERS) s_NaN.d = std::sqrt(-2.01); #else s_NaN.d = sqrt(-2.01); #endif #elif !defined(XALAN_NO_STD_NAMESPACE) // There seems to be problems with various standard libraries, so // this is disabled for now. We need to revisit this when we // update our autoconf/automake system to detect the right value // for NaN at configuration time. // XALAN_STATIC_ASSERT(std::numeric_limits::has_quiet_NaN); #endif } void DoubleSupport::terminate() { #if defined(XALAN_NO_STD_NUMERIC_LIMITS) s_NaN.d = 0.0L; #endif } bool DoubleSupport::equal( double theLHS, double theRHS) { if (isNaN(theLHS) == true || isNaN(theRHS) == true) { return false; } else { return theLHS == theRHS; } } bool DoubleSupport::lessThan( double theLHS, double theRHS) { if (isNaN(theLHS) == true || isNaN(theRHS) == true) { return false; } else { return theLHS < theRHS; } } bool DoubleSupport::lessThanOrEqual( double theLHS, double theRHS) { if (isNaN(theLHS) == true || isNaN(theRHS) == true) { return false; } else { return theLHS <= theRHS; } } bool DoubleSupport::greaterThan( double theLHS, double theRHS) { if (isNaN(theLHS) == true || isNaN(theRHS) == true) { return false; } else { return theLHS > theRHS; } } bool DoubleSupport::greaterThanOrEqual( double theLHS, double theRHS) { if (isNaN(theLHS) == true || isNaN(theRHS) == true) { return false; } else { return theLHS >= theRHS; } } double DoubleSupport::add( double theLHS, double theRHS) { if (isNaN(theLHS) == true) { return theLHS; } else if (isNaN(theRHS) == true) { return theRHS; } else { return theLHS + theRHS; } } double DoubleSupport::subtract( double theLHS, double theRHS) { if (isNaN(theLHS) == true) { return theLHS; } else if (isNaN(theRHS) == true) { return theRHS; } else { return theLHS - theRHS; } } double DoubleSupport::multiply( double theLHS, double theRHS) { if (isNaN(theLHS) == true) { return theLHS; } else if (isNaN(theRHS) == true) { return theRHS; } else { return theLHS * theRHS; } } double DoubleSupport::divide( double theLHS, double theRHS) { if (isNaN(theLHS) == true) { return theLHS; } else if (isNaN(theRHS) == true) { return theRHS; } else if (theRHS != 0.0L) { return theLHS / theRHS; } else if (theLHS == 0.0L) { // This is NaN... return getNaN(); } else if (theLHS > 0.0L && isPositiveZero(theRHS) == true) { // This is positive infinity... return getPositiveInfinity(); } else { // This is negative infinity... return getNegativeInfinity(); } } double DoubleSupport::modulus( double theLHS, double theRHS) { if (isNaN(theLHS) == true) { return theLHS; } else if (isNaN(theRHS) == true) { return theRHS; } else if (theRHS == 0.0) { return getNaN(); } else if (long(theLHS) == theLHS && long(theRHS) == theRHS) { return long(theLHS) % long(theRHS); } else { double theDummy; double theResult = divide(theLHS, theRHS); #if defined(XALAN_STRICT_ANSI_HEADERS) return std::modf(theResult, &theDummy) * theRHS; #else return modf(theResult, &theDummy) * theRHS; #endif } } double DoubleSupport::negative(double theDouble) { if (isNaN(theDouble) == true) { return getNaN(); } else { return -theDouble; } } double DoubleSupport::abs(double theDouble) { if (isNaN(theDouble) == true) { return getNaN(); } else { #if defined(XALAN_STRICT_ANSI_HEADERS) using std::fabs; #endif return fabs(theDouble); } } double DoubleSupport::toDouble( const XalanDOMString& theString, MemoryManager& theManager) { return toDouble(theString.c_str(), theManager); } inline void consumeWhitespace(const XalanDOMChar*& theString) { while(*theString != 0 && isXMLWhitespace(*theString)) { ++theString; } } inline void consumeWhitespace( const XalanDOMChar*& theString, XalanDOMString::size_type& theLength) { while(*theString != 0 && isXMLWhitespace(*theString)) { ++theString; --theLength; } } inline static void consumeNumbers(const XalanDOMChar*& theString) { while(*theString && *theString >= XalanUnicode::charDigit_0 && *theString <= XalanUnicode::charDigit_9) { ++theString; } } static bool doValidate( const XalanDOMChar* theString, bool& fGotDecimalPoint) { assert(theString != 0); bool fError = false; bool fGotDigit = false; bool fGotMinus = false; bool fGotWhitespace = false; const XalanDOMChar* theCurrent = theString; // trim any whitespace consumeWhitespace(theCurrent); while(*theCurrent != 0 && fError == false) { switch(*theCurrent) { case XalanUnicode::charFullStop: if (fGotDecimalPoint == true || // can't have more than one... fGotWhitespace == true) // can't have one after whitespace... { fError = true; } else { fGotDecimalPoint = true; ++theCurrent; } break; case XalanUnicode::charHyphenMinus: if (fGotDecimalPoint == true || fGotMinus == true || fGotDigit == true || fGotWhitespace == true) { // Error -- more than one, or in bad position. fError = true; } else { fGotMinus = true; ++theCurrent; } break; case XalanUnicode::charDigit_0: case XalanUnicode::charDigit_1: case XalanUnicode::charDigit_2: case XalanUnicode::charDigit_3: case XalanUnicode::charDigit_4: case XalanUnicode::charDigit_5: case XalanUnicode::charDigit_6: case XalanUnicode::charDigit_7: case XalanUnicode::charDigit_8: case XalanUnicode::charDigit_9: if (fGotWhitespace == true) { fError = true; } else { fGotDigit = true; consumeNumbers(theCurrent); } break; case XalanUnicode::charSpace: case XalanUnicode::charCR: case XalanUnicode::charHTab: case XalanUnicode::charLF: if (fGotWhitespace == true) { fError = true; } else { fGotWhitespace = true; consumeWhitespace(theCurrent); } break; default: fError = true; break; } } // If there was no error, check to see that we got // at least one digit. Otherwise, return false if // there was an error. return fError == false ? fGotDigit : false; } static bool doValidate(const XalanDOMChar* theString) { bool fDummy = false; return doValidate(theString, fDummy); } #if defined(XALAN_NON_ASCII_PLATFORM) static void translateWideString( const XalanDOMChar* theWideString, char* theNarrowString, XalanDOMString::size_type theStringLength, char theDecimalPointCharacter) { for(XalanDOMString::size_type i = 0; i < theStringLength; ++i) { switch(theWideString[i]) { case XalanUnicode::charHyphenMinus: theNarrowString[i] = '-'; break; case XalanUnicode::charFullStop: theNarrowString[i] = theDecimalPointCharacter; break; case XalanUnicode::charDigit_0: theNarrowString[i] = '0'; break; case XalanUnicode::charDigit_1: theNarrowString[i] = '1'; break; case XalanUnicode::charDigit_2: theNarrowString[i] = '2'; break; case XalanUnicode::charDigit_3: theNarrowString[i] = '3'; break; case XalanUnicode::charDigit_4: theNarrowString[i] = '4'; break; case XalanUnicode::charDigit_5: theNarrowString[i] = '5'; break; case XalanUnicode::charDigit_6: theNarrowString[i] = '6'; break; case XalanUnicode::charDigit_7: theNarrowString[i] = '7'; break; case XalanUnicode::charDigit_8: theNarrowString[i] = '8'; break; case XalanUnicode::charDigit_9: theNarrowString[i] = '9'; break; default: theNarrowString[i] = char(0); break; } } theNarrowString[theStringLength] = char(0); } #endif inline double convertHelper( const XalanDOMChar* theString, bool fGotDecimalPoint, MemoryManager& theManager) { // This is a big hack. If the length of the // string is less than n characters, we'll convert // it as a long and coerce that to a double. This // is _much_ cheaper... const XalanDOMString::size_type theLongHackThreshold = 10; XalanDOMString::size_type theLength = length(theString); if (fGotDecimalPoint == false && theLength < theLongHackThreshold) { return double(WideStringToLong(theString)); } else { #if defined(XALAN_STRICT_ANSI_HEADERS) XALAN_USING_STD(localeconv) XALAN_USING_STD(atof) #endif const char theDecimalPointChar = localeconv()->decimal_point[0]; // trim any whitespace consumeWhitespace(theString, theLength); // Use a stack-based buffer, when possible... const XalanDOMString::size_type theBufferSize = 200u; if (theLength < theBufferSize) { char theBuffer[theBufferSize]; #if defined(XALAN_NON_ASCII_PLATFORM) translateWideString( theString, theBuffer, theLength, theDecimalPointChar); #else for(XalanDOMString::size_type i = 0; i < theLength; ++i) { if (theString[i] == XalanUnicode::charFullStop) { theBuffer[i] = theDecimalPointChar; } else { theBuffer[i] = char(theString[i]); } } theBuffer[theLength] = '\0'; #endif return atof(theBuffer); } else { CharVectorType theVector(theManager); #if !defined(XALAN_NON_ASCII_PLATFORM) theVector.reserve(theLength + 1); CopyWideStringToVector(theString, theVector); #else theVector.resize( theLength + 1, CharVectorType::value_type(0)); translateWideString( theString, &*theVector.begin(), theLength, theDecimalPointChar); #endif return atof(&*theVector.begin()); } } } inline double doConvert( const XalanDOMChar* theString, MemoryManager& theManager) { assert(theString != 0); assert(*theString != 0); bool fGotDecimalPoint = false; if (doValidate(theString, fGotDecimalPoint) == false) { return DoubleSupport::getNaN(); } else { return convertHelper( theString, fGotDecimalPoint, theManager); } } double DoubleSupport::toDouble( const XalanDOMChar* theString, MemoryManager& theManager) { if (theString == 0 || *theString == 0) { return getNaN(); } else { return doConvert(theString, theManager); } } bool DoubleSupport::isValid(const XalanDOMString& theString) { return isValid(theString.c_str()); } bool DoubleSupport::isValid(const XalanDOMChar* theString) { return doValidate(theString); } inline double modfRound(double theValue) { double intPart = 0; #if defined(XALAN_STRICT_ANSI_HEADERS) std::modf(theValue + 0.5, &intPart); #else modf(theValue + 0.5, &intPart); #endif return intPart; } double DoubleSupport::round(double theValue) { if (isNaN(theValue)) { return getNaN(); } else if (isPositiveInfinity(theValue)) { return getPositiveInfinity(); } else if (isNegativeInfinity(theValue)) { return getNegativeInfinity(); } else if (theValue == 0) { return 0.0; } else if (theValue > 0) { // If the value is less than the maximum value for // a long, this is the fastest way to do it. if (theValue < LONG_MAX) { return long(theValue + 0.5); } else { return modfRound(theValue); } } else { // Negative numbers are a special case. Any time we // have -0.5 as the fractional part, we have to // round up (toward 0), rather than down. double intPart = 0; const double fracPart = #if defined(XALAN_STRICT_ANSI_HEADERS) std::modf(theValue, &intPart); #else modf(theValue, &intPart); #endif const double theAdjustedValue = fracPart == -0.5 ? theValue + 0.5 : theValue - 0.5; // If the value is greater than the minimum value for // a long, this is the fastest way to do it. if (theAdjustedValue > LONG_MIN) { return long(theAdjustedValue); } else { return modfRound(theAdjustedValue); } } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/ExecutionContext.cpp0000664000175000000640000000211211731656102023423 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN ExecutionContext::ExecutionContext(MemoryManager& theMemoryManager) : m_memoryManager(theMemoryManager), m_hasPreserveOrStripConditions(false) { } ExecutionContext::~ExecutionContext() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanArrayAllocator.hpp0000664000175000000640000001750711731656102024041 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANARRAYALLOCATOR_HEADER_GUARD_1357924680) #define XALANARRAYALLOCATOR_HEADER_GUARD_1357924680 #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN template class XALAN_PLATFORMSUPPORT_EXPORT XalanArrayAllocator { public: typedef XalanVector VectorType; typedef typename VectorType::size_type size_type; typedef XALAN_STD_QUALIFIER pair ListEntryType; typedef XalanList ListType; typedef Type value_type; typedef typename ListType::iterator ListIteratorType; // Default size for vector allocation. enum { eDefaultBlockSize = 500 }; /** * Constructor. * * @param theBlockSize The block size when allocating. */ XalanArrayAllocator(MemoryManager& theManager, size_type theBlockSize = eDefaultBlockSize) : m_list(theManager), m_blockSize(theBlockSize), m_lastEntryFound(0) { } ~XalanArrayAllocator() { typename ListType::iterator iter = m_list.begin(); MemoryManager& theManager = m_list.getMemoryManager(); for( iter = m_list.begin(); iter != m_list.end(); ++iter) { if( (*iter).second != 0) { #if defined(XALAN_REQUIRES_QUALIFIED_DESTRUCTOR) (*iter).second->VectorType::~VectorType(); #else (*iter).second->~VectorType(); #endif theManager.deallocate((void*)(*iter).second); } } } /** * Clear the instance, and release all allocated memory */ void clear() { m_list.clear(); m_lastEntryFound = 0; } /** * Reset the instance, but keep all memory so it can be * reused for allocations. This invalidates all previous * allocations. */ void reset() { if (m_list.empty() == true) { m_lastEntryFound = 0; } else { const ListIteratorType theEnd = m_list.end(); ListIteratorType theCurrent = m_list.begin(); do { (*theCurrent).first = (*theCurrent).second->size(); ++theCurrent; } while(theCurrent != theEnd); m_lastEntryFound = &*m_list.begin(); } } /** * Allocate slots for the given number of Types * instance and return the address of the slots. * * @param theCount The number of slots to allocate */ Type* allocate(size_type theCount) { // Handle the case of theCount being greater than the block size first... if (theCount >= m_blockSize) { return createEntry(theCount, theCount); } else { ListEntryType* theEntry = findEntry(theCount); // Did we find a slot? if (theEntry == 0) { // Nope, create a new one... return createEntry(m_blockSize, theCount); } else { // The address we want is that of the first free element in the // vector... assert( theEntry->second != 0); Type* const thePointer = &*theEntry->second->begin() + (theEntry->second->size() - theEntry->first); // Resize the vector to the appropriate size... theEntry->first -= theCount; return thePointer; } } } private: // Utility functions... Type* createEntry( size_type theBlockSize, size_type theCount) { assert(theBlockSize >= theCount); // Push on a new entry. The entry has no open space, // since it's greater than our block size... m_list.push_back(ListEntryType(0, VectorType::create(m_list.getMemoryManager()))); // Get the new entry... ListEntryType& theNewEntry = m_list.back(); // Resize the vector to the appropriate size... assert(theNewEntry.second); theNewEntry.second->resize(theBlockSize, value_type()); // Set the number of free spaces accordingly... theNewEntry.first = theBlockSize - theCount; if (theNewEntry.first != 0) { m_lastEntryFound = &theNewEntry; } // Return a pointer to the beginning of the allocated memory... return &*theNewEntry.second->begin(); } ListEntryType* findEntry(size_type theCount) { // Search for an entry that has some free space. if (m_lastEntryFound != 0 && m_lastEntryFound->first >= theCount) { return m_lastEntryFound; } else { const ListIteratorType theEnd = m_list.end(); ListIteratorType theCurrent = m_list.begin(); ListEntryType* theEntry = 0; while(theCurrent != theEnd) { // We're looking for the best fit, so // if the free space and the count we're // looking for are equal, that's pretty // much the best we can do... if ((*theCurrent).first == theCount) { theEntry = &*theCurrent; break; } else if ((*theCurrent).first >= theCount) { // If we haven't found anything yet, the first // entry we find that's large enough becomes // our best fit. // // Otherwise, we'll assume that a smaller // slot is a better fit, though I may be // wrong about this... if (theEntry == 0 || (*theCurrent).first < theEntry->first) { // Nope, so this becomes our best-fit so far. theEntry = &*theCurrent; } ++theCurrent; } else { // Won't fit, so just continue... ++theCurrent; } } m_lastEntryFound = theEntry; return theEntry; } } // Not implemented... XalanArrayAllocator(const XalanArrayAllocator& theSource); XalanArrayAllocator& operator=(const XalanArrayAllocator& theSource); bool operator==(const XalanArrayAllocator& theRHS) const; // Data members... ListType m_list; const size_type m_blockSize; ListEntryType* m_lastEntryFound; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANARRAYALLOCATOR_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanEncodingPropertyCache.hpp0000664000175000000640000000402011731656102025323 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANENCODINGPROPERTYCACHE_HEADER_GUARD_1357924680) #define XALANENCODINGPROPERTYCACHE_HEADER_GUARD_1357924680 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanOutputTranscoder; class XALAN_PLATFORMSUPPORT_EXPORT XalanEncodingPropertyCache { public: XalanEncodingPropertyCache( MemoryManager& theManager, size_t theCacheSize = XalanDOMChar(~0), const XalanOutputTranscoder* theTranscoder = 0); ~XalanEncodingPropertyCache(); bool canEncodeCharacter(XalanUnicodeChar theChar) const; const XalanOutputTranscoder* getTranscoder() const { return m_transcoder; } void setTranscoder(const XalanOutputTranscoder* theTranscoder) { m_transcoder = theTranscoder; } private: const XalanOutputTranscoder* m_transcoder; mutable XalanBitmap m_presentBitmap; mutable XalanBitmap m_valueBitmap; }; XALAN_CPP_NAMESPACE_END #endif // XALANENCODINGPROPERTYCACHE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/PlatformSupportInit.hpp0000664000175000000640000000324411731656102024134 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(PLATFORMSUPPORTINIT_INCLUDE_GUARD_1357924680) #define PLATFORMSUPPORTINIT_INCLUDE_GUARD_1357924680 // Base include file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT PlatformSupportInit { public: PlatformSupportInit(MemoryManager& theManager); ~PlatformSupportInit(); private: // Not implemented... PlatformSupportInit(const PlatformSupportInit&); PlatformSupportInit& operator=(const PlatformSupportInit&); static void initialize(MemoryManager& theManager); static void terminate(); const XalanDOMInit m_xalanDOMInit; static unsigned long s_initCounter; }; XALAN_CPP_NAMESPACE_END #endif // !defined(ARENAALLOCATOR_INCLUDE_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/PlatformSupport/FormatterListener.hpp0000664000175000000640000001714111731656102023601 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FORMATTERLISTENER_HEADER_GUARD_1357924680) #define FORMATTERLISTENER_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class PrefixResolver; class Writer; typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator LocatorType; typedef XERCES_CPP_NAMESPACE_QUALIFIER AttributeList AttributeListType; XALAN_USING_XERCES(Locator) XALAN_USING_XERCES(AttributeList) /** * A SAX-based formatter interface for the XSL processor. This interface * will be called as result tree elements are constructed. */ class XALAN_PLATFORMSUPPORT_EXPORT FormatterListener : public XERCES_CPP_NAMESPACE_QUALIFIER DocumentHandler { public: typedef XERCES_CPP_NAMESPACE_QUALIFIER DocumentHandler ParentType; // A handy typedef... Must match DocumentHandler's type for characters(), etc... typedef XalanSize_t size_type; enum eFormat { OUTPUT_METHOD_NONE = 0, OUTPUT_METHOD_XML = 1, OUTPUT_METHOD_HTML = 2, OUTPUT_METHOD_TEXT = 3, OUTPUT_METHOD_DOM = 4, OUTPUT_METHOD_OTHER = 5 }; enum eXMLVersion { XML_VERSION_1_0 = 0, XML_VERSION_1_1 = 1 }; FormatterListener(eFormat theFormat); virtual ~FormatterListener(); /** * Get the output format for the instance. * * @return An enum indicating the output format. */ eFormat getOutputFormat() const { return m_outputFormat; } /** * Get the version of XML the FormatterListener is * generating. * * @return An enum indication the XML version. */ eXMLVersion getXMLVersion() const { return m_XMLVersion; } /** * Determine if the version of XML output is 1.1. * * @return true if the output version is 1.1, false if not. */ bool isXML1_1Version() const { return ( XML_VERSION_1_1 == m_XMLVersion ); } /** * Get the PrefixResolver for the FormatterListener * * @return A pointer to the PrefixResolver, if any. */ const PrefixResolver* getPrefixResolver() const { return m_prefixResolver; } /** * Set the PrefixResolver for the FormatterListener * * @param thePrefixResolver A pointer to the PrefixResolver, if any. */ void setPrefixResolver(const PrefixResolver* thePrefixResolver) { m_prefixResolver = thePrefixResolver; } /** * Receive notification of character data. If available, when the * disable-output-escaping attribute is used, output raw text without * escaping. * * @param chars pointer to characters from the XML document * @param length number of characters to read from the array * @exception SAXException */ virtual void charactersRaw( const XMLCh* const chars, const size_type length) = 0; /** * Called when a Comment is to be constructed. * * @param data pointer to comment data * @exception SAXException */ virtual void comment(const XMLCh* const data) = 0; /** * Receive notification of cdata. * *

    The Parser will call this method to report each chunk of * character data. SAX parsers may return all contiguous character * data in a single chunk, or they may split it into several * chunks; however, all of the characters in any single event * must come from the same external entity, so that the Locator * provides useful information.

    * *

    The application must not attempt to read from the array * outside of the specified range.

    * *

    Note that some parsers will report whitespace using the * ignorableWhitespace() method rather than this one (validating * parsers must do so).

    * * @param ch pointer to characters from the XML document * @param length number of characters to read from the array * @exception SAXException */ virtual void cdata( const XMLCh* const ch, const size_type length) = 0; /** * Receive notification of a entityReference. * * @param data pointer to characters from the XML document * @exception SAXException */ virtual void entityReference(const XMLCh* const name) = 0; // These methods are inherited from DocumentHandler ... virtual void characters( const XMLCh* const chars, const size_type length) = 0; virtual void endDocument() = 0; virtual void endElement(const XMLCh* const name) = 0; virtual void ignorableWhitespace( const XMLCh* const chars, const size_type length) = 0; virtual void processingInstruction( const XMLCh* const target, const XMLCh* const data) = 0; virtual void resetDocument() = 0; virtual void setDocumentLocator(const Locator* const locator) = 0; virtual void startDocument() = 0; virtual void startElement( const XMLCh* const name, AttributeList& attrs) = 0; virtual Writer* getWriter() const; virtual const XalanDOMString& getDoctypeSystem() const; virtual const XalanDOMString& getDoctypePublic() const; virtual const XalanDOMString& getEncoding() const; virtual const XalanDOMString& getMediaType() const; virtual int getIndent() const; // Used when creating PI to work around limitations of // our interfaces... static const XalanDOMChar s_piTarget[]; static const XalanDOMChar s_piData[]; #if defined(XALAN_INLINE_INITIALIZATION) static const XalanDOMString::size_type s_piTargetLength = 5; static const XalanDOMString::size_type s_piDataLength = 3; #else static const XalanDOMString::size_type s_piTargetLength; static const XalanDOMString::size_type s_piDataLength; #endif protected: // Data membmers... const PrefixResolver* m_prefixResolver; static const XalanDOMString s_emptyString; /** * Set the output version during serializing. * * @param theVersion XML version of the output */ void setXMLVersion(eXMLVersion theVersion) { m_XMLVersion = theVersion; } private: // Not implemented... FormatterListener(const FormatterListener&); FormatterListener& operator=(const FormatterListener&); bool operator==(const FormatterListener&) const; // Data membmers... const eFormat m_outputFormat; eXMLVersion m_XMLVersion; }; XALAN_CPP_NAMESPACE_END #endif // FORMATTERLISTENER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanOutputStreamPrintWriter.hpp0000664000175000000640000001035611731656102026003 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANOUTPUTSTREAMPRINTWRITER_HEADER_GUARD_1357924680) #define XALANOUTPUTSTREAMPRINTWRITER_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanOutputStream; class XALAN_PLATFORMSUPPORT_EXPORT XalanOutputStreamPrintWriter : public PrintWriter { public: /** * Construct a XalanOutputStreamPrintWriter instance. * * @param theOutputStream output stream to write * @param fAutoFlush if true, the output will not be buffered */ XalanOutputStreamPrintWriter( XalanOutputStream& theOutputStream, bool fAutoFlush = false); static XalanOutputStreamPrintWriter* create( XalanOutputStream& theOutputStream, bool fAutoFlush = false); virtual ~XalanOutputStreamPrintWriter(); virtual bool checkError() const; virtual void close(); virtual void flush(); virtual XalanOutputStream* getStream(); virtual const XalanOutputStream* getStream() const; virtual void write( const char* s, size_t theOffset = 0, size_t theLength = npos); virtual void write( const XalanDOMChar* s, XalanDOMString::size_type theOffset = 0, XalanDOMString::size_type theLength = XalanDOMString::npos); virtual void write(XalanDOMChar c); virtual void write( const XalanDOMString& s, XalanDOMString::size_type theOffset = 0, XalanDOMString::size_type theLength = XalanDOMString::npos); #if !defined(XALAN_BOOL_AS_INT) virtual void print(bool b); #endif virtual void print(char c); virtual void print( const char* s, size_t theLength = npos); virtual void print( const XalanDOMChar* s, XalanDOMString::size_type theLength = XalanDOMString::npos); virtual void print(double d); virtual void print(int i); virtual void print(long l); virtual void print(const XalanDOMString& s); virtual void println(); #if !defined(XALAN_BOOL_AS_INT) virtual void println(bool x); #endif virtual void println(char x); virtual void println( const char* s, size_t theLength = npos); virtual void println( const XalanDOMChar* s, XalanDOMString::size_type theLength = XalanDOMString::npos); virtual void println(double x); virtual void println(int x); virtual void println(long x); virtual void println(const XalanDOMString& s); private: void flushWideChars(); // Not implemented XalanOutputStreamPrintWriter(const XalanOutputStreamPrintWriter&); XalanOutputStreamPrintWriter& operator=(const XalanOutputStreamPrintWriter&); bool operator==(const XalanOutputStreamPrintWriter&); // Data members... XalanOutputStream& m_outputStream; XalanDOMString m_buffer; bool m_flushWideChars; }; XALAN_CPP_NAMESPACE_END #endif // XALANOUTPUTSTREAMPRINTWRITER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/PrefixResolver.cpp0000664000175000000640000000204011731656102023072 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "PrefixResolver.hpp" XALAN_CPP_NAMESPACE_BEGIN PrefixResolver::PrefixResolver() { } PrefixResolver::PrefixResolver(const PrefixResolver&) { } PrefixResolver::~PrefixResolver() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanNLSMessageLoader.hpp0000664000175000000640000000370411731656102024204 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANNLSMESSAGELOADER_HEADER_GUARD_1357924680) #define XALANNLSMESSAGELOADER_HEADER_GUARD_1357924680 #ifdef XALAN_NLS_MSG_LOADER #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT XalanNLSMessageLoader : public XalanMessageLoader { public: XalanNLSMessageLoader(MemoryManager& theManager); virtual ~XalanNLSMessageLoader(); protected: // ----------------------------------------------------------------------- // Implementation of the virtual message loader API // ----------------------------------------------------------------------- virtual bool loadMsg( XalanMessages::Codes msgToLoad, XalanDOMChar* toFill, XalanSize_t maxChars ); private: XalanNLSMessageLoader(const XalanNLSMessageLoader&); XalanNLSMessageLoader& operator=(const XalanNLSMessageLoader&); nl_catd m_catalogHandle; MemoryManager& m_memoryManager; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_NLS_MSG_LOADER #endif // XALANNLSMESSAGELOADER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanCollationServices.hpp0000664000175000000640000000371111731656102024542 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANCOLLATIONSERVICES_HEADER_GUARD_1357924680) #define XALANCOLLATIONSERVICES_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT XalanCollationServices { public: enum eCaseOrder { eDefault, eLowerFirst, eUpperFirst }; class XALAN_PLATFORMSUPPORT_EXPORT CollationCompareFunctor { public: CollationCompareFunctor() { } virtual ~CollationCompareFunctor() { } virtual int operator()( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, eCaseOrder theCaseOrder = eDefault) const = 0; virtual int operator()( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, const XalanDOMChar* theLocale, eCaseOrder theCaseOrder = eDefault) const = 0; }; }; XALAN_CPP_NAMESPACE_END #endif // XALANCOLLATIONSERVICES_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanXMLChar.cpp0000664000175000000640000256241011731656102022353 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanXMLChar.hpp" XALAN_CPP_NAMESPACE_BEGIN static const char XML_XX = XalanXMLChar::XML_XX; static const char XML_BC = XalanXMLChar::XML_BC; static const char XML_ID = XalanXMLChar::XML_ID; static const char XML_EX = XalanXMLChar::XML_EX; static const char XML_DI = XalanXMLChar::XML_DI; static const char XML_CC = XalanXMLChar::XML_CC; static const char XML_WS = XalanXMLChar::XML_WS; const char XalanXMLChar::theUnicodeTable[] = { /* 0000 - 0007 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0008 - 000F */ XML_XX, XML_WS, XML_WS, XML_XX, XML_XX, XML_WS, XML_XX, XML_XX, /* 0010 - 0017 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0018 - 001F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0020 - 0027 */ XML_WS, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0028 - 002F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0030 - 0037 */ XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, /* 0038 - 003F */ XML_DI, XML_DI, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0040 - 0047 */ XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0048 - 004F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0050 - 0057 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0058 - 005F */ XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0060 - 0067 */ XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0068 - 006F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0070 - 0077 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0078 - 007F */ XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0080 - 0087 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0088 - 008F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0090 - 0097 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0098 - 009F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 00A0 - 00A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 00A8 - 00AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 00B0 - 00B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_EX, /* 00B8 - 00BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 00C0 - 00C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 00C8 - 00CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 00D0 - 00D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, /* 00D8 - 00DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 00E0 - 00E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 00E8 - 00EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 00F0 - 00F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, /* 00F8 - 00FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0100 - 0107 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0108 - 010F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0110 - 0117 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0118 - 011F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0120 - 0127 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0128 - 012F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0130 - 0137 */ XML_BC, XML_BC, XML_XX, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, /* 0138 - 013F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, /* 0140 - 0147 */ XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0148 - 014F */ XML_BC, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0150 - 0157 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0158 - 015F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0160 - 0167 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0168 - 016F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0170 - 0177 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0178 - 017F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, /* 0180 - 0187 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0188 - 018F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0190 - 0197 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0198 - 019F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 01A0 - 01A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 01A8 - 01AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 01B0 - 01B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 01B8 - 01BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 01C0 - 01C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, /* 01C8 - 01CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_BC, XML_BC, XML_BC, /* 01D0 - 01D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 01D8 - 01DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 01E0 - 01E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 01E8 - 01EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 01F0 - 01F7 */ XML_BC, XML_XX, XML_XX, XML_XX, XML_BC, XML_BC, XML_XX, XML_XX, /* 01F8 - 01FF */ XML_XX, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0200 - 0207 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0208 - 020F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0210 - 0217 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0218 - 021F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0220 - 0227 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0228 - 022F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0230 - 0237 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0238 - 023F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0240 - 0247 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0248 - 024F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0250 - 0257 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0258 - 025F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0260 - 0267 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0268 - 026F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0270 - 0277 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0278 - 027F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0280 - 0287 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0288 - 028F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0290 - 0297 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0298 - 029F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 02A0 - 02A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 02A8 - 02AF */ XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 02B0 - 02B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 02B8 - 02BF */ XML_XX, XML_XX, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 02C0 - 02C7 */ XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 02C8 - 02CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 02D0 - 02D7 */ XML_EX, XML_EX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 02D8 - 02DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 02E0 - 02E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 02E8 - 02EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 02F0 - 02F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 02F8 - 02FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0300 - 0307 */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, /* 0308 - 030F */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, /* 0310 - 0317 */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, /* 0318 - 031F */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, /* 0320 - 0327 */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, /* 0328 - 032F */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, /* 0330 - 0337 */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, /* 0338 - 033F */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, /* 0340 - 0347 */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_XX, XML_XX, /* 0348 - 034F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0350 - 0357 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0358 - 035F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0360 - 0367 */ XML_CC, XML_CC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0368 - 036F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0370 - 0377 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0378 - 037F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0380 - 0387 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_BC, XML_EX, /* 0388 - 038F */ XML_BC, XML_BC, XML_BC, XML_XX, XML_BC, XML_XX, XML_BC, XML_BC, /* 0390 - 0397 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0398 - 039F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 03A0 - 03A7 */ XML_BC, XML_BC, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 03A8 - 03AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 03B0 - 03B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 03B8 - 03BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 03C0 - 03C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 03C8 - 03CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, /* 03D0 - 03D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, /* 03D8 - 03DF */ XML_XX, XML_XX, XML_BC, XML_XX, XML_BC, XML_XX, XML_BC, XML_XX, /* 03E0 - 03E7 */ XML_BC, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 03E8 - 03EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 03F0 - 03F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, /* 03F8 - 03FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0400 - 0407 */ XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0408 - 040F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_BC, XML_BC, /* 0410 - 0417 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0418 - 041F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0420 - 0427 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0428 - 042F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0430 - 0437 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0438 - 043F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0440 - 0447 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0448 - 044F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0450 - 0457 */ XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0458 - 045F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_BC, XML_BC, /* 0460 - 0467 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0468 - 046F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0470 - 0477 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0478 - 047F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0480 - 0487 */ XML_BC, XML_BC, XML_XX, XML_CC, XML_CC, XML_CC, XML_CC, XML_XX, /* 0488 - 048F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0490 - 0497 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0498 - 049F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 04A0 - 04A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 04A8 - 04AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 04B0 - 04B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 04B8 - 04BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 04C0 - 04C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_BC, /* 04C8 - 04CF */ XML_BC, XML_XX, XML_XX, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, /* 04D0 - 04D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 04D8 - 04DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 04E0 - 04E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 04E8 - 04EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_BC, XML_BC, /* 04F0 - 04F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, /* 04F8 - 04FF */ XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0500 - 0507 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0508 - 050F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0510 - 0517 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0518 - 051F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0520 - 0527 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0528 - 052F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0530 - 0537 */ XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0538 - 053F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0540 - 0547 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0548 - 054F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0550 - 0557 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, /* 0558 - 055F */ XML_XX, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0560 - 0567 */ XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0568 - 056F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0570 - 0577 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0578 - 057F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0580 - 0587 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, /* 0588 - 058F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0590 - 0597 */ XML_XX, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, /* 0598 - 059F */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, /* 05A0 - 05A7 */ XML_CC, XML_CC, XML_XX, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, /* 05A8 - 05AF */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, /* 05B0 - 05B7 */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, /* 05B8 - 05BF */ XML_CC, XML_CC, XML_XX, XML_CC, XML_CC, XML_CC, XML_XX, XML_CC, /* 05C0 - 05C7 */ XML_XX, XML_CC, XML_CC, XML_XX, XML_CC, XML_XX, XML_XX, XML_XX, /* 05C8 - 05CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 05D0 - 05D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 05D8 - 05DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 05E0 - 05E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 05E8 - 05EF */ XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 05F0 - 05F7 */ XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 05F8 - 05FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0600 - 0607 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0608 - 060F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0610 - 0617 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0618 - 061F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0620 - 0627 */ XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0628 - 062F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0630 - 0637 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0638 - 063F */ XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0640 - 0647 */ XML_EX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0648 - 064F */ XML_BC, XML_BC, XML_BC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, /* 0650 - 0657 */ XML_CC, XML_CC, XML_CC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0658 - 065F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0660 - 0667 */ XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, /* 0668 - 066F */ XML_DI, XML_DI, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0670 - 0677 */ XML_CC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0678 - 067F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0680 - 0687 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0688 - 068F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0690 - 0697 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0698 - 069F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 06A0 - 06A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 06A8 - 06AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 06B0 - 06B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 06B8 - 06BF */ XML_XX, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, /* 06C0 - 06C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 06C8 - 06CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, /* 06D0 - 06D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_BC, XML_CC, XML_CC, /* 06D8 - 06DF */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, /* 06E0 - 06E7 */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_BC, XML_BC, XML_CC, /* 06E8 - 06EF */ XML_CC, XML_XX, XML_CC, XML_CC, XML_CC, XML_CC, XML_XX, XML_XX, /* 06F0 - 06F7 */ XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, /* 06F8 - 06FF */ XML_DI, XML_DI, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0700 - 0707 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0708 - 070F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0710 - 0717 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0718 - 071F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0720 - 0727 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0728 - 072F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0730 - 0737 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0738 - 073F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0740 - 0747 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0748 - 074F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0750 - 0757 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0758 - 075F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0760 - 0767 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0768 - 076F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0770 - 0777 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0778 - 077F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0780 - 0787 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0788 - 078F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0790 - 0797 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0798 - 079F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 07A0 - 07A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 07A8 - 07AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 07B0 - 07B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 07B8 - 07BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 07C0 - 07C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 07C8 - 07CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 07D0 - 07D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 07D8 - 07DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 07E0 - 07E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 07E8 - 07EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 07F0 - 07F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 07F8 - 07FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0800 - 0807 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0808 - 080F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0810 - 0817 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0818 - 081F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0820 - 0827 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0828 - 082F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0830 - 0837 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0838 - 083F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0840 - 0847 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0848 - 084F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0850 - 0857 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0858 - 085F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0860 - 0867 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0868 - 086F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0870 - 0877 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0878 - 087F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0880 - 0887 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0888 - 088F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0890 - 0897 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0898 - 089F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 08A0 - 08A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 08A8 - 08AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 08B0 - 08B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 08B8 - 08BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 08C0 - 08C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 08C8 - 08CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 08D0 - 08D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 08D8 - 08DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 08E0 - 08E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 08E8 - 08EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 08F0 - 08F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 08F8 - 08FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0900 - 0907 */ XML_XX, XML_CC, XML_CC, XML_CC, XML_XX, XML_BC, XML_BC, XML_BC, /* 0908 - 090F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0910 - 0917 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0918 - 091F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0920 - 0927 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0928 - 092F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0930 - 0937 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0938 - 093F */ XML_BC, XML_BC, XML_XX, XML_XX, XML_CC, XML_BC, XML_CC, XML_CC, /* 0940 - 0947 */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, /* 0948 - 094F */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_XX, XML_XX, /* 0950 - 0957 */ XML_XX, XML_CC, XML_CC, XML_CC, XML_CC, XML_XX, XML_XX, XML_XX, /* 0958 - 095F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0960 - 0967 */ XML_BC, XML_BC, XML_CC, XML_CC, XML_XX, XML_XX, XML_DI, XML_DI, /* 0968 - 096F */ XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, /* 0970 - 0977 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0978 - 097F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0980 - 0987 */ XML_XX, XML_CC, XML_CC, XML_CC, XML_XX, XML_BC, XML_BC, XML_BC, /* 0988 - 098F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_BC, /* 0990 - 0997 */ XML_BC, XML_XX, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0998 - 099F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 09A0 - 09A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 09A8 - 09AF */ XML_BC, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 09B0 - 09B7 */ XML_BC, XML_XX, XML_BC, XML_XX, XML_XX, XML_XX, XML_BC, XML_BC, /* 09B8 - 09BF */ XML_BC, XML_BC, XML_XX, XML_XX, XML_CC, XML_XX, XML_CC, XML_CC, /* 09C0 - 09C7 */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_XX, XML_XX, XML_CC, /* 09C8 - 09CF */ XML_CC, XML_XX, XML_XX, XML_CC, XML_CC, XML_CC, XML_XX, XML_XX, /* 09D0 - 09D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_CC, /* 09D8 - 09DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_BC, XML_BC, XML_XX, XML_BC, /* 09E0 - 09E7 */ XML_BC, XML_BC, XML_CC, XML_CC, XML_XX, XML_XX, XML_DI, XML_DI, /* 09E8 - 09EF */ XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, /* 09F0 - 09F7 */ XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 09F8 - 09FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0A00 - 0A07 */ XML_XX, XML_XX, XML_CC, XML_XX, XML_XX, XML_BC, XML_BC, XML_BC, /* 0A08 - 0A0F */ XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_BC, /* 0A10 - 0A17 */ XML_BC, XML_XX, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0A18 - 0A1F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0A20 - 0A27 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0A28 - 0A2F */ XML_BC, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0A30 - 0A37 */ XML_BC, XML_XX, XML_BC, XML_BC, XML_XX, XML_BC, XML_BC, XML_XX, /* 0A38 - 0A3F */ XML_BC, XML_BC, XML_XX, XML_XX, XML_CC, XML_XX, XML_CC, XML_CC, /* 0A40 - 0A47 */ XML_CC, XML_CC, XML_CC, XML_XX, XML_XX, XML_XX, XML_XX, XML_CC, /* 0A48 - 0A4F */ XML_CC, XML_XX, XML_XX, XML_CC, XML_CC, XML_CC, XML_XX, XML_XX, /* 0A50 - 0A57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0A58 - 0A5F */ XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_BC, XML_XX, /* 0A60 - 0A67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_DI, XML_DI, /* 0A68 - 0A6F */ XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, /* 0A70 - 0A77 */ XML_CC, XML_CC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, /* 0A78 - 0A7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0A80 - 0A87 */ XML_XX, XML_CC, XML_CC, XML_CC, XML_XX, XML_BC, XML_BC, XML_BC, /* 0A88 - 0A8F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_BC, XML_XX, XML_BC, /* 0A90 - 0A97 */ XML_BC, XML_BC, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0A98 - 0A9F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0AA0 - 0AA7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0AA8 - 0AAF */ XML_BC, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0AB0 - 0AB7 */ XML_BC, XML_XX, XML_BC, XML_BC, XML_XX, XML_BC, XML_BC, XML_BC, /* 0AB8 - 0ABF */ XML_BC, XML_BC, XML_XX, XML_XX, XML_CC, XML_BC, XML_CC, XML_CC, /* 0AC0 - 0AC7 */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_XX, XML_CC, /* 0AC8 - 0ACF */ XML_CC, XML_CC, XML_XX, XML_CC, XML_CC, XML_CC, XML_XX, XML_XX, /* 0AD0 - 0AD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0AD8 - 0ADF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0AE0 - 0AE7 */ XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_DI, XML_DI, /* 0AE8 - 0AEF */ XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, /* 0AF0 - 0AF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0AF8 - 0AFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0B00 - 0B07 */ XML_XX, XML_CC, XML_CC, XML_CC, XML_XX, XML_BC, XML_BC, XML_BC, /* 0B08 - 0B0F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_BC, /* 0B10 - 0B17 */ XML_BC, XML_XX, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0B18 - 0B1F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0B20 - 0B27 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0B28 - 0B2F */ XML_BC, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0B30 - 0B37 */ XML_BC, XML_XX, XML_BC, XML_BC, XML_XX, XML_XX, XML_BC, XML_BC, /* 0B38 - 0B3F */ XML_BC, XML_BC, XML_XX, XML_XX, XML_CC, XML_BC, XML_CC, XML_CC, /* 0B40 - 0B47 */ XML_CC, XML_CC, XML_CC, XML_CC, XML_XX, XML_XX, XML_XX, XML_CC, /* 0B48 - 0B4F */ XML_CC, XML_XX, XML_XX, XML_CC, XML_CC, XML_CC, XML_XX, XML_XX, /* 0B50 - 0B57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_CC, XML_CC, /* 0B58 - 0B5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_BC, XML_BC, XML_XX, XML_BC, /* 0B60 - 0B67 */ XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_DI, XML_DI, /* 0B68 - 0B6F */ XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, /* 0B70 - 0B77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0B78 - 0B7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0B80 - 0B87 */ XML_XX, XML_XX, XML_CC, XML_CC, XML_XX, XML_BC, XML_BC, XML_BC, /* 0B88 - 0B8F */ XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_BC, XML_BC, /* 0B90 - 0B97 */ XML_BC, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, /* 0B98 - 0B9F */ XML_XX, XML_BC, XML_BC, XML_XX, XML_BC, XML_XX, XML_BC, XML_BC, /* 0BA0 - 0BA7 */ XML_XX, XML_XX, XML_XX, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, /* 0BA8 - 0BAF */ XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_BC, XML_BC, /* 0BB0 - 0BB7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_BC, /* 0BB8 - 0BBF */ XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_CC, XML_CC, /* 0BC0 - 0BC7 */ XML_CC, XML_CC, XML_CC, XML_XX, XML_XX, XML_XX, XML_CC, XML_CC, /* 0BC8 - 0BCF */ XML_CC, XML_XX, XML_CC, XML_CC, XML_CC, XML_CC, XML_XX, XML_XX, /* 0BD0 - 0BD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_CC, /* 0BD8 - 0BDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0BE0 - 0BE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_DI, /* 0BE8 - 0BEF */ XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, /* 0BF0 - 0BF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0BF8 - 0BFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0C00 - 0C07 */ XML_XX, XML_CC, XML_CC, XML_CC, XML_XX, XML_BC, XML_BC, XML_BC, /* 0C08 - 0C0F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_BC, XML_BC, /* 0C10 - 0C17 */ XML_BC, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0C18 - 0C1F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0C20 - 0C27 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0C28 - 0C2F */ XML_BC, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0C30 - 0C37 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_BC, XML_BC, XML_BC, /* 0C38 - 0C3F */ XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_CC, XML_CC, /* 0C40 - 0C47 */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_XX, XML_CC, XML_CC, /* 0C48 - 0C4F */ XML_CC, XML_XX, XML_CC, XML_CC, XML_CC, XML_CC, XML_XX, XML_XX, /* 0C50 - 0C57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_CC, XML_CC, XML_XX, /* 0C58 - 0C5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0C60 - 0C67 */ XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_DI, XML_DI, /* 0C68 - 0C6F */ XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, /* 0C70 - 0C77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0C78 - 0C7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0C80 - 0C87 */ XML_XX, XML_XX, XML_CC, XML_CC, XML_XX, XML_BC, XML_BC, XML_BC, /* 0C88 - 0C8F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_BC, XML_BC, /* 0C90 - 0C97 */ XML_BC, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0C98 - 0C9F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0CA0 - 0CA7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0CA8 - 0CAF */ XML_BC, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0CB0 - 0CB7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_BC, XML_BC, XML_BC, /* 0CB8 - 0CBF */ XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_CC, XML_CC, /* 0CC0 - 0CC7 */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_XX, XML_CC, XML_CC, /* 0CC8 - 0CCF */ XML_CC, XML_XX, XML_CC, XML_CC, XML_CC, XML_CC, XML_XX, XML_XX, /* 0CD0 - 0CD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_CC, XML_CC, XML_XX, /* 0CD8 - 0CDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_BC, XML_XX, /* 0CE0 - 0CE7 */ XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_DI, XML_DI, /* 0CE8 - 0CEF */ XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, /* 0CF0 - 0CF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0CF8 - 0CFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0D00 - 0D07 */ XML_XX, XML_XX, XML_CC, XML_CC, XML_XX, XML_BC, XML_BC, XML_BC, /* 0D08 - 0D0F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_BC, XML_BC, /* 0D10 - 0D17 */ XML_BC, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0D18 - 0D1F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0D20 - 0D27 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0D28 - 0D2F */ XML_BC, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0D30 - 0D37 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0D38 - 0D3F */ XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_CC, XML_CC, /* 0D40 - 0D47 */ XML_CC, XML_CC, XML_CC, XML_CC, XML_XX, XML_XX, XML_CC, XML_CC, /* 0D48 - 0D4F */ XML_CC, XML_XX, XML_CC, XML_CC, XML_CC, XML_CC, XML_XX, XML_XX, /* 0D50 - 0D57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_CC, /* 0D58 - 0D5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0D60 - 0D67 */ XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_DI, XML_DI, /* 0D68 - 0D6F */ XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, /* 0D70 - 0D77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0D78 - 0D7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0D80 - 0D87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0D88 - 0D8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0D90 - 0D97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0D98 - 0D9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0DA0 - 0DA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0DA8 - 0DAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0DB0 - 0DB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0DB8 - 0DBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0DC0 - 0DC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0DC8 - 0DCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0DD0 - 0DD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0DD8 - 0DDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0DE0 - 0DE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0DE8 - 0DEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0DF0 - 0DF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0DF8 - 0DFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0E00 - 0E07 */ XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0E08 - 0E0F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0E10 - 0E17 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0E18 - 0E1F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0E20 - 0E27 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0E28 - 0E2F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, /* 0E30 - 0E37 */ XML_BC, XML_CC, XML_BC, XML_BC, XML_CC, XML_CC, XML_CC, XML_CC, /* 0E38 - 0E3F */ XML_CC, XML_CC, XML_CC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0E40 - 0E47 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_EX, XML_CC, /* 0E48 - 0E4F */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_XX, /* 0E50 - 0E57 */ XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, /* 0E58 - 0E5F */ XML_DI, XML_DI, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0E60 - 0E67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0E68 - 0E6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0E70 - 0E77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0E78 - 0E7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0E80 - 0E87 */ XML_XX, XML_BC, XML_BC, XML_XX, XML_BC, XML_XX, XML_XX, XML_BC, /* 0E88 - 0E8F */ XML_BC, XML_XX, XML_BC, XML_XX, XML_XX, XML_BC, XML_XX, XML_XX, /* 0E90 - 0E97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, /* 0E98 - 0E9F */ XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0EA0 - 0EA7 */ XML_XX, XML_BC, XML_BC, XML_BC, XML_XX, XML_BC, XML_XX, XML_BC, /* 0EA8 - 0EAF */ XML_XX, XML_XX, XML_BC, XML_BC, XML_XX, XML_BC, XML_BC, XML_XX, /* 0EB0 - 0EB7 */ XML_BC, XML_CC, XML_BC, XML_BC, XML_CC, XML_CC, XML_CC, XML_CC, /* 0EB8 - 0EBF */ XML_CC, XML_CC, XML_XX, XML_CC, XML_CC, XML_BC, XML_XX, XML_XX, /* 0EC0 - 0EC7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_EX, XML_XX, /* 0EC8 - 0ECF */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_XX, XML_XX, /* 0ED0 - 0ED7 */ XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, /* 0ED8 - 0EDF */ XML_DI, XML_DI, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0EE0 - 0EE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0EE8 - 0EEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0EF0 - 0EF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0EF8 - 0EFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0F00 - 0F07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0F08 - 0F0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0F10 - 0F17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0F18 - 0F1F */ XML_CC, XML_CC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0F20 - 0F27 */ XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, XML_DI, /* 0F28 - 0F2F */ XML_DI, XML_DI, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0F30 - 0F37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_CC, XML_XX, XML_CC, /* 0F38 - 0F3F */ XML_XX, XML_CC, XML_XX, XML_XX, XML_XX, XML_XX, XML_CC, XML_CC, /* 0F40 - 0F47 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0F48 - 0F4F */ XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0F50 - 0F57 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0F58 - 0F5F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0F60 - 0F67 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 0F68 - 0F6F */ XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0F70 - 0F77 */ XML_XX, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, /* 0F78 - 0F7F */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, /* 0F80 - 0F87 */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_XX, XML_CC, XML_CC, /* 0F88 - 0F8F */ XML_CC, XML_CC, XML_CC, XML_CC, XML_XX, XML_XX, XML_XX, XML_XX, /* 0F90 - 0F97 */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_XX, XML_CC, /* 0F98 - 0F9F */ XML_XX, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, /* 0FA0 - 0FA7 */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, /* 0FA8 - 0FAF */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_XX, XML_XX, /* 0FB0 - 0FB7 */ XML_XX, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, /* 0FB8 - 0FBF */ XML_XX, XML_CC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0FC0 - 0FC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0FC8 - 0FCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0FD0 - 0FD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0FD8 - 0FDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0FE0 - 0FE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0FE8 - 0FEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0FF0 - 0FF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 0FF8 - 0FFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1000 - 1007 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1008 - 100F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1010 - 1017 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1018 - 101F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1020 - 1027 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1028 - 102F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1030 - 1037 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1038 - 103F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1040 - 1047 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1048 - 104F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1050 - 1057 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1058 - 105F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1060 - 1067 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1068 - 106F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1070 - 1077 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1078 - 107F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1080 - 1087 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1088 - 108F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1090 - 1097 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1098 - 109F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 10A0 - 10A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 10A8 - 10AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 10B0 - 10B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 10B8 - 10BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 10C0 - 10C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, /* 10C8 - 10CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 10D0 - 10D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 10D8 - 10DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 10E0 - 10E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 10E8 - 10EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 10F0 - 10F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, /* 10F8 - 10FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1100 - 1107 */ XML_BC, XML_XX, XML_BC, XML_BC, XML_XX, XML_BC, XML_BC, XML_BC, /* 1108 - 110F */ XML_XX, XML_BC, XML_XX, XML_BC, XML_BC, XML_XX, XML_BC, XML_BC, /* 1110 - 1117 */ XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1118 - 111F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1120 - 1127 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1128 - 112F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1130 - 1137 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1138 - 113F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_BC, XML_XX, XML_BC, XML_XX, /* 1140 - 1147 */ XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1148 - 114F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_BC, XML_XX, XML_BC, XML_XX, /* 1150 - 1157 */ XML_BC, XML_XX, XML_XX, XML_XX, XML_BC, XML_BC, XML_XX, XML_XX, /* 1158 - 115F */ XML_XX, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_BC, /* 1160 - 1167 */ XML_BC, XML_BC, XML_XX, XML_BC, XML_XX, XML_BC, XML_XX, XML_BC, /* 1168 - 116F */ XML_XX, XML_BC, XML_XX, XML_XX, XML_XX, XML_BC, XML_BC, XML_XX, /* 1170 - 1177 */ XML_XX, XML_XX, XML_BC, XML_BC, XML_XX, XML_BC, XML_XX, XML_XX, /* 1178 - 117F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1180 - 1187 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1188 - 118F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1190 - 1197 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1198 - 119F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_BC, XML_XX, /* 11A0 - 11A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 11A8 - 11AF */ XML_BC, XML_XX, XML_XX, XML_BC, XML_XX, XML_XX, XML_BC, XML_BC, /* 11B0 - 11B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_BC, /* 11B8 - 11BF */ XML_BC, XML_XX, XML_BC, XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, /* 11C0 - 11C7 */ XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 11C8 - 11CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 11D0 - 11D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 11D8 - 11DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 11E0 - 11E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 11E8 - 11EF */ XML_XX, XML_XX, XML_XX, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, /* 11F0 - 11F7 */ XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 11F8 - 11FF */ XML_XX, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1200 - 1207 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1208 - 120F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1210 - 1217 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1218 - 121F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1220 - 1227 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1228 - 122F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1230 - 1237 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1238 - 123F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1240 - 1247 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1248 - 124F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1250 - 1257 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1258 - 125F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1260 - 1267 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1268 - 126F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1270 - 1277 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1278 - 127F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1280 - 1287 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1288 - 128F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1290 - 1297 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1298 - 129F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 12A0 - 12A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 12A8 - 12AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 12B0 - 12B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 12B8 - 12BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 12C0 - 12C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 12C8 - 12CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 12D0 - 12D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 12D8 - 12DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 12E0 - 12E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 12E8 - 12EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 12F0 - 12F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 12F8 - 12FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1300 - 1307 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1308 - 130F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1310 - 1317 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1318 - 131F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1320 - 1327 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1328 - 132F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1330 - 1337 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1338 - 133F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1340 - 1347 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1348 - 134F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1350 - 1357 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1358 - 135F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1360 - 1367 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1368 - 136F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1370 - 1377 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1378 - 137F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1380 - 1387 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1388 - 138F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1390 - 1397 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1398 - 139F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 13A0 - 13A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 13A8 - 13AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 13B0 - 13B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 13B8 - 13BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 13C0 - 13C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 13C8 - 13CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 13D0 - 13D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 13D8 - 13DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 13E0 - 13E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 13E8 - 13EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 13F0 - 13F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 13F8 - 13FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1400 - 1407 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1408 - 140F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1410 - 1417 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1418 - 141F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1420 - 1427 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1428 - 142F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1430 - 1437 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1438 - 143F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1440 - 1447 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1448 - 144F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1450 - 1457 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1458 - 145F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1460 - 1467 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1468 - 146F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1470 - 1477 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1478 - 147F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1480 - 1487 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1488 - 148F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1490 - 1497 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1498 - 149F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 14A0 - 14A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 14A8 - 14AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 14B0 - 14B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 14B8 - 14BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 14C0 - 14C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 14C8 - 14CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 14D0 - 14D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 14D8 - 14DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 14E0 - 14E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 14E8 - 14EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 14F0 - 14F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 14F8 - 14FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1500 - 1507 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1508 - 150F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1510 - 1517 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1518 - 151F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1520 - 1527 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1528 - 152F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1530 - 1537 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1538 - 153F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1540 - 1547 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1548 - 154F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1550 - 1557 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1558 - 155F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1560 - 1567 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1568 - 156F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1570 - 1577 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1578 - 157F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1580 - 1587 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1588 - 158F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1590 - 1597 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1598 - 159F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 15A0 - 15A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 15A8 - 15AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 15B0 - 15B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 15B8 - 15BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 15C0 - 15C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 15C8 - 15CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 15D0 - 15D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 15D8 - 15DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 15E0 - 15E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 15E8 - 15EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 15F0 - 15F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 15F8 - 15FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1600 - 1607 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1608 - 160F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1610 - 1617 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1618 - 161F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1620 - 1627 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1628 - 162F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1630 - 1637 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1638 - 163F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1640 - 1647 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1648 - 164F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1650 - 1657 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1658 - 165F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1660 - 1667 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1668 - 166F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1670 - 1677 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1678 - 167F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1680 - 1687 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1688 - 168F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1690 - 1697 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1698 - 169F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 16A0 - 16A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 16A8 - 16AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 16B0 - 16B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 16B8 - 16BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 16C0 - 16C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 16C8 - 16CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 16D0 - 16D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 16D8 - 16DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 16E0 - 16E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 16E8 - 16EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 16F0 - 16F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 16F8 - 16FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1700 - 1707 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1708 - 170F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1710 - 1717 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1718 - 171F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1720 - 1727 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1728 - 172F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1730 - 1737 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1738 - 173F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1740 - 1747 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1748 - 174F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1750 - 1757 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1758 - 175F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1760 - 1767 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1768 - 176F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1770 - 1777 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1778 - 177F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1780 - 1787 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1788 - 178F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1790 - 1797 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1798 - 179F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 17A0 - 17A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 17A8 - 17AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 17B0 - 17B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 17B8 - 17BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 17C0 - 17C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 17C8 - 17CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 17D0 - 17D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 17D8 - 17DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 17E0 - 17E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 17E8 - 17EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 17F0 - 17F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 17F8 - 17FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1800 - 1807 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1808 - 180F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1810 - 1817 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1818 - 181F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1820 - 1827 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1828 - 182F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1830 - 1837 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1838 - 183F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1840 - 1847 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1848 - 184F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1850 - 1857 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1858 - 185F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1860 - 1867 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1868 - 186F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1870 - 1877 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1878 - 187F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1880 - 1887 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1888 - 188F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1890 - 1897 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1898 - 189F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 18A0 - 18A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 18A8 - 18AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 18B0 - 18B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 18B8 - 18BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 18C0 - 18C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 18C8 - 18CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 18D0 - 18D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 18D8 - 18DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 18E0 - 18E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 18E8 - 18EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 18F0 - 18F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 18F8 - 18FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1900 - 1907 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1908 - 190F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1910 - 1917 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1918 - 191F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1920 - 1927 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1928 - 192F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1930 - 1937 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1938 - 193F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1940 - 1947 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1948 - 194F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1950 - 1957 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1958 - 195F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1960 - 1967 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1968 - 196F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1970 - 1977 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1978 - 197F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1980 - 1987 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1988 - 198F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1990 - 1997 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1998 - 199F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 19A0 - 19A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 19A8 - 19AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 19B0 - 19B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 19B8 - 19BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 19C0 - 19C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 19C8 - 19CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 19D0 - 19D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 19D8 - 19DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 19E0 - 19E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 19E8 - 19EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 19F0 - 19F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 19F8 - 19FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1A00 - 1A07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1A08 - 1A0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1A10 - 1A17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1A18 - 1A1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1A20 - 1A27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1A28 - 1A2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1A30 - 1A37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1A38 - 1A3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1A40 - 1A47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1A48 - 1A4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1A50 - 1A57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1A58 - 1A5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1A60 - 1A67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1A68 - 1A6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1A70 - 1A77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1A78 - 1A7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1A80 - 1A87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1A88 - 1A8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1A90 - 1A97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1A98 - 1A9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1AA0 - 1AA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1AA8 - 1AAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1AB0 - 1AB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1AB8 - 1ABF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1AC0 - 1AC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1AC8 - 1ACF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1AD0 - 1AD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1AD8 - 1ADF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1AE0 - 1AE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1AE8 - 1AEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1AF0 - 1AF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1AF8 - 1AFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1B00 - 1B07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1B08 - 1B0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1B10 - 1B17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1B18 - 1B1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1B20 - 1B27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1B28 - 1B2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1B30 - 1B37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1B38 - 1B3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1B40 - 1B47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1B48 - 1B4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1B50 - 1B57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1B58 - 1B5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1B60 - 1B67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1B68 - 1B6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1B70 - 1B77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1B78 - 1B7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1B80 - 1B87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1B88 - 1B8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1B90 - 1B97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1B98 - 1B9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1BA0 - 1BA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1BA8 - 1BAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1BB0 - 1BB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1BB8 - 1BBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1BC0 - 1BC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1BC8 - 1BCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1BD0 - 1BD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1BD8 - 1BDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1BE0 - 1BE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1BE8 - 1BEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1BF0 - 1BF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1BF8 - 1BFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1C00 - 1C07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1C08 - 1C0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1C10 - 1C17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1C18 - 1C1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1C20 - 1C27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1C28 - 1C2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1C30 - 1C37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1C38 - 1C3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1C40 - 1C47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1C48 - 1C4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1C50 - 1C57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1C58 - 1C5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1C60 - 1C67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1C68 - 1C6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1C70 - 1C77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1C78 - 1C7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1C80 - 1C87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1C88 - 1C8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1C90 - 1C97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1C98 - 1C9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1CA0 - 1CA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1CA8 - 1CAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1CB0 - 1CB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1CB8 - 1CBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1CC0 - 1CC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1CC8 - 1CCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1CD0 - 1CD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1CD8 - 1CDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1CE0 - 1CE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1CE8 - 1CEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1CF0 - 1CF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1CF8 - 1CFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1D00 - 1D07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1D08 - 1D0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1D10 - 1D17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1D18 - 1D1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1D20 - 1D27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1D28 - 1D2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1D30 - 1D37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1D38 - 1D3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1D40 - 1D47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1D48 - 1D4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1D50 - 1D57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1D58 - 1D5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1D60 - 1D67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1D68 - 1D6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1D70 - 1D77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1D78 - 1D7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1D80 - 1D87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1D88 - 1D8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1D90 - 1D97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1D98 - 1D9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1DA0 - 1DA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1DA8 - 1DAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1DB0 - 1DB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1DB8 - 1DBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1DC0 - 1DC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1DC8 - 1DCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1DD0 - 1DD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1DD8 - 1DDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1DE0 - 1DE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1DE8 - 1DEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1DF0 - 1DF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1DF8 - 1DFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1E00 - 1E07 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1E08 - 1E0F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1E10 - 1E17 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1E18 - 1E1F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1E20 - 1E27 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1E28 - 1E2F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1E30 - 1E37 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1E38 - 1E3F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1E40 - 1E47 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1E48 - 1E4F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1E50 - 1E57 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1E58 - 1E5F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1E60 - 1E67 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1E68 - 1E6F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1E70 - 1E77 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1E78 - 1E7F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1E80 - 1E87 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1E88 - 1E8F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1E90 - 1E97 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1E98 - 1E9F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, /* 1EA0 - 1EA7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1EA8 - 1EAF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1EB0 - 1EB7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1EB8 - 1EBF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1EC0 - 1EC7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1EC8 - 1ECF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1ED0 - 1ED7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1ED8 - 1EDF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1EE0 - 1EE7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1EE8 - 1EEF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1EF0 - 1EF7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1EF8 - 1EFF */ XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 1F00 - 1F07 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1F08 - 1F0F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1F10 - 1F17 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, /* 1F18 - 1F1F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, /* 1F20 - 1F27 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1F28 - 1F2F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1F30 - 1F37 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1F38 - 1F3F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1F40 - 1F47 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, /* 1F48 - 1F4F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, /* 1F50 - 1F57 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1F58 - 1F5F */ XML_XX, XML_BC, XML_XX, XML_BC, XML_XX, XML_BC, XML_XX, XML_BC, /* 1F60 - 1F67 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1F68 - 1F6F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1F70 - 1F77 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1F78 - 1F7F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, /* 1F80 - 1F87 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1F88 - 1F8F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1F90 - 1F97 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1F98 - 1F9F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1FA0 - 1FA7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1FA8 - 1FAF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1FB0 - 1FB7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_BC, XML_BC, /* 1FB8 - 1FBF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_BC, XML_XX, /* 1FC0 - 1FC7 */ XML_XX, XML_XX, XML_BC, XML_BC, XML_BC, XML_XX, XML_BC, XML_BC, /* 1FC8 - 1FCF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, /* 1FD0 - 1FD7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_BC, XML_BC, /* 1FD8 - 1FDF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, /* 1FE0 - 1FE7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 1FE8 - 1FEF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, /* 1FF0 - 1FF7 */ XML_XX, XML_XX, XML_BC, XML_BC, XML_BC, XML_XX, XML_BC, XML_BC, /* 1FF8 - 1FFF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, /* 2000 - 2007 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2008 - 200F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2010 - 2017 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2018 - 201F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2020 - 2027 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2028 - 202F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2030 - 2037 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2038 - 203F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2040 - 2047 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2048 - 204F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2050 - 2057 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2058 - 205F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2060 - 2067 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2068 - 206F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2070 - 2077 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2078 - 207F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2080 - 2087 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2088 - 208F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2090 - 2097 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2098 - 209F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 20A0 - 20A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 20A8 - 20AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 20B0 - 20B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 20B8 - 20BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 20C0 - 20C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 20C8 - 20CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 20D0 - 20D7 */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, /* 20D8 - 20DF */ XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_XX, XML_XX, XML_XX, /* 20E0 - 20E7 */ XML_XX, XML_CC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 20E8 - 20EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 20F0 - 20F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 20F8 - 20FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2100 - 2107 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2108 - 210F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2110 - 2117 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2118 - 211F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2120 - 2127 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_BC, XML_XX, /* 2128 - 212F */ XML_XX, XML_XX, XML_BC, XML_BC, XML_XX, XML_XX, XML_BC, XML_XX, /* 2130 - 2137 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2138 - 213F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2140 - 2147 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2148 - 214F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2150 - 2157 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2158 - 215F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2160 - 2167 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2168 - 216F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2170 - 2177 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2178 - 217F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2180 - 2187 */ XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2188 - 218F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2190 - 2197 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2198 - 219F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 21A0 - 21A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 21A8 - 21AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 21B0 - 21B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 21B8 - 21BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 21C0 - 21C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 21C8 - 21CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 21D0 - 21D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 21D8 - 21DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 21E0 - 21E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 21E8 - 21EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 21F0 - 21F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 21F8 - 21FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2200 - 2207 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2208 - 220F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2210 - 2217 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2218 - 221F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2220 - 2227 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2228 - 222F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2230 - 2237 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2238 - 223F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2240 - 2247 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2248 - 224F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2250 - 2257 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2258 - 225F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2260 - 2267 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2268 - 226F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2270 - 2277 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2278 - 227F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2280 - 2287 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2288 - 228F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2290 - 2297 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2298 - 229F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 22A0 - 22A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 22A8 - 22AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 22B0 - 22B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 22B8 - 22BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 22C0 - 22C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 22C8 - 22CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 22D0 - 22D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 22D8 - 22DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 22E0 - 22E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 22E8 - 22EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 22F0 - 22F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 22F8 - 22FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2300 - 2307 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2308 - 230F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2310 - 2317 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2318 - 231F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2320 - 2327 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2328 - 232F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2330 - 2337 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2338 - 233F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2340 - 2347 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2348 - 234F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2350 - 2357 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2358 - 235F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2360 - 2367 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2368 - 236F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2370 - 2377 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2378 - 237F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2380 - 2387 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2388 - 238F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2390 - 2397 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2398 - 239F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 23A0 - 23A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 23A8 - 23AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 23B0 - 23B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 23B8 - 23BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 23C0 - 23C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 23C8 - 23CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 23D0 - 23D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 23D8 - 23DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 23E0 - 23E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 23E8 - 23EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 23F0 - 23F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 23F8 - 23FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2400 - 2407 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2408 - 240F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2410 - 2417 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2418 - 241F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2420 - 2427 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2428 - 242F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2430 - 2437 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2438 - 243F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2440 - 2447 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2448 - 244F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2450 - 2457 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2458 - 245F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2460 - 2467 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2468 - 246F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2470 - 2477 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2478 - 247F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2480 - 2487 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2488 - 248F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2490 - 2497 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2498 - 249F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 24A0 - 24A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 24A8 - 24AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 24B0 - 24B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 24B8 - 24BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 24C0 - 24C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 24C8 - 24CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 24D0 - 24D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 24D8 - 24DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 24E0 - 24E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 24E8 - 24EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 24F0 - 24F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 24F8 - 24FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2500 - 2507 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2508 - 250F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2510 - 2517 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2518 - 251F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2520 - 2527 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2528 - 252F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2530 - 2537 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2538 - 253F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2540 - 2547 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2548 - 254F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2550 - 2557 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2558 - 255F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2560 - 2567 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2568 - 256F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2570 - 2577 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2578 - 257F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2580 - 2587 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2588 - 258F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2590 - 2597 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2598 - 259F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 25A0 - 25A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 25A8 - 25AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 25B0 - 25B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 25B8 - 25BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 25C0 - 25C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 25C8 - 25CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 25D0 - 25D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 25D8 - 25DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 25E0 - 25E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 25E8 - 25EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 25F0 - 25F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 25F8 - 25FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2600 - 2607 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2608 - 260F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2610 - 2617 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2618 - 261F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2620 - 2627 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2628 - 262F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2630 - 2637 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2638 - 263F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2640 - 2647 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2648 - 264F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2650 - 2657 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2658 - 265F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2660 - 2667 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2668 - 266F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2670 - 2677 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2678 - 267F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2680 - 2687 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2688 - 268F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2690 - 2697 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2698 - 269F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 26A0 - 26A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 26A8 - 26AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 26B0 - 26B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 26B8 - 26BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 26C0 - 26C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 26C8 - 26CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 26D0 - 26D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 26D8 - 26DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 26E0 - 26E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 26E8 - 26EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 26F0 - 26F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 26F8 - 26FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2700 - 2707 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2708 - 270F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2710 - 2717 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2718 - 271F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2720 - 2727 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2728 - 272F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2730 - 2737 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2738 - 273F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2740 - 2747 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2748 - 274F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2750 - 2757 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2758 - 275F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2760 - 2767 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2768 - 276F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2770 - 2777 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2778 - 277F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2780 - 2787 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2788 - 278F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2790 - 2797 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2798 - 279F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 27A0 - 27A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 27A8 - 27AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 27B0 - 27B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 27B8 - 27BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 27C0 - 27C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 27C8 - 27CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 27D0 - 27D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 27D8 - 27DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 27E0 - 27E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 27E8 - 27EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 27F0 - 27F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 27F8 - 27FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2800 - 2807 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2808 - 280F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2810 - 2817 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2818 - 281F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2820 - 2827 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2828 - 282F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2830 - 2837 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2838 - 283F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2840 - 2847 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2848 - 284F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2850 - 2857 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2858 - 285F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2860 - 2867 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2868 - 286F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2870 - 2877 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2878 - 287F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2880 - 2887 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2888 - 288F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2890 - 2897 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2898 - 289F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 28A0 - 28A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 28A8 - 28AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 28B0 - 28B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 28B8 - 28BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 28C0 - 28C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 28C8 - 28CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 28D0 - 28D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 28D8 - 28DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 28E0 - 28E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 28E8 - 28EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 28F0 - 28F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 28F8 - 28FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2900 - 2907 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2908 - 290F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2910 - 2917 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2918 - 291F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2920 - 2927 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2928 - 292F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2930 - 2937 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2938 - 293F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2940 - 2947 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2948 - 294F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2950 - 2957 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2958 - 295F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2960 - 2967 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2968 - 296F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2970 - 2977 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2978 - 297F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2980 - 2987 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2988 - 298F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2990 - 2997 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2998 - 299F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 29A0 - 29A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 29A8 - 29AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 29B0 - 29B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 29B8 - 29BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 29C0 - 29C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 29C8 - 29CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 29D0 - 29D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 29D8 - 29DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 29E0 - 29E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 29E8 - 29EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 29F0 - 29F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 29F8 - 29FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2A00 - 2A07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2A08 - 2A0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2A10 - 2A17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2A18 - 2A1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2A20 - 2A27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2A28 - 2A2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2A30 - 2A37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2A38 - 2A3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2A40 - 2A47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2A48 - 2A4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2A50 - 2A57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2A58 - 2A5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2A60 - 2A67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2A68 - 2A6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2A70 - 2A77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2A78 - 2A7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2A80 - 2A87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2A88 - 2A8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2A90 - 2A97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2A98 - 2A9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2AA0 - 2AA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2AA8 - 2AAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2AB0 - 2AB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2AB8 - 2ABF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2AC0 - 2AC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2AC8 - 2ACF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2AD0 - 2AD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2AD8 - 2ADF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2AE0 - 2AE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2AE8 - 2AEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2AF0 - 2AF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2AF8 - 2AFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2B00 - 2B07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2B08 - 2B0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2B10 - 2B17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2B18 - 2B1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2B20 - 2B27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2B28 - 2B2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2B30 - 2B37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2B38 - 2B3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2B40 - 2B47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2B48 - 2B4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2B50 - 2B57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2B58 - 2B5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2B60 - 2B67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2B68 - 2B6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2B70 - 2B77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2B78 - 2B7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2B80 - 2B87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2B88 - 2B8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2B90 - 2B97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2B98 - 2B9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2BA0 - 2BA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2BA8 - 2BAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2BB0 - 2BB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2BB8 - 2BBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2BC0 - 2BC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2BC8 - 2BCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2BD0 - 2BD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2BD8 - 2BDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2BE0 - 2BE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2BE8 - 2BEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2BF0 - 2BF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2BF8 - 2BFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2C00 - 2C07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2C08 - 2C0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2C10 - 2C17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2C18 - 2C1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2C20 - 2C27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2C28 - 2C2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2C30 - 2C37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2C38 - 2C3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2C40 - 2C47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2C48 - 2C4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2C50 - 2C57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2C58 - 2C5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2C60 - 2C67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2C68 - 2C6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2C70 - 2C77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2C78 - 2C7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2C80 - 2C87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2C88 - 2C8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2C90 - 2C97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2C98 - 2C9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2CA0 - 2CA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2CA8 - 2CAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2CB0 - 2CB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2CB8 - 2CBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2CC0 - 2CC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2CC8 - 2CCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2CD0 - 2CD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2CD8 - 2CDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2CE0 - 2CE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2CE8 - 2CEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2CF0 - 2CF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2CF8 - 2CFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2D00 - 2D07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2D08 - 2D0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2D10 - 2D17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2D18 - 2D1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2D20 - 2D27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2D28 - 2D2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2D30 - 2D37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2D38 - 2D3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2D40 - 2D47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2D48 - 2D4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2D50 - 2D57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2D58 - 2D5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2D60 - 2D67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2D68 - 2D6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2D70 - 2D77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2D78 - 2D7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2D80 - 2D87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2D88 - 2D8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2D90 - 2D97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2D98 - 2D9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2DA0 - 2DA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2DA8 - 2DAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2DB0 - 2DB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2DB8 - 2DBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2DC0 - 2DC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2DC8 - 2DCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2DD0 - 2DD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2DD8 - 2DDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2DE0 - 2DE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2DE8 - 2DEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2DF0 - 2DF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2DF8 - 2DFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2E00 - 2E07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2E08 - 2E0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2E10 - 2E17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2E18 - 2E1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2E20 - 2E27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2E28 - 2E2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2E30 - 2E37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2E38 - 2E3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2E40 - 2E47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2E48 - 2E4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2E50 - 2E57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2E58 - 2E5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2E60 - 2E67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2E68 - 2E6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2E70 - 2E77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2E78 - 2E7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2E80 - 2E87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2E88 - 2E8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2E90 - 2E97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2E98 - 2E9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2EA0 - 2EA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2EA8 - 2EAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2EB0 - 2EB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2EB8 - 2EBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2EC0 - 2EC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2EC8 - 2ECF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2ED0 - 2ED7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2ED8 - 2EDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2EE0 - 2EE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2EE8 - 2EEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2EF0 - 2EF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2EF8 - 2EFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2F00 - 2F07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2F08 - 2F0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2F10 - 2F17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2F18 - 2F1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2F20 - 2F27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2F28 - 2F2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2F30 - 2F37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2F38 - 2F3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2F40 - 2F47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2F48 - 2F4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2F50 - 2F57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2F58 - 2F5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2F60 - 2F67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2F68 - 2F6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2F70 - 2F77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2F78 - 2F7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2F80 - 2F87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2F88 - 2F8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2F90 - 2F97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2F98 - 2F9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2FA0 - 2FA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2FA8 - 2FAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2FB0 - 2FB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2FB8 - 2FBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2FC0 - 2FC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2FC8 - 2FCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2FD0 - 2FD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2FD8 - 2FDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2FE0 - 2FE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2FE8 - 2FEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2FF0 - 2FF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 2FF8 - 2FFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3000 - 3007 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_EX, XML_XX, XML_ID, /* 3008 - 300F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3010 - 3017 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3018 - 301F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3020 - 3027 */ XML_XX, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 3028 - 302F */ XML_ID, XML_ID, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, XML_CC, /* 3030 - 3037 */ XML_XX, XML_EX, XML_EX, XML_EX, XML_EX, XML_EX, XML_XX, XML_XX, /* 3038 - 303F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3040 - 3047 */ XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 3048 - 304F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 3050 - 3057 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 3058 - 305F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 3060 - 3067 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 3068 - 306F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 3070 - 3077 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 3078 - 307F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 3080 - 3087 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 3088 - 308F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 3090 - 3097 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, /* 3098 - 309F */ XML_XX, XML_CC, XML_CC, XML_XX, XML_XX, XML_EX, XML_EX, XML_XX, /* 30A0 - 30A7 */ XML_XX, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 30A8 - 30AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 30B0 - 30B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 30B8 - 30BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 30C0 - 30C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 30C8 - 30CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 30D0 - 30D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 30D8 - 30DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 30E0 - 30E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 30E8 - 30EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 30F0 - 30F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 30F8 - 30FF */ XML_BC, XML_BC, XML_BC, XML_XX, XML_EX, XML_EX, XML_EX, XML_XX, /* 3100 - 3107 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_BC, XML_BC, XML_BC, /* 3108 - 310F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 3110 - 3117 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 3118 - 311F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 3120 - 3127 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* 3128 - 312F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, /* 3130 - 3137 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3138 - 313F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3140 - 3147 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3148 - 314F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3150 - 3157 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3158 - 315F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3160 - 3167 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3168 - 316F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3170 - 3177 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3178 - 317F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3180 - 3187 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3188 - 318F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3190 - 3197 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3198 - 319F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 31A0 - 31A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 31A8 - 31AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 31B0 - 31B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 31B8 - 31BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 31C0 - 31C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 31C8 - 31CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 31D0 - 31D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 31D8 - 31DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 31E0 - 31E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 31E8 - 31EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 31F0 - 31F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 31F8 - 31FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3200 - 3207 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3208 - 320F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3210 - 3217 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3218 - 321F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3220 - 3227 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3228 - 322F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3230 - 3237 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3238 - 323F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3240 - 3247 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3248 - 324F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3250 - 3257 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3258 - 325F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3260 - 3267 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3268 - 326F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3270 - 3277 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3278 - 327F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3280 - 3287 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3288 - 328F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3290 - 3297 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3298 - 329F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 32A0 - 32A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 32A8 - 32AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 32B0 - 32B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 32B8 - 32BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 32C0 - 32C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 32C8 - 32CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 32D0 - 32D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 32D8 - 32DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 32E0 - 32E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 32E8 - 32EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 32F0 - 32F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 32F8 - 32FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3300 - 3307 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3308 - 330F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3310 - 3317 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3318 - 331F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3320 - 3327 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3328 - 332F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3330 - 3337 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3338 - 333F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3340 - 3347 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3348 - 334F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3350 - 3357 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3358 - 335F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3360 - 3367 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3368 - 336F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3370 - 3377 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3378 - 337F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3380 - 3387 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3388 - 338F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3390 - 3397 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3398 - 339F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 33A0 - 33A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 33A8 - 33AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 33B0 - 33B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 33B8 - 33BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 33C0 - 33C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 33C8 - 33CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 33D0 - 33D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 33D8 - 33DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 33E0 - 33E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 33E8 - 33EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 33F0 - 33F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 33F8 - 33FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3400 - 3407 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3408 - 340F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3410 - 3417 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3418 - 341F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3420 - 3427 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3428 - 342F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3430 - 3437 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3438 - 343F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3440 - 3447 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3448 - 344F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3450 - 3457 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3458 - 345F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3460 - 3467 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3468 - 346F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3470 - 3477 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3478 - 347F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3480 - 3487 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3488 - 348F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3490 - 3497 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3498 - 349F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 34A0 - 34A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 34A8 - 34AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 34B0 - 34B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 34B8 - 34BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 34C0 - 34C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 34C8 - 34CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 34D0 - 34D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 34D8 - 34DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 34E0 - 34E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 34E8 - 34EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 34F0 - 34F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 34F8 - 34FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3500 - 3507 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3508 - 350F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3510 - 3517 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3518 - 351F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3520 - 3527 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3528 - 352F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3530 - 3537 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3538 - 353F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3540 - 3547 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3548 - 354F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3550 - 3557 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3558 - 355F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3560 - 3567 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3568 - 356F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3570 - 3577 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3578 - 357F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3580 - 3587 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3588 - 358F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3590 - 3597 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3598 - 359F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 35A0 - 35A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 35A8 - 35AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 35B0 - 35B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 35B8 - 35BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 35C0 - 35C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 35C8 - 35CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 35D0 - 35D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 35D8 - 35DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 35E0 - 35E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 35E8 - 35EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 35F0 - 35F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 35F8 - 35FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3600 - 3607 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3608 - 360F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3610 - 3617 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3618 - 361F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3620 - 3627 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3628 - 362F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3630 - 3637 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3638 - 363F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3640 - 3647 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3648 - 364F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3650 - 3657 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3658 - 365F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3660 - 3667 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3668 - 366F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3670 - 3677 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3678 - 367F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3680 - 3687 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3688 - 368F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3690 - 3697 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3698 - 369F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 36A0 - 36A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 36A8 - 36AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 36B0 - 36B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 36B8 - 36BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 36C0 - 36C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 36C8 - 36CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 36D0 - 36D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 36D8 - 36DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 36E0 - 36E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 36E8 - 36EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 36F0 - 36F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 36F8 - 36FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3700 - 3707 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3708 - 370F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3710 - 3717 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3718 - 371F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3720 - 3727 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3728 - 372F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3730 - 3737 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3738 - 373F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3740 - 3747 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3748 - 374F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3750 - 3757 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3758 - 375F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3760 - 3767 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3768 - 376F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3770 - 3777 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3778 - 377F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3780 - 3787 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3788 - 378F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3790 - 3797 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3798 - 379F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 37A0 - 37A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 37A8 - 37AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 37B0 - 37B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 37B8 - 37BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 37C0 - 37C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 37C8 - 37CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 37D0 - 37D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 37D8 - 37DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 37E0 - 37E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 37E8 - 37EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 37F0 - 37F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 37F8 - 37FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3800 - 3807 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3808 - 380F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3810 - 3817 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3818 - 381F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3820 - 3827 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3828 - 382F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3830 - 3837 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3838 - 383F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3840 - 3847 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3848 - 384F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3850 - 3857 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3858 - 385F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3860 - 3867 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3868 - 386F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3870 - 3877 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3878 - 387F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3880 - 3887 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3888 - 388F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3890 - 3897 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3898 - 389F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 38A0 - 38A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 38A8 - 38AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 38B0 - 38B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 38B8 - 38BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 38C0 - 38C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 38C8 - 38CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 38D0 - 38D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 38D8 - 38DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 38E0 - 38E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 38E8 - 38EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 38F0 - 38F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 38F8 - 38FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3900 - 3907 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3908 - 390F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3910 - 3917 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3918 - 391F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3920 - 3927 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3928 - 392F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3930 - 3937 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3938 - 393F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3940 - 3947 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3948 - 394F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3950 - 3957 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3958 - 395F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3960 - 3967 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3968 - 396F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3970 - 3977 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3978 - 397F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3980 - 3987 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3988 - 398F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3990 - 3997 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3998 - 399F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 39A0 - 39A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 39A8 - 39AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 39B0 - 39B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 39B8 - 39BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 39C0 - 39C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 39C8 - 39CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 39D0 - 39D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 39D8 - 39DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 39E0 - 39E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 39E8 - 39EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 39F0 - 39F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 39F8 - 39FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3A00 - 3A07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3A08 - 3A0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3A10 - 3A17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3A18 - 3A1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3A20 - 3A27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3A28 - 3A2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3A30 - 3A37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3A38 - 3A3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3A40 - 3A47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3A48 - 3A4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3A50 - 3A57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3A58 - 3A5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3A60 - 3A67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3A68 - 3A6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3A70 - 3A77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3A78 - 3A7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3A80 - 3A87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3A88 - 3A8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3A90 - 3A97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3A98 - 3A9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3AA0 - 3AA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3AA8 - 3AAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3AB0 - 3AB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3AB8 - 3ABF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3AC0 - 3AC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3AC8 - 3ACF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3AD0 - 3AD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3AD8 - 3ADF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3AE0 - 3AE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3AE8 - 3AEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3AF0 - 3AF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3AF8 - 3AFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3B00 - 3B07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3B08 - 3B0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3B10 - 3B17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3B18 - 3B1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3B20 - 3B27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3B28 - 3B2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3B30 - 3B37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3B38 - 3B3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3B40 - 3B47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3B48 - 3B4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3B50 - 3B57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3B58 - 3B5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3B60 - 3B67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3B68 - 3B6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3B70 - 3B77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3B78 - 3B7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3B80 - 3B87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3B88 - 3B8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3B90 - 3B97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3B98 - 3B9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3BA0 - 3BA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3BA8 - 3BAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3BB0 - 3BB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3BB8 - 3BBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3BC0 - 3BC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3BC8 - 3BCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3BD0 - 3BD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3BD8 - 3BDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3BE0 - 3BE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3BE8 - 3BEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3BF0 - 3BF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3BF8 - 3BFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3C00 - 3C07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3C08 - 3C0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3C10 - 3C17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3C18 - 3C1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3C20 - 3C27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3C28 - 3C2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3C30 - 3C37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3C38 - 3C3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3C40 - 3C47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3C48 - 3C4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3C50 - 3C57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3C58 - 3C5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3C60 - 3C67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3C68 - 3C6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3C70 - 3C77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3C78 - 3C7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3C80 - 3C87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3C88 - 3C8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3C90 - 3C97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3C98 - 3C9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3CA0 - 3CA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3CA8 - 3CAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3CB0 - 3CB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3CB8 - 3CBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3CC0 - 3CC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3CC8 - 3CCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3CD0 - 3CD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3CD8 - 3CDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3CE0 - 3CE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3CE8 - 3CEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3CF0 - 3CF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3CF8 - 3CFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3D00 - 3D07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3D08 - 3D0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3D10 - 3D17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3D18 - 3D1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3D20 - 3D27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3D28 - 3D2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3D30 - 3D37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3D38 - 3D3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3D40 - 3D47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3D48 - 3D4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3D50 - 3D57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3D58 - 3D5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3D60 - 3D67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3D68 - 3D6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3D70 - 3D77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3D78 - 3D7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3D80 - 3D87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3D88 - 3D8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3D90 - 3D97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3D98 - 3D9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3DA0 - 3DA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3DA8 - 3DAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3DB0 - 3DB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3DB8 - 3DBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3DC0 - 3DC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3DC8 - 3DCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3DD0 - 3DD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3DD8 - 3DDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3DE0 - 3DE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3DE8 - 3DEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3DF0 - 3DF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3DF8 - 3DFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3E00 - 3E07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3E08 - 3E0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3E10 - 3E17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3E18 - 3E1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3E20 - 3E27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3E28 - 3E2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3E30 - 3E37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3E38 - 3E3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3E40 - 3E47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3E48 - 3E4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3E50 - 3E57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3E58 - 3E5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3E60 - 3E67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3E68 - 3E6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3E70 - 3E77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3E78 - 3E7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3E80 - 3E87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3E88 - 3E8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3E90 - 3E97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3E98 - 3E9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3EA0 - 3EA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3EA8 - 3EAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3EB0 - 3EB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3EB8 - 3EBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3EC0 - 3EC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3EC8 - 3ECF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3ED0 - 3ED7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3ED8 - 3EDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3EE0 - 3EE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3EE8 - 3EEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3EF0 - 3EF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3EF8 - 3EFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3F00 - 3F07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3F08 - 3F0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3F10 - 3F17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3F18 - 3F1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3F20 - 3F27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3F28 - 3F2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3F30 - 3F37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3F38 - 3F3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3F40 - 3F47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3F48 - 3F4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3F50 - 3F57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3F58 - 3F5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3F60 - 3F67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3F68 - 3F6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3F70 - 3F77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3F78 - 3F7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3F80 - 3F87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3F88 - 3F8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3F90 - 3F97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3F98 - 3F9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3FA0 - 3FA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3FA8 - 3FAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3FB0 - 3FB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3FB8 - 3FBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3FC0 - 3FC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3FC8 - 3FCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3FD0 - 3FD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3FD8 - 3FDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3FE0 - 3FE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3FE8 - 3FEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3FF0 - 3FF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 3FF8 - 3FFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4000 - 4007 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4008 - 400F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4010 - 4017 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4018 - 401F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4020 - 4027 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4028 - 402F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4030 - 4037 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4038 - 403F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4040 - 4047 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4048 - 404F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4050 - 4057 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4058 - 405F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4060 - 4067 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4068 - 406F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4070 - 4077 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4078 - 407F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4080 - 4087 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4088 - 408F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4090 - 4097 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4098 - 409F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 40A0 - 40A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 40A8 - 40AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 40B0 - 40B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 40B8 - 40BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 40C0 - 40C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 40C8 - 40CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 40D0 - 40D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 40D8 - 40DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 40E0 - 40E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 40E8 - 40EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 40F0 - 40F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 40F8 - 40FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4100 - 4107 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4108 - 410F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4110 - 4117 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4118 - 411F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4120 - 4127 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4128 - 412F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4130 - 4137 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4138 - 413F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4140 - 4147 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4148 - 414F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4150 - 4157 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4158 - 415F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4160 - 4167 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4168 - 416F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4170 - 4177 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4178 - 417F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4180 - 4187 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4188 - 418F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4190 - 4197 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4198 - 419F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 41A0 - 41A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 41A8 - 41AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 41B0 - 41B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 41B8 - 41BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 41C0 - 41C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 41C8 - 41CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 41D0 - 41D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 41D8 - 41DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 41E0 - 41E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 41E8 - 41EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 41F0 - 41F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 41F8 - 41FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4200 - 4207 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4208 - 420F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4210 - 4217 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4218 - 421F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4220 - 4227 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4228 - 422F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4230 - 4237 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4238 - 423F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4240 - 4247 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4248 - 424F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4250 - 4257 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4258 - 425F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4260 - 4267 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4268 - 426F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4270 - 4277 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4278 - 427F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4280 - 4287 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4288 - 428F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4290 - 4297 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4298 - 429F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 42A0 - 42A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 42A8 - 42AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 42B0 - 42B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 42B8 - 42BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 42C0 - 42C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 42C8 - 42CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 42D0 - 42D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 42D8 - 42DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 42E0 - 42E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 42E8 - 42EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 42F0 - 42F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 42F8 - 42FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4300 - 4307 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4308 - 430F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4310 - 4317 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4318 - 431F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4320 - 4327 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4328 - 432F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4330 - 4337 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4338 - 433F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4340 - 4347 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4348 - 434F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4350 - 4357 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4358 - 435F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4360 - 4367 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4368 - 436F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4370 - 4377 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4378 - 437F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4380 - 4387 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4388 - 438F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4390 - 4397 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4398 - 439F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 43A0 - 43A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 43A8 - 43AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 43B0 - 43B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 43B8 - 43BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 43C0 - 43C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 43C8 - 43CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 43D0 - 43D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 43D8 - 43DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 43E0 - 43E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 43E8 - 43EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 43F0 - 43F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 43F8 - 43FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4400 - 4407 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4408 - 440F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4410 - 4417 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4418 - 441F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4420 - 4427 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4428 - 442F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4430 - 4437 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4438 - 443F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4440 - 4447 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4448 - 444F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4450 - 4457 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4458 - 445F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4460 - 4467 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4468 - 446F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4470 - 4477 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4478 - 447F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4480 - 4487 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4488 - 448F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4490 - 4497 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4498 - 449F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 44A0 - 44A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 44A8 - 44AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 44B0 - 44B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 44B8 - 44BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 44C0 - 44C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 44C8 - 44CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 44D0 - 44D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 44D8 - 44DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 44E0 - 44E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 44E8 - 44EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 44F0 - 44F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 44F8 - 44FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4500 - 4507 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4508 - 450F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4510 - 4517 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4518 - 451F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4520 - 4527 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4528 - 452F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4530 - 4537 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4538 - 453F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4540 - 4547 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4548 - 454F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4550 - 4557 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4558 - 455F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4560 - 4567 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4568 - 456F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4570 - 4577 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4578 - 457F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4580 - 4587 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4588 - 458F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4590 - 4597 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4598 - 459F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 45A0 - 45A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 45A8 - 45AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 45B0 - 45B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 45B8 - 45BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 45C0 - 45C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 45C8 - 45CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 45D0 - 45D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 45D8 - 45DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 45E0 - 45E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 45E8 - 45EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 45F0 - 45F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 45F8 - 45FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4600 - 4607 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4608 - 460F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4610 - 4617 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4618 - 461F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4620 - 4627 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4628 - 462F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4630 - 4637 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4638 - 463F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4640 - 4647 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4648 - 464F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4650 - 4657 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4658 - 465F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4660 - 4667 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4668 - 466F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4670 - 4677 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4678 - 467F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4680 - 4687 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4688 - 468F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4690 - 4697 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4698 - 469F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 46A0 - 46A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 46A8 - 46AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 46B0 - 46B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 46B8 - 46BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 46C0 - 46C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 46C8 - 46CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 46D0 - 46D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 46D8 - 46DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 46E0 - 46E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 46E8 - 46EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 46F0 - 46F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 46F8 - 46FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4700 - 4707 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4708 - 470F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4710 - 4717 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4718 - 471F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4720 - 4727 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4728 - 472F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4730 - 4737 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4738 - 473F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4740 - 4747 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4748 - 474F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4750 - 4757 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4758 - 475F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4760 - 4767 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4768 - 476F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4770 - 4777 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4778 - 477F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4780 - 4787 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4788 - 478F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4790 - 4797 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4798 - 479F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 47A0 - 47A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 47A8 - 47AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 47B0 - 47B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 47B8 - 47BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 47C0 - 47C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 47C8 - 47CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 47D0 - 47D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 47D8 - 47DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 47E0 - 47E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 47E8 - 47EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 47F0 - 47F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 47F8 - 47FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4800 - 4807 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4808 - 480F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4810 - 4817 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4818 - 481F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4820 - 4827 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4828 - 482F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4830 - 4837 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4838 - 483F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4840 - 4847 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4848 - 484F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4850 - 4857 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4858 - 485F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4860 - 4867 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4868 - 486F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4870 - 4877 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4878 - 487F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4880 - 4887 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4888 - 488F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4890 - 4897 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4898 - 489F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 48A0 - 48A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 48A8 - 48AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 48B0 - 48B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 48B8 - 48BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 48C0 - 48C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 48C8 - 48CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 48D0 - 48D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 48D8 - 48DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 48E0 - 48E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 48E8 - 48EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 48F0 - 48F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 48F8 - 48FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4900 - 4907 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4908 - 490F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4910 - 4917 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4918 - 491F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4920 - 4927 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4928 - 492F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4930 - 4937 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4938 - 493F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4940 - 4947 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4948 - 494F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4950 - 4957 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4958 - 495F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4960 - 4967 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4968 - 496F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4970 - 4977 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4978 - 497F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4980 - 4987 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4988 - 498F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4990 - 4997 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4998 - 499F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 49A0 - 49A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 49A8 - 49AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 49B0 - 49B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 49B8 - 49BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 49C0 - 49C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 49C8 - 49CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 49D0 - 49D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 49D8 - 49DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 49E0 - 49E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 49E8 - 49EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 49F0 - 49F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 49F8 - 49FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4A00 - 4A07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4A08 - 4A0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4A10 - 4A17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4A18 - 4A1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4A20 - 4A27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4A28 - 4A2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4A30 - 4A37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4A38 - 4A3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4A40 - 4A47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4A48 - 4A4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4A50 - 4A57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4A58 - 4A5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4A60 - 4A67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4A68 - 4A6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4A70 - 4A77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4A78 - 4A7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4A80 - 4A87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4A88 - 4A8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4A90 - 4A97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4A98 - 4A9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4AA0 - 4AA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4AA8 - 4AAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4AB0 - 4AB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4AB8 - 4ABF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4AC0 - 4AC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4AC8 - 4ACF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4AD0 - 4AD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4AD8 - 4ADF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4AE0 - 4AE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4AE8 - 4AEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4AF0 - 4AF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4AF8 - 4AFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4B00 - 4B07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4B08 - 4B0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4B10 - 4B17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4B18 - 4B1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4B20 - 4B27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4B28 - 4B2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4B30 - 4B37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4B38 - 4B3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4B40 - 4B47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4B48 - 4B4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4B50 - 4B57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4B58 - 4B5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4B60 - 4B67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4B68 - 4B6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4B70 - 4B77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4B78 - 4B7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4B80 - 4B87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4B88 - 4B8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4B90 - 4B97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4B98 - 4B9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4BA0 - 4BA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4BA8 - 4BAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4BB0 - 4BB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4BB8 - 4BBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4BC0 - 4BC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4BC8 - 4BCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4BD0 - 4BD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4BD8 - 4BDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4BE0 - 4BE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4BE8 - 4BEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4BF0 - 4BF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4BF8 - 4BFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4C00 - 4C07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4C08 - 4C0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4C10 - 4C17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4C18 - 4C1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4C20 - 4C27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4C28 - 4C2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4C30 - 4C37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4C38 - 4C3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4C40 - 4C47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4C48 - 4C4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4C50 - 4C57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4C58 - 4C5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4C60 - 4C67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4C68 - 4C6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4C70 - 4C77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4C78 - 4C7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4C80 - 4C87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4C88 - 4C8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4C90 - 4C97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4C98 - 4C9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4CA0 - 4CA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4CA8 - 4CAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4CB0 - 4CB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4CB8 - 4CBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4CC0 - 4CC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4CC8 - 4CCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4CD0 - 4CD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4CD8 - 4CDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4CE0 - 4CE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4CE8 - 4CEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4CF0 - 4CF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4CF8 - 4CFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4D00 - 4D07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4D08 - 4D0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4D10 - 4D17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4D18 - 4D1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4D20 - 4D27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4D28 - 4D2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4D30 - 4D37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4D38 - 4D3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4D40 - 4D47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4D48 - 4D4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4D50 - 4D57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4D58 - 4D5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4D60 - 4D67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4D68 - 4D6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4D70 - 4D77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4D78 - 4D7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4D80 - 4D87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4D88 - 4D8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4D90 - 4D97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4D98 - 4D9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4DA0 - 4DA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4DA8 - 4DAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4DB0 - 4DB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4DB8 - 4DBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4DC0 - 4DC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4DC8 - 4DCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4DD0 - 4DD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4DD8 - 4DDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4DE0 - 4DE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4DE8 - 4DEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4DF0 - 4DF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4DF8 - 4DFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 4E00 - 4E07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4E08 - 4E0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4E10 - 4E17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4E18 - 4E1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4E20 - 4E27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4E28 - 4E2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4E30 - 4E37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4E38 - 4E3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4E40 - 4E47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4E48 - 4E4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4E50 - 4E57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4E58 - 4E5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4E60 - 4E67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4E68 - 4E6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4E70 - 4E77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4E78 - 4E7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4E80 - 4E87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4E88 - 4E8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4E90 - 4E97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4E98 - 4E9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4EA0 - 4EA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4EA8 - 4EAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4EB0 - 4EB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4EB8 - 4EBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4EC0 - 4EC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4EC8 - 4ECF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4ED0 - 4ED7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4ED8 - 4EDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4EE0 - 4EE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4EE8 - 4EEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4EF0 - 4EF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4EF8 - 4EFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4F00 - 4F07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4F08 - 4F0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4F10 - 4F17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4F18 - 4F1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4F20 - 4F27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4F28 - 4F2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4F30 - 4F37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4F38 - 4F3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4F40 - 4F47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4F48 - 4F4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4F50 - 4F57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4F58 - 4F5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4F60 - 4F67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4F68 - 4F6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4F70 - 4F77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4F78 - 4F7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4F80 - 4F87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4F88 - 4F8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4F90 - 4F97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4F98 - 4F9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4FA0 - 4FA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4FA8 - 4FAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4FB0 - 4FB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4FB8 - 4FBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4FC0 - 4FC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4FC8 - 4FCF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4FD0 - 4FD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4FD8 - 4FDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4FE0 - 4FE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4FE8 - 4FEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4FF0 - 4FF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 4FF8 - 4FFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5000 - 5007 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5008 - 500F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5010 - 5017 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5018 - 501F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5020 - 5027 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5028 - 502F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5030 - 5037 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5038 - 503F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5040 - 5047 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5048 - 504F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5050 - 5057 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5058 - 505F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5060 - 5067 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5068 - 506F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5070 - 5077 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5078 - 507F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5080 - 5087 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5088 - 508F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5090 - 5097 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5098 - 509F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 50A0 - 50A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 50A8 - 50AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 50B0 - 50B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 50B8 - 50BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 50C0 - 50C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 50C8 - 50CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 50D0 - 50D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 50D8 - 50DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 50E0 - 50E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 50E8 - 50EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 50F0 - 50F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 50F8 - 50FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5100 - 5107 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5108 - 510F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5110 - 5117 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5118 - 511F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5120 - 5127 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5128 - 512F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5130 - 5137 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5138 - 513F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5140 - 5147 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5148 - 514F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5150 - 5157 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5158 - 515F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5160 - 5167 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5168 - 516F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5170 - 5177 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5178 - 517F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5180 - 5187 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5188 - 518F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5190 - 5197 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5198 - 519F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 51A0 - 51A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 51A8 - 51AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 51B0 - 51B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 51B8 - 51BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 51C0 - 51C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 51C8 - 51CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 51D0 - 51D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 51D8 - 51DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 51E0 - 51E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 51E8 - 51EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 51F0 - 51F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 51F8 - 51FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5200 - 5207 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5208 - 520F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5210 - 5217 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5218 - 521F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5220 - 5227 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5228 - 522F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5230 - 5237 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5238 - 523F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5240 - 5247 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5248 - 524F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5250 - 5257 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5258 - 525F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5260 - 5267 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5268 - 526F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5270 - 5277 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5278 - 527F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5280 - 5287 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5288 - 528F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5290 - 5297 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5298 - 529F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 52A0 - 52A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 52A8 - 52AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 52B0 - 52B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 52B8 - 52BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 52C0 - 52C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 52C8 - 52CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 52D0 - 52D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 52D8 - 52DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 52E0 - 52E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 52E8 - 52EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 52F0 - 52F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 52F8 - 52FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5300 - 5307 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5308 - 530F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5310 - 5317 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5318 - 531F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5320 - 5327 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5328 - 532F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5330 - 5337 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5338 - 533F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5340 - 5347 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5348 - 534F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5350 - 5357 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5358 - 535F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5360 - 5367 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5368 - 536F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5370 - 5377 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5378 - 537F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5380 - 5387 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5388 - 538F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5390 - 5397 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5398 - 539F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 53A0 - 53A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 53A8 - 53AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 53B0 - 53B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 53B8 - 53BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 53C0 - 53C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 53C8 - 53CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 53D0 - 53D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 53D8 - 53DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 53E0 - 53E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 53E8 - 53EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 53F0 - 53F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 53F8 - 53FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5400 - 5407 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5408 - 540F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5410 - 5417 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5418 - 541F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5420 - 5427 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5428 - 542F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5430 - 5437 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5438 - 543F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5440 - 5447 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5448 - 544F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5450 - 5457 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5458 - 545F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5460 - 5467 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5468 - 546F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5470 - 5477 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5478 - 547F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5480 - 5487 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5488 - 548F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5490 - 5497 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5498 - 549F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 54A0 - 54A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 54A8 - 54AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 54B0 - 54B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 54B8 - 54BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 54C0 - 54C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 54C8 - 54CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 54D0 - 54D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 54D8 - 54DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 54E0 - 54E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 54E8 - 54EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 54F0 - 54F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 54F8 - 54FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5500 - 5507 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5508 - 550F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5510 - 5517 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5518 - 551F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5520 - 5527 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5528 - 552F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5530 - 5537 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5538 - 553F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5540 - 5547 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5548 - 554F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5550 - 5557 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5558 - 555F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5560 - 5567 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5568 - 556F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5570 - 5577 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5578 - 557F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5580 - 5587 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5588 - 558F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5590 - 5597 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5598 - 559F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 55A0 - 55A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 55A8 - 55AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 55B0 - 55B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 55B8 - 55BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 55C0 - 55C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 55C8 - 55CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 55D0 - 55D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 55D8 - 55DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 55E0 - 55E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 55E8 - 55EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 55F0 - 55F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 55F8 - 55FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5600 - 5607 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5608 - 560F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5610 - 5617 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5618 - 561F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5620 - 5627 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5628 - 562F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5630 - 5637 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5638 - 563F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5640 - 5647 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5648 - 564F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5650 - 5657 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5658 - 565F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5660 - 5667 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5668 - 566F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5670 - 5677 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5678 - 567F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5680 - 5687 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5688 - 568F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5690 - 5697 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5698 - 569F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 56A0 - 56A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 56A8 - 56AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 56B0 - 56B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 56B8 - 56BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 56C0 - 56C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 56C8 - 56CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 56D0 - 56D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 56D8 - 56DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 56E0 - 56E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 56E8 - 56EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 56F0 - 56F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 56F8 - 56FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5700 - 5707 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5708 - 570F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5710 - 5717 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5718 - 571F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5720 - 5727 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5728 - 572F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5730 - 5737 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5738 - 573F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5740 - 5747 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5748 - 574F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5750 - 5757 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5758 - 575F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5760 - 5767 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5768 - 576F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5770 - 5777 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5778 - 577F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5780 - 5787 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5788 - 578F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5790 - 5797 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5798 - 579F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 57A0 - 57A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 57A8 - 57AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 57B0 - 57B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 57B8 - 57BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 57C0 - 57C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 57C8 - 57CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 57D0 - 57D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 57D8 - 57DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 57E0 - 57E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 57E8 - 57EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 57F0 - 57F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 57F8 - 57FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5800 - 5807 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5808 - 580F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5810 - 5817 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5818 - 581F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5820 - 5827 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5828 - 582F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5830 - 5837 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5838 - 583F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5840 - 5847 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5848 - 584F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5850 - 5857 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5858 - 585F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5860 - 5867 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5868 - 586F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5870 - 5877 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5878 - 587F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5880 - 5887 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5888 - 588F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5890 - 5897 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5898 - 589F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 58A0 - 58A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 58A8 - 58AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 58B0 - 58B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 58B8 - 58BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 58C0 - 58C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 58C8 - 58CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 58D0 - 58D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 58D8 - 58DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 58E0 - 58E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 58E8 - 58EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 58F0 - 58F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 58F8 - 58FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5900 - 5907 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5908 - 590F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5910 - 5917 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5918 - 591F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5920 - 5927 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5928 - 592F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5930 - 5937 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5938 - 593F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5940 - 5947 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5948 - 594F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5950 - 5957 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5958 - 595F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5960 - 5967 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5968 - 596F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5970 - 5977 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5978 - 597F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5980 - 5987 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5988 - 598F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5990 - 5997 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5998 - 599F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 59A0 - 59A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 59A8 - 59AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 59B0 - 59B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 59B8 - 59BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 59C0 - 59C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 59C8 - 59CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 59D0 - 59D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 59D8 - 59DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 59E0 - 59E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 59E8 - 59EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 59F0 - 59F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 59F8 - 59FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5A00 - 5A07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5A08 - 5A0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5A10 - 5A17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5A18 - 5A1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5A20 - 5A27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5A28 - 5A2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5A30 - 5A37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5A38 - 5A3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5A40 - 5A47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5A48 - 5A4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5A50 - 5A57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5A58 - 5A5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5A60 - 5A67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5A68 - 5A6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5A70 - 5A77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5A78 - 5A7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5A80 - 5A87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5A88 - 5A8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5A90 - 5A97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5A98 - 5A9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5AA0 - 5AA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5AA8 - 5AAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5AB0 - 5AB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5AB8 - 5ABF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5AC0 - 5AC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5AC8 - 5ACF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5AD0 - 5AD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5AD8 - 5ADF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5AE0 - 5AE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5AE8 - 5AEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5AF0 - 5AF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5AF8 - 5AFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5B00 - 5B07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5B08 - 5B0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5B10 - 5B17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5B18 - 5B1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5B20 - 5B27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5B28 - 5B2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5B30 - 5B37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5B38 - 5B3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5B40 - 5B47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5B48 - 5B4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5B50 - 5B57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5B58 - 5B5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5B60 - 5B67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5B68 - 5B6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5B70 - 5B77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5B78 - 5B7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5B80 - 5B87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5B88 - 5B8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5B90 - 5B97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5B98 - 5B9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5BA0 - 5BA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5BA8 - 5BAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5BB0 - 5BB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5BB8 - 5BBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5BC0 - 5BC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5BC8 - 5BCF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5BD0 - 5BD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5BD8 - 5BDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5BE0 - 5BE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5BE8 - 5BEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5BF0 - 5BF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5BF8 - 5BFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5C00 - 5C07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5C08 - 5C0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5C10 - 5C17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5C18 - 5C1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5C20 - 5C27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5C28 - 5C2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5C30 - 5C37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5C38 - 5C3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5C40 - 5C47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5C48 - 5C4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5C50 - 5C57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5C58 - 5C5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5C60 - 5C67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5C68 - 5C6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5C70 - 5C77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5C78 - 5C7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5C80 - 5C87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5C88 - 5C8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5C90 - 5C97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5C98 - 5C9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5CA0 - 5CA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5CA8 - 5CAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5CB0 - 5CB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5CB8 - 5CBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5CC0 - 5CC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5CC8 - 5CCF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5CD0 - 5CD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5CD8 - 5CDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5CE0 - 5CE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5CE8 - 5CEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5CF0 - 5CF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5CF8 - 5CFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5D00 - 5D07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5D08 - 5D0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5D10 - 5D17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5D18 - 5D1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5D20 - 5D27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5D28 - 5D2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5D30 - 5D37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5D38 - 5D3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5D40 - 5D47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5D48 - 5D4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5D50 - 5D57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5D58 - 5D5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5D60 - 5D67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5D68 - 5D6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5D70 - 5D77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5D78 - 5D7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5D80 - 5D87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5D88 - 5D8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5D90 - 5D97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5D98 - 5D9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5DA0 - 5DA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5DA8 - 5DAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5DB0 - 5DB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5DB8 - 5DBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5DC0 - 5DC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5DC8 - 5DCF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5DD0 - 5DD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5DD8 - 5DDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5DE0 - 5DE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5DE8 - 5DEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5DF0 - 5DF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5DF8 - 5DFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5E00 - 5E07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5E08 - 5E0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5E10 - 5E17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5E18 - 5E1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5E20 - 5E27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5E28 - 5E2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5E30 - 5E37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5E38 - 5E3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5E40 - 5E47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5E48 - 5E4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5E50 - 5E57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5E58 - 5E5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5E60 - 5E67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5E68 - 5E6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5E70 - 5E77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5E78 - 5E7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5E80 - 5E87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5E88 - 5E8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5E90 - 5E97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5E98 - 5E9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5EA0 - 5EA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5EA8 - 5EAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5EB0 - 5EB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5EB8 - 5EBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5EC0 - 5EC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5EC8 - 5ECF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5ED0 - 5ED7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5ED8 - 5EDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5EE0 - 5EE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5EE8 - 5EEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5EF0 - 5EF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5EF8 - 5EFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5F00 - 5F07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5F08 - 5F0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5F10 - 5F17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5F18 - 5F1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5F20 - 5F27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5F28 - 5F2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5F30 - 5F37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5F38 - 5F3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5F40 - 5F47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5F48 - 5F4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5F50 - 5F57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5F58 - 5F5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5F60 - 5F67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5F68 - 5F6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5F70 - 5F77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5F78 - 5F7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5F80 - 5F87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5F88 - 5F8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5F90 - 5F97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5F98 - 5F9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5FA0 - 5FA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5FA8 - 5FAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5FB0 - 5FB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5FB8 - 5FBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5FC0 - 5FC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5FC8 - 5FCF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5FD0 - 5FD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5FD8 - 5FDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5FE0 - 5FE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5FE8 - 5FEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5FF0 - 5FF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 5FF8 - 5FFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6000 - 6007 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6008 - 600F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6010 - 6017 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6018 - 601F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6020 - 6027 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6028 - 602F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6030 - 6037 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6038 - 603F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6040 - 6047 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6048 - 604F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6050 - 6057 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6058 - 605F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6060 - 6067 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6068 - 606F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6070 - 6077 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6078 - 607F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6080 - 6087 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6088 - 608F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6090 - 6097 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6098 - 609F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 60A0 - 60A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 60A8 - 60AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 60B0 - 60B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 60B8 - 60BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 60C0 - 60C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 60C8 - 60CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 60D0 - 60D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 60D8 - 60DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 60E0 - 60E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 60E8 - 60EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 60F0 - 60F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 60F8 - 60FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6100 - 6107 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6108 - 610F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6110 - 6117 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6118 - 611F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6120 - 6127 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6128 - 612F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6130 - 6137 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6138 - 613F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6140 - 6147 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6148 - 614F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6150 - 6157 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6158 - 615F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6160 - 6167 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6168 - 616F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6170 - 6177 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6178 - 617F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6180 - 6187 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6188 - 618F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6190 - 6197 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6198 - 619F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 61A0 - 61A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 61A8 - 61AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 61B0 - 61B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 61B8 - 61BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 61C0 - 61C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 61C8 - 61CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 61D0 - 61D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 61D8 - 61DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 61E0 - 61E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 61E8 - 61EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 61F0 - 61F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 61F8 - 61FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6200 - 6207 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6208 - 620F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6210 - 6217 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6218 - 621F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6220 - 6227 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6228 - 622F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6230 - 6237 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6238 - 623F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6240 - 6247 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6248 - 624F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6250 - 6257 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6258 - 625F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6260 - 6267 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6268 - 626F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6270 - 6277 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6278 - 627F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6280 - 6287 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6288 - 628F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6290 - 6297 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6298 - 629F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 62A0 - 62A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 62A8 - 62AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 62B0 - 62B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 62B8 - 62BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 62C0 - 62C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 62C8 - 62CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 62D0 - 62D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 62D8 - 62DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 62E0 - 62E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 62E8 - 62EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 62F0 - 62F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 62F8 - 62FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6300 - 6307 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6308 - 630F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6310 - 6317 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6318 - 631F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6320 - 6327 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6328 - 632F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6330 - 6337 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6338 - 633F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6340 - 6347 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6348 - 634F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6350 - 6357 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6358 - 635F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6360 - 6367 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6368 - 636F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6370 - 6377 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6378 - 637F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6380 - 6387 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6388 - 638F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6390 - 6397 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6398 - 639F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 63A0 - 63A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 63A8 - 63AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 63B0 - 63B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 63B8 - 63BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 63C0 - 63C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 63C8 - 63CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 63D0 - 63D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 63D8 - 63DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 63E0 - 63E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 63E8 - 63EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 63F0 - 63F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 63F8 - 63FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6400 - 6407 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6408 - 640F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6410 - 6417 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6418 - 641F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6420 - 6427 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6428 - 642F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6430 - 6437 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6438 - 643F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6440 - 6447 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6448 - 644F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6450 - 6457 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6458 - 645F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6460 - 6467 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6468 - 646F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6470 - 6477 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6478 - 647F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6480 - 6487 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6488 - 648F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6490 - 6497 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6498 - 649F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 64A0 - 64A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 64A8 - 64AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 64B0 - 64B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 64B8 - 64BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 64C0 - 64C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 64C8 - 64CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 64D0 - 64D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 64D8 - 64DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 64E0 - 64E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 64E8 - 64EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 64F0 - 64F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 64F8 - 64FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6500 - 6507 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6508 - 650F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6510 - 6517 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6518 - 651F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6520 - 6527 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6528 - 652F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6530 - 6537 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6538 - 653F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6540 - 6547 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6548 - 654F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6550 - 6557 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6558 - 655F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6560 - 6567 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6568 - 656F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6570 - 6577 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6578 - 657F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6580 - 6587 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6588 - 658F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6590 - 6597 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6598 - 659F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 65A0 - 65A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 65A8 - 65AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 65B0 - 65B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 65B8 - 65BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 65C0 - 65C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 65C8 - 65CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 65D0 - 65D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 65D8 - 65DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 65E0 - 65E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 65E8 - 65EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 65F0 - 65F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 65F8 - 65FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6600 - 6607 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6608 - 660F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6610 - 6617 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6618 - 661F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6620 - 6627 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6628 - 662F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6630 - 6637 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6638 - 663F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6640 - 6647 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6648 - 664F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6650 - 6657 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6658 - 665F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6660 - 6667 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6668 - 666F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6670 - 6677 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6678 - 667F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6680 - 6687 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6688 - 668F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6690 - 6697 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6698 - 669F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 66A0 - 66A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 66A8 - 66AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 66B0 - 66B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 66B8 - 66BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 66C0 - 66C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 66C8 - 66CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 66D0 - 66D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 66D8 - 66DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 66E0 - 66E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 66E8 - 66EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 66F0 - 66F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 66F8 - 66FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6700 - 6707 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6708 - 670F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6710 - 6717 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6718 - 671F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6720 - 6727 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6728 - 672F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6730 - 6737 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6738 - 673F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6740 - 6747 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6748 - 674F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6750 - 6757 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6758 - 675F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6760 - 6767 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6768 - 676F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6770 - 6777 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6778 - 677F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6780 - 6787 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6788 - 678F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6790 - 6797 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6798 - 679F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 67A0 - 67A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 67A8 - 67AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 67B0 - 67B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 67B8 - 67BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 67C0 - 67C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 67C8 - 67CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 67D0 - 67D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 67D8 - 67DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 67E0 - 67E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 67E8 - 67EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 67F0 - 67F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 67F8 - 67FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6800 - 6807 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6808 - 680F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6810 - 6817 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6818 - 681F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6820 - 6827 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6828 - 682F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6830 - 6837 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6838 - 683F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6840 - 6847 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6848 - 684F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6850 - 6857 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6858 - 685F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6860 - 6867 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6868 - 686F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6870 - 6877 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6878 - 687F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6880 - 6887 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6888 - 688F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6890 - 6897 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6898 - 689F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 68A0 - 68A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 68A8 - 68AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 68B0 - 68B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 68B8 - 68BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 68C0 - 68C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 68C8 - 68CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 68D0 - 68D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 68D8 - 68DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 68E0 - 68E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 68E8 - 68EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 68F0 - 68F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 68F8 - 68FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6900 - 6907 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6908 - 690F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6910 - 6917 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6918 - 691F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6920 - 6927 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6928 - 692F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6930 - 6937 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6938 - 693F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6940 - 6947 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6948 - 694F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6950 - 6957 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6958 - 695F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6960 - 6967 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6968 - 696F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6970 - 6977 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6978 - 697F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6980 - 6987 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6988 - 698F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6990 - 6997 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6998 - 699F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 69A0 - 69A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 69A8 - 69AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 69B0 - 69B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 69B8 - 69BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 69C0 - 69C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 69C8 - 69CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 69D0 - 69D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 69D8 - 69DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 69E0 - 69E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 69E8 - 69EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 69F0 - 69F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 69F8 - 69FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6A00 - 6A07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6A08 - 6A0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6A10 - 6A17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6A18 - 6A1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6A20 - 6A27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6A28 - 6A2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6A30 - 6A37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6A38 - 6A3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6A40 - 6A47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6A48 - 6A4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6A50 - 6A57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6A58 - 6A5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6A60 - 6A67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6A68 - 6A6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6A70 - 6A77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6A78 - 6A7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6A80 - 6A87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6A88 - 6A8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6A90 - 6A97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6A98 - 6A9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6AA0 - 6AA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6AA8 - 6AAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6AB0 - 6AB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6AB8 - 6ABF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6AC0 - 6AC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6AC8 - 6ACF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6AD0 - 6AD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6AD8 - 6ADF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6AE0 - 6AE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6AE8 - 6AEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6AF0 - 6AF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6AF8 - 6AFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6B00 - 6B07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6B08 - 6B0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6B10 - 6B17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6B18 - 6B1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6B20 - 6B27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6B28 - 6B2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6B30 - 6B37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6B38 - 6B3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6B40 - 6B47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6B48 - 6B4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6B50 - 6B57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6B58 - 6B5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6B60 - 6B67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6B68 - 6B6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6B70 - 6B77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6B78 - 6B7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6B80 - 6B87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6B88 - 6B8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6B90 - 6B97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6B98 - 6B9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6BA0 - 6BA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6BA8 - 6BAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6BB0 - 6BB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6BB8 - 6BBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6BC0 - 6BC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6BC8 - 6BCF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6BD0 - 6BD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6BD8 - 6BDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6BE0 - 6BE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6BE8 - 6BEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6BF0 - 6BF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6BF8 - 6BFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6C00 - 6C07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6C08 - 6C0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6C10 - 6C17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6C18 - 6C1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6C20 - 6C27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6C28 - 6C2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6C30 - 6C37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6C38 - 6C3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6C40 - 6C47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6C48 - 6C4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6C50 - 6C57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6C58 - 6C5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6C60 - 6C67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6C68 - 6C6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6C70 - 6C77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6C78 - 6C7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6C80 - 6C87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6C88 - 6C8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6C90 - 6C97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6C98 - 6C9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6CA0 - 6CA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6CA8 - 6CAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6CB0 - 6CB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6CB8 - 6CBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6CC0 - 6CC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6CC8 - 6CCF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6CD0 - 6CD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6CD8 - 6CDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6CE0 - 6CE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6CE8 - 6CEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6CF0 - 6CF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6CF8 - 6CFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6D00 - 6D07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6D08 - 6D0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6D10 - 6D17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6D18 - 6D1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6D20 - 6D27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6D28 - 6D2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6D30 - 6D37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6D38 - 6D3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6D40 - 6D47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6D48 - 6D4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6D50 - 6D57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6D58 - 6D5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6D60 - 6D67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6D68 - 6D6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6D70 - 6D77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6D78 - 6D7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6D80 - 6D87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6D88 - 6D8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6D90 - 6D97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6D98 - 6D9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6DA0 - 6DA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6DA8 - 6DAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6DB0 - 6DB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6DB8 - 6DBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6DC0 - 6DC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6DC8 - 6DCF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6DD0 - 6DD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6DD8 - 6DDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6DE0 - 6DE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6DE8 - 6DEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6DF0 - 6DF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6DF8 - 6DFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6E00 - 6E07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6E08 - 6E0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6E10 - 6E17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6E18 - 6E1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6E20 - 6E27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6E28 - 6E2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6E30 - 6E37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6E38 - 6E3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6E40 - 6E47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6E48 - 6E4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6E50 - 6E57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6E58 - 6E5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6E60 - 6E67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6E68 - 6E6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6E70 - 6E77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6E78 - 6E7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6E80 - 6E87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6E88 - 6E8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6E90 - 6E97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6E98 - 6E9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6EA0 - 6EA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6EA8 - 6EAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6EB0 - 6EB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6EB8 - 6EBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6EC0 - 6EC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6EC8 - 6ECF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6ED0 - 6ED7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6ED8 - 6EDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6EE0 - 6EE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6EE8 - 6EEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6EF0 - 6EF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6EF8 - 6EFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6F00 - 6F07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6F08 - 6F0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6F10 - 6F17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6F18 - 6F1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6F20 - 6F27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6F28 - 6F2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6F30 - 6F37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6F38 - 6F3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6F40 - 6F47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6F48 - 6F4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6F50 - 6F57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6F58 - 6F5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6F60 - 6F67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6F68 - 6F6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6F70 - 6F77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6F78 - 6F7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6F80 - 6F87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6F88 - 6F8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6F90 - 6F97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6F98 - 6F9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6FA0 - 6FA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6FA8 - 6FAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6FB0 - 6FB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6FB8 - 6FBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6FC0 - 6FC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6FC8 - 6FCF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6FD0 - 6FD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6FD8 - 6FDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6FE0 - 6FE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6FE8 - 6FEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6FF0 - 6FF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 6FF8 - 6FFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7000 - 7007 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7008 - 700F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7010 - 7017 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7018 - 701F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7020 - 7027 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7028 - 702F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7030 - 7037 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7038 - 703F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7040 - 7047 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7048 - 704F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7050 - 7057 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7058 - 705F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7060 - 7067 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7068 - 706F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7070 - 7077 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7078 - 707F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7080 - 7087 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7088 - 708F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7090 - 7097 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7098 - 709F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 70A0 - 70A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 70A8 - 70AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 70B0 - 70B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 70B8 - 70BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 70C0 - 70C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 70C8 - 70CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 70D0 - 70D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 70D8 - 70DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 70E0 - 70E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 70E8 - 70EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 70F0 - 70F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 70F8 - 70FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7100 - 7107 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7108 - 710F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7110 - 7117 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7118 - 711F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7120 - 7127 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7128 - 712F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7130 - 7137 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7138 - 713F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7140 - 7147 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7148 - 714F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7150 - 7157 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7158 - 715F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7160 - 7167 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7168 - 716F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7170 - 7177 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7178 - 717F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7180 - 7187 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7188 - 718F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7190 - 7197 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7198 - 719F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 71A0 - 71A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 71A8 - 71AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 71B0 - 71B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 71B8 - 71BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 71C0 - 71C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 71C8 - 71CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 71D0 - 71D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 71D8 - 71DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 71E0 - 71E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 71E8 - 71EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 71F0 - 71F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 71F8 - 71FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7200 - 7207 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7208 - 720F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7210 - 7217 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7218 - 721F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7220 - 7227 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7228 - 722F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7230 - 7237 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7238 - 723F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7240 - 7247 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7248 - 724F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7250 - 7257 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7258 - 725F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7260 - 7267 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7268 - 726F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7270 - 7277 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7278 - 727F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7280 - 7287 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7288 - 728F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7290 - 7297 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7298 - 729F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 72A0 - 72A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 72A8 - 72AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 72B0 - 72B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 72B8 - 72BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 72C0 - 72C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 72C8 - 72CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 72D0 - 72D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 72D8 - 72DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 72E0 - 72E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 72E8 - 72EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 72F0 - 72F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 72F8 - 72FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7300 - 7307 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7308 - 730F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7310 - 7317 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7318 - 731F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7320 - 7327 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7328 - 732F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7330 - 7337 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7338 - 733F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7340 - 7347 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7348 - 734F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7350 - 7357 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7358 - 735F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7360 - 7367 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7368 - 736F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7370 - 7377 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7378 - 737F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7380 - 7387 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7388 - 738F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7390 - 7397 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7398 - 739F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 73A0 - 73A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 73A8 - 73AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 73B0 - 73B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 73B8 - 73BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 73C0 - 73C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 73C8 - 73CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 73D0 - 73D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 73D8 - 73DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 73E0 - 73E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 73E8 - 73EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 73F0 - 73F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 73F8 - 73FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7400 - 7407 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7408 - 740F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7410 - 7417 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7418 - 741F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7420 - 7427 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7428 - 742F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7430 - 7437 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7438 - 743F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7440 - 7447 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7448 - 744F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7450 - 7457 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7458 - 745F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7460 - 7467 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7468 - 746F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7470 - 7477 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7478 - 747F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7480 - 7487 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7488 - 748F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7490 - 7497 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7498 - 749F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 74A0 - 74A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 74A8 - 74AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 74B0 - 74B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 74B8 - 74BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 74C0 - 74C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 74C8 - 74CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 74D0 - 74D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 74D8 - 74DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 74E0 - 74E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 74E8 - 74EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 74F0 - 74F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 74F8 - 74FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7500 - 7507 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7508 - 750F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7510 - 7517 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7518 - 751F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7520 - 7527 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7528 - 752F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7530 - 7537 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7538 - 753F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7540 - 7547 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7548 - 754F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7550 - 7557 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7558 - 755F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7560 - 7567 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7568 - 756F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7570 - 7577 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7578 - 757F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7580 - 7587 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7588 - 758F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7590 - 7597 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7598 - 759F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 75A0 - 75A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 75A8 - 75AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 75B0 - 75B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 75B8 - 75BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 75C0 - 75C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 75C8 - 75CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 75D0 - 75D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 75D8 - 75DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 75E0 - 75E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 75E8 - 75EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 75F0 - 75F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 75F8 - 75FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7600 - 7607 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7608 - 760F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7610 - 7617 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7618 - 761F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7620 - 7627 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7628 - 762F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7630 - 7637 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7638 - 763F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7640 - 7647 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7648 - 764F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7650 - 7657 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7658 - 765F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7660 - 7667 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7668 - 766F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7670 - 7677 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7678 - 767F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7680 - 7687 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7688 - 768F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7690 - 7697 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7698 - 769F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 76A0 - 76A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 76A8 - 76AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 76B0 - 76B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 76B8 - 76BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 76C0 - 76C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 76C8 - 76CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 76D0 - 76D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 76D8 - 76DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 76E0 - 76E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 76E8 - 76EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 76F0 - 76F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 76F8 - 76FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7700 - 7707 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7708 - 770F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7710 - 7717 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7718 - 771F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7720 - 7727 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7728 - 772F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7730 - 7737 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7738 - 773F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7740 - 7747 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7748 - 774F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7750 - 7757 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7758 - 775F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7760 - 7767 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7768 - 776F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7770 - 7777 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7778 - 777F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7780 - 7787 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7788 - 778F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7790 - 7797 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7798 - 779F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 77A0 - 77A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 77A8 - 77AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 77B0 - 77B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 77B8 - 77BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 77C0 - 77C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 77C8 - 77CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 77D0 - 77D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 77D8 - 77DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 77E0 - 77E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 77E8 - 77EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 77F0 - 77F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 77F8 - 77FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7800 - 7807 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7808 - 780F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7810 - 7817 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7818 - 781F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7820 - 7827 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7828 - 782F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7830 - 7837 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7838 - 783F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7840 - 7847 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7848 - 784F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7850 - 7857 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7858 - 785F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7860 - 7867 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7868 - 786F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7870 - 7877 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7878 - 787F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7880 - 7887 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7888 - 788F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7890 - 7897 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7898 - 789F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 78A0 - 78A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 78A8 - 78AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 78B0 - 78B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 78B8 - 78BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 78C0 - 78C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 78C8 - 78CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 78D0 - 78D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 78D8 - 78DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 78E0 - 78E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 78E8 - 78EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 78F0 - 78F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 78F8 - 78FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7900 - 7907 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7908 - 790F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7910 - 7917 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7918 - 791F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7920 - 7927 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7928 - 792F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7930 - 7937 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7938 - 793F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7940 - 7947 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7948 - 794F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7950 - 7957 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7958 - 795F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7960 - 7967 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7968 - 796F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7970 - 7977 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7978 - 797F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7980 - 7987 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7988 - 798F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7990 - 7997 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7998 - 799F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 79A0 - 79A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 79A8 - 79AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 79B0 - 79B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 79B8 - 79BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 79C0 - 79C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 79C8 - 79CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 79D0 - 79D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 79D8 - 79DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 79E0 - 79E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 79E8 - 79EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 79F0 - 79F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 79F8 - 79FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7A00 - 7A07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7A08 - 7A0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7A10 - 7A17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7A18 - 7A1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7A20 - 7A27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7A28 - 7A2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7A30 - 7A37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7A38 - 7A3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7A40 - 7A47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7A48 - 7A4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7A50 - 7A57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7A58 - 7A5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7A60 - 7A67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7A68 - 7A6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7A70 - 7A77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7A78 - 7A7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7A80 - 7A87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7A88 - 7A8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7A90 - 7A97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7A98 - 7A9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7AA0 - 7AA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7AA8 - 7AAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7AB0 - 7AB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7AB8 - 7ABF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7AC0 - 7AC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7AC8 - 7ACF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7AD0 - 7AD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7AD8 - 7ADF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7AE0 - 7AE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7AE8 - 7AEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7AF0 - 7AF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7AF8 - 7AFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7B00 - 7B07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7B08 - 7B0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7B10 - 7B17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7B18 - 7B1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7B20 - 7B27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7B28 - 7B2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7B30 - 7B37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7B38 - 7B3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7B40 - 7B47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7B48 - 7B4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7B50 - 7B57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7B58 - 7B5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7B60 - 7B67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7B68 - 7B6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7B70 - 7B77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7B78 - 7B7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7B80 - 7B87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7B88 - 7B8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7B90 - 7B97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7B98 - 7B9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7BA0 - 7BA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7BA8 - 7BAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7BB0 - 7BB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7BB8 - 7BBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7BC0 - 7BC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7BC8 - 7BCF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7BD0 - 7BD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7BD8 - 7BDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7BE0 - 7BE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7BE8 - 7BEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7BF0 - 7BF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7BF8 - 7BFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7C00 - 7C07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7C08 - 7C0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7C10 - 7C17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7C18 - 7C1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7C20 - 7C27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7C28 - 7C2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7C30 - 7C37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7C38 - 7C3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7C40 - 7C47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7C48 - 7C4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7C50 - 7C57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7C58 - 7C5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7C60 - 7C67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7C68 - 7C6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7C70 - 7C77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7C78 - 7C7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7C80 - 7C87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7C88 - 7C8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7C90 - 7C97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7C98 - 7C9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7CA0 - 7CA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7CA8 - 7CAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7CB0 - 7CB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7CB8 - 7CBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7CC0 - 7CC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7CC8 - 7CCF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7CD0 - 7CD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7CD8 - 7CDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7CE0 - 7CE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7CE8 - 7CEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7CF0 - 7CF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7CF8 - 7CFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7D00 - 7D07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7D08 - 7D0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7D10 - 7D17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7D18 - 7D1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7D20 - 7D27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7D28 - 7D2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7D30 - 7D37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7D38 - 7D3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7D40 - 7D47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7D48 - 7D4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7D50 - 7D57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7D58 - 7D5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7D60 - 7D67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7D68 - 7D6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7D70 - 7D77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7D78 - 7D7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7D80 - 7D87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7D88 - 7D8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7D90 - 7D97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7D98 - 7D9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7DA0 - 7DA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7DA8 - 7DAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7DB0 - 7DB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7DB8 - 7DBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7DC0 - 7DC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7DC8 - 7DCF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7DD0 - 7DD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7DD8 - 7DDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7DE0 - 7DE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7DE8 - 7DEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7DF0 - 7DF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7DF8 - 7DFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7E00 - 7E07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7E08 - 7E0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7E10 - 7E17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7E18 - 7E1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7E20 - 7E27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7E28 - 7E2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7E30 - 7E37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7E38 - 7E3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7E40 - 7E47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7E48 - 7E4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7E50 - 7E57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7E58 - 7E5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7E60 - 7E67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7E68 - 7E6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7E70 - 7E77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7E78 - 7E7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7E80 - 7E87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7E88 - 7E8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7E90 - 7E97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7E98 - 7E9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7EA0 - 7EA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7EA8 - 7EAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7EB0 - 7EB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7EB8 - 7EBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7EC0 - 7EC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7EC8 - 7ECF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7ED0 - 7ED7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7ED8 - 7EDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7EE0 - 7EE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7EE8 - 7EEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7EF0 - 7EF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7EF8 - 7EFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7F00 - 7F07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7F08 - 7F0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7F10 - 7F17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7F18 - 7F1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7F20 - 7F27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7F28 - 7F2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7F30 - 7F37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7F38 - 7F3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7F40 - 7F47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7F48 - 7F4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7F50 - 7F57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7F58 - 7F5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7F60 - 7F67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7F68 - 7F6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7F70 - 7F77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7F78 - 7F7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7F80 - 7F87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7F88 - 7F8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7F90 - 7F97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7F98 - 7F9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7FA0 - 7FA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7FA8 - 7FAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7FB0 - 7FB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7FB8 - 7FBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7FC0 - 7FC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7FC8 - 7FCF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7FD0 - 7FD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7FD8 - 7FDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7FE0 - 7FE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7FE8 - 7FEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7FF0 - 7FF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 7FF8 - 7FFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8000 - 8007 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8008 - 800F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8010 - 8017 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8018 - 801F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8020 - 8027 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8028 - 802F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8030 - 8037 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8038 - 803F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8040 - 8047 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8048 - 804F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8050 - 8057 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8058 - 805F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8060 - 8067 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8068 - 806F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8070 - 8077 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8078 - 807F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8080 - 8087 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8088 - 808F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8090 - 8097 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8098 - 809F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 80A0 - 80A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 80A8 - 80AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 80B0 - 80B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 80B8 - 80BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 80C0 - 80C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 80C8 - 80CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 80D0 - 80D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 80D8 - 80DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 80E0 - 80E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 80E8 - 80EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 80F0 - 80F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 80F8 - 80FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8100 - 8107 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8108 - 810F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8110 - 8117 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8118 - 811F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8120 - 8127 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8128 - 812F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8130 - 8137 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8138 - 813F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8140 - 8147 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8148 - 814F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8150 - 8157 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8158 - 815F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8160 - 8167 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8168 - 816F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8170 - 8177 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8178 - 817F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8180 - 8187 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8188 - 818F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8190 - 8197 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8198 - 819F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 81A0 - 81A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 81A8 - 81AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 81B0 - 81B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 81B8 - 81BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 81C0 - 81C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 81C8 - 81CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 81D0 - 81D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 81D8 - 81DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 81E0 - 81E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 81E8 - 81EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 81F0 - 81F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 81F8 - 81FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8200 - 8207 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8208 - 820F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8210 - 8217 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8218 - 821F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8220 - 8227 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8228 - 822F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8230 - 8237 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8238 - 823F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8240 - 8247 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8248 - 824F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8250 - 8257 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8258 - 825F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8260 - 8267 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8268 - 826F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8270 - 8277 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8278 - 827F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8280 - 8287 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8288 - 828F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8290 - 8297 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8298 - 829F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 82A0 - 82A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 82A8 - 82AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 82B0 - 82B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 82B8 - 82BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 82C0 - 82C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 82C8 - 82CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 82D0 - 82D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 82D8 - 82DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 82E0 - 82E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 82E8 - 82EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 82F0 - 82F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 82F8 - 82FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8300 - 8307 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8308 - 830F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8310 - 8317 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8318 - 831F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8320 - 8327 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8328 - 832F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8330 - 8337 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8338 - 833F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8340 - 8347 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8348 - 834F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8350 - 8357 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8358 - 835F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8360 - 8367 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8368 - 836F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8370 - 8377 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8378 - 837F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8380 - 8387 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8388 - 838F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8390 - 8397 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8398 - 839F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 83A0 - 83A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 83A8 - 83AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 83B0 - 83B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 83B8 - 83BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 83C0 - 83C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 83C8 - 83CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 83D0 - 83D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 83D8 - 83DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 83E0 - 83E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 83E8 - 83EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 83F0 - 83F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 83F8 - 83FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8400 - 8407 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8408 - 840F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8410 - 8417 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8418 - 841F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8420 - 8427 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8428 - 842F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8430 - 8437 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8438 - 843F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8440 - 8447 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8448 - 844F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8450 - 8457 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8458 - 845F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8460 - 8467 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8468 - 846F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8470 - 8477 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8478 - 847F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8480 - 8487 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8488 - 848F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8490 - 8497 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8498 - 849F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 84A0 - 84A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 84A8 - 84AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 84B0 - 84B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 84B8 - 84BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 84C0 - 84C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 84C8 - 84CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 84D0 - 84D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 84D8 - 84DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 84E0 - 84E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 84E8 - 84EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 84F0 - 84F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 84F8 - 84FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8500 - 8507 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8508 - 850F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8510 - 8517 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8518 - 851F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8520 - 8527 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8528 - 852F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8530 - 8537 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8538 - 853F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8540 - 8547 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8548 - 854F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8550 - 8557 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8558 - 855F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8560 - 8567 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8568 - 856F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8570 - 8577 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8578 - 857F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8580 - 8587 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8588 - 858F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8590 - 8597 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8598 - 859F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 85A0 - 85A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 85A8 - 85AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 85B0 - 85B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 85B8 - 85BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 85C0 - 85C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 85C8 - 85CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 85D0 - 85D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 85D8 - 85DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 85E0 - 85E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 85E8 - 85EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 85F0 - 85F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 85F8 - 85FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8600 - 8607 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8608 - 860F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8610 - 8617 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8618 - 861F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8620 - 8627 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8628 - 862F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8630 - 8637 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8638 - 863F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8640 - 8647 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8648 - 864F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8650 - 8657 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8658 - 865F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8660 - 8667 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8668 - 866F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8670 - 8677 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8678 - 867F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8680 - 8687 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8688 - 868F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8690 - 8697 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8698 - 869F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 86A0 - 86A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 86A8 - 86AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 86B0 - 86B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 86B8 - 86BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 86C0 - 86C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 86C8 - 86CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 86D0 - 86D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 86D8 - 86DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 86E0 - 86E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 86E8 - 86EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 86F0 - 86F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 86F8 - 86FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8700 - 8707 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8708 - 870F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8710 - 8717 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8718 - 871F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8720 - 8727 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8728 - 872F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8730 - 8737 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8738 - 873F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8740 - 8747 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8748 - 874F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8750 - 8757 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8758 - 875F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8760 - 8767 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8768 - 876F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8770 - 8777 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8778 - 877F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8780 - 8787 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8788 - 878F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8790 - 8797 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8798 - 879F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 87A0 - 87A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 87A8 - 87AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 87B0 - 87B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 87B8 - 87BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 87C0 - 87C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 87C8 - 87CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 87D0 - 87D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 87D8 - 87DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 87E0 - 87E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 87E8 - 87EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 87F0 - 87F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 87F8 - 87FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8800 - 8807 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8808 - 880F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8810 - 8817 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8818 - 881F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8820 - 8827 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8828 - 882F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8830 - 8837 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8838 - 883F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8840 - 8847 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8848 - 884F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8850 - 8857 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8858 - 885F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8860 - 8867 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8868 - 886F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8870 - 8877 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8878 - 887F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8880 - 8887 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8888 - 888F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8890 - 8897 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8898 - 889F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 88A0 - 88A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 88A8 - 88AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 88B0 - 88B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 88B8 - 88BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 88C0 - 88C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 88C8 - 88CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 88D0 - 88D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 88D8 - 88DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 88E0 - 88E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 88E8 - 88EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 88F0 - 88F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 88F8 - 88FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8900 - 8907 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8908 - 890F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8910 - 8917 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8918 - 891F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8920 - 8927 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8928 - 892F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8930 - 8937 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8938 - 893F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8940 - 8947 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8948 - 894F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8950 - 8957 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8958 - 895F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8960 - 8967 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8968 - 896F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8970 - 8977 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8978 - 897F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8980 - 8987 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8988 - 898F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8990 - 8997 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8998 - 899F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 89A0 - 89A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 89A8 - 89AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 89B0 - 89B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 89B8 - 89BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 89C0 - 89C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 89C8 - 89CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 89D0 - 89D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 89D8 - 89DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 89E0 - 89E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 89E8 - 89EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 89F0 - 89F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 89F8 - 89FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8A00 - 8A07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8A08 - 8A0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8A10 - 8A17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8A18 - 8A1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8A20 - 8A27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8A28 - 8A2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8A30 - 8A37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8A38 - 8A3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8A40 - 8A47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8A48 - 8A4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8A50 - 8A57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8A58 - 8A5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8A60 - 8A67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8A68 - 8A6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8A70 - 8A77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8A78 - 8A7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8A80 - 8A87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8A88 - 8A8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8A90 - 8A97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8A98 - 8A9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8AA0 - 8AA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8AA8 - 8AAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8AB0 - 8AB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8AB8 - 8ABF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8AC0 - 8AC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8AC8 - 8ACF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8AD0 - 8AD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8AD8 - 8ADF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8AE0 - 8AE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8AE8 - 8AEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8AF0 - 8AF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8AF8 - 8AFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8B00 - 8B07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8B08 - 8B0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8B10 - 8B17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8B18 - 8B1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8B20 - 8B27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8B28 - 8B2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8B30 - 8B37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8B38 - 8B3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8B40 - 8B47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8B48 - 8B4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8B50 - 8B57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8B58 - 8B5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8B60 - 8B67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8B68 - 8B6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8B70 - 8B77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8B78 - 8B7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8B80 - 8B87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8B88 - 8B8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8B90 - 8B97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8B98 - 8B9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8BA0 - 8BA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8BA8 - 8BAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8BB0 - 8BB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8BB8 - 8BBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8BC0 - 8BC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8BC8 - 8BCF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8BD0 - 8BD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8BD8 - 8BDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8BE0 - 8BE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8BE8 - 8BEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8BF0 - 8BF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8BF8 - 8BFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8C00 - 8C07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8C08 - 8C0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8C10 - 8C17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8C18 - 8C1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8C20 - 8C27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8C28 - 8C2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8C30 - 8C37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8C38 - 8C3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8C40 - 8C47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8C48 - 8C4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8C50 - 8C57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8C58 - 8C5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8C60 - 8C67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8C68 - 8C6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8C70 - 8C77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8C78 - 8C7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8C80 - 8C87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8C88 - 8C8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8C90 - 8C97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8C98 - 8C9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8CA0 - 8CA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8CA8 - 8CAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8CB0 - 8CB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8CB8 - 8CBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8CC0 - 8CC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8CC8 - 8CCF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8CD0 - 8CD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8CD8 - 8CDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8CE0 - 8CE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8CE8 - 8CEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8CF0 - 8CF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8CF8 - 8CFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8D00 - 8D07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8D08 - 8D0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8D10 - 8D17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8D18 - 8D1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8D20 - 8D27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8D28 - 8D2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8D30 - 8D37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8D38 - 8D3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8D40 - 8D47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8D48 - 8D4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8D50 - 8D57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8D58 - 8D5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8D60 - 8D67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8D68 - 8D6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8D70 - 8D77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8D78 - 8D7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8D80 - 8D87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8D88 - 8D8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8D90 - 8D97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8D98 - 8D9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8DA0 - 8DA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8DA8 - 8DAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8DB0 - 8DB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8DB8 - 8DBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8DC0 - 8DC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8DC8 - 8DCF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8DD0 - 8DD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8DD8 - 8DDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8DE0 - 8DE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8DE8 - 8DEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8DF0 - 8DF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8DF8 - 8DFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8E00 - 8E07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8E08 - 8E0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8E10 - 8E17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8E18 - 8E1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8E20 - 8E27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8E28 - 8E2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8E30 - 8E37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8E38 - 8E3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8E40 - 8E47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8E48 - 8E4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8E50 - 8E57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8E58 - 8E5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8E60 - 8E67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8E68 - 8E6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8E70 - 8E77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8E78 - 8E7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8E80 - 8E87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8E88 - 8E8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8E90 - 8E97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8E98 - 8E9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8EA0 - 8EA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8EA8 - 8EAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8EB0 - 8EB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8EB8 - 8EBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8EC0 - 8EC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8EC8 - 8ECF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8ED0 - 8ED7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8ED8 - 8EDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8EE0 - 8EE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8EE8 - 8EEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8EF0 - 8EF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8EF8 - 8EFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8F00 - 8F07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8F08 - 8F0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8F10 - 8F17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8F18 - 8F1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8F20 - 8F27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8F28 - 8F2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8F30 - 8F37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8F38 - 8F3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8F40 - 8F47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8F48 - 8F4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8F50 - 8F57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8F58 - 8F5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8F60 - 8F67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8F68 - 8F6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8F70 - 8F77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8F78 - 8F7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8F80 - 8F87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8F88 - 8F8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8F90 - 8F97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8F98 - 8F9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8FA0 - 8FA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8FA8 - 8FAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8FB0 - 8FB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8FB8 - 8FBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8FC0 - 8FC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8FC8 - 8FCF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8FD0 - 8FD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8FD8 - 8FDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8FE0 - 8FE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8FE8 - 8FEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8FF0 - 8FF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 8FF8 - 8FFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9000 - 9007 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9008 - 900F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9010 - 9017 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9018 - 901F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9020 - 9027 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9028 - 902F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9030 - 9037 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9038 - 903F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9040 - 9047 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9048 - 904F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9050 - 9057 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9058 - 905F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9060 - 9067 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9068 - 906F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9070 - 9077 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9078 - 907F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9080 - 9087 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9088 - 908F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9090 - 9097 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9098 - 909F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 90A0 - 90A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 90A8 - 90AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 90B0 - 90B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 90B8 - 90BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 90C0 - 90C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 90C8 - 90CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 90D0 - 90D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 90D8 - 90DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 90E0 - 90E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 90E8 - 90EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 90F0 - 90F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 90F8 - 90FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9100 - 9107 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9108 - 910F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9110 - 9117 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9118 - 911F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9120 - 9127 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9128 - 912F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9130 - 9137 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9138 - 913F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9140 - 9147 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9148 - 914F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9150 - 9157 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9158 - 915F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9160 - 9167 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9168 - 916F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9170 - 9177 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9178 - 917F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9180 - 9187 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9188 - 918F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9190 - 9197 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9198 - 919F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 91A0 - 91A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 91A8 - 91AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 91B0 - 91B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 91B8 - 91BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 91C0 - 91C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 91C8 - 91CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 91D0 - 91D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 91D8 - 91DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 91E0 - 91E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 91E8 - 91EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 91F0 - 91F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 91F8 - 91FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9200 - 9207 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9208 - 920F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9210 - 9217 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9218 - 921F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9220 - 9227 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9228 - 922F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9230 - 9237 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9238 - 923F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9240 - 9247 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9248 - 924F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9250 - 9257 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9258 - 925F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9260 - 9267 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9268 - 926F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9270 - 9277 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9278 - 927F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9280 - 9287 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9288 - 928F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9290 - 9297 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9298 - 929F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 92A0 - 92A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 92A8 - 92AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 92B0 - 92B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 92B8 - 92BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 92C0 - 92C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 92C8 - 92CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 92D0 - 92D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 92D8 - 92DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 92E0 - 92E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 92E8 - 92EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 92F0 - 92F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 92F8 - 92FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9300 - 9307 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9308 - 930F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9310 - 9317 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9318 - 931F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9320 - 9327 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9328 - 932F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9330 - 9337 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9338 - 933F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9340 - 9347 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9348 - 934F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9350 - 9357 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9358 - 935F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9360 - 9367 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9368 - 936F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9370 - 9377 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9378 - 937F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9380 - 9387 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9388 - 938F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9390 - 9397 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9398 - 939F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 93A0 - 93A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 93A8 - 93AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 93B0 - 93B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 93B8 - 93BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 93C0 - 93C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 93C8 - 93CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 93D0 - 93D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 93D8 - 93DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 93E0 - 93E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 93E8 - 93EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 93F0 - 93F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 93F8 - 93FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9400 - 9407 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9408 - 940F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9410 - 9417 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9418 - 941F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9420 - 9427 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9428 - 942F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9430 - 9437 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9438 - 943F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9440 - 9447 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9448 - 944F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9450 - 9457 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9458 - 945F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9460 - 9467 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9468 - 946F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9470 - 9477 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9478 - 947F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9480 - 9487 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9488 - 948F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9490 - 9497 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9498 - 949F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 94A0 - 94A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 94A8 - 94AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 94B0 - 94B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 94B8 - 94BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 94C0 - 94C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 94C8 - 94CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 94D0 - 94D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 94D8 - 94DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 94E0 - 94E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 94E8 - 94EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 94F0 - 94F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 94F8 - 94FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9500 - 9507 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9508 - 950F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9510 - 9517 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9518 - 951F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9520 - 9527 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9528 - 952F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9530 - 9537 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9538 - 953F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9540 - 9547 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9548 - 954F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9550 - 9557 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9558 - 955F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9560 - 9567 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9568 - 956F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9570 - 9577 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9578 - 957F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9580 - 9587 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9588 - 958F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9590 - 9597 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9598 - 959F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 95A0 - 95A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 95A8 - 95AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 95B0 - 95B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 95B8 - 95BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 95C0 - 95C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 95C8 - 95CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 95D0 - 95D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 95D8 - 95DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 95E0 - 95E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 95E8 - 95EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 95F0 - 95F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 95F8 - 95FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9600 - 9607 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9608 - 960F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9610 - 9617 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9618 - 961F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9620 - 9627 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9628 - 962F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9630 - 9637 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9638 - 963F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9640 - 9647 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9648 - 964F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9650 - 9657 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9658 - 965F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9660 - 9667 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9668 - 966F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9670 - 9677 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9678 - 967F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9680 - 9687 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9688 - 968F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9690 - 9697 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9698 - 969F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 96A0 - 96A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 96A8 - 96AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 96B0 - 96B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 96B8 - 96BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 96C0 - 96C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 96C8 - 96CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 96D0 - 96D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 96D8 - 96DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 96E0 - 96E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 96E8 - 96EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 96F0 - 96F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 96F8 - 96FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9700 - 9707 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9708 - 970F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9710 - 9717 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9718 - 971F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9720 - 9727 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9728 - 972F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9730 - 9737 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9738 - 973F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9740 - 9747 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9748 - 974F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9750 - 9757 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9758 - 975F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9760 - 9767 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9768 - 976F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9770 - 9777 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9778 - 977F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9780 - 9787 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9788 - 978F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9790 - 9797 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9798 - 979F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 97A0 - 97A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 97A8 - 97AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 97B0 - 97B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 97B8 - 97BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 97C0 - 97C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 97C8 - 97CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 97D0 - 97D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 97D8 - 97DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 97E0 - 97E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 97E8 - 97EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 97F0 - 97F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 97F8 - 97FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9800 - 9807 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9808 - 980F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9810 - 9817 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9818 - 981F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9820 - 9827 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9828 - 982F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9830 - 9837 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9838 - 983F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9840 - 9847 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9848 - 984F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9850 - 9857 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9858 - 985F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9860 - 9867 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9868 - 986F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9870 - 9877 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9878 - 987F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9880 - 9887 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9888 - 988F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9890 - 9897 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9898 - 989F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 98A0 - 98A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 98A8 - 98AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 98B0 - 98B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 98B8 - 98BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 98C0 - 98C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 98C8 - 98CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 98D0 - 98D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 98D8 - 98DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 98E0 - 98E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 98E8 - 98EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 98F0 - 98F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 98F8 - 98FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9900 - 9907 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9908 - 990F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9910 - 9917 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9918 - 991F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9920 - 9927 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9928 - 992F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9930 - 9937 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9938 - 993F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9940 - 9947 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9948 - 994F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9950 - 9957 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9958 - 995F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9960 - 9967 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9968 - 996F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9970 - 9977 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9978 - 997F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9980 - 9987 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9988 - 998F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9990 - 9997 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9998 - 999F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 99A0 - 99A7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 99A8 - 99AF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 99B0 - 99B7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 99B8 - 99BF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 99C0 - 99C7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 99C8 - 99CF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 99D0 - 99D7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 99D8 - 99DF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 99E0 - 99E7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 99E8 - 99EF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 99F0 - 99F7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 99F8 - 99FF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9A00 - 9A07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9A08 - 9A0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9A10 - 9A17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9A18 - 9A1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9A20 - 9A27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9A28 - 9A2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9A30 - 9A37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9A38 - 9A3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9A40 - 9A47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9A48 - 9A4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9A50 - 9A57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9A58 - 9A5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9A60 - 9A67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9A68 - 9A6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9A70 - 9A77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9A78 - 9A7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9A80 - 9A87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9A88 - 9A8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9A90 - 9A97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9A98 - 9A9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9AA0 - 9AA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9AA8 - 9AAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9AB0 - 9AB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9AB8 - 9ABF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9AC0 - 9AC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9AC8 - 9ACF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9AD0 - 9AD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9AD8 - 9ADF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9AE0 - 9AE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9AE8 - 9AEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9AF0 - 9AF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9AF8 - 9AFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9B00 - 9B07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9B08 - 9B0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9B10 - 9B17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9B18 - 9B1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9B20 - 9B27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9B28 - 9B2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9B30 - 9B37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9B38 - 9B3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9B40 - 9B47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9B48 - 9B4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9B50 - 9B57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9B58 - 9B5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9B60 - 9B67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9B68 - 9B6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9B70 - 9B77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9B78 - 9B7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9B80 - 9B87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9B88 - 9B8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9B90 - 9B97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9B98 - 9B9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9BA0 - 9BA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9BA8 - 9BAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9BB0 - 9BB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9BB8 - 9BBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9BC0 - 9BC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9BC8 - 9BCF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9BD0 - 9BD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9BD8 - 9BDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9BE0 - 9BE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9BE8 - 9BEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9BF0 - 9BF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9BF8 - 9BFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9C00 - 9C07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9C08 - 9C0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9C10 - 9C17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9C18 - 9C1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9C20 - 9C27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9C28 - 9C2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9C30 - 9C37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9C38 - 9C3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9C40 - 9C47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9C48 - 9C4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9C50 - 9C57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9C58 - 9C5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9C60 - 9C67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9C68 - 9C6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9C70 - 9C77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9C78 - 9C7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9C80 - 9C87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9C88 - 9C8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9C90 - 9C97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9C98 - 9C9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9CA0 - 9CA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9CA8 - 9CAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9CB0 - 9CB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9CB8 - 9CBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9CC0 - 9CC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9CC8 - 9CCF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9CD0 - 9CD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9CD8 - 9CDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9CE0 - 9CE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9CE8 - 9CEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9CF0 - 9CF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9CF8 - 9CFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9D00 - 9D07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9D08 - 9D0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9D10 - 9D17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9D18 - 9D1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9D20 - 9D27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9D28 - 9D2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9D30 - 9D37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9D38 - 9D3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9D40 - 9D47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9D48 - 9D4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9D50 - 9D57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9D58 - 9D5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9D60 - 9D67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9D68 - 9D6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9D70 - 9D77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9D78 - 9D7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9D80 - 9D87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9D88 - 9D8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9D90 - 9D97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9D98 - 9D9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9DA0 - 9DA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9DA8 - 9DAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9DB0 - 9DB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9DB8 - 9DBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9DC0 - 9DC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9DC8 - 9DCF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9DD0 - 9DD7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9DD8 - 9DDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9DE0 - 9DE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9DE8 - 9DEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9DF0 - 9DF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9DF8 - 9DFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9E00 - 9E07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9E08 - 9E0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9E10 - 9E17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9E18 - 9E1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9E20 - 9E27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9E28 - 9E2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9E30 - 9E37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9E38 - 9E3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9E40 - 9E47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9E48 - 9E4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9E50 - 9E57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9E58 - 9E5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9E60 - 9E67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9E68 - 9E6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9E70 - 9E77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9E78 - 9E7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9E80 - 9E87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9E88 - 9E8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9E90 - 9E97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9E98 - 9E9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9EA0 - 9EA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9EA8 - 9EAF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9EB0 - 9EB7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9EB8 - 9EBF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9EC0 - 9EC7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9EC8 - 9ECF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9ED0 - 9ED7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9ED8 - 9EDF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9EE0 - 9EE7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9EE8 - 9EEF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9EF0 - 9EF7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9EF8 - 9EFF */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9F00 - 9F07 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9F08 - 9F0F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9F10 - 9F17 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9F18 - 9F1F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9F20 - 9F27 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9F28 - 9F2F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9F30 - 9F37 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9F38 - 9F3F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9F40 - 9F47 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9F48 - 9F4F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9F50 - 9F57 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9F58 - 9F5F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9F60 - 9F67 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9F68 - 9F6F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9F70 - 9F77 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9F78 - 9F7F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9F80 - 9F87 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9F88 - 9F8F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9F90 - 9F97 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9F98 - 9F9F */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, /* 9FA0 - 9FA7 */ XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_ID, XML_XX, XML_XX, /* 9FA8 - 9FAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 9FB0 - 9FB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 9FB8 - 9FBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 9FC0 - 9FC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 9FC8 - 9FCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 9FD0 - 9FD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 9FD8 - 9FDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 9FE0 - 9FE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 9FE8 - 9FEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 9FF0 - 9FF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* 9FF8 - 9FFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A000 - A007 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A008 - A00F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A010 - A017 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A018 - A01F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A020 - A027 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A028 - A02F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A030 - A037 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A038 - A03F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A040 - A047 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A048 - A04F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A050 - A057 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A058 - A05F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A060 - A067 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A068 - A06F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A070 - A077 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A078 - A07F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A080 - A087 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A088 - A08F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A090 - A097 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A098 - A09F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A0A0 - A0A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A0A8 - A0AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A0B0 - A0B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A0B8 - A0BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A0C0 - A0C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A0C8 - A0CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A0D0 - A0D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A0D8 - A0DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A0E0 - A0E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A0E8 - A0EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A0F0 - A0F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A0F8 - A0FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A100 - A107 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A108 - A10F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A110 - A117 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A118 - A11F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A120 - A127 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A128 - A12F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A130 - A137 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A138 - A13F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A140 - A147 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A148 - A14F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A150 - A157 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A158 - A15F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A160 - A167 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A168 - A16F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A170 - A177 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A178 - A17F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A180 - A187 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A188 - A18F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A190 - A197 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A198 - A19F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A1A0 - A1A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A1A8 - A1AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A1B0 - A1B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A1B8 - A1BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A1C0 - A1C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A1C8 - A1CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A1D0 - A1D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A1D8 - A1DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A1E0 - A1E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A1E8 - A1EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A1F0 - A1F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A1F8 - A1FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A200 - A207 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A208 - A20F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A210 - A217 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A218 - A21F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A220 - A227 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A228 - A22F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A230 - A237 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A238 - A23F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A240 - A247 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A248 - A24F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A250 - A257 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A258 - A25F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A260 - A267 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A268 - A26F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A270 - A277 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A278 - A27F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A280 - A287 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A288 - A28F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A290 - A297 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A298 - A29F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A2A0 - A2A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A2A8 - A2AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A2B0 - A2B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A2B8 - A2BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A2C0 - A2C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A2C8 - A2CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A2D0 - A2D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A2D8 - A2DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A2E0 - A2E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A2E8 - A2EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A2F0 - A2F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A2F8 - A2FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A300 - A307 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A308 - A30F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A310 - A317 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A318 - A31F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A320 - A327 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A328 - A32F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A330 - A337 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A338 - A33F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A340 - A347 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A348 - A34F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A350 - A357 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A358 - A35F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A360 - A367 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A368 - A36F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A370 - A377 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A378 - A37F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A380 - A387 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A388 - A38F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A390 - A397 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A398 - A39F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A3A0 - A3A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A3A8 - A3AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A3B0 - A3B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A3B8 - A3BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A3C0 - A3C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A3C8 - A3CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A3D0 - A3D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A3D8 - A3DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A3E0 - A3E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A3E8 - A3EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A3F0 - A3F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A3F8 - A3FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A400 - A407 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A408 - A40F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A410 - A417 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A418 - A41F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A420 - A427 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A428 - A42F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A430 - A437 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A438 - A43F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A440 - A447 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A448 - A44F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A450 - A457 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A458 - A45F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A460 - A467 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A468 - A46F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A470 - A477 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A478 - A47F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A480 - A487 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A488 - A48F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A490 - A497 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A498 - A49F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A4A0 - A4A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A4A8 - A4AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A4B0 - A4B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A4B8 - A4BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A4C0 - A4C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A4C8 - A4CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A4D0 - A4D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A4D8 - A4DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A4E0 - A4E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A4E8 - A4EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A4F0 - A4F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A4F8 - A4FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A500 - A507 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A508 - A50F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A510 - A517 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A518 - A51F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A520 - A527 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A528 - A52F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A530 - A537 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A538 - A53F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A540 - A547 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A548 - A54F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A550 - A557 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A558 - A55F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A560 - A567 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A568 - A56F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A570 - A577 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A578 - A57F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A580 - A587 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A588 - A58F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A590 - A597 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A598 - A59F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A5A0 - A5A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A5A8 - A5AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A5B0 - A5B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A5B8 - A5BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A5C0 - A5C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A5C8 - A5CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A5D0 - A5D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A5D8 - A5DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A5E0 - A5E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A5E8 - A5EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A5F0 - A5F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A5F8 - A5FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A600 - A607 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A608 - A60F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A610 - A617 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A618 - A61F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A620 - A627 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A628 - A62F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A630 - A637 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A638 - A63F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A640 - A647 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A648 - A64F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A650 - A657 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A658 - A65F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A660 - A667 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A668 - A66F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A670 - A677 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A678 - A67F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A680 - A687 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A688 - A68F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A690 - A697 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A698 - A69F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A6A0 - A6A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A6A8 - A6AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A6B0 - A6B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A6B8 - A6BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A6C0 - A6C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A6C8 - A6CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A6D0 - A6D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A6D8 - A6DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A6E0 - A6E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A6E8 - A6EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A6F0 - A6F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A6F8 - A6FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A700 - A707 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A708 - A70F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A710 - A717 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A718 - A71F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A720 - A727 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A728 - A72F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A730 - A737 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A738 - A73F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A740 - A747 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A748 - A74F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A750 - A757 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A758 - A75F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A760 - A767 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A768 - A76F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A770 - A777 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A778 - A77F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A780 - A787 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A788 - A78F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A790 - A797 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A798 - A79F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A7A0 - A7A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A7A8 - A7AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A7B0 - A7B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A7B8 - A7BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A7C0 - A7C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A7C8 - A7CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A7D0 - A7D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A7D8 - A7DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A7E0 - A7E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A7E8 - A7EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A7F0 - A7F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A7F8 - A7FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A800 - A807 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A808 - A80F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A810 - A817 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A818 - A81F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A820 - A827 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A828 - A82F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A830 - A837 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A838 - A83F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A840 - A847 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A848 - A84F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A850 - A857 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A858 - A85F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A860 - A867 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A868 - A86F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A870 - A877 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A878 - A87F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A880 - A887 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A888 - A88F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A890 - A897 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A898 - A89F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A8A0 - A8A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A8A8 - A8AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A8B0 - A8B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A8B8 - A8BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A8C0 - A8C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A8C8 - A8CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A8D0 - A8D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A8D8 - A8DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A8E0 - A8E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A8E8 - A8EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A8F0 - A8F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A8F8 - A8FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A900 - A907 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A908 - A90F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A910 - A917 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A918 - A91F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A920 - A927 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A928 - A92F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A930 - A937 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A938 - A93F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A940 - A947 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A948 - A94F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A950 - A957 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A958 - A95F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A960 - A967 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A968 - A96F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A970 - A977 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A978 - A97F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A980 - A987 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A988 - A98F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A990 - A997 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A998 - A99F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A9A0 - A9A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A9A8 - A9AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A9B0 - A9B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A9B8 - A9BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A9C0 - A9C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A9C8 - A9CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A9D0 - A9D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A9D8 - A9DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A9E0 - A9E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A9E8 - A9EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A9F0 - A9F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* A9F8 - A9FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AA00 - AA07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AA08 - AA0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AA10 - AA17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AA18 - AA1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AA20 - AA27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AA28 - AA2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AA30 - AA37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AA38 - AA3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AA40 - AA47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AA48 - AA4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AA50 - AA57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AA58 - AA5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AA60 - AA67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AA68 - AA6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AA70 - AA77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AA78 - AA7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AA80 - AA87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AA88 - AA8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AA90 - AA97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AA98 - AA9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AAA0 - AAA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AAA8 - AAAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AAB0 - AAB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AAB8 - AABF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AAC0 - AAC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AAC8 - AACF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AAD0 - AAD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AAD8 - AADF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AAE0 - AAE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AAE8 - AAEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AAF0 - AAF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AAF8 - AAFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AB00 - AB07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AB08 - AB0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AB10 - AB17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AB18 - AB1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AB20 - AB27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AB28 - AB2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AB30 - AB37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AB38 - AB3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AB40 - AB47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AB48 - AB4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AB50 - AB57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AB58 - AB5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AB60 - AB67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AB68 - AB6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AB70 - AB77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AB78 - AB7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AB80 - AB87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AB88 - AB8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AB90 - AB97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AB98 - AB9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ABA0 - ABA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ABA8 - ABAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ABB0 - ABB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ABB8 - ABBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ABC0 - ABC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ABC8 - ABCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ABD0 - ABD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ABD8 - ABDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ABE0 - ABE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ABE8 - ABEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ABF0 - ABF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ABF8 - ABFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* AC00 - AC07 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AC08 - AC0F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AC10 - AC17 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AC18 - AC1F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AC20 - AC27 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AC28 - AC2F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AC30 - AC37 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AC38 - AC3F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AC40 - AC47 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AC48 - AC4F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AC50 - AC57 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AC58 - AC5F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AC60 - AC67 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AC68 - AC6F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AC70 - AC77 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AC78 - AC7F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AC80 - AC87 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AC88 - AC8F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AC90 - AC97 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AC98 - AC9F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ACA0 - ACA7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ACA8 - ACAF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ACB0 - ACB7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ACB8 - ACBF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ACC0 - ACC7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ACC8 - ACCF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ACD0 - ACD7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ACD8 - ACDF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ACE0 - ACE7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ACE8 - ACEF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ACF0 - ACF7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ACF8 - ACFF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AD00 - AD07 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AD08 - AD0F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AD10 - AD17 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AD18 - AD1F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AD20 - AD27 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AD28 - AD2F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AD30 - AD37 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AD38 - AD3F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AD40 - AD47 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AD48 - AD4F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AD50 - AD57 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AD58 - AD5F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AD60 - AD67 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AD68 - AD6F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AD70 - AD77 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AD78 - AD7F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AD80 - AD87 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AD88 - AD8F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AD90 - AD97 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AD98 - AD9F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ADA0 - ADA7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ADA8 - ADAF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ADB0 - ADB7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ADB8 - ADBF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ADC0 - ADC7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ADC8 - ADCF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ADD0 - ADD7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ADD8 - ADDF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ADE0 - ADE7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ADE8 - ADEF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ADF0 - ADF7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* ADF8 - ADFF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AE00 - AE07 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AE08 - AE0F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AE10 - AE17 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AE18 - AE1F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AE20 - AE27 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AE28 - AE2F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AE30 - AE37 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AE38 - AE3F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AE40 - AE47 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AE48 - AE4F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AE50 - AE57 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AE58 - AE5F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AE60 - AE67 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AE68 - AE6F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AE70 - AE77 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AE78 - AE7F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AE80 - AE87 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AE88 - AE8F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AE90 - AE97 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AE98 - AE9F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AEA0 - AEA7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AEA8 - AEAF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AEB0 - AEB7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AEB8 - AEBF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AEC0 - AEC7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AEC8 - AECF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AED0 - AED7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AED8 - AEDF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AEE0 - AEE7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AEE8 - AEEF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AEF0 - AEF7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AEF8 - AEFF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AF00 - AF07 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AF08 - AF0F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AF10 - AF17 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AF18 - AF1F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AF20 - AF27 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AF28 - AF2F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AF30 - AF37 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AF38 - AF3F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AF40 - AF47 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AF48 - AF4F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AF50 - AF57 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AF58 - AF5F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AF60 - AF67 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AF68 - AF6F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AF70 - AF77 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AF78 - AF7F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AF80 - AF87 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AF88 - AF8F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AF90 - AF97 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AF98 - AF9F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AFA0 - AFA7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AFA8 - AFAF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AFB0 - AFB7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AFB8 - AFBF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AFC0 - AFC7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AFC8 - AFCF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AFD0 - AFD7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AFD8 - AFDF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AFE0 - AFE7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AFE8 - AFEF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AFF0 - AFF7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* AFF8 - AFFF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B000 - B007 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B008 - B00F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B010 - B017 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B018 - B01F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B020 - B027 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B028 - B02F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B030 - B037 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B038 - B03F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B040 - B047 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B048 - B04F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B050 - B057 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B058 - B05F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B060 - B067 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B068 - B06F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B070 - B077 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B078 - B07F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B080 - B087 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B088 - B08F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B090 - B097 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B098 - B09F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B0A0 - B0A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B0A8 - B0AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B0B0 - B0B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B0B8 - B0BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B0C0 - B0C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B0C8 - B0CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B0D0 - B0D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B0D8 - B0DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B0E0 - B0E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B0E8 - B0EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B0F0 - B0F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B0F8 - B0FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B100 - B107 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B108 - B10F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B110 - B117 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B118 - B11F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B120 - B127 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B128 - B12F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B130 - B137 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B138 - B13F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B140 - B147 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B148 - B14F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B150 - B157 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B158 - B15F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B160 - B167 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B168 - B16F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B170 - B177 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B178 - B17F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B180 - B187 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B188 - B18F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B190 - B197 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B198 - B19F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B1A0 - B1A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B1A8 - B1AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B1B0 - B1B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B1B8 - B1BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B1C0 - B1C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B1C8 - B1CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B1D0 - B1D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B1D8 - B1DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B1E0 - B1E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B1E8 - B1EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B1F0 - B1F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B1F8 - B1FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B200 - B207 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B208 - B20F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B210 - B217 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B218 - B21F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B220 - B227 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B228 - B22F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B230 - B237 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B238 - B23F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B240 - B247 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B248 - B24F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B250 - B257 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B258 - B25F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B260 - B267 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B268 - B26F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B270 - B277 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B278 - B27F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B280 - B287 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B288 - B28F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B290 - B297 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B298 - B29F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B2A0 - B2A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B2A8 - B2AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B2B0 - B2B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B2B8 - B2BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B2C0 - B2C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B2C8 - B2CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B2D0 - B2D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B2D8 - B2DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B2E0 - B2E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B2E8 - B2EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B2F0 - B2F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B2F8 - B2FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B300 - B307 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B308 - B30F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B310 - B317 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B318 - B31F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B320 - B327 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B328 - B32F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B330 - B337 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B338 - B33F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B340 - B347 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B348 - B34F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B350 - B357 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B358 - B35F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B360 - B367 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B368 - B36F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B370 - B377 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B378 - B37F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B380 - B387 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B388 - B38F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B390 - B397 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B398 - B39F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B3A0 - B3A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B3A8 - B3AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B3B0 - B3B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B3B8 - B3BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B3C0 - B3C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B3C8 - B3CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B3D0 - B3D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B3D8 - B3DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B3E0 - B3E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B3E8 - B3EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B3F0 - B3F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B3F8 - B3FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B400 - B407 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B408 - B40F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B410 - B417 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B418 - B41F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B420 - B427 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B428 - B42F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B430 - B437 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B438 - B43F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B440 - B447 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B448 - B44F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B450 - B457 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B458 - B45F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B460 - B467 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B468 - B46F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B470 - B477 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B478 - B47F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B480 - B487 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B488 - B48F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B490 - B497 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B498 - B49F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B4A0 - B4A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B4A8 - B4AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B4B0 - B4B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B4B8 - B4BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B4C0 - B4C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B4C8 - B4CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B4D0 - B4D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B4D8 - B4DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B4E0 - B4E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B4E8 - B4EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B4F0 - B4F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B4F8 - B4FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B500 - B507 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B508 - B50F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B510 - B517 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B518 - B51F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B520 - B527 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B528 - B52F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B530 - B537 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B538 - B53F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B540 - B547 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B548 - B54F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B550 - B557 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B558 - B55F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B560 - B567 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B568 - B56F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B570 - B577 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B578 - B57F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B580 - B587 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B588 - B58F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B590 - B597 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B598 - B59F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B5A0 - B5A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B5A8 - B5AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B5B0 - B5B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B5B8 - B5BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B5C0 - B5C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B5C8 - B5CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B5D0 - B5D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B5D8 - B5DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B5E0 - B5E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B5E8 - B5EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B5F0 - B5F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B5F8 - B5FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B600 - B607 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B608 - B60F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B610 - B617 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B618 - B61F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B620 - B627 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B628 - B62F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B630 - B637 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B638 - B63F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B640 - B647 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B648 - B64F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B650 - B657 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B658 - B65F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B660 - B667 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B668 - B66F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B670 - B677 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B678 - B67F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B680 - B687 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B688 - B68F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B690 - B697 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B698 - B69F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B6A0 - B6A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B6A8 - B6AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B6B0 - B6B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B6B8 - B6BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B6C0 - B6C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B6C8 - B6CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B6D0 - B6D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B6D8 - B6DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B6E0 - B6E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B6E8 - B6EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B6F0 - B6F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B6F8 - B6FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B700 - B707 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B708 - B70F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B710 - B717 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B718 - B71F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B720 - B727 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B728 - B72F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B730 - B737 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B738 - B73F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B740 - B747 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B748 - B74F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B750 - B757 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B758 - B75F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B760 - B767 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B768 - B76F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B770 - B777 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B778 - B77F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B780 - B787 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B788 - B78F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B790 - B797 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B798 - B79F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B7A0 - B7A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B7A8 - B7AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B7B0 - B7B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B7B8 - B7BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B7C0 - B7C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B7C8 - B7CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B7D0 - B7D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B7D8 - B7DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B7E0 - B7E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B7E8 - B7EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B7F0 - B7F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B7F8 - B7FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B800 - B807 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B808 - B80F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B810 - B817 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B818 - B81F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B820 - B827 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B828 - B82F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B830 - B837 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B838 - B83F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B840 - B847 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B848 - B84F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B850 - B857 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B858 - B85F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B860 - B867 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B868 - B86F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B870 - B877 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B878 - B87F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B880 - B887 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B888 - B88F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B890 - B897 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B898 - B89F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B8A0 - B8A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B8A8 - B8AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B8B0 - B8B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B8B8 - B8BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B8C0 - B8C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B8C8 - B8CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B8D0 - B8D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B8D8 - B8DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B8E0 - B8E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B8E8 - B8EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B8F0 - B8F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B8F8 - B8FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B900 - B907 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B908 - B90F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B910 - B917 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B918 - B91F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B920 - B927 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B928 - B92F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B930 - B937 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B938 - B93F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B940 - B947 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B948 - B94F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B950 - B957 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B958 - B95F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B960 - B967 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B968 - B96F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B970 - B977 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B978 - B97F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B980 - B987 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B988 - B98F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B990 - B997 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B998 - B99F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B9A0 - B9A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B9A8 - B9AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B9B0 - B9B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B9B8 - B9BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B9C0 - B9C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B9C8 - B9CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B9D0 - B9D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B9D8 - B9DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B9E0 - B9E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B9E8 - B9EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B9F0 - B9F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* B9F8 - B9FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BA00 - BA07 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BA08 - BA0F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BA10 - BA17 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BA18 - BA1F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BA20 - BA27 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BA28 - BA2F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BA30 - BA37 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BA38 - BA3F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BA40 - BA47 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BA48 - BA4F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BA50 - BA57 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BA58 - BA5F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BA60 - BA67 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BA68 - BA6F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BA70 - BA77 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BA78 - BA7F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BA80 - BA87 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BA88 - BA8F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BA90 - BA97 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BA98 - BA9F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BAA0 - BAA7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BAA8 - BAAF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BAB0 - BAB7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BAB8 - BABF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BAC0 - BAC7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BAC8 - BACF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BAD0 - BAD7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BAD8 - BADF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BAE0 - BAE7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BAE8 - BAEF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BAF0 - BAF7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BAF8 - BAFF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BB00 - BB07 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BB08 - BB0F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BB10 - BB17 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BB18 - BB1F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BB20 - BB27 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BB28 - BB2F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BB30 - BB37 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BB38 - BB3F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BB40 - BB47 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BB48 - BB4F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BB50 - BB57 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BB58 - BB5F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BB60 - BB67 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BB68 - BB6F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BB70 - BB77 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BB78 - BB7F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BB80 - BB87 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BB88 - BB8F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BB90 - BB97 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BB98 - BB9F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BBA0 - BBA7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BBA8 - BBAF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BBB0 - BBB7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BBB8 - BBBF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BBC0 - BBC7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BBC8 - BBCF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BBD0 - BBD7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BBD8 - BBDF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BBE0 - BBE7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BBE8 - BBEF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BBF0 - BBF7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BBF8 - BBFF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BC00 - BC07 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BC08 - BC0F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BC10 - BC17 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BC18 - BC1F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BC20 - BC27 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BC28 - BC2F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BC30 - BC37 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BC38 - BC3F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BC40 - BC47 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BC48 - BC4F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BC50 - BC57 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BC58 - BC5F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BC60 - BC67 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BC68 - BC6F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BC70 - BC77 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BC78 - BC7F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BC80 - BC87 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BC88 - BC8F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BC90 - BC97 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BC98 - BC9F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BCA0 - BCA7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BCA8 - BCAF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BCB0 - BCB7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BCB8 - BCBF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BCC0 - BCC7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BCC8 - BCCF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BCD0 - BCD7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BCD8 - BCDF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BCE0 - BCE7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BCE8 - BCEF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BCF0 - BCF7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BCF8 - BCFF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BD00 - BD07 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BD08 - BD0F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BD10 - BD17 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BD18 - BD1F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BD20 - BD27 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BD28 - BD2F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BD30 - BD37 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BD38 - BD3F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BD40 - BD47 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BD48 - BD4F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BD50 - BD57 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BD58 - BD5F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BD60 - BD67 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BD68 - BD6F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BD70 - BD77 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BD78 - BD7F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BD80 - BD87 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BD88 - BD8F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BD90 - BD97 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BD98 - BD9F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BDA0 - BDA7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BDA8 - BDAF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BDB0 - BDB7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BDB8 - BDBF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BDC0 - BDC7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BDC8 - BDCF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BDD0 - BDD7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BDD8 - BDDF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BDE0 - BDE7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BDE8 - BDEF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BDF0 - BDF7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BDF8 - BDFF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BE00 - BE07 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BE08 - BE0F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BE10 - BE17 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BE18 - BE1F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BE20 - BE27 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BE28 - BE2F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BE30 - BE37 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BE38 - BE3F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BE40 - BE47 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BE48 - BE4F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BE50 - BE57 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BE58 - BE5F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BE60 - BE67 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BE68 - BE6F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BE70 - BE77 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BE78 - BE7F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BE80 - BE87 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BE88 - BE8F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BE90 - BE97 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BE98 - BE9F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BEA0 - BEA7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BEA8 - BEAF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BEB0 - BEB7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BEB8 - BEBF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BEC0 - BEC7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BEC8 - BECF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BED0 - BED7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BED8 - BEDF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BEE0 - BEE7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BEE8 - BEEF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BEF0 - BEF7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BEF8 - BEFF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BF00 - BF07 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BF08 - BF0F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BF10 - BF17 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BF18 - BF1F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BF20 - BF27 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BF28 - BF2F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BF30 - BF37 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BF38 - BF3F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BF40 - BF47 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BF48 - BF4F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BF50 - BF57 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BF58 - BF5F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BF60 - BF67 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BF68 - BF6F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BF70 - BF77 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BF78 - BF7F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BF80 - BF87 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BF88 - BF8F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BF90 - BF97 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BF98 - BF9F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BFA0 - BFA7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BFA8 - BFAF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BFB0 - BFB7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BFB8 - BFBF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BFC0 - BFC7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BFC8 - BFCF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BFD0 - BFD7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BFD8 - BFDF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BFE0 - BFE7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BFE8 - BFEF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BFF0 - BFF7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* BFF8 - BFFF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C000 - C007 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C008 - C00F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C010 - C017 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C018 - C01F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C020 - C027 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C028 - C02F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C030 - C037 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C038 - C03F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C040 - C047 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C048 - C04F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C050 - C057 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C058 - C05F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C060 - C067 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C068 - C06F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C070 - C077 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C078 - C07F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C080 - C087 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C088 - C08F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C090 - C097 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C098 - C09F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C0A0 - C0A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C0A8 - C0AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C0B0 - C0B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C0B8 - C0BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C0C0 - C0C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C0C8 - C0CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C0D0 - C0D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C0D8 - C0DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C0E0 - C0E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C0E8 - C0EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C0F0 - C0F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C0F8 - C0FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C100 - C107 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C108 - C10F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C110 - C117 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C118 - C11F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C120 - C127 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C128 - C12F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C130 - C137 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C138 - C13F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C140 - C147 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C148 - C14F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C150 - C157 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C158 - C15F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C160 - C167 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C168 - C16F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C170 - C177 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C178 - C17F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C180 - C187 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C188 - C18F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C190 - C197 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C198 - C19F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C1A0 - C1A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C1A8 - C1AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C1B0 - C1B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C1B8 - C1BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C1C0 - C1C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C1C8 - C1CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C1D0 - C1D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C1D8 - C1DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C1E0 - C1E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C1E8 - C1EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C1F0 - C1F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C1F8 - C1FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C200 - C207 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C208 - C20F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C210 - C217 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C218 - C21F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C220 - C227 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C228 - C22F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C230 - C237 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C238 - C23F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C240 - C247 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C248 - C24F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C250 - C257 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C258 - C25F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C260 - C267 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C268 - C26F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C270 - C277 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C278 - C27F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C280 - C287 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C288 - C28F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C290 - C297 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C298 - C29F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C2A0 - C2A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C2A8 - C2AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C2B0 - C2B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C2B8 - C2BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C2C0 - C2C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C2C8 - C2CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C2D0 - C2D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C2D8 - C2DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C2E0 - C2E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C2E8 - C2EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C2F0 - C2F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C2F8 - C2FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C300 - C307 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C308 - C30F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C310 - C317 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C318 - C31F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C320 - C327 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C328 - C32F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C330 - C337 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C338 - C33F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C340 - C347 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C348 - C34F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C350 - C357 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C358 - C35F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C360 - C367 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C368 - C36F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C370 - C377 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C378 - C37F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C380 - C387 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C388 - C38F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C390 - C397 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C398 - C39F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C3A0 - C3A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C3A8 - C3AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C3B0 - C3B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C3B8 - C3BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C3C0 - C3C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C3C8 - C3CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C3D0 - C3D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C3D8 - C3DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C3E0 - C3E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C3E8 - C3EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C3F0 - C3F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C3F8 - C3FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C400 - C407 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C408 - C40F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C410 - C417 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C418 - C41F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C420 - C427 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C428 - C42F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C430 - C437 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C438 - C43F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C440 - C447 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C448 - C44F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C450 - C457 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C458 - C45F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C460 - C467 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C468 - C46F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C470 - C477 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C478 - C47F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C480 - C487 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C488 - C48F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C490 - C497 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C498 - C49F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C4A0 - C4A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C4A8 - C4AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C4B0 - C4B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C4B8 - C4BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C4C0 - C4C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C4C8 - C4CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C4D0 - C4D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C4D8 - C4DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C4E0 - C4E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C4E8 - C4EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C4F0 - C4F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C4F8 - C4FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C500 - C507 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C508 - C50F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C510 - C517 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C518 - C51F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C520 - C527 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C528 - C52F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C530 - C537 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C538 - C53F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C540 - C547 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C548 - C54F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C550 - C557 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C558 - C55F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C560 - C567 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C568 - C56F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C570 - C577 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C578 - C57F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C580 - C587 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C588 - C58F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C590 - C597 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C598 - C59F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C5A0 - C5A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C5A8 - C5AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C5B0 - C5B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C5B8 - C5BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C5C0 - C5C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C5C8 - C5CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C5D0 - C5D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C5D8 - C5DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C5E0 - C5E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C5E8 - C5EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C5F0 - C5F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C5F8 - C5FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C600 - C607 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C608 - C60F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C610 - C617 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C618 - C61F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C620 - C627 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C628 - C62F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C630 - C637 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C638 - C63F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C640 - C647 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C648 - C64F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C650 - C657 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C658 - C65F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C660 - C667 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C668 - C66F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C670 - C677 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C678 - C67F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C680 - C687 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C688 - C68F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C690 - C697 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C698 - C69F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C6A0 - C6A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C6A8 - C6AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C6B0 - C6B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C6B8 - C6BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C6C0 - C6C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C6C8 - C6CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C6D0 - C6D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C6D8 - C6DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C6E0 - C6E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C6E8 - C6EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C6F0 - C6F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C6F8 - C6FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C700 - C707 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C708 - C70F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C710 - C717 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C718 - C71F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C720 - C727 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C728 - C72F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C730 - C737 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C738 - C73F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C740 - C747 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C748 - C74F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C750 - C757 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C758 - C75F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C760 - C767 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C768 - C76F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C770 - C777 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C778 - C77F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C780 - C787 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C788 - C78F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C790 - C797 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C798 - C79F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C7A0 - C7A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C7A8 - C7AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C7B0 - C7B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C7B8 - C7BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C7C0 - C7C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C7C8 - C7CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C7D0 - C7D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C7D8 - C7DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C7E0 - C7E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C7E8 - C7EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C7F0 - C7F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C7F8 - C7FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C800 - C807 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C808 - C80F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C810 - C817 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C818 - C81F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C820 - C827 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C828 - C82F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C830 - C837 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C838 - C83F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C840 - C847 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C848 - C84F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C850 - C857 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C858 - C85F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C860 - C867 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C868 - C86F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C870 - C877 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C878 - C87F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C880 - C887 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C888 - C88F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C890 - C897 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C898 - C89F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C8A0 - C8A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C8A8 - C8AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C8B0 - C8B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C8B8 - C8BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C8C0 - C8C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C8C8 - C8CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C8D0 - C8D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C8D8 - C8DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C8E0 - C8E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C8E8 - C8EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C8F0 - C8F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C8F8 - C8FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C900 - C907 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C908 - C90F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C910 - C917 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C918 - C91F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C920 - C927 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C928 - C92F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C930 - C937 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C938 - C93F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C940 - C947 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C948 - C94F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C950 - C957 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C958 - C95F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C960 - C967 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C968 - C96F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C970 - C977 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C978 - C97F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C980 - C987 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C988 - C98F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C990 - C997 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C998 - C99F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C9A0 - C9A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C9A8 - C9AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C9B0 - C9B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C9B8 - C9BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C9C0 - C9C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C9C8 - C9CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C9D0 - C9D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C9D8 - C9DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C9E0 - C9E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C9E8 - C9EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C9F0 - C9F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* C9F8 - C9FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CA00 - CA07 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CA08 - CA0F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CA10 - CA17 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CA18 - CA1F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CA20 - CA27 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CA28 - CA2F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CA30 - CA37 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CA38 - CA3F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CA40 - CA47 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CA48 - CA4F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CA50 - CA57 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CA58 - CA5F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CA60 - CA67 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CA68 - CA6F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CA70 - CA77 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CA78 - CA7F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CA80 - CA87 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CA88 - CA8F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CA90 - CA97 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CA98 - CA9F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CAA0 - CAA7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CAA8 - CAAF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CAB0 - CAB7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CAB8 - CABF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CAC0 - CAC7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CAC8 - CACF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CAD0 - CAD7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CAD8 - CADF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CAE0 - CAE7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CAE8 - CAEF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CAF0 - CAF7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CAF8 - CAFF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CB00 - CB07 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CB08 - CB0F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CB10 - CB17 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CB18 - CB1F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CB20 - CB27 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CB28 - CB2F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CB30 - CB37 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CB38 - CB3F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CB40 - CB47 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CB48 - CB4F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CB50 - CB57 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CB58 - CB5F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CB60 - CB67 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CB68 - CB6F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CB70 - CB77 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CB78 - CB7F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CB80 - CB87 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CB88 - CB8F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CB90 - CB97 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CB98 - CB9F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CBA0 - CBA7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CBA8 - CBAF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CBB0 - CBB7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CBB8 - CBBF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CBC0 - CBC7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CBC8 - CBCF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CBD0 - CBD7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CBD8 - CBDF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CBE0 - CBE7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CBE8 - CBEF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CBF0 - CBF7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CBF8 - CBFF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CC00 - CC07 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CC08 - CC0F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CC10 - CC17 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CC18 - CC1F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CC20 - CC27 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CC28 - CC2F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CC30 - CC37 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CC38 - CC3F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CC40 - CC47 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CC48 - CC4F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CC50 - CC57 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CC58 - CC5F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CC60 - CC67 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CC68 - CC6F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CC70 - CC77 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CC78 - CC7F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CC80 - CC87 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CC88 - CC8F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CC90 - CC97 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CC98 - CC9F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CCA0 - CCA7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CCA8 - CCAF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CCB0 - CCB7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CCB8 - CCBF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CCC0 - CCC7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CCC8 - CCCF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CCD0 - CCD7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CCD8 - CCDF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CCE0 - CCE7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CCE8 - CCEF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CCF0 - CCF7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CCF8 - CCFF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CD00 - CD07 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CD08 - CD0F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CD10 - CD17 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CD18 - CD1F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CD20 - CD27 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CD28 - CD2F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CD30 - CD37 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CD38 - CD3F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CD40 - CD47 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CD48 - CD4F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CD50 - CD57 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CD58 - CD5F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CD60 - CD67 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CD68 - CD6F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CD70 - CD77 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CD78 - CD7F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CD80 - CD87 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CD88 - CD8F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CD90 - CD97 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CD98 - CD9F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CDA0 - CDA7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CDA8 - CDAF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CDB0 - CDB7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CDB8 - CDBF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CDC0 - CDC7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CDC8 - CDCF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CDD0 - CDD7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CDD8 - CDDF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CDE0 - CDE7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CDE8 - CDEF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CDF0 - CDF7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CDF8 - CDFF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CE00 - CE07 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CE08 - CE0F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CE10 - CE17 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CE18 - CE1F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CE20 - CE27 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CE28 - CE2F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CE30 - CE37 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CE38 - CE3F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CE40 - CE47 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CE48 - CE4F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CE50 - CE57 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CE58 - CE5F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CE60 - CE67 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CE68 - CE6F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CE70 - CE77 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CE78 - CE7F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CE80 - CE87 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CE88 - CE8F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CE90 - CE97 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CE98 - CE9F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CEA0 - CEA7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CEA8 - CEAF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CEB0 - CEB7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CEB8 - CEBF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CEC0 - CEC7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CEC8 - CECF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CED0 - CED7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CED8 - CEDF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CEE0 - CEE7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CEE8 - CEEF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CEF0 - CEF7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CEF8 - CEFF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CF00 - CF07 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CF08 - CF0F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CF10 - CF17 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CF18 - CF1F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CF20 - CF27 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CF28 - CF2F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CF30 - CF37 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CF38 - CF3F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CF40 - CF47 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CF48 - CF4F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CF50 - CF57 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CF58 - CF5F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CF60 - CF67 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CF68 - CF6F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CF70 - CF77 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CF78 - CF7F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CF80 - CF87 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CF88 - CF8F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CF90 - CF97 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CF98 - CF9F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CFA0 - CFA7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CFA8 - CFAF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CFB0 - CFB7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CFB8 - CFBF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CFC0 - CFC7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CFC8 - CFCF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CFD0 - CFD7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CFD8 - CFDF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CFE0 - CFE7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CFE8 - CFEF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CFF0 - CFF7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* CFF8 - CFFF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D000 - D007 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D008 - D00F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D010 - D017 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D018 - D01F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D020 - D027 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D028 - D02F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D030 - D037 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D038 - D03F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D040 - D047 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D048 - D04F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D050 - D057 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D058 - D05F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D060 - D067 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D068 - D06F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D070 - D077 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D078 - D07F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D080 - D087 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D088 - D08F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D090 - D097 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D098 - D09F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D0A0 - D0A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D0A8 - D0AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D0B0 - D0B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D0B8 - D0BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D0C0 - D0C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D0C8 - D0CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D0D0 - D0D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D0D8 - D0DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D0E0 - D0E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D0E8 - D0EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D0F0 - D0F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D0F8 - D0FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D100 - D107 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D108 - D10F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D110 - D117 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D118 - D11F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D120 - D127 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D128 - D12F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D130 - D137 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D138 - D13F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D140 - D147 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D148 - D14F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D150 - D157 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D158 - D15F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D160 - D167 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D168 - D16F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D170 - D177 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D178 - D17F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D180 - D187 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D188 - D18F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D190 - D197 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D198 - D19F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D1A0 - D1A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D1A8 - D1AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D1B0 - D1B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D1B8 - D1BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D1C0 - D1C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D1C8 - D1CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D1D0 - D1D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D1D8 - D1DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D1E0 - D1E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D1E8 - D1EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D1F0 - D1F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D1F8 - D1FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D200 - D207 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D208 - D20F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D210 - D217 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D218 - D21F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D220 - D227 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D228 - D22F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D230 - D237 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D238 - D23F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D240 - D247 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D248 - D24F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D250 - D257 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D258 - D25F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D260 - D267 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D268 - D26F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D270 - D277 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D278 - D27F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D280 - D287 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D288 - D28F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D290 - D297 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D298 - D29F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D2A0 - D2A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D2A8 - D2AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D2B0 - D2B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D2B8 - D2BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D2C0 - D2C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D2C8 - D2CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D2D0 - D2D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D2D8 - D2DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D2E0 - D2E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D2E8 - D2EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D2F0 - D2F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D2F8 - D2FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D300 - D307 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D308 - D30F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D310 - D317 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D318 - D31F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D320 - D327 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D328 - D32F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D330 - D337 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D338 - D33F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D340 - D347 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D348 - D34F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D350 - D357 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D358 - D35F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D360 - D367 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D368 - D36F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D370 - D377 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D378 - D37F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D380 - D387 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D388 - D38F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D390 - D397 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D398 - D39F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D3A0 - D3A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D3A8 - D3AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D3B0 - D3B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D3B8 - D3BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D3C0 - D3C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D3C8 - D3CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D3D0 - D3D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D3D8 - D3DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D3E0 - D3E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D3E8 - D3EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D3F0 - D3F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D3F8 - D3FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D400 - D407 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D408 - D40F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D410 - D417 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D418 - D41F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D420 - D427 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D428 - D42F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D430 - D437 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D438 - D43F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D440 - D447 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D448 - D44F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D450 - D457 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D458 - D45F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D460 - D467 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D468 - D46F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D470 - D477 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D478 - D47F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D480 - D487 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D488 - D48F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D490 - D497 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D498 - D49F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D4A0 - D4A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D4A8 - D4AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D4B0 - D4B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D4B8 - D4BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D4C0 - D4C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D4C8 - D4CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D4D0 - D4D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D4D8 - D4DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D4E0 - D4E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D4E8 - D4EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D4F0 - D4F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D4F8 - D4FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D500 - D507 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D508 - D50F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D510 - D517 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D518 - D51F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D520 - D527 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D528 - D52F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D530 - D537 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D538 - D53F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D540 - D547 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D548 - D54F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D550 - D557 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D558 - D55F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D560 - D567 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D568 - D56F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D570 - D577 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D578 - D57F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D580 - D587 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D588 - D58F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D590 - D597 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D598 - D59F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D5A0 - D5A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D5A8 - D5AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D5B0 - D5B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D5B8 - D5BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D5C0 - D5C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D5C8 - D5CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D5D0 - D5D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D5D8 - D5DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D5E0 - D5E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D5E8 - D5EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D5F0 - D5F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D5F8 - D5FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D600 - D607 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D608 - D60F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D610 - D617 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D618 - D61F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D620 - D627 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D628 - D62F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D630 - D637 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D638 - D63F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D640 - D647 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D648 - D64F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D650 - D657 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D658 - D65F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D660 - D667 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D668 - D66F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D670 - D677 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D678 - D67F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D680 - D687 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D688 - D68F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D690 - D697 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D698 - D69F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D6A0 - D6A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D6A8 - D6AF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D6B0 - D6B7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D6B8 - D6BF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D6C0 - D6C7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D6C8 - D6CF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D6D0 - D6D7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D6D8 - D6DF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D6E0 - D6E7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D6E8 - D6EF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D6F0 - D6F7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D6F8 - D6FF */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D700 - D707 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D708 - D70F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D710 - D717 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D718 - D71F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D720 - D727 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D728 - D72F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D730 - D737 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D738 - D73F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D740 - D747 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D748 - D74F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D750 - D757 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D758 - D75F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D760 - D767 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D768 - D76F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D770 - D777 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D778 - D77F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D780 - D787 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D788 - D78F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D790 - D797 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D798 - D79F */ XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, XML_BC, /* D7A0 - D7A7 */ XML_BC, XML_BC, XML_BC, XML_BC, XML_XX, XML_XX, XML_XX, XML_XX, /* D7A8 - D7AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D7B0 - D7B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D7B8 - D7BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D7C0 - D7C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D7C8 - D7CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D7D0 - D7D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D7D8 - D7DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D7E0 - D7E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D7E8 - D7EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D7F0 - D7F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D7F8 - D7FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D800 - D807 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D808 - D80F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D810 - D817 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D818 - D81F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D820 - D827 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D828 - D82F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D830 - D837 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D838 - D83F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D840 - D847 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D848 - D84F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D850 - D857 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D858 - D85F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D860 - D867 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D868 - D86F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D870 - D877 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D878 - D87F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D880 - D887 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D888 - D88F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D890 - D897 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D898 - D89F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D8A0 - D8A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D8A8 - D8AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D8B0 - D8B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D8B8 - D8BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D8C0 - D8C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D8C8 - D8CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D8D0 - D8D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D8D8 - D8DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D8E0 - D8E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D8E8 - D8EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D8F0 - D8F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D8F8 - D8FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D900 - D907 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D908 - D90F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D910 - D917 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D918 - D91F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D920 - D927 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D928 - D92F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D930 - D937 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D938 - D93F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D940 - D947 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D948 - D94F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D950 - D957 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D958 - D95F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D960 - D967 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D968 - D96F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D970 - D977 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D978 - D97F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D980 - D987 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D988 - D98F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D990 - D997 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D998 - D99F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D9A0 - D9A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D9A8 - D9AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D9B0 - D9B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D9B8 - D9BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D9C0 - D9C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D9C8 - D9CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D9D0 - D9D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D9D8 - D9DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D9E0 - D9E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D9E8 - D9EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D9F0 - D9F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* D9F8 - D9FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DA00 - DA07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DA08 - DA0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DA10 - DA17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DA18 - DA1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DA20 - DA27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DA28 - DA2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DA30 - DA37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DA38 - DA3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DA40 - DA47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DA48 - DA4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DA50 - DA57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DA58 - DA5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DA60 - DA67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DA68 - DA6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DA70 - DA77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DA78 - DA7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DA80 - DA87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DA88 - DA8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DA90 - DA97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DA98 - DA9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DAA0 - DAA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DAA8 - DAAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DAB0 - DAB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DAB8 - DABF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DAC0 - DAC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DAC8 - DACF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DAD0 - DAD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DAD8 - DADF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DAE0 - DAE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DAE8 - DAEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DAF0 - DAF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DAF8 - DAFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DB00 - DB07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DB08 - DB0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DB10 - DB17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DB18 - DB1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DB20 - DB27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DB28 - DB2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DB30 - DB37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DB38 - DB3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DB40 - DB47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DB48 - DB4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DB50 - DB57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DB58 - DB5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DB60 - DB67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DB68 - DB6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DB70 - DB77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DB78 - DB7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DB80 - DB87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DB88 - DB8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DB90 - DB97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DB98 - DB9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DBA0 - DBA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DBA8 - DBAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DBB0 - DBB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DBB8 - DBBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DBC0 - DBC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DBC8 - DBCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DBD0 - DBD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DBD8 - DBDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DBE0 - DBE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DBE8 - DBEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DBF0 - DBF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DBF8 - DBFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DC00 - DC07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DC08 - DC0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DC10 - DC17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DC18 - DC1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DC20 - DC27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DC28 - DC2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DC30 - DC37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DC38 - DC3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DC40 - DC47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DC48 - DC4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DC50 - DC57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DC58 - DC5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DC60 - DC67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DC68 - DC6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DC70 - DC77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DC78 - DC7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DC80 - DC87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DC88 - DC8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DC90 - DC97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DC98 - DC9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DCA0 - DCA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DCA8 - DCAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DCB0 - DCB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DCB8 - DCBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DCC0 - DCC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DCC8 - DCCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DCD0 - DCD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DCD8 - DCDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DCE0 - DCE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DCE8 - DCEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DCF0 - DCF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DCF8 - DCFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DD00 - DD07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DD08 - DD0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DD10 - DD17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DD18 - DD1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DD20 - DD27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DD28 - DD2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DD30 - DD37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DD38 - DD3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DD40 - DD47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DD48 - DD4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DD50 - DD57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DD58 - DD5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DD60 - DD67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DD68 - DD6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DD70 - DD77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DD78 - DD7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DD80 - DD87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DD88 - DD8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DD90 - DD97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DD98 - DD9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DDA0 - DDA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DDA8 - DDAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DDB0 - DDB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DDB8 - DDBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DDC0 - DDC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DDC8 - DDCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DDD0 - DDD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DDD8 - DDDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DDE0 - DDE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DDE8 - DDEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DDF0 - DDF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DDF8 - DDFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DE00 - DE07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DE08 - DE0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DE10 - DE17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DE18 - DE1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DE20 - DE27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DE28 - DE2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DE30 - DE37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DE38 - DE3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DE40 - DE47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DE48 - DE4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DE50 - DE57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DE58 - DE5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DE60 - DE67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DE68 - DE6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DE70 - DE77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DE78 - DE7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DE80 - DE87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DE88 - DE8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DE90 - DE97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DE98 - DE9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DEA0 - DEA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DEA8 - DEAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DEB0 - DEB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DEB8 - DEBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DEC0 - DEC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DEC8 - DECF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DED0 - DED7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DED8 - DEDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DEE0 - DEE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DEE8 - DEEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DEF0 - DEF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DEF8 - DEFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DF00 - DF07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DF08 - DF0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DF10 - DF17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DF18 - DF1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DF20 - DF27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DF28 - DF2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DF30 - DF37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DF38 - DF3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DF40 - DF47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DF48 - DF4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DF50 - DF57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DF58 - DF5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DF60 - DF67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DF68 - DF6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DF70 - DF77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DF78 - DF7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DF80 - DF87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DF88 - DF8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DF90 - DF97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DF98 - DF9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DFA0 - DFA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DFA8 - DFAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DFB0 - DFB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DFB8 - DFBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DFC0 - DFC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DFC8 - DFCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DFD0 - DFD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DFD8 - DFDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DFE0 - DFE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DFE8 - DFEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DFF0 - DFF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* DFF8 - DFFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E000 - E007 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E008 - E00F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E010 - E017 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E018 - E01F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E020 - E027 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E028 - E02F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E030 - E037 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E038 - E03F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E040 - E047 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E048 - E04F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E050 - E057 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E058 - E05F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E060 - E067 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E068 - E06F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E070 - E077 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E078 - E07F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E080 - E087 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E088 - E08F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E090 - E097 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E098 - E09F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E0A0 - E0A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E0A8 - E0AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E0B0 - E0B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E0B8 - E0BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E0C0 - E0C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E0C8 - E0CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E0D0 - E0D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E0D8 - E0DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E0E0 - E0E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E0E8 - E0EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E0F0 - E0F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E0F8 - E0FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E100 - E107 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E108 - E10F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E110 - E117 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E118 - E11F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E120 - E127 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E128 - E12F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E130 - E137 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E138 - E13F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E140 - E147 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E148 - E14F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E150 - E157 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E158 - E15F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E160 - E167 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E168 - E16F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E170 - E177 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E178 - E17F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E180 - E187 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E188 - E18F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E190 - E197 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E198 - E19F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E1A0 - E1A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E1A8 - E1AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E1B0 - E1B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E1B8 - E1BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E1C0 - E1C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E1C8 - E1CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E1D0 - E1D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E1D8 - E1DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E1E0 - E1E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E1E8 - E1EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E1F0 - E1F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E1F8 - E1FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E200 - E207 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E208 - E20F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E210 - E217 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E218 - E21F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E220 - E227 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E228 - E22F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E230 - E237 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E238 - E23F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E240 - E247 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E248 - E24F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E250 - E257 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E258 - E25F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E260 - E267 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E268 - E26F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E270 - E277 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E278 - E27F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E280 - E287 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E288 - E28F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E290 - E297 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E298 - E29F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E2A0 - E2A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E2A8 - E2AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E2B0 - E2B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E2B8 - E2BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E2C0 - E2C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E2C8 - E2CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E2D0 - E2D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E2D8 - E2DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E2E0 - E2E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E2E8 - E2EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E2F0 - E2F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E2F8 - E2FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E300 - E307 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E308 - E30F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E310 - E317 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E318 - E31F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E320 - E327 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E328 - E32F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E330 - E337 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E338 - E33F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E340 - E347 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E348 - E34F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E350 - E357 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E358 - E35F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E360 - E367 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E368 - E36F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E370 - E377 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E378 - E37F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E380 - E387 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E388 - E38F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E390 - E397 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E398 - E39F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E3A0 - E3A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E3A8 - E3AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E3B0 - E3B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E3B8 - E3BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E3C0 - E3C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E3C8 - E3CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E3D0 - E3D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E3D8 - E3DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E3E0 - E3E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E3E8 - E3EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E3F0 - E3F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E3F8 - E3FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E400 - E407 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E408 - E40F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E410 - E417 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E418 - E41F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E420 - E427 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E428 - E42F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E430 - E437 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E438 - E43F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E440 - E447 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E448 - E44F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E450 - E457 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E458 - E45F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E460 - E467 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E468 - E46F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E470 - E477 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E478 - E47F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E480 - E487 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E488 - E48F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E490 - E497 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E498 - E49F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E4A0 - E4A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E4A8 - E4AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E4B0 - E4B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E4B8 - E4BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E4C0 - E4C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E4C8 - E4CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E4D0 - E4D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E4D8 - E4DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E4E0 - E4E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E4E8 - E4EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E4F0 - E4F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E4F8 - E4FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E500 - E507 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E508 - E50F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E510 - E517 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E518 - E51F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E520 - E527 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E528 - E52F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E530 - E537 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E538 - E53F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E540 - E547 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E548 - E54F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E550 - E557 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E558 - E55F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E560 - E567 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E568 - E56F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E570 - E577 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E578 - E57F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E580 - E587 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E588 - E58F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E590 - E597 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E598 - E59F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E5A0 - E5A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E5A8 - E5AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E5B0 - E5B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E5B8 - E5BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E5C0 - E5C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E5C8 - E5CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E5D0 - E5D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E5D8 - E5DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E5E0 - E5E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E5E8 - E5EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E5F0 - E5F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E5F8 - E5FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E600 - E607 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E608 - E60F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E610 - E617 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E618 - E61F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E620 - E627 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E628 - E62F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E630 - E637 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E638 - E63F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E640 - E647 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E648 - E64F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E650 - E657 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E658 - E65F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E660 - E667 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E668 - E66F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E670 - E677 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E678 - E67F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E680 - E687 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E688 - E68F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E690 - E697 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E698 - E69F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E6A0 - E6A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E6A8 - E6AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E6B0 - E6B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E6B8 - E6BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E6C0 - E6C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E6C8 - E6CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E6D0 - E6D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E6D8 - E6DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E6E0 - E6E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E6E8 - E6EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E6F0 - E6F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E6F8 - E6FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E700 - E707 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E708 - E70F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E710 - E717 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E718 - E71F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E720 - E727 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E728 - E72F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E730 - E737 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E738 - E73F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E740 - E747 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E748 - E74F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E750 - E757 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E758 - E75F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E760 - E767 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E768 - E76F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E770 - E777 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E778 - E77F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E780 - E787 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E788 - E78F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E790 - E797 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E798 - E79F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E7A0 - E7A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E7A8 - E7AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E7B0 - E7B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E7B8 - E7BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E7C0 - E7C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E7C8 - E7CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E7D0 - E7D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E7D8 - E7DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E7E0 - E7E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E7E8 - E7EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E7F0 - E7F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E7F8 - E7FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E800 - E807 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E808 - E80F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E810 - E817 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E818 - E81F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E820 - E827 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E828 - E82F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E830 - E837 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E838 - E83F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E840 - E847 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E848 - E84F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E850 - E857 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E858 - E85F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E860 - E867 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E868 - E86F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E870 - E877 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E878 - E87F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E880 - E887 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E888 - E88F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E890 - E897 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E898 - E89F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E8A0 - E8A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E8A8 - E8AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E8B0 - E8B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E8B8 - E8BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E8C0 - E8C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E8C8 - E8CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E8D0 - E8D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E8D8 - E8DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E8E0 - E8E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E8E8 - E8EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E8F0 - E8F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E8F8 - E8FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E900 - E907 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E908 - E90F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E910 - E917 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E918 - E91F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E920 - E927 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E928 - E92F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E930 - E937 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E938 - E93F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E940 - E947 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E948 - E94F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E950 - E957 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E958 - E95F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E960 - E967 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E968 - E96F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E970 - E977 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E978 - E97F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E980 - E987 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E988 - E98F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E990 - E997 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E998 - E99F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E9A0 - E9A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E9A8 - E9AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E9B0 - E9B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E9B8 - E9BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E9C0 - E9C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E9C8 - E9CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E9D0 - E9D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E9D8 - E9DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E9E0 - E9E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E9E8 - E9EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E9F0 - E9F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* E9F8 - E9FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EA00 - EA07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EA08 - EA0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EA10 - EA17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EA18 - EA1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EA20 - EA27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EA28 - EA2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EA30 - EA37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EA38 - EA3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EA40 - EA47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EA48 - EA4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EA50 - EA57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EA58 - EA5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EA60 - EA67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EA68 - EA6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EA70 - EA77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EA78 - EA7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EA80 - EA87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EA88 - EA8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EA90 - EA97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EA98 - EA9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EAA0 - EAA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EAA8 - EAAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EAB0 - EAB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EAB8 - EABF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EAC0 - EAC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EAC8 - EACF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EAD0 - EAD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EAD8 - EADF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EAE0 - EAE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EAE8 - EAEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EAF0 - EAF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EAF8 - EAFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EB00 - EB07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EB08 - EB0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EB10 - EB17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EB18 - EB1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EB20 - EB27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EB28 - EB2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EB30 - EB37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EB38 - EB3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EB40 - EB47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EB48 - EB4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EB50 - EB57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EB58 - EB5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EB60 - EB67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EB68 - EB6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EB70 - EB77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EB78 - EB7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EB80 - EB87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EB88 - EB8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EB90 - EB97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EB98 - EB9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EBA0 - EBA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EBA8 - EBAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EBB0 - EBB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EBB8 - EBBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EBC0 - EBC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EBC8 - EBCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EBD0 - EBD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EBD8 - EBDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EBE0 - EBE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EBE8 - EBEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EBF0 - EBF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EBF8 - EBFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EC00 - EC07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EC08 - EC0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EC10 - EC17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EC18 - EC1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EC20 - EC27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EC28 - EC2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EC30 - EC37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EC38 - EC3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EC40 - EC47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EC48 - EC4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EC50 - EC57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EC58 - EC5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EC60 - EC67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EC68 - EC6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EC70 - EC77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EC78 - EC7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EC80 - EC87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EC88 - EC8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EC90 - EC97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EC98 - EC9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ECA0 - ECA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ECA8 - ECAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ECB0 - ECB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ECB8 - ECBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ECC0 - ECC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ECC8 - ECCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ECD0 - ECD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ECD8 - ECDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ECE0 - ECE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ECE8 - ECEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ECF0 - ECF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ECF8 - ECFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ED00 - ED07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ED08 - ED0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ED10 - ED17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ED18 - ED1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ED20 - ED27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ED28 - ED2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ED30 - ED37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ED38 - ED3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ED40 - ED47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ED48 - ED4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ED50 - ED57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ED58 - ED5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ED60 - ED67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ED68 - ED6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ED70 - ED77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ED78 - ED7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ED80 - ED87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ED88 - ED8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ED90 - ED97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* ED98 - ED9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EDA0 - EDA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EDA8 - EDAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EDB0 - EDB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EDB8 - EDBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EDC0 - EDC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EDC8 - EDCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EDD0 - EDD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EDD8 - EDDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EDE0 - EDE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EDE8 - EDEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EDF0 - EDF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EDF8 - EDFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EE00 - EE07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EE08 - EE0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EE10 - EE17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EE18 - EE1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EE20 - EE27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EE28 - EE2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EE30 - EE37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EE38 - EE3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EE40 - EE47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EE48 - EE4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EE50 - EE57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EE58 - EE5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EE60 - EE67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EE68 - EE6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EE70 - EE77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EE78 - EE7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EE80 - EE87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EE88 - EE8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EE90 - EE97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EE98 - EE9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EEA0 - EEA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EEA8 - EEAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EEB0 - EEB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EEB8 - EEBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EEC0 - EEC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EEC8 - EECF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EED0 - EED7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EED8 - EEDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EEE0 - EEE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EEE8 - EEEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EEF0 - EEF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EEF8 - EEFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EF00 - EF07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EF08 - EF0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EF10 - EF17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EF18 - EF1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EF20 - EF27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EF28 - EF2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EF30 - EF37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EF38 - EF3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EF40 - EF47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EF48 - EF4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EF50 - EF57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EF58 - EF5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EF60 - EF67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EF68 - EF6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EF70 - EF77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EF78 - EF7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EF80 - EF87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EF88 - EF8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EF90 - EF97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EF98 - EF9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EFA0 - EFA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EFA8 - EFAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EFB0 - EFB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EFB8 - EFBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EFC0 - EFC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EFC8 - EFCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EFD0 - EFD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EFD8 - EFDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EFE0 - EFE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EFE8 - EFEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EFF0 - EFF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* EFF8 - EFFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F000 - F007 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F008 - F00F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F010 - F017 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F018 - F01F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F020 - F027 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F028 - F02F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F030 - F037 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F038 - F03F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F040 - F047 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F048 - F04F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F050 - F057 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F058 - F05F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F060 - F067 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F068 - F06F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F070 - F077 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F078 - F07F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F080 - F087 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F088 - F08F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F090 - F097 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F098 - F09F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F0A0 - F0A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F0A8 - F0AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F0B0 - F0B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F0B8 - F0BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F0C0 - F0C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F0C8 - F0CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F0D0 - F0D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F0D8 - F0DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F0E0 - F0E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F0E8 - F0EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F0F0 - F0F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F0F8 - F0FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F100 - F107 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F108 - F10F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F110 - F117 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F118 - F11F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F120 - F127 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F128 - F12F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F130 - F137 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F138 - F13F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F140 - F147 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F148 - F14F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F150 - F157 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F158 - F15F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F160 - F167 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F168 - F16F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F170 - F177 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F178 - F17F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F180 - F187 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F188 - F18F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F190 - F197 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F198 - F19F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F1A0 - F1A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F1A8 - F1AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F1B0 - F1B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F1B8 - F1BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F1C0 - F1C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F1C8 - F1CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F1D0 - F1D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F1D8 - F1DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F1E0 - F1E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F1E8 - F1EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F1F0 - F1F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F1F8 - F1FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F200 - F207 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F208 - F20F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F210 - F217 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F218 - F21F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F220 - F227 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F228 - F22F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F230 - F237 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F238 - F23F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F240 - F247 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F248 - F24F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F250 - F257 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F258 - F25F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F260 - F267 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F268 - F26F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F270 - F277 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F278 - F27F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F280 - F287 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F288 - F28F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F290 - F297 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F298 - F29F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F2A0 - F2A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F2A8 - F2AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F2B0 - F2B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F2B8 - F2BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F2C0 - F2C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F2C8 - F2CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F2D0 - F2D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F2D8 - F2DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F2E0 - F2E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F2E8 - F2EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F2F0 - F2F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F2F8 - F2FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F300 - F307 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F308 - F30F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F310 - F317 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F318 - F31F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F320 - F327 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F328 - F32F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F330 - F337 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F338 - F33F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F340 - F347 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F348 - F34F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F350 - F357 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F358 - F35F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F360 - F367 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F368 - F36F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F370 - F377 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F378 - F37F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F380 - F387 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F388 - F38F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F390 - F397 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F398 - F39F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F3A0 - F3A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F3A8 - F3AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F3B0 - F3B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F3B8 - F3BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F3C0 - F3C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F3C8 - F3CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F3D0 - F3D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F3D8 - F3DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F3E0 - F3E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F3E8 - F3EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F3F0 - F3F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F3F8 - F3FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F400 - F407 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F408 - F40F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F410 - F417 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F418 - F41F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F420 - F427 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F428 - F42F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F430 - F437 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F438 - F43F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F440 - F447 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F448 - F44F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F450 - F457 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F458 - F45F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F460 - F467 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F468 - F46F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F470 - F477 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F478 - F47F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F480 - F487 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F488 - F48F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F490 - F497 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F498 - F49F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F4A0 - F4A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F4A8 - F4AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F4B0 - F4B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F4B8 - F4BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F4C0 - F4C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F4C8 - F4CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F4D0 - F4D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F4D8 - F4DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F4E0 - F4E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F4E8 - F4EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F4F0 - F4F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F4F8 - F4FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F500 - F507 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F508 - F50F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F510 - F517 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F518 - F51F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F520 - F527 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F528 - F52F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F530 - F537 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F538 - F53F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F540 - F547 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F548 - F54F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F550 - F557 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F558 - F55F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F560 - F567 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F568 - F56F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F570 - F577 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F578 - F57F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F580 - F587 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F588 - F58F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F590 - F597 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F598 - F59F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F5A0 - F5A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F5A8 - F5AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F5B0 - F5B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F5B8 - F5BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F5C0 - F5C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F5C8 - F5CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F5D0 - F5D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F5D8 - F5DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F5E0 - F5E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F5E8 - F5EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F5F0 - F5F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F5F8 - F5FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F600 - F607 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F608 - F60F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F610 - F617 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F618 - F61F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F620 - F627 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F628 - F62F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F630 - F637 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F638 - F63F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F640 - F647 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F648 - F64F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F650 - F657 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F658 - F65F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F660 - F667 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F668 - F66F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F670 - F677 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F678 - F67F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F680 - F687 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F688 - F68F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F690 - F697 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F698 - F69F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F6A0 - F6A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F6A8 - F6AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F6B0 - F6B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F6B8 - F6BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F6C0 - F6C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F6C8 - F6CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F6D0 - F6D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F6D8 - F6DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F6E0 - F6E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F6E8 - F6EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F6F0 - F6F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F6F8 - F6FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F700 - F707 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F708 - F70F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F710 - F717 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F718 - F71F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F720 - F727 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F728 - F72F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F730 - F737 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F738 - F73F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F740 - F747 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F748 - F74F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F750 - F757 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F758 - F75F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F760 - F767 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F768 - F76F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F770 - F777 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F778 - F77F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F780 - F787 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F788 - F78F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F790 - F797 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F798 - F79F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F7A0 - F7A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F7A8 - F7AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F7B0 - F7B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F7B8 - F7BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F7C0 - F7C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F7C8 - F7CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F7D0 - F7D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F7D8 - F7DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F7E0 - F7E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F7E8 - F7EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F7F0 - F7F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F7F8 - F7FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F800 - F807 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F808 - F80F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F810 - F817 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F818 - F81F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F820 - F827 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F828 - F82F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F830 - F837 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F838 - F83F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F840 - F847 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F848 - F84F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F850 - F857 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F858 - F85F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F860 - F867 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F868 - F86F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F870 - F877 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F878 - F87F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F880 - F887 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F888 - F88F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F890 - F897 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F898 - F89F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F8A0 - F8A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F8A8 - F8AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F8B0 - F8B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F8B8 - F8BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F8C0 - F8C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F8C8 - F8CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F8D0 - F8D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F8D8 - F8DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F8E0 - F8E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F8E8 - F8EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F8F0 - F8F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F8F8 - F8FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F900 - F907 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F908 - F90F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F910 - F917 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F918 - F91F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F920 - F927 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F928 - F92F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F930 - F937 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F938 - F93F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F940 - F947 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F948 - F94F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F950 - F957 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F958 - F95F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F960 - F967 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F968 - F96F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F970 - F977 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F978 - F97F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F980 - F987 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F988 - F98F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F990 - F997 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F998 - F99F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F9A0 - F9A7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F9A8 - F9AF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F9B0 - F9B7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F9B8 - F9BF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F9C0 - F9C7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F9C8 - F9CF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F9D0 - F9D7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F9D8 - F9DF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F9E0 - F9E7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F9E8 - F9EF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F9F0 - F9F7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* F9F8 - F9FF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FA00 - FA07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FA08 - FA0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FA10 - FA17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FA18 - FA1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FA20 - FA27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FA28 - FA2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FA30 - FA37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FA38 - FA3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FA40 - FA47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FA48 - FA4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FA50 - FA57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FA58 - FA5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FA60 - FA67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FA68 - FA6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FA70 - FA77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FA78 - FA7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FA80 - FA87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FA88 - FA8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FA90 - FA97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FA98 - FA9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FAA0 - FAA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FAA8 - FAAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FAB0 - FAB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FAB8 - FABF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FAC0 - FAC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FAC8 - FACF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FAD0 - FAD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FAD8 - FADF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FAE0 - FAE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FAE8 - FAEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FAF0 - FAF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FAF8 - FAFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FB00 - FB07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FB08 - FB0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FB10 - FB17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FB18 - FB1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FB20 - FB27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FB28 - FB2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FB30 - FB37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FB38 - FB3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FB40 - FB47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FB48 - FB4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FB50 - FB57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FB58 - FB5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FB60 - FB67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FB68 - FB6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FB70 - FB77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FB78 - FB7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FB80 - FB87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FB88 - FB8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FB90 - FB97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FB98 - FB9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FBA0 - FBA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FBA8 - FBAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FBB0 - FBB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FBB8 - FBBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FBC0 - FBC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FBC8 - FBCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FBD0 - FBD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FBD8 - FBDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FBE0 - FBE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FBE8 - FBEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FBF0 - FBF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FBF8 - FBFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FC00 - FC07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FC08 - FC0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FC10 - FC17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FC18 - FC1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FC20 - FC27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FC28 - FC2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FC30 - FC37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FC38 - FC3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FC40 - FC47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FC48 - FC4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FC50 - FC57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FC58 - FC5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FC60 - FC67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FC68 - FC6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FC70 - FC77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FC78 - FC7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FC80 - FC87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FC88 - FC8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FC90 - FC97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FC98 - FC9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FCA0 - FCA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FCA8 - FCAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FCB0 - FCB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FCB8 - FCBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FCC0 - FCC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FCC8 - FCCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FCD0 - FCD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FCD8 - FCDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FCE0 - FCE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FCE8 - FCEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FCF0 - FCF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FCF8 - FCFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FD00 - FD07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FD08 - FD0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FD10 - FD17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FD18 - FD1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FD20 - FD27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FD28 - FD2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FD30 - FD37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FD38 - FD3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FD40 - FD47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FD48 - FD4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FD50 - FD57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FD58 - FD5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FD60 - FD67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FD68 - FD6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FD70 - FD77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FD78 - FD7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FD80 - FD87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FD88 - FD8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FD90 - FD97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FD98 - FD9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FDA0 - FDA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FDA8 - FDAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FDB0 - FDB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FDB8 - FDBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FDC0 - FDC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FDC8 - FDCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FDD0 - FDD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FDD8 - FDDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FDE0 - FDE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FDE8 - FDEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FDF0 - FDF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FDF8 - FDFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FE00 - FE07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FE08 - FE0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FE10 - FE17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FE18 - FE1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FE20 - FE27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FE28 - FE2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FE30 - FE37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FE38 - FE3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FE40 - FE47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FE48 - FE4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FE50 - FE57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FE58 - FE5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FE60 - FE67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FE68 - FE6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FE70 - FE77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FE78 - FE7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FE80 - FE87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FE88 - FE8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FE90 - FE97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FE98 - FE9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FEA0 - FEA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FEA8 - FEAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FEB0 - FEB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FEB8 - FEBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FEC0 - FEC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FEC8 - FECF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FED0 - FED7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FED8 - FEDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FEE0 - FEE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FEE8 - FEEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FEF0 - FEF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FEF8 - FEFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FF00 - FF07 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FF08 - FF0F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FF10 - FF17 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FF18 - FF1F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FF20 - FF27 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FF28 - FF2F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FF30 - FF37 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FF38 - FF3F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FF40 - FF47 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FF48 - FF4F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FF50 - FF57 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FF58 - FF5F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FF60 - FF67 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FF68 - FF6F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FF70 - FF77 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FF78 - FF7F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FF80 - FF87 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FF88 - FF8F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FF90 - FF97 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FF98 - FF9F */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FFA0 - FFA7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FFA8 - FFAF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FFB0 - FFB7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FFB8 - FFBF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FFC0 - FFC7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FFC8 - FFCF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FFD0 - FFD7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FFD8 - FFDF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FFE0 - FFE7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FFE8 - FFEF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FFF0 - FFF7 */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, /* FFF8 - FFFF */ XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, XML_XX, }; XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanUTF16Transcoder.hpp0000664000175000000640000000725611731656102023754 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANUTF16TRANSCODER_HEADER_GUARD_1357924680) #define XALANUTF16TRANSCODER_HEADER_GUARD_1357924680 // Base include file. Must be first. #include // Base class header file... #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT XalanUTF16Transcoder : public XalanOutputTranscoder { public: explicit XalanUTF16Transcoder(MemoryManager& theManager); static XalanUTF16Transcoder* create(MemoryManager& theManager); virtual ~XalanUTF16Transcoder(); /** * Transcode data from UTF-16 to UTF-16. * * @param theSourceData The source data to transcode * @param theSourceCount The length of the source data. * @param theResult The error code, if any. * @param theTarget The target array for storing the transcoded data. * @param theTargetSize The number of characters that can be stored in the target. * @param theSourceCharsTranscoded The count of the source characters that were transcoded. * @param theTargetBytesUsed The number of characters stored in the target array * @return The result code. */ virtual eCode transcode( const XalanDOMChar* theSourceData, size_type theSourceCount, XalanXMLByte* theTarget, size_type theTargetSize, size_type& theSourceCharsTranscoded, size_type& theTargetBytesUsed); /** * Transcode data from UTF-16 to UTF-16. * * @param theSourceData The source data to transcode * @param theSourceCount The length of the source data. * @param theResult The error code, if any. * @param theTarget The target array for storing the transcoded data. * @param theTargetSize The number of characters that can be stored in the target. * @param theSourceCharsTranscoded The count of the source characters that were transcoded. * @param theTargetBytesUsed The number of characters stored in the target array * @return The result code. */ virtual eCode transcode( const XalanXMLByte* theSourceData, size_type theSourceCount, XalanDOMChar* theTarget, size_type theTargetSize, size_type& theSourceCharsTranscoded, size_type& theTargetBytesUsed, unsigned char* theCharSizes); virtual bool canTranscodeTo(XalanUnicodeChar theChar) const; private: // Not implemented... XalanUTF16Transcoder(const XalanUTF16Transcoder&); XalanUTF16Transcoder& operator=(const XalanUTF16Transcoder&); }; XALAN_CPP_NAMESPACE_END #endif // XALANUTF16TRANSCODER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanDOMStringReusableAllocator.hpp0000664000175000000640000001365011731656102026247 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANDOMSTRINGREUSABLEALLOCATOR_INCLUDE_GUARD_12455133) #define XALANDOMSTRINGREUSABLEALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT XalanDOMStringReusableAllocator { public: typedef XalanDOMString data_type; typedef data_type::size_type data_type_size_type; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ReusableArenaBlock ArenaBlockType; typedef ReusableArenaBlock ArenaAllocatorType; #else typedef ReusableArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; enum { eDefaultBlockSize = 32 }; /** * Construct an instance that will allocate in blocks of the specified size. * * @param theBlockSize The block size. */ XalanDOMStringReusableAllocator(MemoryManager& theManager, size_type theBlockCount); ~XalanDOMStringReusableAllocator(); /** * Create a XalanDOMString object. * * @return reference to the new instance */ data_type& create(); /** * Create a XalanDOMString object. * * @param theString A pointer to a character string * @param theCount The number of characters in the string, or npos if the string is null-terminated. * * @return reference to the new instance */ data_type& create( const char* theString, #if defined(_MSC_VER) && (_MSC_VER <= 1300) // $$$ ToDo: Some strange bug in MSVC++ complains when using data_type::npos here. data_type_size_type theCount = data_type_size_type(-1)); #else data_type_size_type theCount = data_type_size_type(data_type::npos)); #endif /** * Copy constructor * * @param theSource The source string for the copy * @param theStartPosition The position to start in the source string. * @param theCount The number of characters to copy from the source string. * * @return reference to the new instance */ data_type& create( const data_type& theSource, data_type_size_type theStartPosition = 0, data_type_size_type theCount = data_type_size_type(data_type::npos)); /** * Create a XalanDOMString object. * * @param theString A pointer to a wide character string * @param theCount The number of characters in the string, or npos if the string is null-terminated. * * @return reference to the new instance */ data_type& create( const XalanDOMChar* theString, data_type_size_type theCount = data_type_size_type(data_type::npos)); /** * Create a XalanDOMString object. * * @param theCount the size of the string * @param theChar the character used to initialize the string * * @return reference to the new instance */ data_type& create( data_type_size_type theCount, XalanDOMChar theChar); /* * Destroy a XalanDOMString object. * */ bool destroy(XalanDOMString& theDOMString) { return m_allocator.destroyObject(&theDOMString); } /** * Determine if an object is owned by the allocator... */ bool ownsObject(const data_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all instance objects from allocator. */ void reset() { m_allocator.reset(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } /** * Get a reference to the MemoryManager instance * for this instance. * * @return A reference to the MemoryManager instance. */ MemoryManager& getMemoryManager() { return m_allocator.getMemoryManager(); } /** * Get a reference to the MemoryManager instance * for this instance. * * @return A reference to the MemoryManager instance. */ const MemoryManager& getMemoryManager() const { return m_allocator.getMemoryManager(); } private: // Not implemented... XalanDOMStringReusableAllocator(const XalanDOMStringReusableAllocator&); XalanDOMStringReusableAllocator& operator=(const XalanDOMStringReusableAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANDOMSTRINGREUSABLEALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanInMemoryMessageLoader.hpp0000664000175000000640000000403711731656102025307 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(INMEMMSGLOADER_HEADER_GUARD_1357924680) #define INMEMMSGLOADER_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT XalanInMemoryMessageLoader : public XalanMessageLoader { public: XalanInMemoryMessageLoader(MemoryManager& theManager); virtual ~XalanInMemoryMessageLoader(); protected: // ----------------------------------------------------------------------- // Implementation of the virtual message loader API // ----------------------------------------------------------------------- virtual bool loadMsg( XalanMessages::Codes msgToLoad, XalanDOMChar* toFill, XalanSize_t maxChars ); private: XalanInMemoryMessageLoader(const XalanInMemoryMessageLoader&); XalanInMemoryMessageLoader& operator=(const XalanInMemoryMessageLoader&); const XalanDOMString m_unknownMessage; }; XALAN_CPP_NAMESPACE_END #endif // MSGLOADER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanParsedURI.hpp0000664000175000000640000002243711731656102022716 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANPARSEDURI_HEADER_GUARD_1357924680) #define XALANPARSEDURI_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN /** * URI handling (hopefully) according to RFC2396. */ class XALAN_PLATFORMSUPPORT_EXPORT XalanParsedURI { public: // Flags to say if a component is defined. Note that each component may // be defined but empty, except for the path. #if defined(XALAN_INLINE_INITIALIZATION) static const int d_scheme = 1; static const int d_authority = 2; static const int d_query = 4; static const int d_fragment = 8; #else enum eComponent { d_scheme = 1, d_authority = 2, d_query = 4, d_fragment = 8 }; #endif /** * Default constructor */ XalanParsedURI(MemoryManager& theManager) : m_scheme(theManager), m_authority(theManager), m_path(theManager), m_query(theManager), m_fragment(theManager), m_defined(0) { } /** * Constructor which parses the passed in uri * * @param uriString URI to parse * @param uriStringLen Length of the URI string */ XalanParsedURI( const XalanDOMChar* uriString, XalanDOMString::size_type uriStringLen, MemoryManager& theManager) : m_scheme(theManager), m_authority(theManager), m_path(theManager), m_query(theManager), m_fragment(theManager), m_defined(0) { parse(uriString, uriStringLen); } /** * Constructor which parses the passed in uri * * @param uriString URI to parse */ XalanParsedURI( const XalanDOMString &uriString, MemoryManager& theManager) : m_scheme(theManager), m_authority(theManager), m_path(theManager), m_query(theManager), m_fragment(theManager), m_defined(0) { parse(uriString.c_str(), uriString.length()); } MemoryManager& getMemoryManager() { return m_scheme.getMemoryManager(); } /** * Parse the passed in uri * * @param uriString URI to parse * @param uriStringLen Length of the URI string */ void parse( const XalanDOMChar* uriString, XalanDOMString::size_type uriStringLen); /** * Parse the passed in uri * * @param uriString URI to parse * @param uriStringLen Length of the URI string */ void parse( const XalanDOMString &uriString) { parse(uriString.c_str(), uriString.length()); } /** * Reassemble the uri components to make a complete URI * * @return The reassembled URI */ XalanDOMString& make(XalanDOMString& theResult) const; /** * Resolve this URI relative to another, according to RFC2396. * * @param base The base URI to use during resolution. */ void resolve(const XalanParsedURI &base); /** * Resolve this URI relative to another. * * @param base The base URI string * @param baseLen The length of the base URI */ void resolve( const XalanDOMChar *base, const XalanDOMString::size_type baseLen) { XalanParsedURI baseURI(base, baseLen,getMemoryManager()); resolve(baseURI); } /** * Resolve this URI relative to another. * * @param base The base URI string */ void resolve( const XalanDOMString &base) { resolve(base.c_str(), base.length()); } /** * Resolve the one URI relative to another. * * @relative The URI string to resolve * @relativeLen The lengh of the relative URI string * @base The base URI string * @baseLen The length of the base URI string * */ static XalanDOMString& resolve( const XalanDOMChar *relative, XalanDOMString::size_type relativeLen, const XalanDOMChar *base, XalanDOMString::size_type baseLen, XalanDOMString& theResult ); /** * Resolve the one URI relative to another. * * @relative The URI string to resolve * @base The base URI string * */ static XalanDOMString& resolve( const XalanDOMString &relative, const XalanDOMString &base, XalanDOMString& theResult ) { return resolve(relative.c_str(), relative.length(), base.c_str(), base.length(), theResult); } /** * Get the scheme component */ const XalanDOMString& getScheme() const { return m_scheme; } /** * See if the scheme component is defined. */ bool isSchemeDefined() const { return m_defined & d_scheme; } /** * Set the scheme component. Also sets the scheme defined flag. */ void setScheme(const XalanDOMChar *scheme) { m_scheme = scheme; m_defined |= d_scheme; } /** * Set the scheme component. Also sets the scheme defined flag. */ void setScheme(const XalanDOMString &scheme) { m_scheme = scheme; m_defined |= d_scheme; } /** * Get the authority component */ const XalanDOMString& getAuthority() const { return m_authority; } /** * See if the authority component is defined. */ bool isAuthorityDefined() const { return m_defined & d_authority ? true : false; } /** * Set the authority component. Also sets the authority defined flag. */ void setAuthority(const XalanDOMChar *authority) { m_authority = authority; m_defined |= d_authority; } /** * Set the authority component. Also sets the authority defined flag. */ void setAuthority(const XalanDOMString &authority) { m_authority = authority; m_defined |= d_authority; } /** * Get the path component */ const XalanDOMString& getPath() const { return m_path; } /** * Set the path component. */ void setPath(const XalanDOMChar *path) { m_path = path; } /** * Set the path component. */ void setPath(const XalanDOMString &path) { m_path = path; } /** * Get function to get the query component */ const XalanDOMString& getQuery() const { return m_query; } /** * See if the query component is defined. */ bool isQueryDefined() const { return m_defined & d_query ? true : false; } /** * Set the query component. Also sets the query defined flag. */ void setQuery(const XalanDOMChar *query) { m_query = query; m_defined |= d_query; } /** * Set the query component. Also sets the query defined flag. */ void setQuery(const XalanDOMString &query) { m_query = query; m_defined |= d_query; } /** * Get the fragment component */ const XalanDOMString& getFragment() const { return m_fragment; } /** * See if the fragment component is defined. */ bool isFragmentDefined() const { return m_defined & d_fragment ? true : false; } /** * Set the fragment component. Also sets the fragment defined flag. */ void setFragment(const XalanDOMChar *fragment) { m_fragment = fragment; m_defined |= d_fragment; } /** * Set the fragment component. Also sets the fragment defined flag. */ void setFragment(const XalanDOMString &fragment) { m_fragment = fragment; m_defined |= d_fragment; } /** * Get the defined components mask. */ unsigned int getDefined() const { return m_defined; } /** * Set the defined components mask. */ void setDefined(unsigned int defined) { m_defined = defined; } private: // not implemented XalanParsedURI(); XalanParsedURI(const XalanParsedURI&); XalanDOMString m_scheme; XalanDOMString m_authority; XalanDOMString m_path; XalanDOMString m_query; XalanDOMString m_fragment; unsigned int m_defined; }; XALAN_CPP_NAMESPACE_END #endif // XALANPARSEDURI_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/ReusableArenaBlock.hpp0000664000175000000640000002231011731656102023606 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(REUSABLEARENABLOCK_INCLUDE_GUARD_1357924680) #define REUSABLEARENABLOCK_INCLUDE_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN template #else class SizeType = unsigned short> #endif class ReusableArenaBlock : public ArenaBlockBase { public: typedef ArenaBlockBase BaseClassType; typedef typename BaseClassType::size_type size_type; typedef ReusableArenaBlock ThisType; struct NextBlock { enum { VALID_OBJECT_STAMP = 0xffddffdd }; size_type next; const int verificationStamp; NextBlock( size_type _next): next(_next), verificationStamp(VALID_OBJECT_STAMP) { } bool isValidFor( size_type rightBorder ) const { return ( ( verificationStamp == int(VALID_OBJECT_STAMP)) && ( next <= rightBorder ) ) ? true : false ; } }; /* * Construct an ArenaBlock of the specified size * of objects. * * @param theBlockSize The size of the block (the * number of objects it can contain). */ ReusableArenaBlock( MemoryManager& theManager, size_type theBlockSize) : BaseClassType(theManager, theBlockSize), m_firstFreeBlock(0), m_nextFreeBlock(0) { XALAN_STATIC_ASSERT(sizeof(ObjectType) >= sizeof(NextBlock)); for( size_type i = 0; i < this->m_blockSize; ++i ) { new (&this->m_objectBlock[i]) NextBlock(size_type(i + 1)); } } ~ReusableArenaBlock() { size_type removedObjects = 0; for (size_type i = 0; i < this->m_blockSize && removedObjects < this->m_objectCount; ++i) { if ( isOccupiedBlock(&this->m_objectBlock[i]) ) { this->m_objectBlock[i].~ObjectType(); ++removedObjects; } } } static ThisType* create( MemoryManager& theManager, size_type theBlockSize) { ThisType* theInstance; return XalanConstruct( theManager, theInstance, theManager, theBlockSize); } /* * Allocate a block. Once the object is constructed, you must call * commitAllocation(). * * @return a pointer to the new block. */ ObjectType* allocateBlock() { if ( this->m_objectCount == this->m_blockSize ) { assert ( this->m_firstFreeBlock == (this->m_blockSize + 1) ); return 0; } else { assert( this->m_objectCount < this->m_blockSize ); ObjectType* theResult = 0; assert ( this->m_firstFreeBlock <= this->m_blockSize ); assert ( this->m_nextFreeBlock <= this->m_blockSize ); // check if any part was allocated but not commited if(this->m_firstFreeBlock != this->m_nextFreeBlock) { // return the previously allocated block and wait for a commit theResult = this->m_objectBlock + this->m_firstFreeBlock; } else { theResult = this->m_objectBlock + this->m_firstFreeBlock; assert(size_type(theResult - this->m_objectBlock) < this->m_blockSize); NextBlock* const theBlock = reinterpret_cast(theResult); this->m_nextFreeBlock = theBlock->next; assert(theBlock->isValidFor(this->m_blockSize)); assert(this->m_nextFreeBlock <= this->m_blockSize); ++this->m_objectCount; } return theResult; } } /* * Commit the previous allocation. * * @param theBlock the address that was returned by allocateBlock() */ void commitAllocation(ObjectType* /* theBlock */) { assert ( this->m_objectCount <= this->m_blockSize ); this->m_firstFreeBlock = this->m_nextFreeBlock; } /* * Destroy the object, and return the block to the free list. * The behavior is undefined if the object pointed to is not * owned by the block. * * @param theObject the address of the object. */ void destroyObject(ObjectType* theObject) { assert(theObject != 0); // check if any uncommited block is there, add it to the list if ( this->m_firstFreeBlock != this->m_nextFreeBlock ) { // Return it to the pool of free blocks void* const p = this->m_objectBlock + this->m_firstFreeBlock; new (p) NextBlock(this->m_nextFreeBlock); this->m_nextFreeBlock = this->m_firstFreeBlock; } assert(ownsObject(theObject) == true); assert(shouldDestroyBlock(theObject)); XalanDestroy(*theObject); new (theObject) NextBlock(this->m_firstFreeBlock); m_firstFreeBlock = this->m_nextFreeBlock = size_type(theObject - this->m_objectBlock); assert (this->m_firstFreeBlock <= this->m_blockSize); --this->m_objectCount; } /* * Determine if this block owns the specified object. Note * that even if the object address is within our block, this * call will return false if no object currently occupies the * block. See also ownsBlock(). * * @param theObject the address of the object. * @return true if we own the object, false if not. */ bool ownsObject(const ObjectType* theObject) const { assert ( theObject != 0 ); return isOccupiedBlock(theObject); } protected: /* * Determine if the block should be destroyed. Returns true, * unless the object is on the free list. The behavior is * undefined if the object pointed to is not owned by the * block. * * @param theObject the address of the object * @return true if block should be destroyed, false if not. */ bool shouldDestroyBlock(const ObjectType* theObject) const { assert(size_type(theObject - this->m_objectBlock) < this->m_blockSize); return !isOnFreeList(theObject); } bool isOccupiedBlock(const ObjectType* block) const { assert( block !=0 ); return !(this->ownsBlock(block) && reinterpret_cast(block)->isValidFor(this->m_blockSize)); } private: // Not implemented... ReusableArenaBlock(const ReusableArenaBlock&); ReusableArenaBlock& operator=(const ReusableArenaBlock&); bool operator==(const ReusableArenaBlock&) const; /* * Determine if the block is on the free list. The behavior is * undefined if the object pointed to is not owned by the * block. * * @param theObject the address of the object * @return true if block is on the free list, false if not. */ bool isOnFreeList(const ObjectType* theObject) const { if ( this->m_objectCount == 0 ) { return false; } else { ObjectType* pRunPtr = this->m_objectBlock + this->m_firstFreeBlock; for (size_type i = 0; i < this->m_blockSize - this->m_objectCount; ++i) { assert(this->ownsBlock(pRunPtr)); if (pRunPtr == theObject) { return true; } else { NextBlock* const p = reinterpret_cast(pRunPtr); assert(p->isValidFor(this->m_blockSize)); pRunPtr = this->m_objectBlock + p->next; } } return false; } } // Data members... size_type m_firstFreeBlock; size_type m_nextFreeBlock; }; XALAN_CPP_NAMESPACE_END #endif // !defined(REUSABLEARENABLOCK_INCLUDE_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanDOMStringPool.hpp0000664000175000000640000001123711731656102023554 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANDOMSTRINGPOOL_HEADER_GUARD_1357924680) #define XALANDOMSTRINGPOOL_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT XalanDOMStringPool { public: enum { eDefaultBlockSize = 32, eDefaultBucketCount = XalanDOMStringHashTable::eDefaultBucketCount, eDefaultBucketSize = XalanDOMStringHashTable::eDefaultBucketSize }; typedef XalanDOMStringAllocator AllocatorType; typedef AllocatorType::size_type block_size_type; typedef size_t bucket_count_type; typedef XalanDOMStringHashTable::bucket_size_type bucket_size_type; /** * Create a string pool. * * @param theBlockSize The block size for the allocator. * @param theBucketCount The number of buckets to use for the hash table. This should be a prime number for best results. * @param theBucketSize The initial size of each bucket in the hash table. */ explicit XalanDOMStringPool( MemoryManager& theManager, block_size_type theBlockSize = eDefaultBlockSize, bucket_count_type theBucketCount = eDefaultBucketCount, bucket_size_type theBucketSize = eDefaultBucketSize); static XalanDOMStringPool* create( MemoryManager& theManager, block_size_type theBlockSize = eDefaultBlockSize, bucket_count_type theBucketCount = eDefaultBucketCount, bucket_size_type theBucketSize = eDefaultBucketSize); virtual ~XalanDOMStringPool(); /** * Clear the pool. * */ virtual void clear(); /** * Get the number of strings in the pool * * @return the size of the pool. */ virtual size_t size() const; /** * Get a pooled string. If the string is not pooled, it is added. * * @param theString The string to pool. * @return a const reference to the pooled string. */ virtual const XalanDOMString& get(const XalanDOMString& theString); /** * Get a pooled string. If the string is not pooled, it is added. * * @param theString The string to pool. * @param theLength The length of the string. If XalanDOMString::npos, the string is assumed to be null-terminated. * @return a const reference to the pooled string. */ virtual const XalanDOMString& get( const XalanDOMChar* theString, XalanDOMString::size_type theLength = XalanDOMString::npos); /** * Get a reference to the pool's hash table. Useful for diagnostic * purposes. * * @return a const reference to the hash table. */ const XalanDOMStringHashTable& getHashTable() const { return m_hashTable; } MemoryManager& getMemoryManager() { return m_hashTable.getMemoryManager(); } const MemoryManager& getMemoryManager() const { return m_hashTable.getMemoryManager(); } private: // Not implemented, for now... XalanDOMStringPool(const XalanDOMStringPool&); XalanDOMStringPool& operator=(const XalanDOMStringPool&); bool operator==(const XalanDOMStringPool&) const; // Data members... AllocatorType m_stringAllocator; size_t m_stringCount; XalanDOMStringHashTable m_hashTable; static const XalanDOMString s_emptyString; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANDOMSTRINGPOOL_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanNullOutputStream.cpp0000664000175000000640000000240611731656102024414 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XalanNullOutputStream.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanNullOutputStream::XalanNullOutputStream(MemoryManager& theManager) : XalanOutputStream(theManager, 1) { } XalanNullOutputStream::~XalanNullOutputStream() { } void XalanNullOutputStream::writeData( const char* /* theBuffer */, size_type /* theBufferLength */) { } void XalanNullOutputStream::doFlush() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/URISupport.cpp0000664000175000000640000001654411731656102022165 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "URISupport.hpp" #include #include #include #include #include "XalanUnicode.hpp" #include "XalanParsedURI.hpp" XALAN_CPP_NAMESPACE_BEGIN const XalanDOMChar URISupport::s_fileProtocolString1[] = { XalanUnicode::charLetter_f, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, XalanUnicode::charLetter_e, XalanUnicode::charColon, XalanUnicode::charSolidus, XalanUnicode::charSolidus, 0 }; const XalanDOMChar URISupport::s_fileProtocolString2[] = { XalanUnicode::charLetter_f, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, XalanUnicode::charLetter_e, XalanUnicode::charColon, XalanUnicode::charSolidus, XalanUnicode::charSolidus, XalanUnicode::charSolidus, 0 }; URISupport::URLAutoPtrType URISupport::getURLFromString( const XalanDOMChar* urlString, MemoryManager& theManager) { URLAutoPtrType url(new (&theManager) XMLURLType(&theManager)); XalanDOMString normalizedURL(theManager); getURLStringFromString(urlString, normalizedURL); url->setURL(normalizedURL.c_str()); return url; } void URISupport::getURLStringFromString( const XalanDOMChar* urlString, XalanDOMString::size_type len, XalanDOMString& theNormalizedURI) { assert(urlString != 0); // Let's see what sort of URI we have... if (len != 0) { const XalanDOMString::size_type index = indexOf(urlString, XalanUnicode::charColon); bool protocolPresent = false; if (index != len) { const XalanDOMString theProtocolString(urlString, theNormalizedURI.getMemoryManager(), index ); // $$$ ToDo: XMLURL::lookupByName() is supposed to be static, but is not. const XMLURLType::Protocols theProtocol = XMLURLType::lookupByName(theProtocolString.c_str()); if (theProtocol != XMLURLType::Unknown) { protocolPresent = true; } } if (protocolPresent == true) { theNormalizedURI = urlString; NormalizeURIText(theNormalizedURI); } else { XALAN_USING_XERCES(ArrayJanitor) XALAN_USING_XERCES(XMLPlatformUtils) // Assume it's a file specification... XALAN_USING_XERCES(MemoryManager) MemoryManager& theMemoryManager = theNormalizedURI.getMemoryManager(); const ArrayJanitor theFullPathGuard( XMLPlatformUtils::getFullPath( urlString, &theMemoryManager), &theMemoryManager); const XalanDOMChar* const theFullPath = theFullPathGuard.get(); assert(theFullPath != 0); const XalanDOMString::size_type theFullPathLength = XalanDOMString::length(theFullPath); assert(theFullPathLength > 0); if (theFullPath[0] == XalanDOMChar(XalanUnicode::charSolidus)) { const size_t theSize = sizeof(s_fileProtocolString1) / sizeof(s_fileProtocolString1[0]) - 1; theNormalizedURI.reserve(theFullPathLength + theSize); theNormalizedURI.assign(s_fileProtocolString1, theSize); } else { const size_t theSize = sizeof(s_fileProtocolString2) / sizeof(s_fileProtocolString2[0]) - 1; theNormalizedURI.reserve(theFullPathLength + theSize); theNormalizedURI.assign(s_fileProtocolString2, theSize); } theNormalizedURI.append(theFullPath, theFullPathLength); NormalizeURIText(theNormalizedURI); } } } void URISupport::getURLStringFromString( const XalanDOMChar* urlString, XalanDOMString::size_type urlStringLen, const XalanDOMChar* base, XalanDOMString::size_type baseLen, XalanDOMString& theNormalizedURI) { MemoryManager& theMemoryManager = theNormalizedURI.getMemoryManager(); XalanDOMString context(base, theMemoryManager, baseLen); XalanDOMString url(urlString, theMemoryManager, urlStringLen); // Flip slashes NormalizeURIText(context); NormalizeURIText(url); // Resolve the URI XalanParsedURI::resolve(url, context, url); // Do platform specific stuff getURLStringFromString(url, theNormalizedURI); } XalanDOMString& URISupport::NormalizeURIText(XalanDOMString& uriString) { // OK, look for a quick, cheap exit... const XalanDOMString::size_type len = uriString.length(); const XalanDOMString::size_type index = indexOf(uriString, XalanUnicode::charReverseSolidus); if (index != len) { // Start replacing at the index point, since that's the // first one... XALAN_STD_QUALIFIER replace( uriString.begin() + index, uriString.end(), XalanUnicode::charReverseSolidus, XalanUnicode::charSolidus); } return uriString; } URISupport::InvalidURIException::InvalidURIException( const XalanDOMString& theMessage, MemoryManager& theManager, const Locator* theLocator) : XSLException( theMessage, theManager, theLocator) { } URISupport::InvalidURIException::InvalidURIException( const XalanDOMString& theMessage, MemoryManager& theManager) : XSLException( theMessage, theManager) { } URISupport::InvalidURIException::~InvalidURIException() { } static const XalanDOMChar s_type[] = { XalanUnicode::charLetter_I, XalanUnicode::charLetter_n, XalanUnicode::charLetter_v, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_i, XalanUnicode::charLetter_d, XalanUnicode::charLetter_U, XalanUnicode::charLetter_R, XalanUnicode::charLetter_I, XalanUnicode::charLetter_E, XalanUnicode::charLetter_x, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_p, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; const XalanDOMChar* URISupport::InvalidURIException::getType() const { return s_type; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/AttributeVectorEntryExtended.hpp0000664000175000000640000000761111731656102025762 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(ATTRIBUTEVECTORENTRYEXTENDED_HEADER_GUARD_1357924680) #define ATTRIBUTEVECTORENTRYEXTENDED_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT AttributeVectorEntryExtended : public AttributeVectorEntry { public: AttributeVectorEntryExtended( const XMLChVectorType& theName, const XMLChVectorType& theValue, const XMLChVectorType& theType, const XMLChVectorType& theURI , const XMLChVectorType& theLocalName, MemoryManager& theManager) : AttributeVectorEntry( theName, theValue, theType, theManager), m_uri( theURI, theManager), m_localName( theLocalName, theManager) { } AttributeVectorEntryExtended( const XMLCh* theName, const XMLCh* theValue, const XMLCh* theType, const XMLCh* theURI, const XMLCh* theLocalName, MemoryManager& theManager) : AttributeVectorEntry( theName, theValue, theType, theManager), m_uri( theURI, theURI + length(theURI) + 1, theManager), m_localName( theLocalName, theLocalName + length(theLocalName) + 1, theManager) { } AttributeVectorEntryExtended( const XMLCh* theName, const XMLCh* theValue, const XMLCh* theType, MemoryManager& theManager) : AttributeVectorEntry( theName, theValue, theType,theManager), m_uri(theManager), m_localName(theManager) { } AttributeVectorEntryExtended(MemoryManager& theManager) : AttributeVectorEntry(theManager), m_uri(theManager), m_localName(theManager) { } static AttributeVectorEntryExtended* create( const XMLCh* theName, const XMLCh* theValue, const XMLCh* theType, const XMLCh* theURI, const XMLCh* theLocalName, MemoryManager& theManager) { AttributeVectorEntryExtended* theInstance; return XalanConstruct( theManager, theInstance, theName, theValue, theType, theURI, theLocalName, theManager); } virtual ~AttributeVectorEntryExtended() { } void clear() { AttributeVectorEntry::clear(); m_uri.clear(); m_localName.clear(); } XMLChVectorType m_uri; XMLChVectorType m_localName; }; XALAN_CPP_NAMESPACE_END #endif // ATTRIBUTEVECTORENTRY_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanReferenceCountedObject.hpp0000664000175000000640000000414211731656102025460 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANREFERENCECOUNTEDOBJECT_HEADER_GUARD_1357924680) #define XALANREFERENCECOUNTEDOBJECT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include XALAN_CPP_NAMESPACE_BEGIN /** * Class to hold reference count information. */ class XALAN_PLATFORMSUPPORT_EXPORT XalanReferenceCountedObject { public: /** * Increment reference count. */ static void addReference(XalanReferenceCountedObject* theInstance); /** * Decrement reference count. */ static void removeReference(XalanReferenceCountedObject* theInstance); protected: /** * Create a XalanReferenceCountedObject. */ explicit XalanReferenceCountedObject(); virtual ~XalanReferenceCountedObject(); virtual void referenced() = 0; virtual void dereferenced() = 0; virtual XalanSize_t getReferenceCount() const { return m_referenceCount; } private: XalanSize_t m_referenceCount; // Not implemented... XalanReferenceCountedObject& operator=(const XalanReferenceCountedObject&); XalanReferenceCountedObject(const XalanReferenceCountedObject&); }; XALAN_CPP_NAMESPACE_END #endif // XALANREFERENCECOUNTEDOBJECT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanDecimalFormatSymbols.cpp0000664000175000000640000001122111731656102025160 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanDecimalFormatSymbols.hpp" #include "DOMStringHelper.hpp" #include "XalanUnicode.hpp" XALAN_CPP_NAMESPACE_BEGIN static XalanDOMChar theNaNDefault[] = { XalanUnicode::charLetter_N, XalanUnicode::charLetter_a, XalanUnicode::charLetter_N, 0 }; static XalanDOMChar theInfinityDefault[] = { XalanUnicode::charLetter_I, XalanUnicode::charLetter_n, XalanUnicode::charLetter_f, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_i, XalanUnicode::charLetter_t, XalanUnicode::charLetter_y, 0 }; static XalanDOMChar theCurrencySymbol[] = { XalanUnicode::charDollarSign, 0 }; XalanDecimalFormatSymbols::XalanDecimalFormatSymbols(MemoryManager& theManager) : m_currencySymbol(theCurrencySymbol,theManager), m_decimalSeparator(XalanUnicode::charFullStop), m_digit(XalanUnicode::charNumberSign), m_groupingSeparator(XalanUnicode::charComma), m_infinity(theInfinityDefault, theManager), m_internationalCurrencySymbol(theManager), m_minusSign(XalanUnicode::charHyphenMinus), m_monetaryDecimalSeparator(XalanUnicode::charFullStop), m_NaN(theNaNDefault,theManager), m_patternSeparator(XalanUnicode::charSemicolon), m_percent(XalanUnicode::charPercentSign), m_perMill(XalanUnicode::charPerMilleSign), m_zeroDigit(XalanUnicode::charDigit_0) { } XalanDecimalFormatSymbols::XalanDecimalFormatSymbols(const XalanDecimalFormatSymbols& theSource, MemoryManager& theManager) : m_currencySymbol(theSource.m_currencySymbol,theManager), m_decimalSeparator(theSource.m_decimalSeparator), m_digit(theSource.m_digit), m_groupingSeparator(theSource.m_groupingSeparator), m_infinity(theSource.m_infinity,theManager), m_internationalCurrencySymbol(theSource.m_internationalCurrencySymbol, theManager), m_minusSign(theSource.m_minusSign), m_monetaryDecimalSeparator(theSource.m_monetaryDecimalSeparator), m_NaN(theSource.m_NaN,theManager), m_patternSeparator(theSource.m_patternSeparator), m_percent(theSource.m_percent), m_perMill(theSource.m_perMill), m_zeroDigit(theSource.m_zeroDigit) { } XalanDecimalFormatSymbols::~XalanDecimalFormatSymbols() { } XalanDecimalFormatSymbols& XalanDecimalFormatSymbols::operator=(const XalanDecimalFormatSymbols& theRHS) { if (&theRHS != this) { m_currencySymbol = theRHS.m_currencySymbol; m_decimalSeparator = theRHS.m_decimalSeparator; m_digit = theRHS.m_digit; m_groupingSeparator = theRHS.m_groupingSeparator; m_infinity = theRHS.m_infinity; m_internationalCurrencySymbol = theRHS.m_internationalCurrencySymbol; m_minusSign = theRHS.m_minusSign; m_monetaryDecimalSeparator = theRHS.m_monetaryDecimalSeparator; m_NaN = theRHS.m_NaN; m_patternSeparator = theRHS.m_patternSeparator; m_percent = theRHS.m_percent; m_perMill = theRHS.m_perMill; m_zeroDigit = theRHS.m_zeroDigit; } return *this; } bool XalanDecimalFormatSymbols::operator==(const XalanDecimalFormatSymbols& theRHS) const { return m_currencySymbol == theRHS.m_currencySymbol && m_decimalSeparator == theRHS.m_decimalSeparator && m_digit == theRHS.m_digit && m_groupingSeparator == theRHS.m_groupingSeparator && m_infinity == theRHS.m_infinity && m_internationalCurrencySymbol == theRHS.m_internationalCurrencySymbol && m_minusSign == theRHS.m_minusSign && m_monetaryDecimalSeparator == theRHS.m_monetaryDecimalSeparator && m_NaN == theRHS.m_NaN && m_patternSeparator == theRHS.m_patternSeparator && m_percent == theRHS.m_percent && m_perMill == theRHS.m_perMill && m_zeroDigit == theRHS.m_zeroDigit; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanICUMessageLoader.hpp0000664000175000000640000000516611731656102024174 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANICUMESSAGELOADER_HEADER_GUARD_1357924680) #define ICUMSGLOADER_HEADER_GUARD_1357924680 #if defined (XALAN_ICU_MSG_LOADER) // Base include file. Must be first. #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT XalanICUMessageLoader : public XalanMessageLoader { public: XalanICUMessageLoader(MemoryManager& theManager); virtual ~XalanICUMessageLoader(); protected: // ----------------------------------------------------------------------- // Implementation of the virtual message loader API // ----------------------------------------------------------------------- virtual bool loadMsg( XalanMessages::Codes msgToLoad, XalanDOMChar* toFill, XalanSize_t maxChars ); private: XalanICUMessageLoader(const XalanICUMessageLoader&); XalanICUMessageLoader& operator=(const XalanICUMessageLoader&); // ----------------------------------------------------------------------- // Private data members // // fLocaleBundle // pointer to the required locale specific resource bundle, // or to the default locale resrouce bundle in case the required // locale specific resource bundle unavailable. // // ----------------------------------------------------------------------- UResourceBundle* m_localeBundle; UResourceBundle* m_domainBundle; const XalanDOMString m_unknownMessage; }; XALAN_CPP_NAMESPACE_END #endif // defined (XALAN_ICU_MSG_LOADER) #endif // XALANICUMESSAGELOADER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/ArenaBlock.hpp0000664000175000000640000001012311731656102022122 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(ARENABLOCK_INCLUDE_GUARD_1357924680) #define ARENABLOCK_INCLUDE_GUARD_1357924680 #include XALAN_CPP_NAMESPACE_BEGIN template #else class SizeType = size_t> #endif class ArenaBlock : public ArenaBlockBase { public: typedef ArenaBlockBase BaseClassType; typedef ArenaBlock ThisType; typedef typename BaseClassType::size_type size_type; /* * Construct an ArenaBlock of the specified size * of objects. * * @param theManager The memory manager instance for the block. * @param theBlockSize The size of the block (the number of objects it can contain). */ ArenaBlock( MemoryManager& theManager, size_type theBlockSize) : BaseClassType(theManager, theBlockSize) { } ~ArenaBlock() { assert( this->m_objectCount <= this->m_blockSize ); for ( size_type i = 0; i < this->m_objectCount ; ++i ) { XalanDestroy(this->m_objectBlock[i]); } } static ThisType* create( MemoryManager& theManager, size_type theBlockSize) { ThisType* theInstance; return XalanConstruct( theManager, theInstance, theManager, theBlockSize); } /* * Allocate a block. Once the object is constructed, you must call * commitAllocation(). * * @return a pointer to the new block. */ ObjectType* allocateBlock() { // Any space left? if (this->m_objectCount == this->m_blockSize) { return 0; } else { assert(this->m_objectBlock != 0); return this->m_objectBlock + this->m_objectCount; } } /* * Commit the previous allocation. * * @param theBlock the address that was returned by allocateBlock() */ void #if defined (NDEBUG) commitAllocation(ObjectType* /* theBlock */) #else commitAllocation(ObjectType* theBlock) #endif { assert(theBlock == this->m_objectBlock + this->m_objectCount); assert(this->m_objectCount < this->m_blockSize); ++this->m_objectCount; } /* * Determine if this block owns the specified object. Note * that even if the object address is within our block, this * call will return false if no object currently occupies the * block. See also ownsBlock(). * * @param theObject the address of the object. * @return true if we own the object, false if not. */ bool ownsObject(const ObjectType* theObject) const { return this->isInBorders(theObject, this->m_objectCount); } private: // Not implemented... ArenaBlock(const ArenaBlock&); ArenaBlock& operator=(const ArenaBlock&); bool operator==(const ArenaBlock&) const; }; XALAN_CPP_NAMESPACE_END #endif // !defined(ARENABLOCK_INCLUDE_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanToXercesTranscoderWrapper.hpp0000664000175000000640000000551411731656102026237 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANTOXERCESTRANSCODERWRAPPER_HEADER_GUARD_1357924680) #define XALANTOXERCESTRANSCODERWRAPPER_HEADER_GUARD_1357924680 // Base include file. Must be first. #include // Base class header file... #include XALAN_DECLARE_XERCES_CLASS(XMLTranscoder) XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT XalanToXercesTranscoderWrapper : public XalanOutputTranscoder { public: typedef XERCES_CPP_NAMESPACE_QUALIFIER XMLTranscoder XMLTranscoderType; explicit XalanToXercesTranscoderWrapper(MemoryManager& theManager, XMLTranscoderType& theTranscoder); static XalanToXercesTranscoderWrapper* create(MemoryManager& theManager, XMLTranscoderType& theTranscoder); virtual ~XalanToXercesTranscoderWrapper(); virtual eCode transcode( const XalanDOMChar* theSourceData, size_type theSourceCount, XalanXMLByte* theTarget, size_type theTargetSize, size_type& theSourceCharsTranscoded, size_type& theTargetBytesUsed); virtual eCode transcode( const XalanXMLByte* theSourceData, size_type theSourceCount, XalanDOMChar* theTarget, size_type theTargetSize, size_type& theSourceCharsTranscoded, size_type& theTargetBytesUsed, unsigned char* theCharSizes); virtual bool canTranscodeTo(XalanUnicodeChar theChar) const; private: // Not implemented... XalanToXercesTranscoderWrapper(const XalanToXercesTranscoderWrapper&); XalanToXercesTranscoderWrapper& operator=(const XalanToXercesTranscoderWrapper&); // Data members... XMLTranscoderType* const m_transcoder; }; XALAN_CPP_NAMESPACE_END #endif // XALANTOXERCESTRANSCODERWRAPPER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/DOMStringHelper.hpp0000664000175000000640000021364311731656102023103 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(DOMSTRINGHELPER_HEADER_GUARD_1357924680) #define DOMSTRINGHELPER_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) class ostream; #else #include #endif #include #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN XALAN_USING_XERCES(MemoryManager) class XalanOutputStream; template inline OutputIteratorType XalanCopy( InputIteratorType begin, InputIteratorType end, OutputIteratorType iterator) { return XALAN_STD_QUALIFIER copy(begin, end, iterator); } template inline OutputIteratorType XalanTransform( InputIteratorType begin, InputIteratorType end, OutputIteratorType iterator, UnaryFunction function) { return XALAN_STD_QUALIFIER transform(begin, end, iterator); } /** * Get the underlying representation of the target XalanDOMString as a * null-terminated string * * @deprecated This function is deprecated. * * @param theString target string * @return null-terminated string of XalanDOMChar */ inline const XalanDOMChar* c_wstr(const XalanDOMString& theString) { return theString.c_str(); } /** * Get the underlying representation of the target CharVectorType as a * null-terminated string * * @param theString target string * @return null-terminated string of chars */ inline const char* c_str(const CharVectorType& theString) { if (theString.empty() == true) { return 0; } else { const char* const ptr = &theString[0]; assert(ptr[theString.size() - 1] == '\0'); return ptr; } } /** * Get the underlying representation of the wide string as a * UNICODE null-terminated string. This is here simply for * consistency in the code. On certain platforms, compiler- * generated wide strings will not contain Unicode code * points. Another macro converts those into XalanDOMStrings, * which are then transcoded. In these cases, the previous * defined c_sstr() function gets called. * * On platforms where the compiler does generate Unicode wide * strings, this function will be called instead. * * @deprecated This function is deprecated. * * @param theString target string * @return null-terminated string of XalanDOMChar */ inline const XalanDOMChar* c_wstr(const XalanDOMChar* theString) { return theString; } /** * Get the underlying representation of the target XalanDOMString as an array of * XalanDOMChar, not guaranteed to be null-terminated. * * @deprecated This function is deprecated. * * @param theString target string * @return array of XalanDOMChar */ inline const XalanDOMChar* toCharArray(const XalanDOMString& theString) { return theString.c_str(); } /** * Get the underlying representation of a XalanDOMChar. * * @deprecated This function is deprecated. * * @param theString target string * @return array of XalanDOMChar */ inline const XalanDOMChar* toCharArray(const XalanDOMChar* theString) { return theString; } /** * Get the underlying representation of the target CharVectorType as a * pointer to an array of characters * * @deprecated This function is deprecated. * * @param theString target string * @return the pointer */ inline const char* toCharArray(const CharVectorType& theString) { return theString.empty() == true ? 0 : &theString[0]; } /** * Reserve some space in the string for more efficient * concatenation... * * @deprecated This function is deprecated. * * @param theString target string * @param theCount The amount of space to reserve */ inline void reserve( XalanDOMString& theString, XalanDOMString::size_type theCount) { theString.reserve(theCount); } /** * Get the length of a XalanDOMString * * @deprecated This function is deprecated. * * @param theString target string * @return the length of the target string */ inline XalanDOMString::size_type length(const XalanDOMString& theString) { return theString.length(); } /** * Get the length of a null-terminated string of * XalanDOMChar characters * * @param theString target string * @return the length of the target string */ inline XalanDOMString::size_type length(const XalanDOMChar* theString) { assert(theString != 0); const XalanDOMChar* theBufferPointer = theString; while(*theBufferPointer != 0) { theBufferPointer++; } return XalanDOMString::size_type(theBufferPointer - theString); } /** * Get the length of a null-terminated string. * * @param theString target string * @return the length of the target string */ inline XalanDOMString::size_type length(const char* theString) { assert(theString != 0); return XalanDOMString::length(theString); } /** * Determines if the target string contains any elements * * @deprecated This function is deprecated. * * @param str target string * @return true if the target string has a non-zero length */ inline bool isEmpty(const XalanDOMString& str) { return str.empty(); } /** * Simulates the java String method indexOf(). * * @param theString string to search * @param theChar character searched for * @return the index of theChar in theString, * or length(theString) if the character is not * found. */ inline XalanDOMString::size_type indexOf( const XalanDOMChar* theString, XalanDOMChar theChar) { assert(theString != 0); const XalanDOMChar* thePointer = theString; while(*thePointer != theChar && *thePointer != 0) { ++thePointer; } return XalanDOMString::size_type(thePointer - theString); } /** * Simulates the java String method indexOf(). * * @param theString string to search * @param theStringLength the length of theString * @param theChar character searched for * @return the index of theChar in theString, * or length(theString) if the character is not * found. */ inline XalanDOMString::size_type indexOf( const XalanDOMChar* theString, XalanDOMString::size_type theStringLength, XalanDOMChar theChar) { assert(theString != 0); const XalanDOMChar* thePointer = theString; const XalanDOMChar* const theEndPointer = theString + theStringLength; while(*thePointer != theChar && thePointer != theEndPointer) { ++thePointer; } return XalanDOMString::size_type(thePointer - theString); } /** * Simulates the java String method indexOf(). * * @param theString string to search * @param theChar character searched for * @return the index of theChar in theString, * or length(theString) if the character is not * found. */ inline XalanDOMString::size_type indexOf( const XalanDOMString& theString, XalanDOMChar theChar) { return theString.length() == 0 ? 0 : indexOf(theString.c_str(), theChar); } /** * Simulates the java String method indexOf(). * * @param theString string to search * @param theStringLength length of the string to search * @param theSubstring substring searched for * @param theSubstringLength length of the substring searched for * @return the index of theSubstring in theString, * or length(theString) if the string is not * found. */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString::size_type) indexOf( const XalanDOMChar* theString, XalanDOMString::size_type theStringLength, const XalanDOMChar* theSubstring, XalanDOMString::size_type theSubstringLength); /** * Simulates the java String method indexOf(). * * @param theString string to search * @param theSubstring substring searched for * @return the index of theSubstring in theString, * or length(theString) if the string is not * found. */ inline XalanDOMString::size_type indexOf( const XalanDOMChar* theString, const XalanDOMChar* theSubstring) { assert(theString != 0 && theSubstring != 0); return indexOf(theString, length(theString), theSubstring, length(theSubstring)); } /** * Simulates the java String method indexOf(). * * @param theString string to search * @param theSubstring substring searched for * @return the index of theSubstring in theString, * or length(theString) if the string is not * found. */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString::size_type) indexOf( const XalanDOMString& theString, const XalanDOMString& theSubstring); /** * Simulates the java String method lastIndexOf(). * * @param theString string to search * @param theChar character searched for * @return the index of theChar in theString, * or length(theString) if the character is not * found. */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString::size_type) lastIndexOf( const XalanDOMChar* theString, XalanDOMChar theChar); /** * Simulates the java String method lastIndexOf(). * * @param theString string to search * @param theChar character searched for * @return the index of theChar in theString, * or length(theString) if the character is not * found. */ inline XalanDOMString::size_type lastIndexOf( const XalanDOMString& theString, XalanDOMChar theChar) { return lastIndexOf(theString.c_str(), theChar); } /** * Simulates the java String method startsWith(). * * @param theString target string to search * @param theStringLength the length of theString * @param theSubstring substring searched for * @param theSubstringLength the length of theSubstring * @return true if the target string begins with the substring */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(bool) startsWith( const XalanDOMChar* theString, XalanDOMString::size_type theStringLength, const XalanDOMChar* theSubstring, XalanDOMString::size_type theSubstringLength); /** * Simulates the java String method startsWith(). * * @param theDOMString target string to search * @param theSubstring substring searched for * @return true if the target string begins with the substring */ inline bool startsWith( const XalanDOMChar* theString, const XalanDOMChar* theSubstring) { assert(theString != 0 && theSubstring != 0); return startsWith(theString, length(theString), theSubstring, length(theSubstring)); } /** * Simulates the java String method startsWith(). * * @param theDOMString target string to search * @param theSubstring substring searched for * @return true if the target string begins with the substring */ inline bool startsWith( const XalanDOMChar* theString, const XalanDOMString& theSubstring) { assert(theString != 0); return startsWith( theString, length(theString), theSubstring.c_str(), theSubstring.length()); } /** * Simulates the java String method startsWith(). * * @param theDOMString target string to search * @param theSubstring substring searched for * @return true if the target string begins with the substring */ inline bool startsWith( const XalanDOMString& theString, const XalanDOMChar* theSubstring) { assert(theSubstring != 0); return startsWith( theString.c_str(), theString.length(), theSubstring, length(theSubstring)); } /** * Simulates the java String method startsWith(). * * @param theDOMString target string to search * @param theSubstring substring searched for * @param theSubstringLength the length of theSubstring * @return true if the target string begins with the substring */ inline bool startsWith( const XalanDOMString& theString, const XalanDOMChar* theSubstring, XalanDOMString::size_type theSubstringLength) { assert(theSubstring != 0); return startsWith( theString.c_str(), theString.length(), theSubstring, theSubstringLength); } /** * Simulates the java String method startsWith(). * * @param theDOMString target string to search * @param theSubstring substring searched for * @return true if the target string begins with the substring */ inline bool startsWith( const XalanDOMString& theString, const XalanDOMString& theSubstring) { return startsWith( theString.c_str(), theString.length(), theSubstring.c_str(), theSubstring.length()); } /** * Simulates the java String method endsWith(). * * @param theString target string to search * @param theSubstring substring searched for * @return true if the target string ends with the substring */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(bool) endsWith( const XalanDOMChar* theString, XalanDOMString::size_type theStringLength, const XalanDOMChar* theSubstring, XalanDOMString::size_type theSubstringLength); /** * Simulates the java String method endsWith(). * * @param theString target string to search * @param theSubstring substring searched for * @return true if the target string ends with the substring */ inline bool endsWith( const XalanDOMChar* theString, const XalanDOMChar* theSubstring) { assert(theString != 0 && theSubstring != 0); return endsWith( theString, length(theString), theSubstring, length(theSubstring)); } /** * Simulates the java String method endsWith(). * * @param theString target string to search * @param theSubstring substring searched for * @return true if the target string ends with the substring */ inline bool endsWith( const XalanDOMString& theString, const XalanDOMString& theSubstring) { return endsWith( theString.c_str(), theString.length(), theSubstring.c_str(), theSubstring.length()); } /** * Converts a pointer into a XalanDOMString * * @param theValue pointer to be converted * @param theResult the string to append with the result * @return a reference to the passed string result. */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) PointerToDOMString( const void* theValue, XalanDOMString& theResult); class XALAN_PLATFORMSUPPORT_EXPORT DOMStringHelper { public: typedef void (FormatterListener::*MemberFunctionPtr)(const XMLCh* const, const FormatterListener::size_type); static void initialize(MemoryManager& theMemoryManager); static void terminate(); static void NumberToCharacters( double theValue, FormatterListener& formatterListener, MemberFunctionPtr function); static void NumberToCharacters( long theValue, FormatterListener& formatterListener, MemberFunctionPtr function); static void NumberToCharacters( XALAN_INT64 theValue, FormatterListener& formatterListener, MemberFunctionPtr function); }; /** * Converts a double value into a XalanDOMString * * @param theValue number to be converted * @param theResult the string to append with the result * @return a reference to the passed string result. */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) NumberToDOMString( double theValue, XalanDOMString& theResult); /** * Converts an 64-bit unsigned value into a XalanDOMString * * @param theValue number to be converted * @param theResult the string to append with the result * @return a reference to the passed string result. */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) NumberToDOMString( XALAN_UINT64 theValue, XalanDOMString& theResult); /** * Converts an 64-bit signed value into a XalanDOMString * * @param theValue number to be converted * @param theResult the string to append with the result * @return a reference to the passed string result. */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) NumberToDOMString( XALAN_INT64 theValue, XalanDOMString& theResult); /** * Converts an unsigned long value into a XalanDOMString * * @param theValue number to be converted * @param theResult the string to append with the result * @return a reference to the passed string result. */ inline XalanDOMString& NumberToDOMString( unsigned long theValue, XalanDOMString& theResult) { return NumberToDOMString( static_cast(theValue), theResult); } /** * Converts a XalanSSize_t value into a XalanDOMString * * @param theValue number to be converted * @param theResult the string to append with the result * @return a reference to the passed string result. */ inline XalanDOMString& NumberToDOMString( long theValue, XalanDOMString& theResult) { return NumberToDOMString( static_cast(theValue), theResult); } /** * Converts an unsigned int value into a XalanDOMString * * @param theValue number to be converted * @param theResult the string to append with the result * @return a reference to the passed string result. */ inline XalanDOMString& NumberToDOMString( unsigned int theValue, XalanDOMString& theResult) { return NumberToDOMString( static_cast(theValue), theResult); } /** * Converts an int value into a XalanDOMString * * @param theValue number to be converted * @param theResult the string to append with the result * @return a reference to the passed string result. */ inline XalanDOMString& NumberToDOMString( int theValue, XalanDOMString& theResult) { return NumberToDOMString( static_cast(theValue), theResult); } /** * Converts an unsigned short value into a XalanDOMString * * @param theValue number to be converted * @param theResult the string to append with the result * @return a reference to the passed string result. */ inline XalanDOMString& NumberToDOMString( unsigned short theValue, XalanDOMString& theResult) { return NumberToDOMString( static_cast(theValue), theResult); } /** * Converts a short value into a XalanDOMString * * @param theValue number to be converted * @param theResult the string to append with the result * @return a reference to the passed string result. */ inline XalanDOMString& NumberToDOMString( short theValue, XalanDOMString& theResult) { return NumberToDOMString( static_cast(theValue), theResult); } /** * Converts an 64-bit unsigned value into a XalanDOMString * * @param theValue number to be converted * @param theResult the string to append with the result * @return a reference to the passed string result. */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) NumberToHexDOMString( XALAN_UINT64 theValue, XalanDOMString& theResult); /** * Converts an 64-bit signed value into a XalanDOMString * * @param theValue number to be converted * @param theResult the string to append with the result * @return a reference to the passed string result. */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) NumberToHexDOMString( XALAN_INT64 theValue, XalanDOMString& theResult); /** * Converts a XalanSSize_t value into a XalanDOMString * * @param theValue number to be converted * @param theResult the string to append with the result * @return a reference to the passed string result. */ inline XalanDOMString& NumberToHexDOMString( unsigned long theValue, XalanDOMString& theResult) { return NumberToHexDOMString( static_cast(theValue), theResult); } /** * Converts a XalanSSize_t value into a XalanDOMString * * @param theValue number to be converted * @param theResult the string to append with the result * @return a reference to the passed string result. */ inline XalanDOMString& NumberToHexDOMString( long theValue, XalanDOMString& theResult) { return NumberToHexDOMString( static_cast(theValue), theResult); } /** * Converts an unsigned int value into a XalanDOMString * * @param theValue number to be converted * @param theResult the string to append with the result * @return a reference to the passed string result. */ inline XalanDOMString& NumberToHexDOMString( unsigned int theValue, XalanDOMString& theResult) { return NumberToHexDOMString( static_cast(theValue), theResult); } /** * Converts an int value into a XalanDOMString * * @param theValue number to be converted * @param theResult the string to append with the result * @return a reference to the passed string result. */ inline XalanDOMString& NumberToHexDOMString( int theValue, XalanDOMString& theResult) { return NumberToHexDOMString( static_cast(theValue), theResult); } /** * Converts an unsigned short value into a XalanDOMString * * @param theValue number to be converted * @param theResult the string to append with the result * @return a reference to the passed string result. */ inline XalanDOMString& NumberToHexDOMString( unsigned short theValue, XalanDOMString& theResult) { return NumberToHexDOMString( static_cast(theValue), theResult); } /** * Converts a short value into a XalanDOMString * * @param theValue number to be converted * @param theResult the string to append with the result * @return a reference to the passed string result. */ inline XalanDOMString& NumberToHexDOMString( short theValue, XalanDOMString& theResult) { return NumberToHexDOMString( static_cast(theValue), theResult); } /** * Converts a wide string into an integer value * * @param theString target string * @return integer value of target string */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(int) WideStringToInt(const XalanDOMChar* theString); /** * Converts a wide string into a long value * * @param theString target string * @return long value of target string */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(long) WideStringToLong(const XalanDOMChar* theString); /** * Converts a wide string into an unsigned long value * * @param theString target string * @return unsigned long value of target string */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(unsigned long) WideStringToUnsignedLong(const XalanDOMChar* theString); /** * Converts a wide string into a double value * * @param theString target string * @param theMemoryManager The MemoryManager instance to use. * @return double value of target string */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(double) WideStringToDouble( const XalanDOMChar* theString, MemoryManager& theMemoryManager); /** * Converts a XalanDOMString into an integer value * * @param theString target string * @return integer value of target string */ inline int DOMStringToInt(const XalanDOMString& theString) { return WideStringToInt(theString.c_str()); } /** * Converts a XalanDOMString into a long value * * @param theString target string * @return long value of target string */ inline long DOMStringToLong(const XalanDOMString& theString) { return WideStringToLong(theString.c_str()); } /** * Converts a XalanDOMString into a long value * * @param theString target string * @return unsigned long value of target string */ inline unsigned long DOMStringToUnsignedLong(const XalanDOMString& theString) { return WideStringToUnsignedLong(theString.c_str()); } /** * Converts a XalanDOMString into a double value * * @param theString target string * @param theMemoryManager The MemoryManager instance to use. * @return double value of target string */ inline double DOMStringToDouble( const XalanDOMString& theString, MemoryManager& theMemoryManager) { return WideStringToDouble( theString.c_str(), theMemoryManager); } /** * Outputs the target string to the specified stream * * @param theStream output stream * @param theString target string * @see operator<< */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(void) OutputString( XalanOutputStream& theStream, const CharVectorType& theString); /** * Outputs the target string to the specified stream * * @param theStream output stream * @param theString target string * @see operator<< */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(void) OutputString( #if defined(XALAN_NO_STD_NAMESPACE) ostream& theStream, #else std::ostream& theStream, #endif const CharVectorType& theString); /** * Outputs the target string to the specified stream * * @param theStream output stream * @param theString target string * @see operator<< */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(void) OutputString( XalanOutputStream& theStream, const XalanDOMChar* theString); /** * Outputs the target string to the specified stream * * @param theStream output stream * @param theString target string * @see operator<< */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(void) OutputString( #if defined(XALAN_NO_STD_NAMESPACE) ostream& theStream, #else std::ostream& theStream, #endif const XalanDOMChar* theString, MemoryManager& theMemoryManager); /** * Outputs the target string to the specified stream * * @param theStream output stream * @param theString target string * @see operator<< */ inline void OutputString( XalanOutputStream& theStream, const XalanDOMString& theString) { if (theString.empty() == false) { OutputString( theStream, theString.c_str()); } } /** * Outputs the target string to the specified stream * * @param theStream output stream * @param theString target string * @param theMemoryManager The MemoryManager instance to use. * @see operator<< */ inline void OutputString( #if defined(XALAN_NO_STD_NAMESPACE) ostream& theStream, #else std::ostream& theStream, #endif const XalanDOMString& theString, MemoryManager& theMemoryManager) { OutputString( theStream, theString.c_str(), theMemoryManager); } /** * Outputs the string to the specified stream * * @param theStream output stream * @param theString the string to output * @see OutputString */ inline XalanOutputStream& operator<<( XalanOutputStream& theStream, const CharVectorType& theString) { OutputString( theStream, theString); return theStream; } /** * Outputs the string to the specified stream * * @param theStream output stream * @param theString the string to output * @see OutputString */ #if defined(XALAN_NO_STD_NAMESPACE) inline ostream& operator<<( ostream& theStream, #else inline std::ostream& operator<<( std::ostream& theStream, #endif const CharVectorType& theString) { OutputString( theStream, theString); return theStream; } /** * Outputs the target string to the specified stream * * @param theStream output stream * @param theString target string * @see OutputString */ inline XalanOutputStream& operator<<( XalanOutputStream& theStream, const XalanDOMChar* theString) { OutputString( theStream, theString); return theStream; } /** * Outputs the target string to the specified stream * * @param theStream output stream * @param theString target string * @see OutputString */ #if defined(XALAN_NO_STD_NAMESPACE) inline ostream& operator<<( ostream& theStream, #else inline std::ostream& operator<<( std::ostream& theStream, #endif const XalanDOMChar* theString) { OutputString( theStream, theString, XalanMemMgrs::getDefault()); return theStream; } /** * Outputs the target string to the specified stream * * @param theStream output stream * @param theString target string * @see OutputString */ inline XalanOutputStream& operator<<( XalanOutputStream& theStream, const XalanDOMString& theString) { OutputString(theStream, theString); return theStream; } /** * Outputs the target string to the specified stream * * @param theStream output stream * @param theString target string * @see OutputString */ #if defined(XALAN_NO_STD_NAMESPACE) inline ostream& operator<<( ostream& theStream, #else inline std::ostream& operator<<( std::ostream& theStream, #endif const XalanDOMString& theString) { OutputString( theStream, theString, XalanMemMgrs::getDefault()); return theStream; } /** * Outputs the target string to the specified stream * * @param theStream output stream * @param theString target string * @see OutputString */ #if defined(XALAN_NO_STD_NAMESPACE) inline ostream& operator<<( ostream& theStream, #else inline std::ostream& operator<<( std::ostream& theStream, #endif XalanDOMString& theString) { OutputString( theStream, theString, theString.getMemoryManager()); return theStream; } /** * Retrieves a character at a specified index in the target string * * @deprecated This function is deprecated. * * @param theString target string * @param theIndex index of character * @return character at specified index */ inline XalanDOMChar charAt( const XalanDOMString& theString, XalanDOMString::size_type theIndex) { return theString[theIndex]; } /** * Determines whether character represents white space * * @param theChar target character * @return true if character represents white space */ inline bool isXMLWhitespace(XalanDOMChar theChar) { return XalanXMLChar::isWhitespace(theChar); } /** * Determines whether character represents a digit * * @param theChar target character * @return true if character represents a digit */ inline bool isXMLDigit(XalanDOMChar theChar) { return XalanXMLChar::isDigit(theChar); } /** * Determines whether character represents a letter or digit * * @param theChar target character * @return true if character represents a letter or digit */ inline bool isXMLLetterOrDigit(XalanDOMChar theChar) { return XalanXMLChar::isDigit(theChar) || XalanXMLChar::isLetter(theChar); } /** * Simulates the java String method substring(). Returns a new string that is * a substring of this string. The substring begins at the specified * theStartIndex and extends to the character at index theEndIndex - 1. Thus * the length of the substring is theEndIndex - theStartIndex. * * @param theString source string * @param theSubstring target string * @param theStartIndex starting index, inclusive * @param theEndIndex ending index, exclusive * @return A reference to theSubstring */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) substring( const XalanDOMChar* theString, XalanDOMString& theSubstring, XalanDOMString::size_type theStartIndex, XalanDOMString::size_type theEndIndex = XalanDOMString::npos); /** * Simulates the java String method substring(). Returns a new string that is * a substring of this string. The substring begins at the specified * theStartIndex and extends to the character at index theEndIndex - 1. Thus * the length of the substring is theEndIndex - theStartIndex. * * @param theString source string * @param theSubstring target string * @param theStartIndex starting index, inclusive * @param theEndIndex ending index, exclusive */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(void) substring( const XalanDOMString& theString, XalanDOMString& theSubstring, XalanDOMString::size_type theStartIndex, XalanDOMString::size_type theEndIndex = XalanDOMString::npos); /** * Simulates the java String method substring(). Returns a new string that is * a substring of this string. The substring begins at the specified * theStartIndex and extends to the character at index theEndIndex - 1. Thus * the length of the substring is theEndIndex-theStartIndex. * * @param theString source string * @param theStartIndex starting index, inclusive * @param theEndIndex ending index, exclusive * @return string containing the specified range of characters from target */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) substring( const XalanDOMString& theString, XalanDOMString::size_type theStartIndex, XalanDOMString& theResult, XalanDOMString::size_type theEndIndex = XalanDOMString::npos); /** * Converts ASCII alphabetic characters from upper case to * lower case. This function works only with the Unicode * characters A-Z. * * @param theString target string * @return string containing lower case characters */ inline XalanDOMChar toLowerASCII(XalanDOMChar theChar) { if (theChar >= XalanUnicode::charLetter_A && theChar <= XalanUnicode::charLetter_Z) { return XalanDOMChar(theChar - (XalanUnicode::charLetter_A - XalanUnicode::charLetter_a)); } else { return theChar; } } /** * Converts ASCII alphabetic characters from lower case to * upper case. This function works only with the Unicode * characters a-z. * * @param theString target string * @return string containing upper case characters */ inline XalanDOMChar toUpperASCII(XalanDOMChar theChar) { if (theChar >= XalanUnicode::charLetter_a && theChar <= XalanUnicode::charLetter_z) { return XalanDOMChar(theChar + (XalanUnicode::charLetter_A - XalanUnicode::charLetter_a)); } else { return theChar; } } /** * Flips the case to of the supplied character. This function works only with * the Unicode characters A-Z and a-z. * * @param theString target string * @return string containing lower case characters */ inline XalanDOMChar flipCaseASCII(XalanDOMChar theChar) { if (theChar >= XalanUnicode::charLetter_A && theChar <= XalanUnicode::charLetter_Z) { return XalanDOMChar(theChar - (XalanUnicode::charLetter_A - XalanUnicode::charLetter_a)); } else if (theChar >= XalanUnicode::charLetter_a && theChar <= XalanUnicode::charLetter_z) { return XalanDOMChar(theChar + (XalanUnicode::charLetter_A - XalanUnicode::charLetter_a)); } else { return theChar; } } /** * Converts ASCII alphabetic characters from upper case to * lower case. This function works only with the characters * a-z and A-Z. * * @param theString The source string * @param theResult The target string * @return A reference to theResult */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) toLowerCaseASCII( const XalanDOMChar* theString, XalanDOMString& theResult); /** * Converts ASCII alphabetic characters from upper case to * lower case. This function works only with the characters * a-z and A-Z. * * @param theString The source string * @param theResult The target string * @return A reference to theResult */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) toLowerCaseASCII( const XalanDOMString& theString, XalanDOMString& theResult); /** * Converts ASCII alphabetic characters from upper case to * lower case. This function works only with the characters * a-z and A-Z. * * @param theString The string to convert * @return A reference to theString */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) toLowerCaseASCII(XalanDOMString& theString); /** * Converts ASCII alphabetic characters from lower case to * upper case. This function works only with the characters * a-z and A-Z. * * @param theString The source string * @param theResult The target string * @return A reference to theResult */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) toUpperCaseASCII( const XalanDOMChar* theString, XalanDOMString& theResult); /** * Converts ASCII alphabetic characters from lower case to * upper case. This function works only with the characters * a-z and A-Z. * * @param theString The source string * @param theResult The target string * @return A reference to theResult */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) toUpperCaseASCII( const XalanDOMString& theString, XalanDOMString& theResult); /** * Converts ASCII alphabetic characters from lower case to * upper case. This function works only with the characters * a-z and A-Z. * * @param theString The string to convert * @return A reference to theString */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) toUpperCaseASCII(XalanDOMString& theString); /** * Compare the contents of two strings. * * THIS FUNCTION DOES NOT COMPARE STRINGS LIKE strcmp() OR ANY * OTHER "COLLATION" ALGORITHM. * * @param theLHS first string to compare * @param theRHS second string to compare * @return Returns 0 for equal strings, less than 0 if theLHS is less * than theRHS, or greater than 0 if theRHS is greater than theLHS. * @see operator<() */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(int) compare( const CharVectorType& theLHS, const CharVectorType& theRHS); /** * Compare the contents of two character arrays. * * THIS FUNCTION DOES NOT COMPARE STRINGS LIKE strcmp() OR ANY * OTHER "COLLATION" ALGORITHM. * * @param theLHS first array to compare * @param theLHSLength the length of the first array * @param theRHS second array to compare * @param theRHSLength the length of the second array * @return Returns 0 for equal arrays, less than 0 if theLHS is less * than theRHS, or greater than 0 if theRHS is greater than theLHS. */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(int) compare( const XalanDOMChar* theLHS, XalanDOMString::size_type theLHSLength, const XalanDOMChar* theRHS, XalanDOMString::size_type theRHSLength); /** * Compare the contents of two null-terminated strings. * * THIS FUNCTION DOES NOT COMPARE STRINGS LIKE strcmp() OR ANY * OTHER "COLLATION" ALGORITHM. * * @param theLHS first string to compare * @param theRHS second string to compare * @return Returns 0 for equal strings, less than 0 if theLHS is less * than theRHS, or greater than 0 if theRHS is greater than theLHS. */ inline int compare( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS) { return compare(theLHS, length(theLHS), theRHS, length(theRHS)); } /** * Compare the contents of two strings. * * THIS FUNCTION DOES NOT COMPARE STRINGS LIKE strcmp() OR ANY * OTHER "COLLATION" ALGORITHM. * * @param theLHS first string to compare * @param theRHS second string to compare * @return Returns 0 for equal strings, less than 0 if theLHS is less * than theRHS, or greater than 0 if theRHS is greater than theLHS. * @see operator<() * @see collationCompare() */ inline int compare( const XalanDOMString& theLHS, const XalanDOMString& theRHS) { return compare( theLHS.c_str(), theLHS.length(), theRHS.c_str(), theRHS.length()); } /** * Compare the contents of two strings. * * THIS FUNCTION DOES NOT COMPARE STRINGS LIKE strcmp() OR ANY * OTHER "COLLATION" ALGORITHM. * * @param theLHS first string to compare * @param theRHS second string to compare * @return Returns 0 for equal strings, less than 0 if theLHS is less * than theRHS, or greater than 0 if theRHS is greater than theLHS. */ inline int compare( const XalanDOMChar* theLHS, const XalanDOMString& theRHS) { return compare( theLHS, length(theLHS), theRHS.c_str(), theRHS.length()); } /** * Compare the contents of two strings. * * THIS FUNCTION DOES NOT COMPARE STRINGS LIKE strcmp() OR ANY * OTHER "COLLATION" ALGORITHM. * * @param theLHS first string to compare * @param theRHS second string to compare * @return Returns 0 for equal strings, less than 0 if theLHS is less * than theRHS, or greater than 0 if theRHS is greater than theLHS. */ inline int compare( const XalanDOMString& theLHS, const XalanDOMChar* theRHS) { return compare( theLHS.c_str(), theLHS.length(), theRHS, length(theRHS)); } /** * Compare the contents of two arrays in a case insensitive * manner. Only the characters a-z and A-Z are considered as * characters with "case". * * THIS FUNCTION DOES NOT COMPARE STRINGS LIKE strcmp() OR ANY * OTHER "COLLATION" ALGORITHM. * * @param theLHS first array to compare * @param theLHSLength the length of the first array * @param theRHS second array to compare * @param theRHSLength the length of the second array * @return Returns 0 for equal arrays, less than 0 if theLHS is less * than theRHS, or greater than 0 if theRHS is greater than theLHS. */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(int) compareIgnoreCaseASCII( const XalanDOMChar* theLHS, XalanDOMString::size_type theLHSLength, const XalanDOMChar* theRHS, XalanDOMString::size_type theRHSLength); /** * Compare the contents of two strings, in a case insensitive * manner. Only the characters a-z and A-Z are considered as * characters with "case". * * THIS FUNCTION DOES NOT COMPARE STRINGS LIKE strcmp() OR ANY * OTHER "COLLATION" ALGORITHM. * * @param theLHS first string to compare * @param theRHS second string to compare * @return Returns 0 for equal strings, less than 0 if theLHS is less * than theRHS, or greater than 0 if theRHS is greater than theLHS. */ inline int compareIgnoreCaseASCII( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS) { return compareIgnoreCaseASCII(theLHS, length(theLHS), theRHS, length(theRHS)); } /** * Compare the contents of two strings, in a case insensitive * manner. Only the characters a-z and A-Z are considered as * characters with "case". * * THIS FUNCTION DOES NOT COMPARE STRINGS LIKE strcmp() OR ANY * OTHER "COLLATION" ALGORITHM. * * @param theLHS first string to compare * @param theRHS second string to compare * @return Returns 0 for equal strings, less than 0 if theLHS is less * than theRHS, or greater than 0 if theRHS is greater than theLHS. * @see operator< * @see collationCompare */ inline int compareIgnoreCaseASCII( const XalanDOMString& theLHS, const XalanDOMString& theRHS) { return compareIgnoreCaseASCII( theLHS.c_str(), theLHS.length(), theRHS.c_str(), theRHS.length()); } /** * Compare the contents of two strings, in a case insensitive * manner. Only the characters a-z and A-Z are considered as * characters with "case". * * THIS FUNCTION DOES NOT COMPARE STRINGS LIKE strcmp() OR ANY * OTHER "COLLATION" ALGORITHM. * * @param theLHS first string to compare * @param theRHS second string to compare * @return Returns 0 for equal strings, less than 0 if theLHS is less * than theRHS, or greater than 0 if theRHS is greater than theLHS. */ inline int compareIgnoreCaseASCII( const XalanDOMString& theLHS, const XalanDOMChar* theRHS) { return compareIgnoreCaseASCII( theLHS.c_str(), theLHS.length(), theRHS, length(theRHS)); } /** * Compare the contents of two strings, in a case insensitive * manner. Only the characters a-z and A-Z are considered for * the comparison. * * THIS FUNCTION DOES NOT COMPARE STRINGS LIKE strcmp() OR ANY * OTHER "COLLATION" ALGORITHM. * * @param theLHS first string to compare * @param theRHS second string to compare * @return Returns 0 for equal strings, less than 0 if theLHS is less * than theRHS, or greater than 0 if theRHS is greater than theLHS. */ inline int compareIgnoreCaseASCII( const XalanDOMChar* theLHS, const XalanDOMString& theRHS) { return compareIgnoreCaseASCII( theLHS, length(theLHS), theRHS.c_str(), theRHS.length()); } /** * Compare the contents of two character arrays. * * @param theLHS first array to compare * @param theLHSLength the length of the first array * @param theRHS second array to compare * @param theRHSLength the length of the second array * @return Returns 0 for equal arrays, less than 0 if theLHS is less * than theRHS, or greater than 0 if theRHS is greater than theLHS. */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(int) collationCompare( const XalanDOMChar* theLHS, XalanDOMString::size_type theLHSLength, const XalanDOMChar* theRHS, XalanDOMString::size_type theRHSLength); /** * Compare the contents of two strings. * * @param theLHS first string to compare * @param theRHS second string to compare * @return Returns 0 for equal strings, less than 0 if theLHS is less * than theRHS, or greater than 0 if theRHS is greater than theLHS. * @see operator<() * @see compare() */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(int) collationCompare( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS); /** * Compare the contents of two strings. * * @param theLHS first string to compare * @param theRHS second string to compare * @return Returns 0 for equal strings, less than 0 if theLHS is less * than theRHS, or greater than 0 if theRHS is greater than theLHS. * @see operator<() * @see compare() */ inline int collationCompare( const XalanDOMString& theLHS, const XalanDOMString& theRHS) { return collationCompare(theLHS.c_str(), theRHS.c_str()); } /** * Compare the contents of two strings. * * @param theLHS first string to compare * @param theRHS second string to compare * @return Returns 0 for equal strings, less than 0 if theLHS is less * than theRHS, or greater than 0 if theRHS is greater than theLHS. */ inline int collationCompare( const XalanDOMChar* theLHS, const XalanDOMString& theRHS) { return collationCompare(theLHS, theRHS.c_str()); } /** * Compare the contents of two strings. * * @param theLHS first string to compare * @param theRHS second string to compare * @return Returns 0 for equal strings, less than 0 if theLHS is less * than theRHS, or greater than 0 if theRHS is greater than theLHS. */ inline int collationCompare( const XalanDOMString& theLHS, const XalanDOMChar* theRHS) { return collationCompare( theLHS.c_str(), theLHS.length(), theRHS, length(theRHS)); } /** * Compare the contents of two arrays for equality * * @param theLHS first array to compare * @param theRHS second array to compare * @param theLength the length of the arrays * @return true if the contents of both arrays are identical */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(bool) equals( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, XalanDOMString::size_type theLength); /** * Compare the contents of two arrays for equality * * @param theLHS first array to compare * @param theLHSLength the length of the theLHS * @param theRHS second array to compare * @param theRHSLength the length of the theRHS * @return true if the contents of both arrays are identical */ inline bool equals( const XalanDOMChar* theLHS, XalanDOMString::size_type theLHSLength, const XalanDOMChar* theRHS, XalanDOMString::size_type theRHSLength) { return theLHSLength != theRHSLength ? false : equals(theLHS, theRHS, theLHSLength); } /** * Compare the contents of two strings for equality * * @param theLHS first string to compare * @param theRHS second string to compare * @return true if the contents of both strings are identical */ inline bool equals( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS) { const XalanDOMString::size_type theLHSLength = length(theLHS); return theLHSLength != length(theRHS) ? false : equals(theLHS, theRHS, theLHSLength); } /** * Compare the contents of two strings for equality * * @param theLHS first string to compare * @param theRHS second string to compare * @return true if the contents of both strings are identical */ inline bool equals( const XalanDOMString& theLHS, const XalanDOMString& theRHS) { return theLHS == theRHS; } /** * Compare the contents of two strings for equality * * @param theLHS first string to compare * @param theRHS second string to compare * @return true if the contents of both strings are identical */ inline bool equals( const XalanDOMChar* theLHS, const XalanDOMString& theRHS) { assert(theLHS != 0); // Swap them... return theRHS == theLHS; } /** * Compare the contents of two strings for equality * * @param theLHS first string to compare * @param theRHS second string to compare * @return true if the contents of both strings are identical */ inline bool equals(const XalanDOMString& theLHS, const XalanDOMChar* theRHS) { return equals(theRHS, theLHS); } /** * Compare the contents of two strings for equality * * @param theLHS first string to compare * @param theRHS second string to compare * @param theRHSLength the length of the theRHS * @return true if the contents of both strings are identical */ inline bool equals( const XalanDOMString& theLHS, const XalanDOMChar* theRHS, XalanDOMString::size_type theRHSLength) { return theRHSLength != theLHS.length() ? false : equals(theLHS.c_str(), theRHSLength, theRHS, theRHSLength); } /** * Compare the contents of two arrays for equality, without regard for case. * Only the characters a-z and A-Z are considered characters with "case". * * @param theLHS first string to compare * @param theRHS second string to compare * @return true if the case-insensitive contents of both strings are identical */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(bool) equalsIgnoreCaseASCII( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, XalanDOMString::size_type theLength); /** * Compare the contents of two strings for equality, without regard for case. * Only the characters a-z and A-Z are considered characters with "case". * * @param theLHS first string to compare * @param theLHSLength the length of the theLHS * @param theRHS second string to compare * @param theRHSLength the length of the theRHS * @return true if both strings are identical */ inline bool equalsIgnoreCaseASCII( const XalanDOMChar* theLHS, XalanDOMString::size_type theLHSLength, const XalanDOMChar* theRHS, XalanDOMString::size_type theRHSLength) { return theLHSLength != theRHSLength ? false : equalsIgnoreCaseASCII(theLHS, theRHS, theLHSLength); } /** * Compare the contents of two strings for equality, without regard for case. * Only the characters a-z and A-Z are considered characters with "case". * * @param theLHS first string to compare * @param theRHS second string to compare * @return true if both strings are identical */ inline bool equalsIgnoreCaseASCII( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS) { const XalanDOMString::size_type theLength = length(theLHS); return theLength != length(theRHS) ? false : equalsIgnoreCaseASCII(theLHS, theRHS, theLength); } /** * Compare the contents of two strings for equality, without regard for case * Only the characters A-Z and a-z are considered. * * @param theLHS first string to compare * @param theRHS second string to compare * @return true if the case-insensitive contents of both strings are identical */ inline bool equalsIgnoreCaseASCII( const XalanDOMString& theLHS, const XalanDOMString& theRHS) { const XalanDOMString::size_type theLength = theLHS.length(); return theLength != theRHS.length() ? false : equalsIgnoreCaseASCII( theLHS.c_str(), theRHS.c_str(), theLength); } /** * Compare the contents of two strings for equality, without regard for case. * Only the characters a-z and A-Z are considered characters with "case". * * @param theLHS first string to compare * @param theRHS second string to compare * @return true if the case-insensitive contents of both strings are identical */ inline bool equalsIgnoreCaseASCII( const XalanDOMChar* theLHS, const XalanDOMString& theRHS) { const XalanDOMString::size_type theRHSLength = theRHS.length(); return theRHSLength != length(theLHS) ? false : equalsIgnoreCaseASCII( theLHS, theRHS.c_str(), theRHSLength); } /** * Compare the contents of two strings for equality, without regard for case. * Only the characters A-Z and a-z are considered. * * @param theLHS first string to compare * @param theRHS second string to compare * @return true if the case-insensitive contents of both strings are identical */ inline bool equalsIgnoreCaseASCII( const XalanDOMString& theLHS, const XalanDOMChar* theRHS) { return equalsIgnoreCaseASCII(theRHS, theLHS); } /** * Implements operator< for CharVectorType. * * @param theLHS first string to compare * @param theRHS second string to compare * @return Returns true if theLHS is lexically * less than theRHS * @see compare */ inline bool operator<( const CharVectorType& theLHS, const CharVectorType& theRHS) { return compare(theLHS, theRHS) < 0 ? true : false; } /** * Implements operator< for DOMStrings. * * @param theLHS first string to compare * @param theRHS second string to compare * @return Returns true if theLHS is lexically * less than theRHS * @see compare */ inline bool operator<( const XalanDOMString& theLHS, const XalanDOMString& theRHS) { return compare(theLHS, theRHS) < 0 ? true : false; } /** * Assign one string to another * * @deprecated This function is deprecated. * * @param theString target string * @param theStringToAppend string to assign * @param theStringToAppendLength length of the string (XalanDOMString::npos implies the string is null-terminated) * @return a reference to the target string */ inline XalanDOMString& assign( XalanDOMString& theString, const XalanDOMString& theStringToAssign) { theString = theStringToAssign; return theString; } /** * Assign one string to another * * @deprecated This function is deprecated. * * @param theString target string * @param theStringToAppend string to assign * @param theStringToAppendLength length of the string (XalanDOMString::npos implies the string is null-terminated) * @return a reference to the target string */ inline XalanDOMString& assign( XalanDOMString& theString, const XalanDOMChar* theStringToAssign, XalanDOMString::size_type theStringToAssignLength = XalanDOMString::npos) { if (theStringToAssignLength == XalanDOMString::npos) { theString.assign(theStringToAssign); } else { theString.assign(theStringToAssign, theStringToAssignLength); } return theString; } /** * Concatenate two strings * * @deprecated This function is deprecated. * * @param theString target string * @param theStringToAppend string to add to target * @return a reference to the target string */ inline XalanDOMString& append( XalanDOMString& theString, const XalanDOMString& theStringToAppend) { theString.append(theStringToAppend); return theString; } /** * Concatenate two strings * * @deprecated This function is deprecated. * * @param theString target string * @param theStringToAppend string to add to target * @param theStringToAppendLength length of the string (XalanDOMString::npos implies the string is null-terminated) * @return a reference to the target string */ inline XalanDOMString& append( XalanDOMString& theString, const XalanDOMChar* theStringToAppend, XalanDOMString::size_type theStringToAppendLength = XalanDOMString::npos) { assert(theStringToAppend != 0); if (theStringToAppendLength == XalanDOMString::npos) { theString.append(theStringToAppend); } else { theString.append(theStringToAppend, theStringToAppendLength); } return theString; } /** * Concatenate two strings * * @deprecated This function is deprecated. * * @param theString target string * @param theStringToAppend string to add to target * @param theStringToAppendLength length of the string (XalanDOMString::npos implies the string is null-terminated) * @return string with contents of 'theStringToAppend' added to target string */ inline XalanDOMString& append( XalanDOMString& theString, const char* theStringToAppend, XalanDOMString::size_type theStringToAppendLength = XalanDOMString::npos) { XalanDOMString tmp(theString.getMemoryManager()); TranscodeFromLocalCodePage(theStringToAppend, tmp, theStringToAppendLength); theString.append(tmp); return theString; } /** * Concatenate a string and a character * * @deprecated This function is deprecated. * * @param theString target string * @param theCharToAppend the character to add to the target * @return string with the character appended */ inline XalanDOMString& append( XalanDOMString& theString, const XalanDOMChar theCharToAppend) { theString.append(1, theCharToAppend); return theString; } /** * Concatenate a string and a character * * @deprecated This function is deprecated. * * @param theString target string * @param theCharToAppend the character to add to the target * @return string with the character appended */ inline XalanDOMString& append( XalanDOMString& theString, char theCharToAppend) { // We have to transcode before appending... char theTempBuffer[] = { theCharToAppend, '\0' }; return append(theString, theTempBuffer); } /** * Insert a string into another string. * * @deprecated This function is deprecated. * * @param theString target string * @param thePosition The position in the target string to insert * @param theStringToInsert The string to insert * @return A reference to the target string */ inline XalanDOMString& insert( XalanDOMString& theString, XalanDOMString::size_type thePosition, const XalanDOMString& theStringToInsert) { theString.insert(thePosition, theStringToInsert); return theString; } /** * Insert a string into another string. * * @deprecated This function is deprecated. * * @param theString target string * @param thePosition The position in the target string to insert * @param theStringToInsert The string to insert * @return A reference to the target string */ inline XalanDOMString& insert( XalanDOMString& theString, XalanDOMString::size_type thePosition, const XalanDOMChar* theStringToInsert) { theString.insert(thePosition, theStringToInsert); return theString; } /** * Remove leading and trailing whitespace. * * @param theString The string to trim. * @param theResult The result string. * @return A reference to theResult. */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&) trim( const XalanDOMString& theString, XalanDOMString& theResult); /** * Remove all elements from target string * * @deprecated This function is deprecated. * * @param theString target string */ inline void clear(XalanDOMString& theString) { theString.clear(); } /** * Remove all elements from target string * * @deprecated This function is deprecated. * * @param theString target string */ inline void erase(XalanDOMString& theString) { theString.erase(); } /** * Remove all elements from target string * and frees all allocated memory. * * @param theString target string */ inline void releaseMemory(XalanDOMString& theString,MemoryManager& theManager) { XalanDOMString(theManager).swap(theString); } XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(void) CopyWideStringToVector( const XalanDOMChar* theString, CharVectorType& theVector); XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(void) CopyStringToVector( const char* theString, CharVectorType& theVector); /** * Utility function to make a null-terminated vector of XMLChs, from a * null-terminated array of chars, via transcoding, if requested. * * @param data array to be converted * @param whether or not to transcode * @return null-terminated vector of XalanDOMChar */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMCharVectorType&) MakeXalanDOMCharVector( const char* data, XalanDOMCharVectorType& result, bool fTranscode = true); /** * Utility function to make a null-terminated vector of XMLChs, from a * null-terminated array of XalanDOMChar. * * @param data array to be converted * @return null-terminated vector of XalanDOMChar */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMCharVectorType&) MakeXalanDOMCharVector(const XalanDOMChar* data, XalanDOMCharVectorType& result); /** * Utility function to make a null-terminated vector of XMLChs, from a * XalanDOMString * * @param data XalanDOMString to be converted * @return null-terminated vector of XalanDOMChar */ inline XalanDOMCharVectorType& MakeXalanDOMCharVector(const XalanDOMString& data, XalanDOMCharVectorType& result) { return MakeXalanDOMCharVector(data.c_str(),result); } #if defined(XALAN_NO_STD_NAMESPACE) struct c_wstr_functor : public unary_function #else struct c_wstr_functor : public std::unary_function #endif { result_type operator() (const argument_type& theString) const { return theString.c_str(); } }; /** * Less than functor for DOMStrings which ignores case for the characters a-z and A-Z * * @param theLHS first string to compare * @param theRHS second string to compare * @return true if the theLHS is less than theRHS, without respect to case. */ #if defined(XALAN_NO_STD_NAMESPACE) struct DOMStringLessThanIgnoreCaseASCIIFunction : public binary_function #else struct DOMStringLessThanIgnoreCaseASCIIFunction : public std::binary_function #endif { result_type operator() (first_argument_type theLHS, second_argument_type theRHS) const { return compareIgnoreCaseASCII(theLHS, theRHS) < 0 ? true : false; } }; /** * Less than or equal functor for DOMStrings * * @param theLHS first string to compare * @param theRHS second string to compare * @return true if the theLHS is less than or equal to theRHS */ #if defined(XALAN_NO_STD_NAMESPACE) struct DOMStringLessThanOrEqualFunction : public binary_function #else struct DOMStringLessThanOrEqualFunction : public std::binary_function #endif { result_type operator() (first_argument_type theLHS, second_argument_type theRHS) const { return compare(theLHS, theRHS) <= 0 ? true : false; } }; /** * Greater than functor for DOMStrings * * @param theLHS first string to compare * @param theRHS second string to compare * @return true if the theLHS is greater than theRHS */ #if defined(XALAN_NO_STD_NAMESPACE) struct DOMStringGreaterThanFunction : public binary_function #else struct DOMStringGreaterThanFunction : public std::binary_function #endif { result_type operator() (first_argument_type theLHS, second_argument_type theRHS) const { return compare(theLHS, theRHS) > 0 ? true : false; } }; /** * Greater than or equal functor for DOMStrings * * @param theLHS first string to compare * @param theRHS second string to compare * @return true if the theLHS is greater than or equal to theRHS */ #if defined(XALAN_NO_STD_NAMESPACE) struct DOMStringGreaterThanOrEqualFunction : public binary_function #else struct DOMStringGreaterThanOrEqualFunction : public std::binary_function #endif { result_type operator() (first_argument_type theLHS, second_argument_type theRHS) const { return compare(theLHS, theRHS) >= 0 ? true : false; } }; /** * This functor is designed to compare 0-terminated wide strings in a case-insensitive * manner. It substitutes for the default less so that the contents of wide strings * can be compared, rather than just the pointers. */ #if defined(XALAN_NO_STD_NAMESPACE) struct less_no_case_ascii_wide_string : public binary_function #else struct less_no_case_ascii_wide_string : public std::binary_function #endif { /** * Compare the values of two objects. * * * @param theLHS first object to compare * @param theRHS second object to compare * @return true if objects are the same */ result_type operator()( first_argument_type theLHS, second_argument_type theRHS) const { return compareIgnoreCaseASCII(theLHS, theRHS) < 0 ? true : false; } }; /** * Determines if the string contains only whitespace * * @param theString target string * @return true if string contains only whitespace */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(bool) isXMLWhitespace(const XalanDOMString& string); /** * Determines if a range in an array contains only whitespace * * @param ch target array * @param start starting index to examine * @param length number of characters to examine * @return true if specified range contains only whitespace */ XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(bool) isXMLWhitespace( const XalanDOMChar ch[], XalanDOMString::size_type start, XalanDOMString::size_type length); /** * Determines if a null-terminated string contains only whitespace * * @param theString target string * @return true if the string contains only whitespace */ inline bool isXMLWhitespace(const XalanDOMChar* theString) { assert(theString != 0); return isXMLWhitespace(theString, 0, length(theString)); } XALAN_CPP_NAMESPACE_END #endif // DOMSTRINGHELPER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanDOMStringHashTable.hpp0000664000175000000640000001447511731656102024505 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANDOMSTRINGHASHTABLE_HEADER_GUARD_1357924680) #define XALANDOMSTRINGHASHTABLE_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT XalanDOMStringHashTable { public: typedef XalanVector BucketType; typedef BucketType::size_type bucket_size_type; typedef XalanVector BucketCountsType; typedef ExplicitMemoryManagedConstructionTraits ConstructionTraits; typedef XalanVector BucketVectorType; enum { eDefaultBucketCount = 101, eDefaultBucketSize = 15 }; /** * Create a hash table. * * @param theBucketCount The number of buckets to use for the hash table. This should be a prime number for best results. * @param theBucketSize The initial size of each bucket in the hash table. */ explicit XalanDOMStringHashTable( MemoryManager& theManager, size_t theBucketCount = eDefaultBucketCount, bucket_size_type theBucketSize = eDefaultBucketSize); ~XalanDOMStringHashTable() { } /** * Clear the hash table. */ void clear(); /** * Get the number of strings in the table * * @return The number of strings in the table */ size_t size() const { return m_count; } /** * Get the number of buckets in the table * * @return The number of buckets in the table */ size_t bucketCount() const { return m_bucketCount; } /** * Get the size of each of the buckets in the table * * @param A vector to return the bucket counts. */ void getBucketCounts(BucketCountsType& theVector) const; /** * Get the collision count. Release builds will always * return 0. * * @return The number of collisions. Valid only for non-release builds. */ size_t collisions() const { return m_collisions; } /** * Find a string. If the string is not found, return null. * * @param theString The string to find. * @param theBucketIndex The index of the bucket for the string. * @return a pointer to the string, or null if not found. */ const XalanDOMString* find( const XalanDOMString& theString, size_t* theBucketIndex = 0) const; /** * Find a string. If the string is not found, return null. * If theBucketIndex is not null, the variable pointed to * will be updated with the bucket index that was calculated * for the string. This index can be used in a later call to * insert() to avoid recalculating the index. * * @param theString The string to find. * @param theLength The number of characters in the string. * @param theBucketIndex A pointer to a parameter to get the bucket index * @return a pointer to the string, or null if not found. */ const XalanDOMString* find( const XalanDOMChar* theString, XalanDOMString::size_type theLength = XalanDOMString::npos, size_t* theBucketIndex = 0) const; /** * Insert a pointer to a string into the table. If the string * is already present, the string will still be added, but it * will never be found, since it will be placed after the identical * string. * * Note that this class only stores a _pointer_ to a XalanDOMString. * It's expected that the string will be allocated and managed outside * of the hash table. * * @param theString The string to insert. */ void insert(const XalanDOMString& theString); /** * Insert a pointer to a string into the table. If the string * is already present, the string will still be added, but it * will never be found, since it will be placed after the identical * string. theBucketIndex _must_ be the index returned from a * previous call to find. If not, then the behavior is undefined. * This is meant as an optimization to avoid re-hashing the string. * * Note that this class only stores a _pointer_ to a XalanDOMString. * It's expected that the string will be allocated and managed outside * of the hash table. * * @param theString The string to insert. * @param theBucketIndex The index of the bucket for the string. */ void insert( const XalanDOMString& theString, size_t theBucketIndex); MemoryManager& getMemoryManager() { return m_buckets.getMemoryManager(); } const MemoryManager& getMemoryManager() const { return m_buckets.getMemoryManager(); } private: // Not implemented, for now... XalanDOMStringHashTable(const XalanDOMStringHashTable&); XalanDOMStringHashTable& operator=(const XalanDOMStringHashTable&); bool operator==(const XalanDOMStringHashTable&) const; // Data members... const size_t m_bucketCount; const bucket_size_type m_bucketSize; BucketVectorType m_buckets; size_t m_count; size_t m_collisions; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANDOMSTRINGPOOL_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/PlatformSupport/Writer.cpp0000664000175000000640000000236111731656102021375 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "Writer.hpp" XALAN_CPP_NAMESPACE_BEGIN #if !defined(XALAN_INLINE_INITIALIZATION) const size_t Writer::npos = ~0u; #elif !defined(XALAN_INLINE_INITIALIZATION_IS_DEFINITION_BUG) const size_t Writer::npos; #endif Writer::Writer() { } Writer::~Writer() { } XalanOutputStream* Writer::getStream() { return 0; } const XalanOutputStream* Writer::getStream() const { return 0; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/NamedNodeMapAttributeList.hpp0000664000175000000640000000512111731656102025133 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(NAMEDNODEMAPATTRIBUTELIST_HEADER_GUARD_1357924680) #define NAMEDNODEMAPATTRIBUTELIST_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanNamedNodeMap; class XALAN_PLATFORMSUPPORT_EXPORT NamedNodeMapAttributeList : public XERCES_CPP_NAMESPACE_QUALIFIER AttributeList { public: typedef XERCES_CPP_NAMESPACE_QUALIFIER AttributeList ParentType; explicit NamedNodeMapAttributeList( const XalanNamedNodeMap& theMap, MemoryManager& theManager); virtual ~NamedNodeMapAttributeList(); // These are inherited from AttributeList virtual XalanSize_t getLength() const; virtual const XalanDOMChar* getName(const XalanSize_t index) const; virtual const XalanDOMChar* getType(const XalanSize_t index) const; virtual const XalanDOMChar* getValue(const XalanSize_t index) const; virtual const XalanDOMChar* getType(const XalanDOMChar* const name) const; virtual const XalanDOMChar* getValue(const XalanDOMChar* const name) const; virtual const XalanDOMChar* getValue(const char* const name) const; private: // Not implemented... NamedNodeMapAttributeList& operator=(const NamedNodeMapAttributeList&); bool operator==(const NamedNodeMapAttributeList&); // Data members... const XalanNamedNodeMap& m_nodeMap; const XalanSize_t m_length; MemoryManager& m_memoryManager; static const XalanDOMChar s_typeString[]; }; XALAN_CPP_NAMESPACE_END #endif // NAMEDNODEMAPATTRIBUTELIST_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/AttributeVectorEntry.hpp0000664000175000000640000000632211731656102024277 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(ATTRIBUTEVECTORENTRY_HEADER_GUARD_1357924680) #define ATTRIBUTEVECTORENTRY_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT AttributeVectorEntry { public: typedef XalanVector XMLChVectorType; AttributeVectorEntry( const XMLChVectorType& theName, const XMLChVectorType& theValue, const XMLChVectorType& theType, MemoryManager& theManager) : m_Name(theName,theManager), m_Value(theValue,theManager), m_Type(theType,theManager) { } AttributeVectorEntry( const XMLCh* theName, const XMLCh* theValue, const XMLCh* theType, MemoryManager& theManager) : m_Name(theName, theName + length(theName) + 1, theManager), m_Value(theValue, theValue + length(theValue) + 1, theManager), m_Type(theType, theType + length(theType) + 1, theManager) { } AttributeVectorEntry(MemoryManager& theManager) : m_Name(theManager), m_Value(theManager), m_Type(theManager) { } static AttributeVectorEntry* create( const XMLCh* theName, const XMLCh* theValue, const XMLCh* theType, MemoryManager& theManager) { AttributeVectorEntry* theInstance; return XalanConstruct( theManager, theInstance, theName, theValue, theType, theManager); } virtual ~AttributeVectorEntry() { } void clear() { m_Name.clear(); m_Value.clear(); m_Type.clear(); } XMLChVectorType m_Name; XMLChVectorType m_Value; XMLChVectorType m_Type; // A convenience function to find the length of a null-terminated // array of XMLChs static const XMLCh* endArray(const XMLCh* data) { assert(data != 0); while(*data) { ++data; } return data; } }; XALAN_CPP_NAMESPACE_END #endif // ATTRIBUTEVECTORENTRY_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/AttributesImpl.hpp0000664000175000000640000001345211731656102023101 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(ATTRIBUTESIMPL_HEADER_GUARD_1357924680) #define ATTRIBUTESIMPL_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class AttributeVectorEntryExtended; typedef XERCES_CPP_NAMESPACE_QUALIFIER Attributes AttributesType; class XALAN_PLATFORMSUPPORT_EXPORT AttributesImpl : public AttributesType { public: explicit AttributesImpl(MemoryManager& theManager XALAN_DEFAULT_MEMMGR); virtual ~AttributesImpl(); AttributesImpl(const AttributesImpl& theSource, MemoryManager& theManager); AttributesImpl(const AttributesType& theSource, MemoryManager& theManager); AttributesImpl& operator=(const AttributesImpl& theRHS); AttributesImpl& operator=(const AttributesType& theRHS); // These are inherited from Attributes virtual XalanSize_t getLength() const; virtual const XMLCh* getURI(const XalanSize_t index) const; virtual const XMLCh* getLocalName(const XalanSize_t index) const; virtual const XMLCh* getQName(const XalanSize_t index) const; virtual const XMLCh* getType(const XalanSize_t index) const; virtual const XMLCh* getValue(const XalanSize_t index) const; virtual bool getIndex( const XMLCh* const uri, const XMLCh* const localPart, XalanSize_t& index) const; virtual int getIndex( const XMLCh* const uri, const XMLCh* const localPart) const; virtual bool getIndex( const XMLCh* const qName, XalanSize_t& index) const; virtual int getIndex(const XMLCh* const qname) const; virtual const XMLCh* getType(const XMLCh* const qname) const; virtual const XMLCh* getType( const XMLCh* const uri, const XMLCh* const localName) const; virtual const XMLCh* getValue(const XMLCh* const qname) const; virtual const XMLCh* getValue( const XMLCh* const uri, const XMLCh* const localName) const; MemoryManager& getMemoryManager() { return m_attributesVector.getMemoryManager(); } // The mutators are new to this class. /** * Remove all attributes from the list */ virtual void clear(); /** * Adds an attribute to the attribute list. Does not check for * duplicates. * * @param qname attribute qname * @param type attribute type, "CDATA," for example * @param value attribute value */ void addAttribute( const XMLCh* qname, const XMLCh* type, const XMLCh* value) { const XMLCh theDummy = 0; addAttribute(&theDummy, &theDummy, qname, type, value); } /** * Adds an attribute to the attribute list. Does not check for * duplicates. * * @param uri attribute namespace URI * @param localName attribute local name * @param qname attribute qname * @param type attribute type, "CDATA," for example * @param value attribute value */ void addAttribute( const XMLCh* uri, const XMLCh* localName, const XMLCh* qname, const XMLCh* type, const XMLCh* value); /** * Removes an attribute from the attribute list * * @param qname attribute qname */ virtual bool removeAttribute(const XMLCh* qname); /** * Swap the contents of two instances. This must _never_ * throw an exception. * * @param thOther The instance with which to swap. */ void swap(AttributesImpl& theOther) { m_attributesVector.swap(theOther.m_attributesVector); } /** * Reserve room for the given number of * attributes. * * @param theCount The number to reserve */ void reserve(XalanSize_t theCount) { m_attributesVector.reserve(theCount); } // This vector will hold the entries. typedef XalanVector AttributesVectorType; private: // This is not implemented. bool operator==(const AttributesImpl&) const; // Default vector allocation size. enum { eDefaultVectorSize = 5 }; AttributeVectorEntryExtended* getNewEntry( const XMLCh* qname, const XMLCh* type, const XMLCh* value, const XMLCh* uri = 0, const XMLCh* localName = 0); // Helper function to delete entries... static void deleteEntries(AttributesVectorType& theVector); AttributesVectorType m_attributesVector; AttributesVectorType m_cacheVector; }; XALAN_CPP_NAMESPACE_END #endif // ATTRIBUTESIMPL_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanSimplePrefixResolver.cpp0000664000175000000640000000314711731656102025241 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XalanSimplePrefixResolver.hpp" #include XALAN_CPP_NAMESPACE_BEGIN XalanSimplePrefixResolver::XalanSimplePrefixResolver( const XalanDOMString& thePrefix, const XalanDOMString& theNamespaceURI, const XalanDOMString& theURI) : m_prefix(thePrefix), m_namespaceURI(theNamespaceURI), m_uri(theURI) { } XalanSimplePrefixResolver::~XalanSimplePrefixResolver() { } const XalanDOMString* XalanSimplePrefixResolver::getNamespaceForPrefix(const XalanDOMString& prefix) const { if (prefix == m_prefix) { return &m_namespaceURI; } else { return 0; } } const XalanDOMString& XalanSimplePrefixResolver::getURI() const { return m_uri; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanUnicode.hpp0000664000175000000640000002754111731656102022507 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANUNICODE_HEADER_GUARD_1357924680) #define XALANUNICODE_HEADER_GUARD_1357924680 // Base include file. Must be first. #include XALAN_CPP_NAMESPACE_BEGIN #if defined(XALAN_HAS_CPP_NAMESPACE) namespace XalanUnicode #else struct XALAN_PLATFORMSUPPORT_EXPORT XalanUnicode #endif { #if !defined(XALAN_HAS_CPP_NAMESPACE) enum { charHTab = 0x09, charLF = 0x0A, charFF = 0x0C, charCR = 0x0D, charSpace = 0x20, charExclamationMark = 0x21, charQuoteMark = 0x22, charNumberSign = 0x23, charDollarSign = 0x24, charPercentSign = 0x25, charAmpersand = 0x26, charApostrophe = 0x27, charLeftParenthesis = 0x28, charRightParenthesis = 0x29, charAsterisk = 0x2A, charPlusSign = 0x2B, charComma = 0x2C, charHyphenMinus = 0x2D, charFullStop = 0x2E, charSolidus = 0x2F, charDigit_0 = 0x30, charDigit_1 = 0x31, charDigit_2 = 0x32, charDigit_3 = 0x33, charDigit_4 = 0x34, charDigit_5 = 0x35, charDigit_6 = 0x36, charDigit_7 = 0x37, charDigit_8 = 0x38, charDigit_9 = 0x39, charColon = 0x3A, charSemicolon = 0x3B, charLessThanSign = 0x3C, charEqualsSign = 0x3D, charGreaterThanSign = 0x3E, charQuestionMark = 0x3F, charCommercialAt = 0x40, charLetter_A = 0x41, charLetter_B = 0x42, charLetter_C = 0x43, charLetter_D = 0x44, charLetter_E = 0x45, charLetter_F = 0x46, charLetter_G = 0x47, charLetter_H = 0x48, charLetter_I = 0x49, charLetter_J = 0x4A, charLetter_K = 0x4B, charLetter_L = 0x4C, charLetter_M = 0x4D, charLetter_N = 0x4E, charLetter_O = 0x4F, charLetter_P = 0x50, charLetter_Q = 0x51, charLetter_R = 0x52, charLetter_S = 0x53, charLetter_T = 0x54, charLetter_U = 0x55, charLetter_V = 0x56, charLetter_W = 0x57, charLetter_X = 0x58, charLetter_Y = 0x59, charLetter_Z = 0x5A, charLeftSquareBracket = 0x5B, charReverseSolidus = 0x5C, charRightSquareBracket = 0x5D, charCircumflexAccent = 0x5E, charLowLine = 0x5F, charGraveAccent = 0x60, charLetter_a = 0x61, charLetter_b = 0x62, charLetter_c = 0x63, charLetter_d = 0x64, charLetter_e = 0x65, charLetter_f = 0x66, charLetter_g = 0x67, charLetter_h = 0x68, charLetter_i = 0x69, charLetter_j = 0x6A, charLetter_k = 0x6B, charLetter_l = 0x6C, charLetter_m = 0x6D, charLetter_n = 0x6E, charLetter_o = 0x6F, charLetter_p = 0x70, charLetter_q = 0x71, charLetter_r = 0x72, charLetter_s = 0x73, charLetter_t = 0x74, charLetter_u = 0x75, charLetter_v = 0x76, charLetter_w = 0x77, charLetter_x = 0x78, charLetter_y = 0x79, charLetter_z = 0x7A, charLeftCurlyBracket = 0x7B, charVerticalLine = 0x7C, charRightCurlyBracket = 0x7D, charNEL = 0x85, charLSEP = 0x2028, charPerMilleSign = 0x2030 }; #else static const XalanDOMChar charHTab = 0x09; static const XalanDOMChar charLF = 0x0A; static const XalanDOMChar charCR = 0x0D; static const XalanDOMChar charFF = 0x0C; static const XalanDOMChar charSpace = 0x20; static const XalanDOMChar charExclamationMark = 0x21; static const XalanDOMChar charQuoteMark = 0x22; static const XalanDOMChar charNumberSign = 0x23; static const XalanDOMChar charDollarSign = 0x24; static const XalanDOMChar charPercentSign = 0x25; static const XalanDOMChar charAmpersand = 0x26; static const XalanDOMChar charApostrophe = 0x27; static const XalanDOMChar charLeftParenthesis = 0x28; static const XalanDOMChar charRightParenthesis = 0x29; static const XalanDOMChar charAsterisk = 0x2A; static const XalanDOMChar charPlusSign = 0x2B; static const XalanDOMChar charComma = 0x2C; static const XalanDOMChar charHyphenMinus = 0x2D; static const XalanDOMChar charFullStop = 0x2E; static const XalanDOMChar charSolidus = 0x2F; static const XalanDOMChar charDigit_0 = 0x30; static const XalanDOMChar charDigit_1 = 0x31; static const XalanDOMChar charDigit_2 = 0x32; static const XalanDOMChar charDigit_3 = 0x33; static const XalanDOMChar charDigit_4 = 0x34; static const XalanDOMChar charDigit_5 = 0x35; static const XalanDOMChar charDigit_6 = 0x36; static const XalanDOMChar charDigit_7 = 0x37; static const XalanDOMChar charDigit_8 = 0x38; static const XalanDOMChar charDigit_9 = 0x39; static const XalanDOMChar charColon = 0x3A; static const XalanDOMChar charSemicolon = 0x3B; static const XalanDOMChar charLessThanSign = 0x3C; static const XalanDOMChar charEqualsSign = 0x3D; static const XalanDOMChar charGreaterThanSign = 0x3E; static const XalanDOMChar charQuestionMark = 0x3F; static const XalanDOMChar charCommercialAt = 0x40; static const XalanDOMChar charLetter_A = 0x41; static const XalanDOMChar charLetter_B = 0x42; static const XalanDOMChar charLetter_C = 0x43; static const XalanDOMChar charLetter_D = 0x44; static const XalanDOMChar charLetter_E = 0x45; static const XalanDOMChar charLetter_F = 0x46; static const XalanDOMChar charLetter_G = 0x47; static const XalanDOMChar charLetter_H = 0x48; static const XalanDOMChar charLetter_I = 0x49; static const XalanDOMChar charLetter_J = 0x4A; static const XalanDOMChar charLetter_K = 0x4B; static const XalanDOMChar charLetter_L = 0x4C; static const XalanDOMChar charLetter_M = 0x4D; static const XalanDOMChar charLetter_N = 0x4E; static const XalanDOMChar charLetter_O = 0x4F; static const XalanDOMChar charLetter_P = 0x50; static const XalanDOMChar charLetter_Q = 0x51; static const XalanDOMChar charLetter_R = 0x52; static const XalanDOMChar charLetter_S = 0x53; static const XalanDOMChar charLetter_T = 0x54; static const XalanDOMChar charLetter_U = 0x55; static const XalanDOMChar charLetter_V = 0x56; static const XalanDOMChar charLetter_W = 0x57; static const XalanDOMChar charLetter_X = 0x58; static const XalanDOMChar charLetter_Y = 0x59; static const XalanDOMChar charLetter_Z = 0x5A; static const XalanDOMChar charLeftSquareBracket = 0x5B; static const XalanDOMChar charReverseSolidus = 0x5C; static const XalanDOMChar charRightSquareBracket = 0x5D; static const XalanDOMChar charCircumflexAccent = 0x5E; static const XalanDOMChar charLowLine = 0x5F; static const XalanDOMChar charGraveAccent = 0x60; static const XalanDOMChar charLetter_a = 0x61; static const XalanDOMChar charLetter_b = 0x62; static const XalanDOMChar charLetter_c = 0x63; static const XalanDOMChar charLetter_d = 0x64; static const XalanDOMChar charLetter_e = 0x65; static const XalanDOMChar charLetter_f = 0x66; static const XalanDOMChar charLetter_g = 0x67; static const XalanDOMChar charLetter_h = 0x68; static const XalanDOMChar charLetter_i = 0x69; static const XalanDOMChar charLetter_j = 0x6A; static const XalanDOMChar charLetter_k = 0x6B; static const XalanDOMChar charLetter_l = 0x6C; static const XalanDOMChar charLetter_m = 0x6D; static const XalanDOMChar charLetter_n = 0x6E; static const XalanDOMChar charLetter_o = 0x6F; static const XalanDOMChar charLetter_p = 0x70; static const XalanDOMChar charLetter_q = 0x71; static const XalanDOMChar charLetter_r = 0x72; static const XalanDOMChar charLetter_s = 0x73; static const XalanDOMChar charLetter_t = 0x74; static const XalanDOMChar charLetter_u = 0x75; static const XalanDOMChar charLetter_v = 0x76; static const XalanDOMChar charLetter_w = 0x77; static const XalanDOMChar charLetter_x = 0x78; static const XalanDOMChar charLetter_y = 0x79; static const XalanDOMChar charLetter_z = 0x7A; static const XalanDOMChar charLeftCurlyBracket = 0x7B; static const XalanDOMChar charVerticalLine = 0x7C; static const XalanDOMChar charRightCurlyBracket = 0x7D; static const XalanDOMChar charNEL = 0x85; static const XalanDOMChar charLSEP = 0x2028; static const XalanDOMChar charPerMilleSign = 0x2030; #endif #if !defined(XALAN_HAS_CPP_NAMESPACE) private: // Not implemented... XalanUnicode(); XalanUnicode(const XalanUnicode&); ~XalanUnicode(); XalanUnicode& operator=(const XalanUnicode&); }; #else } #endif XALAN_CPP_NAMESPACE_END #endif // XALANUNICODE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/DOMStringPrintWriter.cpp0000664000175000000640000001165711731656102024151 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "DOMStringPrintWriter.hpp" #include XALAN_CPP_NAMESPACE_BEGIN DOMStringPrintWriter::DOMStringPrintWriter(XalanDOMString& theString) : PrintWriter(true, theString.getMemoryManager()), m_outputString(&theString) { } DOMStringPrintWriter::~DOMStringPrintWriter() { } bool DOMStringPrintWriter::checkError() const { return false; } void DOMStringPrintWriter::close() { } void DOMStringPrintWriter::flush() { } void DOMStringPrintWriter::write( const char* s, size_t theOffset, size_t theLength) { assert(XalanDOMString::size_type(theOffset) == theOffset); assert(XalanDOMString::size_type(theLength) == theLength); assert ( m_outputString != 0 ); XalanDOMString tmpString( m_outputString->getMemoryManager() ); tmpString = TranscodeFromLocalCodePage(s, tmpString); write( tmpString, XalanDOMString::size_type(theOffset), XalanDOMString::size_type(theLength)); } void DOMStringPrintWriter::write( const XalanDOMChar* s, XalanDOMString::size_type theOffset, XalanDOMString::size_type theLength) { assert(s != 0); m_outputString->append(s + theOffset, theLength); } void DOMStringPrintWriter::write(XalanDOMChar c) { (*m_outputString) += c; } void DOMStringPrintWriter::write( const XalanDOMString& s, XalanDOMString::size_type theOffset, XalanDOMString::size_type theLength) { assert(theLength == npos || s.length() >= theOffset + theLength); if (theOffset == 0 && theLength == npos) { (*m_outputString) += s; } else { (*m_outputString).append(s, theOffset, theLength); } } #if !defined(XALAN_BOOL_AS_INT) void DOMStringPrintWriter::print(bool b) { if (b == true) { print(s_trueString); } else { print(s_falseString); } } #endif void DOMStringPrintWriter::print(char c) { write(c); } void DOMStringPrintWriter::print( const char* s, size_t theLength) { write(s, 0, theLength); } void DOMStringPrintWriter::print( const XalanDOMChar* s, XalanDOMString::size_type theLength) { write(s, 0, theLength); } void DOMStringPrintWriter::print(double d) { assert ( m_outputString != 0 ); XalanDOMString tmpString( m_outputString->getMemoryManager() ); NumberToDOMString(d, tmpString); (*m_outputString) += tmpString; } void DOMStringPrintWriter::print(int i) { assert ( m_outputString != 0 ); XalanDOMString tmpString( m_outputString->getMemoryManager() ); NumberToDOMString(i, tmpString); (*m_outputString) += tmpString; } void DOMStringPrintWriter::print(long l) { assert ( m_outputString != 0 ); XalanDOMString tmpString( m_outputString->getMemoryManager() ); NumberToDOMString(l, tmpString); (*m_outputString) += tmpString; } void DOMStringPrintWriter::print(const XalanDOMString& s) { (*m_outputString) += s; } void DOMStringPrintWriter::println() { (*m_outputString) += s_newlineString; } #if !defined(XALAN_BOOL_AS_INT) void DOMStringPrintWriter::println(bool b) { print(b); println(); } #endif void DOMStringPrintWriter::println(char c) { print(c); println(); } void DOMStringPrintWriter::println( const char* s, size_t theLength) { print(s, theLength); println(); } void DOMStringPrintWriter::println( const XalanDOMChar* s, XalanDOMString::size_type theLength) { print(s, theLength); println(); } void DOMStringPrintWriter::println(double d) { print(d); println(); } void DOMStringPrintWriter::println(int i) { print(i); println(); } void DOMStringPrintWriter::println(long l) { print(l); println(); } void DOMStringPrintWriter::println(const XalanDOMString& s) { print(s); println(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanStdOutputStream.hpp0000664000175000000640000000672411731656102024250 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSTDOUTPUTSTREAM_HEADER_GUARD_1357924680) #define XALANSTDOUTPUTSTREAM_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #include #endif // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN // A base class for all text output streams. class XALAN_PLATFORMSUPPORT_EXPORT XalanStdOutputStream : public XalanOutputStream { public: #if defined(XALAN_NO_STD_NAMESPACE) typedef ostream StreamType; #else typedef std::ostream StreamType; #endif #if defined(XALAN_CLASSIC_IOSTREAMS) typedef int StreamSizeType; #else #if defined(XALAN_NO_STD_NAMESPACE) typedef streamsize StreamSizeType; #else typedef std::streamsize StreamSizeType; #endif #endif /** * Construct a XalanStdOutputStream instance for output to the * standard output device. * * @param theOutputStream output stream to use */ XalanStdOutputStream(StreamType& theOutputStream, MemoryManager& theManager XALAN_DEFAULT_MEMMGR); static XalanStdOutputStream* create( StreamType& theOutputStream, MemoryManager& theManager); virtual ~XalanStdOutputStream(); #if defined(XALAN_NEWLINE_IS_CRLF) virtual void newline(); virtual const XalanDOMChar* getNewlineString() const; #endif class XALAN_PLATFORMSUPPORT_EXPORT XalanStdOutputStreamWriteException : public XalanOutputStream::XalanOutputStreamException { public: XalanStdOutputStreamWriteException(int theErrorCode, XalanDOMString& theResult); virtual ~XalanStdOutputStreamWriteException(); virtual const XalanDOMChar* getType() const { return m_type; } private: static const XalanDOMChar m_type[]; }; protected: virtual void writeData( const char* theBuffer, size_type theBufferLength); virtual void doFlush(); private: // These are not implemented... XalanStdOutputStream(const XalanStdOutputStream&); XalanStdOutputStream& operator=(const XalanStdOutputStream&); // Data members... StreamType& m_outputStream; #if defined(XALAN_NEWLINE_IS_CRLF) const XalanDOMChar* m_newlineString; XalanDOMString::size_type m_newlineStringLength; #endif }; XALAN_CPP_NAMESPACE_END #endif // XERCESSTDTEXTOUTPUTSTREAM_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/AttributeListImpl.cpp0000664000175000000640000002655711731656102023557 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "AttributeListImpl.hpp" #include #include #include #include #include "AttributeVectorEntry.hpp" XALAN_CPP_NAMESPACE_BEGIN AttributeListImpl::AttributeListImpl(MemoryManager& theManager) : AttributeListType(), m_AttributeVector(theManager), m_cacheVector(theManager) { } AttributeListImpl::~AttributeListImpl() { // Clean up everything... clear(); assert(m_AttributeVector.empty() == true); deleteEntries(m_cacheVector); } AttributeListImpl::AttributeListImpl(const AttributeListImpl& theSource, MemoryManager& theManager) : AttributeListType(), m_AttributeVector(theManager), m_cacheVector(theManager) { // Use the assignment operator to do the dirty work... *this = theSource; assert(getLength() == theSource.getLength()); } AttributeListImpl::AttributeListImpl(const AttributeListType& theSource, MemoryManager& theManager) : AttributeListType(), m_AttributeVector(theManager), m_cacheVector(theManager) { // Use the assignment operator to do the dirty work... *this = theSource; assert(getLength() == theSource.getLength()); } void AttributeListImpl::deleteEntries(AttributeVectorType& theVector) { // Delete all of the objects in the vector. XALAN_STD_QUALIFIER for_each( theVector.begin(), theVector.end(), DeleteFunctor(theVector.getMemoryManager())); } AttributeListImpl& AttributeListImpl::operator=(const AttributeListImpl& theRHS) { if (this != &theRHS) { // Note that we can't chain up to our base class operator=() // because it's private. // Some temporary structures to hold everything // until we're done. AttributeVectorType tempVector(getMemoryManager()); const XalanSize_t theLength = theRHS.getLength(); if (theLength > 0) { // Reserve the appropriate capacity right now... tempVector.reserve(theLength); // This will delete everything in tempVector when we're done... CollectionDeleteGuard > theGuard(tempVector); typedef AttributeVectorType::const_iterator const_iterator; const const_iterator theEnd = theRHS.m_AttributeVector.end(); // Copy the vector entries, and build the index map... for(const_iterator i = theRHS.m_AttributeVector.begin(); i != theEnd; ++i) { AttributeVectorEntry* const theEntry = *i; assert(theEntry != 0); // Add the item... tempVector.push_back( getNewEntry( &*theEntry->m_Name.begin(), &*theEntry->m_Type.begin(), &*theEntry->m_Value.begin())); } // OK, we're safe, so swap the contents of the // containers. This is guaranteed not to throw. m_AttributeVector.swap(tempVector); } assert(getLength() == theLength); } return *this; } AttributeListImpl& AttributeListImpl::operator=(const AttributeListType& theRHS) { if (this != &theRHS) { // Note that we can't chain up to our base class operator=() // because it's private. // Add all of the attributes to this temp list, // then swap at the end. This means we're exception // safe and don't need any try blocks. AttributeListImpl theTempList(getMemoryManager()); const XalanSize_t theLength = theRHS.getLength(); theTempList.reserve(theLength); // Add each attribute. for(XalanSize_t i = 0; i < theLength; i++) { theTempList.addAttribute( theRHS.getName(i), theRHS.getType(i), theRHS.getValue(i)); } // Now that the temp list is built, swap everything. This is // guaranteed not to throw. swap(theTempList); } return *this; } XalanSize_t AttributeListImpl::getLength() const { // Make sure the mismatch between Xerces and vector<> doesn't cause a problem... assert(m_AttributeVector.size() == unsigned(m_AttributeVector.size())); return unsigned(m_AttributeVector.size()); } const XMLCh* AttributeListImpl::getName(const XalanSize_t index) const { assert(index < getLength()); return &*m_AttributeVector[index]->m_Name.begin(); } const XMLCh* AttributeListImpl::getType(const XalanSize_t index) const { assert(index < getLength()); return &*m_AttributeVector[index]->m_Type.begin(); } const XMLCh* AttributeListImpl::getValue(const XalanSize_t index) const { assert(index < getLength()); return &*m_AttributeVector[index]->m_Value.begin(); } const XMLCh* AttributeListImpl:: getValue(const char* const /*name*/) const { assert(0); return 0; } struct NameCompareFunctor { NameCompareFunctor(const XMLCh* theName) : m_name(theName) { } bool operator()(const AttributeVectorEntry* theEntry) const { return equals(&*theEntry->m_Name.begin(), m_name); } private: const XMLCh* const m_name; }; const XMLCh* AttributeListImpl::getType(const XMLCh* const name) const { assert(name != 0); const AttributeVectorType::const_iterator i = XALAN_STD_QUALIFIER find_if( m_AttributeVector.begin(), m_AttributeVector.end(), NameCompareFunctor(name)); if (i != m_AttributeVector.end()) { // Found it, so return a pointer to the type. return &*(*i)->m_Type.begin(); } else { return 0; } } const XMLCh* AttributeListImpl::getValue(const XMLCh* const name) const { assert(name != 0); const AttributeVectorType::const_iterator i = XALAN_STD_QUALIFIER find_if( m_AttributeVector.begin(), m_AttributeVector.end(), NameCompareFunctor(name)); if (i != m_AttributeVector.end()) { // Found it, so return a pointer to the value. return &*(*i)->m_Value.begin(); } else { return 0; } } void AttributeListImpl::clear() { m_cacheVector.insert(m_cacheVector.end(), m_AttributeVector.begin(), m_AttributeVector.end()); // Clear everything out. m_AttributeVector.clear(); } bool AttributeListImpl::addAttribute( const XMLCh* name, const XMLCh* type, const XMLCh* value) { assert(name != 0); assert(type != 0); assert(value != 0); bool fResult = false; XALAN_USING_STD(find_if) XALAN_USING_STD(copy) typedef AttributeVectorEntry::XMLChVectorType XMLChVectorType; // Update the attribute, if it's already there... const AttributeVectorType::const_iterator i = find_if( m_AttributeVector.begin(), m_AttributeVector.end(), NameCompareFunctor(name)); if (i != m_AttributeVector.end()) { // This is a special optimization for type, since it's (almost) always "CDATA". if (equals(type, &*(*i)->m_Type.begin()) == false) { // If necessary, create the a new vector and swap them. Otherwise, // just copy the new data in. const XMLCh* const theNewTypeEnd = AttributeVectorEntry::endArray(type) + 1; if ((*i)->m_Type.capacity() < XMLChVectorType::size_type(theNewTypeEnd - type)) { XMLChVectorType theNewType(type, theNewTypeEnd, getMemoryManager()); theNewType.swap((*i)->m_Type); } else { copy(type, theNewTypeEnd, (*i)->m_Type.begin()); } } const XMLCh* const theNewValueEnd = AttributeVectorEntry::endArray(value) + 1; const XMLChVectorType::size_type theNewSize = XMLChVectorType::size_type(theNewValueEnd - value); // If necessary, create the a new vector and swap them. Otherwise, // just copy the new data in. if ((*i)->m_Value.capacity() < theNewSize) { XMLChVectorType theNewValue(value, theNewValueEnd, getMemoryManager()); theNewValue.swap((*i)->m_Value); } else { (*i)->m_Value.resize(theNewSize); copy(value, theNewValueEnd, (*i)->m_Value.begin()); } } else { if (m_AttributeVector.capacity() == 0) { m_AttributeVector.reserve(eDefaultVectorSize); } typedef XalanMemMgrAutoPtr AutoPtr; AutoPtr theEntry(getMemoryManager(), getNewEntry(name, type, value)); // Add the new one. m_AttributeVector.push_back(theEntry.get()); theEntry.release(); fResult = true; } return fResult; } AttributeVectorEntry* AttributeListImpl::getNewEntry( const XMLCh* name, const XMLCh* type, const XMLCh* value) { if (m_cacheVector.empty() == true) { return AttributeVectorEntry::create(name, value, type,getMemoryManager()); } else { AttributeVectorEntry* const theEntry = m_cacheVector.back(); theEntry->clear(); assert(theEntry->m_Name.empty() == true && theEntry->m_Value.empty() == true && theEntry->m_Type.empty() == true); theEntry->m_Name.insert(theEntry->m_Name.begin(), name, AttributeVectorEntry::endArray(name) + 1); theEntry->m_Value.insert(theEntry->m_Value.begin(), value, AttributeVectorEntry::endArray(value) + 1); theEntry->m_Type.insert(theEntry->m_Type.begin(), type, AttributeVectorEntry::endArray(type) + 1); m_cacheVector.pop_back(); return theEntry; } } bool AttributeListImpl::removeAttribute(const XMLCh* name) { assert(name != 0); bool fResult = false; // Update the attribute, if it's already there... const AttributeVectorType::iterator i = XALAN_STD_QUALIFIER find_if( m_AttributeVector.begin(), m_AttributeVector.end(), NameCompareFunctor(name)); if (i != m_AttributeVector.end()) { m_cacheVector.push_back(*i); m_AttributeVector.erase(i); fResult = true; } return fResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/PlatformSupportDefinitions.hpp0000664000175000000640000000254511731656102025507 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(PLATFORMSUPPORTDEFINITIONS_HEADER_GUARD_1357924680) #define PLATFORMSUPPORTDEFINITIONS_HEADER_GUARD_1357924680 #include #if defined(XALAN_BUILD_DLL) #define XALAN_PLATFORMSUPPORT_EXPORT XALAN_PLATFORM_EXPORT #define XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(T) XALAN_PLATFORM_EXPORT_FUNCTION(T) #else #define XALAN_PLATFORMSUPPORT_EXPORT XALAN_PLATFORM_IMPORT #define XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(T) XALAN_PLATFORM_IMPORT_FUNCTION(T) #endif #endif // PLATFORMSUPPORTDEFINITIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanFStreamOutputStream.cpp0000664000175000000640000001063311731656102025044 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XalanFStreamOutputStream.hpp" #include #include "DOMStringHelper.hpp" #include "XalanMessageLoader.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanFStreamOutputStream::XalanFStreamOutputStream( FILE* theHandle, MemoryManager& theManager, size_type theBufferSize) : XalanOutputStream(theManager, theBufferSize), m_handle(theHandle) { assert(m_handle != 0); } XalanFStreamOutputStream* XalanFStreamOutputStream::create( FILE* theFileHandle, MemoryManager& theManager, size_type theBufferSize) { typedef XalanFStreamOutputStream ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( theFileHandle, theManager, theBufferSize); theGuard.release(); return theResult; } XalanFStreamOutputStream::~XalanFStreamOutputStream() { } void XalanFStreamOutputStream::doFlush() { } void XalanFStreamOutputStream::writeData( const char* theBuffer, size_type theBufferLength) { #if defined(XALAN_STRICT_ANSI_HEADERS) using std::fwrite; #endif const size_t theBytesWritten = fwrite(theBuffer, 1, theBufferLength, m_handle); if (theBytesWritten != theBufferLength) { XalanDOMString theExceptionBuffer(getMemoryManager()); throw XalanFStreamOutputStreamWriteException( errno, theExceptionBuffer); } } const XalanDOMChar XalanFStreamOutputStream::XalanFStreamOutputStreamWriteException::m_type[] = { XalanUnicode::charLetter_X, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_F, XalanUnicode::charLetter_S, XalanUnicode::charLetter_O, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_p, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_S, XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_e, XalanUnicode::charLetter_a, XalanUnicode::charLetter_m, XalanUnicode::charLetter_W, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_E, XalanUnicode::charLetter_x, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_p, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; XalanFStreamOutputStream::XalanFStreamOutputStreamWriteException::XalanFStreamOutputStreamWriteException( int theErrorCode, XalanDOMString& theBuffer) : XalanOutputStreamException( formatMessage( XalanMessageLoader::getMessage( theBuffer, XalanMessages::ErrorWritingFile_1Param, XalanDOMString(theBuffer.getMemoryManager())), theErrorCode, theBuffer), theBuffer.getMemoryManager(), 0) { } XalanFStreamOutputStream::XalanFStreamOutputStreamWriteException::~XalanFStreamOutputStreamWriteException() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanDOMStringCache.hpp0000664000175000000640000000621511731656102023646 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_DOMSTRINGCACHE_HEADER_GUARD) #define XALAN_DOMSTRINGCACHE_HEADER_GUARD // Base include file. Must be first. #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT XalanDOMStringCache { public: enum { eDefaultMaximumSize = 100u }; typedef XalanVector StringListType; explicit XalanDOMStringCache( MemoryManager& theManager, XalanSize_t theMaximumSize = eDefaultMaximumSize); ~XalanDOMStringCache(); XalanSize_t getMaximumSize() const { return m_maximumSize; } void setMaximumSize(XalanSize_t theSize) { m_maximumSize = theSize; } XalanDOMString& get(); bool release(XalanDOMString& theString); /* * Clear all of the strings in the cache. This * destroys all of the strings. * */ void clear(); /* * Reset the cache so that all strings that are * currently in use are available. */ void reset(); class GetAndRelease { public: GetAndRelease(XalanDOMStringCache& theCache) : m_cache(theCache), m_string(&theCache.get()) { } ~GetAndRelease() { m_cache.release(*m_string); } XalanDOMString& get() const { return *m_string; } private: XalanDOMStringCache& m_cache; XalanDOMString* const m_string; }; private: // not implemented XalanDOMStringCache(const XalanDOMStringCache&); bool operator==(const XalanDOMStringCache&) const; XalanDOMStringCache& operator=(const XalanDOMStringCache&); /** * A list to hold the strings that are available... */ StringListType m_availableList; /** * A list to hold the strings that are busy... */ StringListType m_busyList; XalanSize_t m_maximumSize; XalanDOMStringReusableAllocator m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_RESULTNAMESPACESSTACK_HEADER_GUARD xalan-c-1.11/c/src/xalanc/PlatformSupport/StdBinInputStream.hpp0000664000175000000640000000422211731656102023503 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_STDBININPUTSTREAM_HEADER_GUARD) #define XALAN_STDBININPUTSTREAM_HEADER_GUARD // Base include file. Must be first. #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT StdBinInputStream : public XERCES_CPP_NAMESPACE_QUALIFIER BinInputStream { public: typedef XERCES_CPP_NAMESPACE_QUALIFIER BinInputStream ParentType; #if defined(XALAN_NO_STD_NAMESPACE) typedef istream StreamType; #else typedef std::istream StreamType; #endif StdBinInputStream(StreamType& theStream); virtual ~StdBinInputStream(); virtual XalanFilePos curPos() const; virtual XalanSize_t readBytes( XMLByte* const toFill, const XalanSize_t maxToRead); virtual const XalanDOMChar* getContentType() const; private: // Unimplemented... StdBinInputStream(const StdBinInputStream& theSource); bool operator==(const StdBinInputStream& theSource) const; StdBinInputStream& operator=(const StdBinInputStream& theSource); // Data members... StreamType& m_stream; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_STDBININPUTSTREAM_HEADER_GUARD xalan-c-1.11/c/src/xalanc/PlatformSupport/XSLException.cpp0000664000175000000640000001243111731656102022445 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XSLException.hpp" #include "LocalMsgIndex.hpp" #include "XalanMessageLoader.hpp" #include "XalanUnicode.hpp" #include "DOMStringHelper.hpp" XALAN_CPP_NAMESPACE_BEGIN static const XalanDOMChar s_dummy = 0; XSLException::XSLException( const XalanDOMString& theMessage, MemoryManager& theManager, const Locator* theLocator) : m_memoryManager(theManager), m_message(theMessage, theManager), m_uri( XalanLocator::getSystemId( theLocator, &s_dummy), theManager), m_lineNumber(XalanLocator::getLineNumber(theLocator)), m_columnNumber(XalanLocator::getColumnNumber(theLocator)), m_formatted(false) { } XSLException::XSLException( const XalanDOMString& theMessage, MemoryManager& theManager) : m_memoryManager(theManager), m_message(theMessage, theManager), m_uri(), m_lineNumber(XalanLocator::getUnknownValue()), m_columnNumber(XalanLocator::getUnknownValue()), m_formatted(true) { } XSLException::XSLException(const XSLException& other) : m_memoryManager(other.m_memoryManager), m_message(other.m_message, m_memoryManager), m_uri(other.m_uri, m_memoryManager), m_lineNumber(other.m_lineNumber), m_columnNumber(other.m_columnNumber), m_formatted(other.m_formatted) { } XSLException::~XSLException() { } XalanDOMString& XSLException::defaultFormat(XalanDOMString& theBuffer) const { if (m_formatted == true) { theBuffer.assign(m_message); } else { defaultFormat( m_message, m_uri, m_lineNumber, m_columnNumber, getType(), theBuffer); } return theBuffer; } XalanDOMString& XSLException::defaultFormat( const XalanDOMChar* theMessage, const XalanDOMString::size_type theMessageLength, const XalanDOMChar* theURI, const XalanDOMString::size_type theURILength, XalanFileLoc theLineNumber, XalanFileLoc theColumnNumber, const XalanDOMChar* theType, const XalanDOMString::size_type theTypeLength, XalanDOMString& theBuffer) { assert( (theMessageLength == 0 || theMessage != 0) && (theURILength == 0 || theURI != 0) && (theTypeLength == 0 || theType != 0)); if (theTypeLength != 0) { theBuffer.append(theType, theTypeLength); theBuffer += XalanDOMChar(XalanUnicode::charColon); theBuffer += XalanDOMChar(XalanUnicode::charSpace); } theBuffer.append(theMessage, theMessageLength); theBuffer += XalanDOMChar(XalanUnicode::charSpace); theBuffer += XalanDOMChar(XalanUnicode::charLeftParenthesis); XalanDOMString theMessageBuffer(theBuffer.getMemoryManager()); XalanDOMString theLineNumberBuffer(theBuffer.getMemoryManager()); XalanDOMString theColumnNumberBuffer(theBuffer.getMemoryManager()); if (XalanLocator::isUnknownValue(theLineNumber)) { // We assume that if the line number is unknown, // that the column number will also be unknown. if (theURILength == 0) { XalanMessageLoader::getMessage( theMessageBuffer, XalanMessages::InUnknownEntity); } else { XalanMessageLoader::getMessage( theMessageBuffer, XalanMessages::InEntity_1Param, theURI); } } else { NumberToDOMString(theLineNumber, theLineNumberBuffer); NumberToDOMString(theColumnNumber, theColumnNumberBuffer); if (theURILength == 0) { XalanMessageLoader::getMessage( theMessageBuffer, XalanMessages::InUnknownEntity_2Param, theLineNumberBuffer.c_str(), theColumnNumberBuffer.c_str()); } else { XalanMessageLoader::getMessage( theMessageBuffer, XalanMessages::InEntity_3Param, theURI, theLineNumberBuffer.c_str(), theColumnNumberBuffer.c_str()); } } theBuffer.append(theMessageBuffer); theBuffer += XalanDOMChar(XalanUnicode::charRightParenthesis); return theBuffer; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/NullPrintWriter.hpp0000664000175000000640000000662611731656102023262 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(NULLPRINTWRITER_HEADER_GUARD_1357924680) #define NULLPRINTWRITER_HEADER_GUARD_1357924680 // Base include file. Must be first. #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT NullPrintWriter : public PrintWriter { public: explicit NullPrintWriter(MemoryManager& theManager); virtual ~NullPrintWriter(); // Functions inherited from PrintWriter... virtual bool checkError() const; virtual void close(); virtual void flush(); virtual void write( const char* s, size_t theOffset = 0, size_t theLength = npos); virtual void write( const XalanDOMChar* s, XalanDOMString::size_type theOffset = 0, XalanDOMString::size_type theLength = XalanDOMString::npos); virtual void write(XalanDOMChar c); virtual void write( const XalanDOMString& s, XalanDOMString::size_type theOffset = 0, XalanDOMString::size_type theLength = XalanDOMString::npos); #if !defined(XALAN_BOOL_AS_INT) virtual void print(bool b); #endif virtual void print(char c); virtual void print( const char* s, size_t theLength = npos); virtual void print( const XalanDOMChar* s, XalanDOMString::size_type theLength = XalanDOMString::npos); virtual void print(double d); virtual void print(int i); virtual void print(long l); virtual void print(const XalanDOMString& s); virtual void println(); #if !defined(XALAN_BOOL_AS_INT) virtual void println(bool x); #endif virtual void println(char x); virtual void println( const char* s, size_t theLength = npos); virtual void println( const XalanDOMChar* s, XalanDOMString::size_type theLength = XalanDOMString::npos); virtual void println(double x); virtual void println(int x); virtual void println(long x); virtual void println(const XalanDOMString& s); private: // Not implemented NullPrintWriter(const NullPrintWriter&); NullPrintWriter& operator=(const NullPrintWriter&); bool operator==(const NullPrintWriter&); }; XALAN_CPP_NAMESPACE_END #endif // NULLPRINTWRITER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/PrintWriter.cpp0000664000175000000640000000320611731656102022411 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "PrintWriter.hpp" #include "DOMStringHelper.hpp" #include "XalanUnicode.hpp" XALAN_CPP_NAMESPACE_BEGIN const XalanDOMChar PrintWriter::s_trueString[] = { XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_u, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar PrintWriter::s_falseString[] = { XalanUnicode::charLetter_f, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_s, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar PrintWriter::s_newlineString[] = { XalanUnicode::charLF, 0 }; PrintWriter::PrintWriter( bool fAutoFlush, MemoryManager& theManager) : Writer(), m_fAutoFlush(fAutoFlush), m_memoryManager(theManager) { } PrintWriter::~PrintWriter() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanNumberFormat.hpp0000664000175000000640000001152211731656102023512 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANNUMBERFORMAT_HEADER_GUARD_1357924680) #define XALANNUMBERFORMAT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT XalanNumberFormat { public: explicit XalanNumberFormat(MemoryManager& theManager); static XalanNumberFormat* create(MemoryManager& theManager) { XalanNumberFormat* theInstance; return XalanConstruct( theManager, theInstance, theManager); } virtual ~XalanNumberFormat(); MemoryManager& getMemoryManager() { return m_groupingSeparator.getMemoryManager(); } /** * Format a number into a string. * * @param theValue number to format * @return string representation of number */ virtual XalanDOMString& format(double theValue, XalanDOMString& theResult); /** * Format a number into a string. * * @param theValue number to format * @return string representation of number */ virtual XalanDOMString& format(int theValue, XalanDOMString& theResult); /** * Format a number into a string. * * @param theValue number to format * @param theResult the string result */ virtual XalanDOMString& format( unsigned int theValue, XalanDOMString& theResult); /** * Format a number into a string. * * @param theValue number to format * @return string representation of number */ virtual XalanDOMString& format(long theValue, XalanDOMString& theResult); /** * Format a number into a string. * * @param theValue number to format * @param theResult the string result */ virtual XalanDOMString& format( unsigned long theValue, XalanDOMString& theResult); /** * Format a number into a string. * * @param theValue number to format * @param theResult the string result */ virtual XalanDOMString& format( XALAN_INT64 theValue, XalanDOMString& theResult); /** * Format a number into a string. * * @param theValue number to format * @param theResult the string result */ virtual XalanDOMString& format( XALAN_UINT64 theValue, XalanDOMString& theResult); /** * Whether groupings are used for numbers, for example, "234,678" * * @return true if grouping used */ virtual bool isGroupingUsed() const; /** * Change whether groupings are used for numbers, for example, "234,678" * * @param bUsed true to use grouping */ virtual void setGroupingUsed(bool bUsed); /** * Change the size of groupings, for example, "234,678" uses a size of "3" * * @param size the grouping size */ virtual void setGroupingSize(unsigned long size); /** * Change the separator string used for groupings, for example, "234,678" * uses the separator "," * * @param s grouping separator string */ virtual void setGroupingSeparator(const XalanDOMString& s); protected: void applyGrouping( const XalanDOMString& value, XalanDOMString& result); private: // Not implemented... XalanNumberFormat(const XalanNumberFormat&); XalanNumberFormat& operator=(const XalanNumberFormat&); bool operator==(const XalanNumberFormat&); // Data members... bool m_isGroupingUsed; XalanDOMString m_groupingSeparator; unsigned long m_groupingSize; static const XalanDOMChar s_defaultGroupingSeparator[]; }; XALAN_CPP_NAMESPACE_END #endif // XALANNUMBERFORMAT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanDOMStringAllocator.cpp0000664000175000000640000000631711731656102024561 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanDOMStringAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanDOMStringAllocator::XalanDOMStringAllocator( MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanDOMStringAllocator::~XalanDOMStringAllocator() { } XalanDOMStringAllocator::data_type* XalanDOMStringAllocator::create() { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type(getMemoryManager()); m_allocator.commitAllocation(theBlock); return theResult; } XalanDOMStringAllocator::data_type* XalanDOMStringAllocator::create( const char* theString, data_type_size_type theCount) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type(theString, getMemoryManager(), theCount); m_allocator.commitAllocation(theBlock); return theResult; } XalanDOMStringAllocator::data_type* XalanDOMStringAllocator::create( const data_type& theSource, data_type_size_type theStartPosition, data_type_size_type theCount) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type(theSource, getMemoryManager(), theStartPosition, theCount); m_allocator.commitAllocation(theBlock); return theResult; } XalanDOMStringAllocator::data_type* XalanDOMStringAllocator::create( const XalanDOMChar* theString, data_type_size_type theCount) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type(theString, getMemoryManager(), theCount); m_allocator.commitAllocation(theBlock); return theResult; } XalanDOMStringAllocator::data_type* XalanDOMStringAllocator::create( data_type_size_type theCount, XalanDOMChar theChar) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type(theCount, theChar, getMemoryManager()); m_allocator.commitAllocation(theBlock); return theResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanMessageLoader.cpp0000664000175000000640000002001311731656102023612 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. // Base include file. Must be first. #include #include #include #include #include #if defined (XALAN_INMEM_MSG_LOADER) #include #elif defined (XALAN_ICU_MSG_LOADER) #include #elif defined (XALAN_NLS_MSG_LOADER) #include #else #error You must provide a message loader #endif XALAN_CPP_NAMESPACE_BEGIN static const size_t kMaxMessageLength = 1024; XalanMessageLoader* XalanMessageLoader::s_msgLoader = 0; static MemoryManager* s_initManager; XalanMessageLoader::~XalanMessageLoader() { } void XalanMessageLoader::initialize(MemoryManager& theManager) { #if defined (XALAN_INMEM_MSG_LOADER) typedef XalanMessageLoader::XalanMessageLoaderCreateFunct LoaderCreatorType; #elif defined (XALAN_ICU_MSG_LOADER) typedef XalanMessageLoader::XalanMessageLoaderCreateFunct LoaderCreatorType; #elif defined (XALAN_NLS_MSG_LOADER) typedef XalanMessageLoader::XalanMessageLoaderCreateFunct LoaderCreatorType; #else #error You must provide a message loader #endif if (s_msgLoader == 0) { s_initManager = &theManager; s_msgLoader = LoaderCreatorType()(theManager); } assert(s_msgLoader != 0); } void XalanMessageLoader::terminate() { typedef XalanMessageLoader::XalanMessageLoaderDestructFunct LoaderDestructType; assert(s_initManager != 0); LoaderDestructType()(*s_initManager, s_msgLoader); s_msgLoader = 0; } XalanDOMString& XalanMessageLoader::getMessage( XalanDOMString& theResultMessage, XalanMessages::Codes msgToLoad, const XalanDOMString& repText1 ) { assert(s_msgLoader != 0); XalanDOMChar sBuffer[kMaxMessageLength + 1]; s_msgLoader->load( msgToLoad, theResultMessage.getMemoryManager(), sBuffer, kMaxMessageLength, repText1.c_str()); theResultMessage.assign(sBuffer); return theResultMessage; } XalanDOMString& XalanMessageLoader::getMessage( XalanDOMString& theResultMessage, XalanMessages::Codes msgToLoad, const XalanDOMString& repText1, const XalanDOMString& repText2) { assert(s_msgLoader != 0); XalanDOMChar sBuffer[kMaxMessageLength + 1]; s_msgLoader->load( msgToLoad, theResultMessage.getMemoryManager(), sBuffer, kMaxMessageLength, repText1.c_str(), repText2.c_str()); theResultMessage.assign(sBuffer); return theResultMessage; } XalanDOMString& XalanMessageLoader::getMessage( XalanDOMString& theResultMessage, XalanMessages::Codes msgToLoad, const XalanDOMString& repText1 , const XalanDOMString& repText2 , const XalanDOMString& repText3) { assert(s_msgLoader != 0); XalanDOMChar sBuffer[kMaxMessageLength + 1]; s_msgLoader->load( msgToLoad, theResultMessage.getMemoryManager(), sBuffer, kMaxMessageLength, repText1.c_str(), repText2.c_str(), repText3.c_str()); theResultMessage.assign(sBuffer); return theResultMessage; } XalanDOMString& XalanMessageLoader::getMessage( XalanDOMString& theResultMessage, XalanMessages::Codes msgToLoad) { assert(s_msgLoader != 0); XalanDOMChar sBuffer[kMaxMessageLength + 1]; s_msgLoader->loadMsg(msgToLoad, sBuffer, kMaxMessageLength) ; theResultMessage.assign(sBuffer); return theResultMessage; } bool XalanMessageLoader::load( XalanMessages::Codes msgToLoad, MemoryManager& theMemoryManager, XalanDOMChar* toFill, XalanSize_t maxChars, const XalanDOMChar* repText1, const XalanDOMChar* repText2, const XalanDOMChar* repText3, const XalanDOMChar* repText4) { // Call the other version to load up the message if (!loadMsg(msgToLoad, toFill, maxChars)) return false; XALAN_USING_XERCES(XMLString) // And do the token replacement XMLString::replaceTokens( toFill, maxChars, repText1, repText2, repText3, repText4, &theMemoryManager); return true; } XalanDOMString& XalanMessageLoader::getMessage( XalanDOMString& theResultMessage, XalanMessages::Codes msgToLoad, const char* repText1, const char* repText2, const char* repText3, const char* repText4) { XalanDOMChar sBuffer[kMaxMessageLength + 1]; s_msgLoader->load( msgToLoad, theResultMessage.getMemoryManager(), sBuffer, kMaxMessageLength, repText1, repText2, repText3, repText4); theResultMessage.assign(sBuffer); return theResultMessage; } XalanDOMString& XalanMessageLoader::getMessage( XalanDOMString& theResultMessage, XalanMessages::Codes msgToLoad, const XalanDOMChar* repText1, const XalanDOMChar* repText2, const XalanDOMChar* repText3, const XalanDOMChar* repText4) { XalanDOMChar sBuffer[kMaxMessageLength + 1]; s_msgLoader->load( msgToLoad, theResultMessage.getMemoryManager(), sBuffer, kMaxMessageLength, repText1, repText2, repText3, repText4); theResultMessage.assign(sBuffer); return theResultMessage; } bool XalanMessageLoader::load( XalanMessages::Codes msgToLoad, MemoryManager& theManager, XalanDOMChar* toFill, XalanSize_t maxChars, const char* repText1, const char* repText2, const char* repText3, const char* repText4) { XalanDOMString theFirstParam(theManager); if (repText1 != 0) { theFirstParam.assign(repText1); } XalanDOMString theSecParam(theManager); if (repText2 != 0) { theSecParam.assign(repText2); } XalanDOMString theThirdParam(theManager); if( repText3 != 0) { theThirdParam.assign(repText3); } XalanDOMString theForthParam(theManager); if (repText4 != 0) { theForthParam.assign(repText4); } return load( msgToLoad, theManager, toFill, maxChars, theFirstParam.c_str(), theSecParam.c_str(), theThirdParam.c_str(), theForthParam.c_str()); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanBitmap.cpp0000664000175000000640000000304611731656102022322 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanBitmap.hpp" #include XALAN_CPP_NAMESPACE_BEGIN // Pre-constructed masks for bit twiddling. Update these if not using chars for storing the bits. const int XalanBitmap::s_setMasks[XalanBitmap::eBitsPerUnit] = { 1, 2, 4, 8, 16, 32, 64, 128 }; const int XalanBitmap::s_clearMasks[XalanBitmap::eBitsPerUnit] = { ~1, ~2, ~4, ~8, ~16, ~32, ~64, ~128 }; XalanBitmap::XalanBitmap(MemoryManager& theManager, size_type theSize) : m_size(theSize), m_bitmap(size_type((theSize + eBitsPerUnit) / eBitsPerUnit), BitmapVectorType::value_type(0), theManager) { } XalanBitmap::~XalanBitmap() { } void XalanBitmap::clearAll() { XALAN_STD_QUALIFIER fill(m_bitmap.begin(), m_bitmap.end(), '\0'); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanMemoryManagerDefault.hpp0000664000175000000640000000332511731656102025163 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANMEMORYMANAGERDEFAULT_HEADER_GUARD_1357924680) #define XALANMEMORYMANAGERDEFAULT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include "xalanc/Include/XalanMemoryManagement.hpp" XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT XalanMemoryManagerDefault : public XalanMemoryManager { public: XalanMemoryManagerDefault(); virtual ~XalanMemoryManagerDefault(); virtual void* allocate(size_type size); virtual void deallocate(void* pointer); virtual MemoryManager* getExceptionMemoryManager(); private: // These are not implemented. XalanMemoryManagerDefault(const XalanMemoryManagerDefault&); XalanMemoryManagerDefault& operator=(const XalanMemoryManagerDefault&); }; XALAN_CPP_NAMESPACE_END #endif // XALANMEMORYMANAGERDEFAULT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanEncodingPropertyCache.cpp0000664000175000000640000000405211731656102025323 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanEncodingPropertyCache.hpp" #include "XalanTranscodingServices.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanEncodingPropertyCache::XalanEncodingPropertyCache( MemoryManager& theManager, size_t theCacheSize, const XalanOutputTranscoder* theTranscoder) : m_transcoder(theTranscoder), m_presentBitmap(theManager, theCacheSize), m_valueBitmap(theManager, theCacheSize) { } XalanEncodingPropertyCache::~XalanEncodingPropertyCache() { } bool XalanEncodingPropertyCache::canEncodeCharacter(XalanUnicodeChar theChar) const { if (theChar > m_presentBitmap.getSize()) { return m_transcoder == 0 ? true : m_transcoder->canTranscodeTo(theChar); } else if (m_presentBitmap.isSet(theChar) == true) { return m_valueBitmap.isSet(theChar); } else { if (m_transcoder == 0) { return true; } else { m_presentBitmap.set(theChar); const bool fResult = m_transcoder->canTranscodeTo(theChar); if (fResult == true) { m_valueBitmap.set(theChar); } return fResult; } } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/PlatformSupportInit.cpp0000664000175000000640000000353211731656102024127 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "PlatformSupportInit.hpp" #include "DoubleSupport.hpp" #include "DOMStringHelper.hpp" #include "XalanMessageLoader.hpp" #include "XalanTranscodingServices.hpp" XALAN_CPP_NAMESPACE_BEGIN unsigned long PlatformSupportInit::s_initCounter = 0; PlatformSupportInit::PlatformSupportInit(MemoryManager& theManager) : m_xalanDOMInit(theManager) { ++s_initCounter; if (s_initCounter == 1) { initialize(theManager); } } PlatformSupportInit::~PlatformSupportInit() { --s_initCounter; if (s_initCounter == 0) { terminate(); } } void PlatformSupportInit::initialize(MemoryManager& theManager) { DoubleSupport::initialize(); DOMStringHelper::initialize(theManager); XalanMessageLoader::initialize(theManager); XalanTranscodingServices::initialize(theManager); } void PlatformSupportInit::terminate() { XalanTranscodingServices::terminate(); XalanMessageLoader::terminate(); DOMStringHelper::terminate(); DoubleSupport::terminate(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanFileOutputStream.hpp0000664000175000000640000001103311731656102024362 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANFILEOUTPUTSTREAM_HEADER_GUARD_1357924680) #define XALANFILEOUTPUTSTREAM_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #if defined(XALAN_WINDOWS) #include #else #include #endif // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN #if defined(XALAN_STRICT_ANSI_HEADERS) using std::FILE; #endif class XALAN_PLATFORMSUPPORT_EXPORT XalanFileOutputStream : public XalanOutputStream { public : enum { eDefaultBufferSize = 8192u }; #if defined(XALAN_WINDOWS) typedef HANDLE HandleType; #else typedef FILE* HandleType; #endif /** * Construct an XalanFileOutputStream object. * * @param theFileName name of file * @param theBufferSize The size of the transcoding buffer */ XalanFileOutputStream( const XalanDOMString& theFileName, MemoryManager& theManager, size_type theBufferSize = eDefaultBufferSize); static XalanFileOutputStream* create( const XalanDOMString& theFileName, MemoryManager& theManager, size_type theBufferSize = eDefaultBufferSize); virtual ~XalanFileOutputStream(); class XALAN_PLATFORMSUPPORT_EXPORT XalanFileOutputStreamOpenException : public XalanOutputStream::XalanOutputStreamException { public: /** * Construct an XalanFileOutputStreamOpen exception object for an exception * that occurred on opening a text file stream. * * @param theFileName name of file causing the exception * @param theErrorCode number of error encountered */ XalanFileOutputStreamOpenException( const XalanDOMString& theFileName, int theErrorCode, XalanDOMString& theBuffer, const Locator* theLocator = 0); virtual ~XalanFileOutputStreamOpenException(); virtual const XalanDOMChar* getType() const { return m_type; } private: static const XalanDOMChar m_type[]; }; class XALAN_PLATFORMSUPPORT_EXPORT XalanFileOutputStreamWriteException : public XalanOutputStream::XalanOutputStreamException { public: /** * Construct an XalanFileOutputStreamOpen exception object for an exception * that occurred while writing to a text file stream. * * @param theFileName name of file causing the exception * @param theErrorCode number of error encountered */ XalanFileOutputStreamWriteException( const XalanDOMString& theFileName, int theErrorCode, XalanDOMString& theBuffer, const Locator* theLocator = 0); virtual ~XalanFileOutputStreamWriteException(); virtual const XalanDOMChar* getType() const { return m_type; } private: static const XalanDOMChar m_type[]; }; protected: virtual void writeData( const char* theBuffer, size_type theBufferLength); virtual void doFlush(); private: // These are not implemented... XalanFileOutputStream(const XalanFileOutputStream&); XalanFileOutputStream& operator=(const XalanFileOutputStream&); bool operator==(const XalanFileOutputStream&) const; // Data members... const XalanDOMString m_fileName; const HandleType m_handle; }; XALAN_CPP_NAMESPACE_END #endif // XALANFILEOUTPUTSTREAM_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanOutputStream.hpp0000664000175000000640000003003211731656102023562 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANOUTPUTSTREAM_HEADER_GUARD_1357924680) #define XALANOUTPUTSTREAM_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanOutputTranscoder; class XALAN_PLATFORMSUPPORT_EXPORT XalanOutputStream { public : enum { eDefaultBufferSize = 512u, eDefaultTranscoderBlockSize = 1024u }; typedef XalanVector BufferType; typedef XalanVector TranscodeVectorType; typedef XalanTranscodingServices::size_type size_type; /** * Constructor. * * @param theBufferSize the size of the transcoding buffer * @param theTranscoderBlockSize the size of the block used by the transcoder * @param fThrowTranscodeException If true, an error transcoding will result in an exception being thrown. */ explicit XalanOutputStream( MemoryManager& theManager, size_type theBufferSize = eDefaultBufferSize, size_type theTranscoderBlockSize = eDefaultTranscoderBlockSize, bool fThrowTranscodeException = true); virtual ~XalanOutputStream(); MemoryManager& getMemoryManager() { return m_buffer.getMemoryManager(); } static const XalanDOMChar* defaultNewlineString() { #if defined(XALAN_NEWLINE_IS_CRLF) return s_nlCRString; #else return s_nlString; #endif } /** * Write the appropriate newline character(s) to the stream. */ virtual void newline(); /** * Get the string which is appropriate for inserting a line feed in the stream. */ virtual const XalanDOMChar* getNewlineString() const; /** * Flush the stream's transcoding buffer, but do not request * the implementation class to flush its buffer. * . */ void flushBuffer(); /** * Flush the stream's buffer. */ void flush() { flushBuffer(); doFlush(); } /** * Write a character to the output stream. The character * will not be transcoded. * * @param theChar the character to write */ void write(char theChar) { write(&theChar, 1); } /** * Write a wide character to the output stream. The character * will be transcoded, if an output encoding is specified. * * @param theChar the character to write */ void write(XalanDOMChar theChar) { assert(m_bufferSize > 0); if (m_buffer.size() == m_bufferSize) { flushBuffer(); } m_buffer.push_back(theChar); } /** * Write a null-terminated string to the output file. The character * will not be transcoded. The caller is responsible for making sure the * buffer is flushed before calling this member function. * * @param theBuffer character buffer to write */ void write(const char* theBuffer) { assert(theBuffer != 0); assert(m_buffer.empty() == true); write(theBuffer, length(theBuffer)); } /** * Write a null-terminated wide string to the output file. The string * will be transcoded, if an output encoding is specified. * * @param theBuffer character buffer to write */ void write(const XalanDOMChar* theBuffer) { write(theBuffer, length(theBuffer)); } /** * Write a specified number of characters to the output stream. The string * will not be transcoded. The caller is responsible for making sure the * buffer is flushed before calling this member function. * * @param theBuffer character buffer to write * @param theBufferLength number of characters to write */ void write( const char* theBuffer, size_type theBufferLength) { assert(theBuffer != 0); assert(m_buffer.empty() == true); writeData(theBuffer, theBufferLength); } /** * Write a specified number of characters to the output stream. The string * will be transcoded, if an output encoding is specified. * * @param theBuffer character buffer to write * @param theBufferLength number of characters to write */ void write( const XalanDOMChar* theBuffer, size_type theBufferLength); /** * Get the output encoding for the stream. * * @return The encoding name */ const XalanDOMString& getOutputEncoding() const { return m_encoding; } /** * Set the output encoding for the stream. * * @param theEncoding The encoding name */ void setOutputEncoding(const XalanDOMString& theEncoding); /** * Determine if a given value can be represented in * the output encoding. * * @return true if the value can be represented, and false if not. */ bool canTranscodeTo(XalanUnicodeChar theChar) const; const XalanOutputTranscoder* getTranscoder() const { return m_transcoder; } /** * Set the flag that indicates whether a transcoding * error should throw an exception. The default is * to throw an exception. If this flag is false, and * and an error occurs transcoding, then data will * likely be lost. * * @return the value of the flag. */ bool getThrowTranscodeException() const { return m_throwTranscodeException; } /** * Set the flag that indicates whether a transcoding * error should throw an exception. The default is * to throw an exception. If this flag is false, and * and an error occurs transcoding, then data will * likely be lost. * * @param the new value of the flag. */ void setThrowTranscodeException(bool flag) { m_throwTranscodeException = flag; } /** * Set the size of the output buffer. * * @param theBufferSize The buffer size. */ void setBufferSize(size_type theBufferSize); class XALAN_PLATFORMSUPPORT_EXPORT XalanOutputStreamException : public XSLException { public: XalanOutputStreamException( const XalanDOMString& theMessage, MemoryManager& theManager, const Locator* theLocator); XalanOutputStreamException( const XalanDOMString& theMessage, MemoryManager& theManager); XalanOutputStreamException(const XalanOutputStreamException& other); virtual ~XalanOutputStreamException(); virtual const XalanDOMChar* getType() const; private: }; class XALAN_PLATFORMSUPPORT_EXPORT UnsupportedEncodingException : public XalanOutputStreamException { public: UnsupportedEncodingException( const XalanDOMString& theEncoding, XalanDOMString& theBuffer, const Locator* theLocator); UnsupportedEncodingException( const XalanDOMString& theEncoding, XalanDOMString& theBuffer); UnsupportedEncodingException(const UnsupportedEncodingException& other) : XalanOutputStreamException(other), m_encoding( other.m_encoding, other.m_memoryManager) { } virtual ~UnsupportedEncodingException(); const XalanDOMString& getEncoding() const { return m_encoding; } virtual const XalanDOMChar* getType() const; private: const XalanDOMString m_encoding; }; class XALAN_PLATFORMSUPPORT_EXPORT TranscoderInternalFailureException : public XalanOutputStreamException { public: TranscoderInternalFailureException( const XalanDOMString& theEncoding, XalanDOMString& theBuffer, const Locator* theLocator); TranscoderInternalFailureException( const XalanDOMString& theEncoding, XalanDOMString& theBuffer); TranscoderInternalFailureException(const TranscoderInternalFailureException& other); virtual ~TranscoderInternalFailureException(); virtual const XalanDOMChar* getType() const; const XalanDOMString& getEncoding() const { return m_encoding; } private: const XalanDOMString m_encoding; }; class XALAN_PLATFORMSUPPORT_EXPORT TranscodingException : public XalanOutputStreamException { public: TranscodingException( XalanDOMString& theBuffer, const Locator* theLocator); explicit TranscodingException(XalanDOMString& theBuffer); TranscodingException(const TranscodingException& other); virtual ~TranscodingException(); virtual const XalanDOMChar* getType() const; }; static XalanDOMString& formatMessage( const XalanDOMString& theMessage, int theErrorCode, XalanDOMString& theBuffer); protected: /** * Transcode a wide string. * * @param theBuffer The string to transcode. * @param theBufferLength The length of the string. * @param theDestination The destination vector. */ void transcode( const XalanDOMChar* theBuffer, size_type theBufferLength, TranscodeVectorType& theDestination); /** * Write the data in the buffer * * @param theBuffer The data to write * @param theBufferLength The length of theBuffer. */ virtual void writeData( const char* theBuffer, size_type theBufferLength) = 0; /** * Flush the stream. */ virtual void doFlush() = 0; static const XalanDOMChar s_nlString[]; static const XalanDOMChar s_nlCRString[]; static const XalanDOMString::size_type s_nlStringLength; static const XalanDOMString::size_type s_nlCRStringLength; private: // These are not implemented... XalanOutputStream(const XalanOutputStream&); XalanOutputStream& operator=(const XalanOutputStream&); bool operator==(const XalanOutputStream&) const; void doWrite( const XalanDOMChar* theBuffer, size_type theBufferLength); const size_type m_transcoderBlockSize; XalanOutputTranscoder* m_transcoder; size_type m_bufferSize; BufferType m_buffer; XalanDOMString m_encoding; bool m_writeAsUTF16; bool m_throwTranscodeException; TranscodeVectorType m_transcodingBuffer; }; XALAN_CPP_NAMESPACE_END #endif // XALANOUTPUTSTREAM_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/StringTokenizer.hpp0000664000175000000640000001165011731656102023270 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(STRINGTOKENIZER_HEADER_GUARD_1357924680) #define STRINGTOKENIZER_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_PLATFORMSUPPORT_EXPORT StringTokenizer { public: static const XalanDOMChar s_defaultTokens[]; typedef size_t size_type; /** * Constructs a tokenizer for the target string. No copies of any input * strings are made. * * @param theString string to tokenize * @param theTokens string of delimiters used to parse target, default * is " \t\n\r" * @param fReturnTokens if true, delimiter characters are also returned * as tokens, default is false */ StringTokenizer(const XalanDOMString& theString, const XalanDOMString& theTokens, bool fReturnTokens = false); /** * Constructs a tokenizer for the target string. No copies of any input * strings are made. * * @param theString string to tokenize * @param theTokens string of delimiters used to parse target, default * is " \t\n\r" * @param fReturnTokens if true, delimiter characters are also returned * as tokens, default is false */ StringTokenizer(const XalanDOMString& theString, const XalanDOMChar* theTokens = s_defaultTokens, bool fReturnTokens = false); /** * Constructs a tokenizer for the target string. No copies of any input * strings are made. * * @param theString string to tokenize * @param theTokens string of delimiters used to parse target. * @param fReturnTokens if true, delimiter characters are also returned * as tokens, default is false */ StringTokenizer(const XalanDOMChar* theString, const XalanDOMChar* theTokens = s_defaultTokens, bool fReturnTokens = false); /** * Constructs a tokenizer for the target string. No copies of any input * strings are made. * * @param theString string to tokenize * @param theTokens string of delimiters used to parse target. * @param fReturnTokens if true, delimiter characters are also returned * as tokens, default is false */ StringTokenizer(const XalanDOMChar* theString, const XalanDOMString& theTokens, bool fReturnTokens = false); ~StringTokenizer(); /** * Determine if there are tokens remaining * * @return true if there are more tokens */ bool hasMoreTokens() const; /** * Retrieve the next token to be parsed; behavior is undefined if there are * no more tokens * * @param theToken next token string */ void nextToken(XalanDOMString& theToken); /** * Count the number of tokens yet to be parsed * * @return number of remaining tokens */ size_type countTokens() const; void reset() { m_currentIndex = 0; } protected: XalanDOMString::size_type FindNextDelimiterIndex(XalanDOMString::size_type theStartIndex) const; private: // These are not implemented... StringTokenizer(const StringTokenizer&); StringTokenizer& operator=(const StringTokenizer&); bool operator==(const StringTokenizer&) const; // Data members... const XalanDOMChar* const m_string; const XalanDOMChar* const m_tokens; const bool m_returnTokens; XalanDOMString::size_type m_currentIndex; const XalanDOMString::size_type m_stringLength; const XalanDOMString::size_type m_tokensLength; }; XALAN_CPP_NAMESPACE_END #endif // STRINGTOKENIZER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/ProblemListenerBase.hpp0000664000175000000640000001256311731656102024034 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_PROBLEMLISTENERBASE_HEADER_GUARD) #define XALAN_PROBLEMLISTENERBASE_HEADER_GUARD // Base include file. Must be first. #include "xalanc/PlatformSupport/PlatformSupportDefinitions.hpp" #include "LocalMsgIndex.hpp" XALAN_DECLARE_XERCES_CLASS(Locator) XALAN_CPP_NAMESPACE_BEGIN XALAN_USING_XERCES(Locator) class XalanDOMString; class XalanNode; class PrintWriter; /** * This is the abstract class that is used when reporting a problem * some kind, that requires a message, an error or a warning. */ class XALAN_PLATFORMSUPPORT_EXPORT ProblemListenerBase { public: // Sources of problem. The upper case versions // of these enums are deprecated. enum eSource { eXMLPARSER = 0, eXMLParser = 0, eXSLPROCESSOR = 1, eXSLTProcessor = 1, eXPATH = 2, eXPath = 2, eSourceCount }; // A typedef for compatibility. typedef eSource eProblemSource; // Severity of problem. The upper case versions // of these enums are deprecated. enum eClassification { eMESSAGE = 0, eMessage = 0, eWARNING = 1, eWarning = 1, eERROR = 2, eError = 2, eClassificationCount }; ProblemListenerBase(); virtual ~ProblemListenerBase(); /** * Function that is called when a problem event occurs. * * @param source Either eXMLParser, eXSLProcessor, or eXPATH. * @param classification Either eMessage, eWarning, or eError. * @param locator The current Locator instance for the stylesheet. Maybe be a null pointer. * @param sourceNode The current source node, if any. * @param msg The error message. */ virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode) = 0; /** * Function that is called when a problem event occurs. This version * assumes location information is already formatted into the message. * * @param source either eXMLPARSER, eXSLPROCESSOR, or eXPATH * @param classification either eMESSAGE, eERROR or eWARNING * @param msg string message explaining the problem. */ virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode) = 0; /** * Function to format a problem call to a PrintWriter instance. * This is a bare-bones implementation that uses localized strings. * * @param pw The PrintWriter instance to use. * @param source Either eXMLParser, eXSLProcessor, or eXPATH. * @param classification Either eMessage, eWarning, or eError. * @param locator The current Locator instance for the stylesheet. Maybe be a null pointer. * @param sourceNode The current source node, if any. * @param msg The error message. */ static void defaultFormat( PrintWriter& pw, eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode); /** * Function to format a problem call to a PrintWriter instance. * This is a bare-bones implementation that uses localized strings. * * @param pw The PrintWriter instance to use. * @param source either eXMLPARSER, eXSLPROCESSOR, or eXPATH * @param classification either eMESSAGE, eERROR or eWARNING * @param msg string message explaining the problem. */ static void defaultFormat( PrintWriter& pw, eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode); protected: static const XalanMessages::Codes s_messageCodes[eSourceCount][eClassificationCount]; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_PROBLEMLISTENER_HEADER_GUARD xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanTranscodingServices.hpp0000664000175000000640000002741511731656102025100 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANTRANSCODINGSERVICES_HEADER_GUARD_1357924680) #define XALANTRANSCODINGSERVICES_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanOutputTranscoder; class XALAN_PLATFORMSUPPORT_EXPORT XalanTranscodingServices { public: /** * Perform static initialization. See class PlatformSupportInit. */ static void initialize(MemoryManager& theManager); /** * Perform static shut down. See class PlatformSupportInit. */ static void terminate(); typedef unsigned char XalanXMLByte; typedef XalanSize_t size_type; static size_type length(const XalanXMLByte* theBytes) { assert(theBytes != 0); size_type i = 0; while(theBytes[i] != 0) { ++i; } return i; } enum eCode { OK, UnsupportedEncoding, InternalFailure, SupportFilesNotFound }; /** * Create a transcoder instance for the specified encoding. * * @param theEncodingName The name of the desired output encoding. * @param theResult The error code. * @param theTarget The target array for storing the transcoded data. * @param theBlockSize The block size the transcoder should use. * @return The new transcoder, or 0 if there was an error. */ static XalanOutputTranscoder* makeNewTranscoder( MemoryManager& theManager, const XalanDOMString& theEncodingName, eCode& theResult, size_type theBlockSize); static XalanOutputTranscoder* makeNewTranscoder( MemoryManager& theManager, const XalanDOMChar* theEncodingName, eCode& theResult, size_type theBlockSize); /** * Destroy a transcoder instance. * * @theTranscoder The transcoder to destroy. */ static void destroyTranscoder(XalanOutputTranscoder* theTranscoder); /** * Determine if the encoding name supplied is equivalent to UTF-8. * * @param theEncodingName The name of the output encoding. * @return true or false */ static bool encodingIsUTF8(const XalanDOMChar* theEncodingName); /** * Determine if the encoding name supplied is equivalent to UTF-8. * * @param theEncodingName The name of the output encoding. * @return true or false */ static bool encodingIsUTF8(const XalanDOMString& theEncodingName); /** * Determine if the encoding name supplied is equivalent to UTF-16. * * @param theEncodingName The name of the output encoding. * @return true or false */ static bool encodingIsUTF16(const XalanDOMChar* theEncodingName); /** * Determine if the encoding name supplied is equivalent to UTF-16. * * @param theEncodingName The name of the output encoding. * @return true or false */ static bool encodingIsUTF16(const XalanDOMString& theEncodingName); /** * Determine if the encoding name supplied is equivalent to UTF-32. * * @param theEncodingName The name of the output encoding. * @return true or false */ static bool encodingIsUTF32(const XalanDOMChar* theEncodingName); /** * Determine if the encoding name supplied is equivalent to UTF-32. * * @param theEncodingName The name of the output encoding. * @return true or false */ static bool encodingIsUTF32(const XalanDOMString& theEncodingName); /** * Get an array that contains any leading bytes that should be * written to an XML stream for the specified encoding. For example, * if the encoding is UTF-16, the vector will contain the appropriate * byte order mark for the current platform. If there is no * prolog for the encoding, or the encoding is unknown, an empty * array is returned. * * @param theEncodingName The name of the desired output encoding. * @return An array containing the appropriate bytes. */ static const XalanXMLByte* getStreamProlog(const XalanDOMString& theEncodingName); /** * Get the maximum character value for the encoding. * * @param theEncoding The encoding name. * @return The maximum character value the encoding supports. */ static XalanDOMChar getMaximumCharacterValue(const XalanDOMString& theEncoding); /** * Get the maximum character value for the local code page. * This is now deprecated, since it's impossibly broken. * * @deprecated * * @return The maximum character value the local code page supports. */ static XalanDOMChar getMaximumCharacterValue(); /** * Determine if the output stage can safely skip transcoding * by truncating. * * @param theEncoding The encoding name. * @return true if truncation is possible, false if not. */ static bool getBytesEqualChars(const XalanDOMString& theEncoding); static const XalanDOMChar s_utf8String[]; static const XalanDOMChar s_utf16String[]; static const XalanDOMChar s_utf16LEString[]; static const XalanDOMChar s_utf16BEString[]; static const XalanDOMChar s_utf32String[]; static const XalanDOMChar s_asciiString[]; static const XalanDOMChar s_usASCIIString[]; static const XalanDOMChar s_windows1250String[]; static const XalanDOMChar s_iso88591String[]; static const XalanDOMChar s_shiftJISString[]; class XALAN_PLATFORMSUPPORT_EXPORT MakeTranscoderException : public XSLException { public: MakeTranscoderException( eCode theCode, const XalanDOMChar* theEncoding, XalanDOMString& theBuffer, const Locator* theLocator = 0); MakeTranscoderException(const MakeTranscoderException&); virtual ~MakeTranscoderException(); eCode getCode() const { return m_code; } const XalanDOMString& getEncoding() const { return m_encoding; } virtual const XalanDOMChar* getType() const { return s_type; } private: static const XalanDOMChar s_type[]; const eCode m_code; mutable XalanDOMString m_encoding; }; class XALAN_PLATFORMSUPPORT_EXPORT UnrepresentableCharacterException : public XSLException { public: UnrepresentableCharacterException( XalanUnicodeChar theCharacter, const XalanDOMString& theEncoding, XalanDOMString& theBuffer, const Locator* theLocator = 0); UnrepresentableCharacterException(const UnrepresentableCharacterException& theSource); virtual ~UnrepresentableCharacterException(); XalanUnicodeChar getCharacter() const { return m_badCharacter; } const XalanDOMString& getEncoding() const { return m_encoding; } virtual const XalanDOMChar* getType() const { return s_type; } private: static const XalanDOMChar s_type[]; const XalanUnicodeChar m_badCharacter; mutable XalanDOMString m_encoding; }; private: static const XalanXMLByte s_dummyByteOrderMark[]; static const XalanXMLByte s_UTF8ByteOrderMark[]; static const XalanDOMChar s_UTF16ByteOrderMark[]; }; class XALAN_PLATFORMSUPPORT_EXPORT XalanOutputTranscoder { public: typedef XalanTranscodingServices::XalanXMLByte XalanXMLByte; typedef XalanTranscodingServices::eCode eCode; typedef XalanTranscodingServices::size_type size_type; explicit XalanOutputTranscoder(MemoryManager& theManager); virtual ~XalanOutputTranscoder(); MemoryManager& getMemoryManager() { return m_memoryManager; } /** * Transcode data from UTF-16 to the transcoder's encoding. If successfull, * theResult will be set to OK. If not, it will be set to one of the other * codes. * * @param theSourceData The source data to transcode * @param theSourceCount The length of the source data. * @param theTarget The target array for storing the transcoded data. * @param theTargetSize The number of characters that can be stored in the target. * @param theSourceCharsTranscoded The count of the source characters that were transcoded. * @param theTargetBytesUsed The number of characters stored in the target array * @return The result code. */ virtual eCode transcode( const XalanDOMChar* theSourceData, size_type theSourceCount, XalanXMLByte* theTarget, size_type theTargetSize, size_type& theSourceCharsTranscoded, size_type& theTargetBytesUsed) = 0; /** * Transcode data from the transcoder's encoding to UTF-16. If successfull, * theResult will be set to OK. If not, it will be set to one of the other * codes. * * @param theSourceData The source data to transcode * @param theSourceCount The length of the source data. * @param theTarget The target array for storing the transcoded data. * @param theTargetSize The number of characters that can be stored in the target. * @param theSourceCharsTranscoded The count of the source characters that were transcoded. * @param theTargetBytesUsed The number of characters stored in the target array * @param theCharSizes For each character in theTarget, the number of characters consumed from theSourceData. * @return The result code. */ virtual eCode transcode( const XalanXMLByte* theSourceData, size_type theSourceCount, XalanDOMChar* theTarget, size_type theTargetSize, size_type& theSourceCharsTranscoded, size_type& theTargetBytesUsed, unsigned char* theCharSizes) = 0; virtual bool canTranscodeTo(XalanUnicodeChar theChar) const = 0; private: MemoryManager& m_memoryManager; // Not implemented... XalanOutputTranscoder(const XalanOutputTranscoder& theSource); bool operator==(const XalanOutputTranscoder& theRHS) const; XalanOutputTranscoder& operator=(const XalanOutputTranscoder& theRHS); }; XALAN_CPP_NAMESPACE_END #endif // XALANTRANSCODINGSERVICES_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanAllocator.hpp0000664000175000000640000000512111731656102023027 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANALLOCATOR_INCLUDE_GUARD_1357924680) #define XALANALLOCATOR_INCLUDE_GUARD_1357924680 #include XALAN_CPP_NAMESPACE_BEGIN template class XalanAllocator { public: typedef size_t size_type; typedef ptrdiff_t difference_type; typedef Type* pointer; typedef const Type* const_pointer; typedef Type& reference; typedef const Type& const_reference; typedef Type value_type; XalanAllocator(MemoryManager& theManager) : m_memoryManager(theManager) { } ~XalanAllocator() { } MemoryManager& getMemoryManager() { return m_memoryManager; } pointer address(reference x) const { return &x; } const_pointer address(const_reference x) const { return &x; } pointer allocate( size_type size, const void* /* hint */ = 0) { return (pointer)m_memoryManager.allocate(size * sizeof(Type)); } void deallocate( pointer p, size_type /* n */) { if( p == 0 ) { return; } m_memoryManager.deallocate(p); } size_type max_size() const { return ~0; } void construct( pointer p, const Type& val) { new (p) Type(val); } void destroy(pointer p) { p->Type::~Type(); } private: XalanAllocator(const XalanAllocator&); XalanAllocator& operator=(const XalanAllocator&); MemoryManager& m_memoryManager; }; XALAN_CPP_NAMESPACE_END #endif // XALANALLOCATOR_INCLUDE_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/FormatterListener.cpp0000664000175000000640000000517111731656102023574 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "FormatterListener.hpp" #include "DOMStringHelper.hpp" XALAN_CPP_NAMESPACE_BEGIN FormatterListener::FormatterListener(eFormat theFormat) : ParentType(), m_prefixResolver(0), m_outputFormat(theFormat), m_XMLVersion(XML_VERSION_1_0) { assert(length(s_piTarget) == s_piTargetLength); assert(length(s_piData) == s_piDataLength); } FormatterListener::~FormatterListener() { } Writer* FormatterListener::getWriter() const { return 0; } const XalanDOMString FormatterListener::s_emptyString(XalanMemMgrs::getDummyMemMgr()); const XalanDOMString& FormatterListener::getDoctypeSystem() const { return s_emptyString; } const XalanDOMString& FormatterListener::getDoctypePublic() const { return s_emptyString; } const XalanDOMString& FormatterListener::getEncoding() const { return s_emptyString; } const XalanDOMString& FormatterListener::getMediaType() const { return s_emptyString; } int FormatterListener::getIndent() const { return 0; } const XalanDOMChar FormatterListener::s_piTarget[] = { XalanUnicode::charLetter_X, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, 0 }; const XalanDOMChar FormatterListener::s_piData[] = { XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_w, 0 }; #if !defined(XALAN_INLINE_INITIALIZATION) const XalanDOMString::size_type FormatterListener::s_piTargetLength = 5; const XalanDOMString::size_type FormatterListener::s_piDataLength = 3; #elif !defined(XALAN_INLINE_INITIALIZATION_IS_DEFINITION_BUG) const XalanDOMString::size_type FormatterListener::s_piTargetLength; const XalanDOMString::size_type FormatterListener::s_piDataLength; #endif XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanOutputStreamPrintWriter.cpp0000664000175000000640000001453211731656102025776 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanOutputStreamPrintWriter.hpp" #include #include #include #include "DOMStringHelper.hpp" #include "XalanOutputStream.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanOutputStreamPrintWriter::XalanOutputStreamPrintWriter( XalanOutputStream& theOutputStream, bool fAutoFlush) : PrintWriter(fAutoFlush, theOutputStream.getMemoryManager()), m_outputStream(theOutputStream), m_buffer(theOutputStream.getMemoryManager()), m_flushWideChars(false) { } XalanOutputStreamPrintWriter* XalanOutputStreamPrintWriter::create( XalanOutputStream& theOutputStream, bool fAutoFlush) { typedef XalanOutputStreamPrintWriter ThisType; MemoryManager& theManager = theOutputStream.getMemoryManager(); XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( theOutputStream, fAutoFlush); theGuard.release(); return theResult; } XalanOutputStreamPrintWriter::~XalanOutputStreamPrintWriter() { flush(); } void XalanOutputStreamPrintWriter::flushWideChars() { if (m_flushWideChars == true) { m_outputStream.flushBuffer(); m_flushWideChars = false; } } bool XalanOutputStreamPrintWriter::checkError() const { return false; } void XalanOutputStreamPrintWriter::close() { flush(); } void XalanOutputStreamPrintWriter::flush() { m_outputStream.flush(); } XalanOutputStream* XalanOutputStreamPrintWriter::getStream() { return &m_outputStream; } const XalanOutputStream* XalanOutputStreamPrintWriter::getStream() const { return &m_outputStream; } void XalanOutputStreamPrintWriter::write( const char* s, size_t theOffset, size_t theLength) { assert(s != 0); assert(XalanDOMString::size_type(theLength) == theLength); flushWideChars(); if (theLength != npos) { m_outputStream.write( s + theOffset, XalanDOMString::size_type(theLength)); } else { if (theOffset == 0) { m_outputStream.write(s); } else { m_outputStream.write(s + theOffset); } } } void XalanOutputStreamPrintWriter::write( const XalanDOMChar* s, XalanDOMString::size_type theOffset, XalanDOMString::size_type theLength) { assert(s != 0); if (theLength == XalanDOMString::npos) { if (theOffset == 0) { m_outputStream.write(s); } else { m_outputStream.write(s + theOffset); } } else { m_outputStream.write(s + theOffset, theLength); } m_flushWideChars = true; } void XalanOutputStreamPrintWriter::write(XalanDOMChar c) { m_outputStream.write(c); m_flushWideChars = true; } void XalanOutputStreamPrintWriter::write( const XalanDOMString& s, XalanDOMString::size_type theOffset, XalanDOMString::size_type theLength) { write(s.c_str(), theOffset, theLength); } #if !defined(XALAN_BOOL_AS_INT) void XalanOutputStreamPrintWriter::print(bool b) { if (b == true) { print(s_trueString); } else { print(s_falseString); } } #endif void XalanOutputStreamPrintWriter::print(char c) { write(c); } void XalanOutputStreamPrintWriter::print( const char* s, size_t theLength) { write(s, 0, theLength); } void XalanOutputStreamPrintWriter::print( const XalanDOMChar* s, XalanDOMString::size_type theLength) { assert(s != 0); write(s, 0, theLength); } void XalanOutputStreamPrintWriter::print(double d) { m_buffer.clear(); NumberToDOMString(d, m_buffer); print(m_buffer); } void XalanOutputStreamPrintWriter::print(int i) { m_buffer.clear(); NumberToDOMString(i, m_buffer); print(m_buffer); } void XalanOutputStreamPrintWriter::print(long l) { m_buffer.clear(); NumberToDOMString(l, m_buffer); print(m_buffer); } void XalanOutputStreamPrintWriter::print(const XalanDOMString& s) { write(s.c_str(), 0, s.length()); } void XalanOutputStreamPrintWriter::println() { write(s_newlineString, 0, length(s_newlineString)); flush(); } #if !defined(XALAN_BOOL_AS_INT) void XalanOutputStreamPrintWriter::println(bool b) { print(b); println(); } #endif void XalanOutputStreamPrintWriter::println(char c) { print(c); println(); } void XalanOutputStreamPrintWriter::println( const char* s, size_t theLength) { print(s, theLength); println(); } void XalanOutputStreamPrintWriter::println( const XalanDOMChar* s, XalanDOMString::size_type theLength) { print(s, theLength); println(); } void XalanOutputStreamPrintWriter::println(double d) { print(d); println(); } void XalanOutputStreamPrintWriter::println(int i) { print(i); println(); } void XalanOutputStreamPrintWriter::println(long l) { print(l); println(); } void XalanOutputStreamPrintWriter::println(const XalanDOMString& s) { print(s); println(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/DirectoryEnumerator.hpp0000664000175000000640000003413511731656102024140 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(DIRECTORY_ENUMERATOR_HEADER_GUARD_1357924680) #define DIRECTORY_ENUMERATOR_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include #if defined(_MSC_VER) #include #else #include #include #include #include #endif #include #include #include "xercesc/framework/MemoryManager.hpp" #include "xalanc/PlatformSupport/XalanFileOutputStream.hpp" #include "xalanc/PlatformSupport/DOMStringHelper.hpp" #include "xalanc/PlatformSupport/XalanUnicode.hpp" XALAN_CPP_NAMESPACE_BEGIN XALAN_USING_XERCES(MemoryManager) #if defined(_MSC_VER) struct FindFileStruct : public _wfinddata_t { enum eAttributes { eAttributeArchive = _A_ARCH, eAttributeDirectory = _A_SUBDIR, eAttributeHidden = _A_HIDDEN, eAttributeNormal = _A_NORMAL, eReadOnly = _A_RDONLY, eSystem = _A_SYSTEM }; public: /** * Retrieve name of file * * @return file name */ const XalanDOMChar* getName() const { return name; } /** * Determine whether file is a directory * * @return true if file is a directory */ bool isDirectory() const { return attrib & eAttributeDirectory ? true : false; } bool isSelfOrParent() const { if (isDirectory() == false) { return false; } else if (name[0] == '.') { if (name[1] == '\0') { return true; } else if (name[1] == '.' && name[2] == '\0') { return true; } else { return false; } } else { return false; } } }; #else struct FindFileStruct : public dirent { public: /** * Retrieve name of file * * @return file name */ const char* getName() const { return d_name; } /** * Determine whether file is a directory * * @return true if file is a directory */ bool isDirectory() const { #if defined(__SunOS_5_10) && (__SUNPRO_CC >= 0x570) struct stat64 stat_Info; const int retCode = stat64(d_name, &stat_Info); #else struct stat stat_Info; const int retCode = stat(d_name, &stat_Info); #endif return retCode == -1 ? false : S_ISDIR(stat_Info.st_mode); } bool isSelfOrParent() const { if (isDirectory() == false) { return false; } else if (d_name[0] == '.') { if (d_name[1] == '\0') { return true; } else if (d_name[1] == '.' && d_name[2] == '\0') { return true; } else { return false; } } else { return false; } } }; #endif #if defined(XALAN_NO_STD_NAMESPACE) struct DirectoryFilterPredicate : public unary_function #else struct DirectoryFilterPredicate : public std::unary_function #endif { result_type operator()(const argument_type& theFindData) const { return theFindData.isDirectory(); } }; #if defined(XALAN_NO_STD_NAMESPACE) struct FilesOnlyFilterPredicate : public unary_function #else struct FilesOnlyFilterPredicate : public std::unary_function #endif { result_type operator()(const argument_type& theFindData) const { DirectoryFilterPredicate theDirectoryPredicate; return !theDirectoryPredicate(theFindData); } }; template void EnumerateDirectory( MemoryManager& theMemoryManager, const StringType& theFullSearchSpec, OutputIteratorType theOutputIterator, FilterPredicateType theFilterPredicate, StringConversionFunction theConversionFunction, #if defined(XALAN_TEMPLATE_FUNCTION_NO_DEFAULT_PARAMETERS) bool fIncludeSelfAndParent) #else bool fIncludeSelfAndParent = false) #endif { #if defined(_MSC_VER) FindFileStruct theFindData; #ifdef _WIN64 typedef intptr_t theHandleType; #else typedef long theHandleType; #endif #pragma warning(push) #pragma warning(disable: 4244) theHandleType theSearchHandle = _wfindfirst( const_cast(theConversionFunction(theFullSearchSpec)), &theFindData); #pragma warning(pop) if (theSearchHandle != -1) { try { do { if ((fIncludeSelfAndParent == true || theFindData.isSelfOrParent() == false) && theFilterPredicate(theFindData) == true) { *theOutputIterator = StringType(theFindData.getName(), theMemoryManager); } } while(_wfindnext(theSearchHandle, &theFindData) == 0); } catch(...) { _findclose(theSearchHandle); throw; } _findclose(theSearchHandle); } #else CharVectorType theTargetVector(theMemoryManager); TranscodeToLocalCodePage(theFullSearchSpec, theTargetVector, false); const CharVectorType::size_type theSize = theTargetVector.size(); int indexSuffix=0, indexName=0; bool target_Dir = false; if (theSize > 0) { if (theTargetVector.back() == '*') { target_Dir = true; theTargetVector.pop_back(); if (theSize == 1) { theTargetVector.push_back('.'); } } else { target_Dir = false; while(theTargetVector.back() != '*') { theTargetVector.pop_back(); indexSuffix++; } theTargetVector.pop_back(); while(theTargetVector.back() != '/') { theTargetVector.pop_back(); indexName++; } } theTargetVector.push_back('\0'); const char* const theSpec = c_str(theTargetVector); assert(theSpec != 0); XalanDOMString theName(theMemoryManager); XalanDOMString theSuffix(theMemoryManager); if ( !target_Dir ) { #if defined(XALAN_STRICT_ANSI_HEADERS) using std::strlen; #endif int lenSpec = strlen(theSpec); theFullSearchSpec.substr(theName, lenSpec, indexName); theFullSearchSpec.substr(theSuffix, lenSpec+indexName+1, indexSuffix); } DIR* const theDirectory = opendir(theSpec); if (theDirectory != 0) { chdir(theSpec); try { const FindFileStruct* theEntry = (FindFileStruct*)readdir(theDirectory); while(theEntry != 0) { if ((fIncludeSelfAndParent == true || theEntry->isSelfOrParent() == false)) { if (theFilterPredicate(*theEntry) == true) { if( target_Dir ) { *theOutputIterator = StringType(theEntry->getName(), theMemoryManager); } else { XalanDOMString Getname(theEntry->getName(), theMemoryManager); int Check_1 = Getname.compare(theName); XalanDOMString GetnameSuffix(theMemoryManager); Getname.substr(GetnameSuffix, Getname.size() -indexSuffix, indexSuffix); int Check_2 = GetnameSuffix.compare(theSuffix); if ( Check_1 == 1 && (!Check_2) ) { *theOutputIterator = StringType(theEntry->getName(), theMemoryManager); } } } } theEntry = (FindFileStruct*)readdir(theDirectory); } //while }//try catch(...) { closedir(theDirectory); throw; } if( target_Dir ) chdir(".."); else chdir("../.."); closedir(theDirectory); } } #endif } template void EnumerateDirectory( MemoryManager& theMemoryManager, const StringType& theDirectory, const StringType& theSearchSpec, OutputIteratorType theOutputIterator, FilterPredicateType theFilterPredicate, StringConversionFunction theConversionFunction, #if defined(XALAN_TEMPLATE_FUNCTION_NO_DEFAULT_PARAMETERS) bool fIncludeSelfAndParent) #else bool fIncludeSelfAndParent = false) #endif { StringType theFullSearchSpec(theDirectory, theMemoryManager); theFullSearchSpec += theSearchSpec; EnumerateDirectory( theMemoryManager, theFullSearchSpec, theOutputIterator, theFilterPredicate, theConversionFunction, fIncludeSelfAndParent); } #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) template struct DirectoryEnumeratorFunctor { CollectionType operator()(const StringType& theDirectory) const { CollectionType theCollection; operator()(theDirectory, theCollection); return theCollection; } void operator()( const StringType&, const CollectionType&) const { } }; #else template #if defined(XALAN_NO_STD_NAMESPACE) struct DirectoryEnumeratorFunctor : public unary_function #else struct DirectoryEnumeratorFunctor : public std::unary_function #endif { #if defined(XALAN_NO_STD_NAMESPACE) typedef unary_function BaseClassType; #else typedef std::unary_function BaseClassType; #endif typedef typename BaseClassType::result_type result_type; typedef typename BaseClassType::argument_type argument_type; explicit DirectoryEnumeratorFunctor( MemoryManager& theMemoryManager, bool fIncludeSelfAndParent = false) : m_includeSelfAndParent(fIncludeSelfAndParent), m_memoryManager(theMemoryManager) { } void operator()( const argument_type& theFullSearchSpec, CollectionType& theCollection) const { XALAN_USING_STD(back_inserter) EnumerateDirectory( m_memoryManager, theFullSearchSpec, XALAN_STD_QUALIFIER back_inserter(theCollection), m_filterPredicate, m_conversionFunction, m_includeSelfAndParent); } result_type operator()(const argument_type& theFullSearchSpec) const { result_type theCollection; operator()( theFullSearchSpec, theCollection); return theCollection; } void operator()( const argument_type& theDirectory, const argument_type& theSearchSpec, CollectionType& theCollection) const { EnumerateDirectory( m_memoryManager, theDirectory, theSearchSpec, XALAN_STD_QUALIFIER back_inserter(theCollection), m_filterPredicate, m_conversionFunction, m_includeSelfAndParent); } result_type operator()( const argument_type& theDirectory, const argument_type& theSearchSpec) const { result_type theCollection; operator()( theDirectory, theSearchSpec, theCollection); return theCollection; } private: FilterPredicateType m_filterPredicate; StringConversionFunction m_conversionFunction; const bool m_includeSelfAndParent; MemoryManager& m_memoryManager; }; #endif XALAN_CPP_NAMESPACE_END #endif // DIRECTORY_ENUMERATOR_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/DoubleSupport.hpp0000664000175000000640000004152512033162750022737 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(DOUBLESUPPORT_HEADER_GUARD_1357924680) #define DOUBLESUPPORT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #if defined(_MSC_VER) #include #endif #include #include #include XALAN_CPP_NAMESPACE_BEGIN XALAN_USING_XERCES(MemoryManager) // A class to help us support IEEE 754. class XALAN_PLATFORMSUPPORT_EXPORT DoubleSupport { public: /** * Perform static initialization. See class PlatformSupportInit. * */ static void initialize(); /** * Perform static shut down. See class PlatformSupportInit. */ static void terminate(); // Use these functions to determine if a value represents one of these // special values. On some platforms, regular C/C++ operators don't work // as we need them too, so we have these helper functions. /** * Determine if target is not a number * * @param theNumber target number * @return true if target represents the "not a number" value */ static bool isNaN(double theNumber) { #if defined(_MSC_VER) return _isnan(theNumber) != 0; #elif defined(XALAN_POSIX2_AVAILABLE) && !defined(CYGWIN) && !defined(MINGW) #if defined(XALAN_NO_STD_NAMESPACE) return isnam(theNumber) != 0; #else return std::isnan(theNumber) != 0; #endif #else return s_NaN == theNumber; #endif } /** * Determine if target is positive infinity * * @param theNumber target number * @return true if target represents the value for positive infinity */ static bool isPositiveInfinity(double theNumber) { return s_positiveInfinity == theNumber; } /** * Determine if target is negative infinity * * @param theNumber target number * @return true if target represents the value for negative infinity */ static bool isNegativeInfinity(double theNumber) { return s_negativeInfinity == theNumber; } /** * Determine if target is positive 0. * * @param theNumber target number * @return true if target represents the value for positive 0. */ static bool isPositiveZero(double theNumber) { return s_positiveZero == theNumber; } /** * Determine if target is negative 0 * * @param theNumber target number * @return true if target represents the value for negative 0 */ static bool isNegativeZero(double theNumber) { return s_negativeZero == theNumber; } // These can be used to initialize values, but should not // be used to do equality comparisons, as == may fail on // some platforms. // /** * Double value that represents "not a number" * * @return "not a number" value */ static double getNaN() { return s_NaN.d; } /** * Double value that represents positive infinity * * @return positive infinity value */ static double getPositiveInfinity() { return s_positiveInfinity.d; } /** * Double value that represents negative infinity * * @return negative infinity value */ static double getNegativeInfinity() { return s_negativeInfinity.d; } /** * Compare two double values, taking into account * the fact that we must support IEEE 754 * * @param theLHS a number to compare * @param theRHS a number to compare * @return the result of the compare */ static bool equal( double theLHS, double theRHS); /** * Compare two double values, taking into account * the fact that we must support IEEE 754 * * @param theLHS a number to compare * @param theRHS a number to compare * @return the result of the compare */ static bool notEqual( double theLHS, double theRHS) { return !equal(theLHS, theRHS); } /** * Compare two double values, taking into account * the fact that we must support IEEE 754 * * @param theLHS a number to compare * @param theRHS a number to compare * @return the result of the compare */ static bool lessThan( double theLHS, double theRHS); /** * Compare two double values, taking into account * the fact that we must support IEEE 754 * * @param theLHS a number to compare * @param theRHS a number to compare * @return the result of the compare */ static bool lessThanOrEqual( double theLHS, double theRHS); /** * Compare two double values, taking into account * the fact that we must support IEEE 754 * * @param theLHS a number to compare * @param theRHS a number to compare * @return the result of the compare */ static bool greaterThan( double theLHS, double theRHS); /** * Compare two double values, taking into account * the fact that we must support IEEE 754 * * @param theLHS a number to compare * @param theRHS a number to compare * @return the result of the compare */ static bool greaterThanOrEqual( double theLHS, double theRHS); /** * Add two double values, taking into account * the fact that we must support IEEE 754 * * @param theLHS a number to add * @param theRHS a number to add * @return the result of the addition */ static double add( double theLHS, double theRHS); /** * Subtract two double values, taking into account * the fact that we must support IEEE 754 * * @param theLHS a number to subtract * @param theRHS a number to subtract * @return the result of the subtraction */ static double subtract( double theLHS, double theRHS); /** * Multiply two double values, taking into account * the fact that we must support IEEE 754 * * @param theLHS a number to multiply * @param theRHS a number to multiply * @return the result of the multiplication */ static double multiply( double theLHS, double theRHS); /** * Divide two double values, taking into account * the fact that we must support IEEE 754 * * @param theLHS a number to divide * @param theRHS a number to divide * @return the result of the division */ static double divide( double theLHS, double theRHS); /** * Determine the modulus two double values, * taking into account the fact that we must * support IEEE 754 * * @param theLHS a number to divide * @param theRHS a number to divide * @return the result of the modulus */ static double modulus( double theLHS, double theRHS); /** * Determine the negative of a double value, * taking into account the fact that we must * support IEEE 754 * * @param theDouble a number to negate * @return the result of the negation */ static double negative(double theDouble); /** * Return the absolute value of theDouble. If theDouble is NaN, * NaN is returned * * @param theDouble a number to fabs * @return the result of the fabs */ static double abs(double theDouble); // Some functors to do the same thing. This is for // STL integration... #if defined(XALAN_NO_STD_NAMESPACE) struct equalFunction : public binary_function #else struct equalFunction : public std::binary_function #endif { result_type operator()( first_argument_type theLHS, second_argument_type theRHS) const { return equal(theLHS, theRHS); } }; #if defined(XALAN_NO_STD_NAMESPACE) struct notEqualFunction : public binary_function #else struct notEqualFunction : public std::binary_function #endif { result_type operator()( first_argument_type theLHS, second_argument_type theRHS) const { return notEqual(theLHS, theRHS); } }; #if defined(XALAN_NO_STD_NAMESPACE) struct lessThanFunction : public binary_function #else struct lessThanFunction : public std::binary_function #endif { result_type operator()( first_argument_type theLHS, second_argument_type theRHS) const { return lessThan(theLHS, theRHS); } }; #if defined(XALAN_NO_STD_NAMESPACE) struct lessThanOrEqualFunction : public binary_function #else struct lessThanOrEqualFunction : public std::binary_function #endif { result_type operator()( first_argument_type theLHS, second_argument_type theRHS) const { return lessThanOrEqual(theLHS, theRHS); } }; #if defined(XALAN_NO_STD_NAMESPACE) struct greaterThanFunction : public binary_function #else struct greaterThanFunction : public std::binary_function #endif { result_type operator()( first_argument_type theLHS, second_argument_type theRHS) const { return greaterThan(theLHS, theRHS); } }; #if defined(XALAN_NO_STD_NAMESPACE) struct greaterThanOrEqualFunction : public binary_function #else struct greaterThanOrEqualFunction : public std::binary_function #endif { result_type operator()( first_argument_type theLHS, second_argument_type theRHS) const { return greaterThanOrEqual(theLHS, theRHS); } }; #if defined(XALAN_NO_STD_NAMESPACE) struct addFunction : public binary_function #else struct addFunction : public std::binary_function #endif { result_type operator()( first_argument_type theLHS, second_argument_type theRHS) const { return add(theLHS, theRHS); } }; #if defined(XALAN_NO_STD_NAMESPACE) struct subtractFunction : public binary_function #else struct subtractFunction : public std::binary_function #endif { result_type operator()( first_argument_type theLHS, second_argument_type theRHS) const { return subtract(theLHS, theRHS); } }; #if defined(XALAN_NO_STD_NAMESPACE) struct multiplyFunction : public binary_function #else struct multiplyFunction : public std::binary_function #endif { result_type operator()( first_argument_type theLHS, second_argument_type theRHS) const { return multiply(theLHS, theRHS); } }; #if defined(XALAN_NO_STD_NAMESPACE) struct divideFunction : public binary_function #else struct divideFunction : public std::binary_function #endif { result_type operator()( first_argument_type theLHS, second_argument_type theRHS) const { return divide(theLHS, theRHS); } }; #if defined(XALAN_NO_STD_NAMESPACE) struct modulusFunction : public binary_function #else struct modulusFunction : public std::binary_function #endif { result_type operator()( first_argument_type theLHS, second_argument_type theRHS) const { return modulus(theLHS, theRHS); } }; #if defined(XALAN_NO_STD_NAMESPACE) struct negativeFunction : public unary_function #else struct negativeFunction : public std::unary_function #endif { result_type operator()(argument_type theDouble) const { return negative(theDouble); } }; /** * Determine whether or not a string contains * a valid floating point number. * * @param theString The string to check. * @return true if the string is valid, false if not. */ static bool isValid(const XalanDOMString& theString); /** * Determine whether or not a string contains * a valid floating point number. * * @param theString The string to check. * @return true if the string is valid, false if not. */ static bool isValid(const XalanDOMChar* theString); /** * Convert a string to a double value. Returns * NaN if the string is not a valid floating * point number. * * @param theString The string to convert. * @param theManager The MemoryManager instance to use. * @return The result of the conversion */ static double toDouble( const XalanDOMString& theString, MemoryManager& theManager); /** * Convert a string to a double value. Returns * NaN if the string is not a valid floating * point number. * * @param theString The string to convert. * @param theManager The MemoryManager instance to use. * @return The result of the conversion */ static double toDouble( const XalanDOMChar* theString, MemoryManager& theManager); /** * Round a number according to the XPath * rules. * * @param theValue The value to round. * @return The result of the rounding */ static double round(double theValue); /** * Returns the ceiling of a number according to the XPath * rules. * * @param theValue The value to round. * @return The result of the rounding */ static double ceiling(double theValue) { #if defined(XALAN_STRICT_ANSI_HEADERS) return std::ceil(theValue); #else return ceil(theValue); #endif } /** * Returns the floor of a number according to the XPath * rules. * * @param theValue The value to round. * @return The result of the rounding */ static double floor(double theValue) { #if defined(XALAN_STRICT_ANSI_HEADERS) return std::floor(theValue); #else return ::floor(theValue); #endif } union NumberUnion { double d; struct { unsigned int dw1; unsigned int dw2; } dwords; bool operator==(double theNumber) const { const NumberUnion temp = { theNumber }; return dwords.dw1 == temp.dwords.dw1 && dwords.dw2 == temp.dwords.dw2; } }; private: #if defined(XALAN_NO_STD_NUMERIC_LIMITS) static NumberUnion s_NaN; #else static const NumberUnion s_NaN; #endif static const NumberUnion s_positiveInfinity; static const NumberUnion s_negativeInfinity; static const NumberUnion s_positiveZero; static const NumberUnion s_negativeZero; }; XALAN_CPP_NAMESPACE_END #endif // DOUBLESUPPORT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanNLSMessageLoader.cpp0000664000175000000640000000706111731656102024177 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined XALAN_NLS_MSG_LOADER // Class header file. #include "XalanNLSMessageLoader.hpp" #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN XALAN_USING_XERCES(XMLMsgLoader) static const char* const MSG_FILE_NAME = "XalanMsg_"; #define MAX_LOCALTION_NAME 1024 static const char* const s_errorMessage = "Message can't be located in the NLS catalog."; XalanNLSMessageLoader::~XalanNLSMessageLoader() { if ((int)m_catalogHandle != -1) { catclose(m_catalogHandle); } } XalanNLSMessageLoader::XalanNLSMessageLoader(MemoryManager& theManager) : m_catalogHandle(nl_catd(-1)), m_memoryManager(theManager) { char fileName[50]; fileName[0] = 0; sprintf(fileName,"%s", MSG_FILE_NAME); const char* Locale = XMLMsgLoader::getLocale(); if(Locale == 0) { Locale = "en_US"; } strcat(fileName, Locale); strcat(fileName, ".cat"); /** * To open user-specified locale specific cat file * and default cat file if necessary */ m_catalogHandle = catopen(fileName, 0); if (reinterpret_cast(m_catalogHandle) == -1) { // Probably have to call panic here // the user will get an error with retrieving messages assert(0); } } bool XalanNLSMessageLoader::loadMsg( XalanMessages::Codes msgToLoad XalanDOMChar* toFill XalanSize_t maxChars) { bool bRetValue = false; if (toFill == 0 || maxChars == 0) { return bRetValue; } if (static_cast(m_catalogHandle) == -1) { // for transcoding to Unicode const XalanDOMString errorMsg("Message can't be retrieved: the message catalog is not open.", m_memoryManager ); if(errorMsg.length() < maxChars) { XalanCopy(errorMsg.c_str(), errorMsg.c_str()+ errorMsg.length() + 1 , toFill); } } else { const char* const catMessage = catgets( m_catalogHandle, 1, static_cast(msgToLoad) + 2, s_errorMessage); // catgets returns a pointer to msgString if it fails to locate the message // from the message catalog if (catMessage != 0) { const XalanDOMString errorMsg(catMessage, m_memoryManager); if (errorMsg.length() < maxChars) { XalanCopy(errorMsg.c_str(), errorMsg.c_str() + errorMsg.length() +1 , toFill); bRetValue = true; } } } return bRetValue; } XALAN_CPP_NAMESPACE_END #endif // XALAN_NLS_MSG_LOADER xalan-c-1.11/c/src/xalanc/PlatformSupport/ExecutionContext.hpp0000664000175000000640000000566011731656102023443 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(EXECUTIONCONTEXT_HEADER_GUARD_1357924680) #define EXECUTIONCONTEXT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include "xalanc/PlatformSupport/ProblemListenerBase.hpp" XALAN_DECLARE_XERCES_CLASS(Locator) XALAN_CPP_NAMESPACE_BEGIN typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator LocatorType; class XalanDOMString; class XalanNode; class XalanText; // // An abstract class which provides support for execution. // class XALAN_PLATFORMSUPPORT_EXPORT ExecutionContext : public ProblemListenerBase { public: ExecutionContext(MemoryManager& theMemoryManager); virtual ~ExecutionContext(); // These interfaces are inherited from ProblemListenerBase virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode) = 0; virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode) = 0; bool hasPreserveOrStripSpaceConditions() const { return m_hasPreserveOrStripConditions; } /** * Determine if a text node should be stripped from the source tree, * as if it weren't there. * * @param textNode text node from the source tree * @return true if the text node should be stripped */ virtual bool shouldStripSourceNode(const XalanText& node) = 0; MemoryManager& getMemoryManager() const { return m_memoryManager; } MemoryManager& getExceptionMemoryManager() const { return XalanMemoryManager::getExceptionMemoryManager(m_memoryManager); } protected: MemoryManager& m_memoryManager; bool m_hasPreserveOrStripConditions; }; XALAN_CPP_NAMESPACE_END #endif // EXECUTIONCONTEXT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanDOMStringReusableAllocator.cpp0000664000175000000640000000651511731656102026244 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanDOMStringReusableAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanDOMStringReusableAllocator::XalanDOMStringReusableAllocator( MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanDOMStringReusableAllocator::~XalanDOMStringReusableAllocator() { } XalanDOMStringReusableAllocator::data_type& XalanDOMStringReusableAllocator::create() { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type(getMemoryManager()); m_allocator.commitAllocation(theBlock); return *theResult; } XalanDOMStringReusableAllocator::data_type& XalanDOMStringReusableAllocator::create( const char* theString, data_type_size_type theCount) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type(theString, getMemoryManager(), theCount); m_allocator.commitAllocation(theBlock); return *theResult; } XalanDOMStringReusableAllocator::data_type& XalanDOMStringReusableAllocator::create( const data_type& theSource, data_type_size_type theStartPosition, data_type_size_type theCount) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type(theSource, getMemoryManager(), theStartPosition, theCount); m_allocator.commitAllocation(theBlock); return *theResult; } XalanDOMStringReusableAllocator::data_type& XalanDOMStringReusableAllocator::create( const XalanDOMChar* theString, data_type_size_type theCount) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type(theString, getMemoryManager(), theCount); m_allocator.commitAllocation(theBlock); return *theResult; } XalanDOMStringReusableAllocator::data_type& XalanDOMStringReusableAllocator::create( data_type_size_type theCount, XalanDOMChar theChar) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type(theCount, theChar, getMemoryManager()); m_allocator.commitAllocation(theBlock); return *theResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanUTF16Transcoder.cpp0000664000175000000640000000700511731656102023737 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanUTF16Transcoder.hpp" #include #include XALAN_CPP_NAMESPACE_BEGIN XalanUTF16Transcoder::XalanUTF16Transcoder(MemoryManager& theManager) : XalanOutputTranscoder(theManager) { } XalanUTF16Transcoder* XalanUTF16Transcoder::create(MemoryManager& theManager) { typedef XalanUTF16Transcoder ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType(theManager); theGuard.release(); return theResult; } XalanUTF16Transcoder::~XalanUTF16Transcoder() { } XalanUTF16Transcoder::eCode XalanUTF16Transcoder::transcode( const XalanDOMChar* theSourceData, size_type theSourceCount, XalanXMLByte* theTarget, size_type theTargetSize, size_type& theSourceCharsTranscoded, size_type& theTargetBytesUsed) { size_type theSourceEaten = 0; size_type theTargetPosition = 0; while(theSourceEaten < theSourceCount) { // Swap bytes to big endian... if (theTargetPosition + 1 >= theTargetSize) { break; } else { *reinterpret_cast(theTarget + theTargetPosition) = theSourceData[theSourceEaten++]; theTargetPosition += 2; } } theSourceCharsTranscoded = theSourceEaten; theTargetBytesUsed = theTargetPosition; return XalanTranscodingServices::OK; } XalanUTF16Transcoder::eCode XalanUTF16Transcoder::transcode( const XalanXMLByte* theSourceData, size_type theSourceCount, XalanDOMChar* theTarget, size_type theTargetSize, size_type& theSourceCharsTranscoded, size_type& theTargetBytesUsed, unsigned char* theCharSizes) { size_type theSourceEaten = 0; size_type theTargetPosition = 0; while(theSourceEaten + 1 < theSourceCount) { // Swap bytes to big endian... if (theTargetPosition + 1 >= theTargetSize) { break; } else { theTarget[theTargetPosition++] = *reinterpret_cast(theSourceData + theSourceCount++); *theCharSizes++ = 2; } } theSourceCharsTranscoded = theSourceEaten; theTargetBytesUsed = theTargetPosition; return XalanTranscodingServices::OK; } bool XalanUTF16Transcoder::canTranscodeTo(XalanUnicodeChar /* theChar */) const { return true; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/ReusableArenaAllocator.hpp0000664000175000000640000002140511731656102024500 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(REUSABLEARENAALLOCATOR_INCLUDE_GUARD_1357924680) #define REUSABLEARENAALLOCATOR_INCLUDE_GUARD_1357924680 #include #include "ReusableArenaBlock.hpp" #include "ArenaAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN template class ReusableArenaAllocator : public ArenaAllocator > { public: typedef ReusableArenaBlock ReusableArenaBlockType; typedef typename ReusableArenaBlockType::size_type size_type; typedef ArenaAllocator BaseClassType; typedef ReusableArenaAllocator ThisType; typedef XalanList ArenaBlockListType; typedef typename ArenaBlockListType::iterator iterator; typedef typename ArenaBlockListType::const_iterator const_iterator; typedef typename ArenaBlockListType::reverse_iterator reverse_iterator; typedef typename ArenaBlockListType::const_reverse_iterator const_reverse_iterator; /* * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ ReusableArenaAllocator( MemoryManager& theManager, size_type theBlockSize, bool destroyBlocks = false) : BaseClassType(theManager, theBlockSize), m_destroyBlocks(destroyBlocks) { } virtual ~ReusableArenaAllocator() { } /* * Destroy the object, and free the block for re-use. * * @param theObject the address of the object. * @return true if the object was deleted, false if not. */ bool destroyObject(ObjectType* theObject) { bool bResult = false; assert ( theObject != 0 ); if ( this->m_blocks.empty() ) return bResult; iterator iTerator = this->m_blocks.begin(); iterator iEnd = this->m_blocks.end(); // first , run over unfull blocks ( that consentrated from the head ) while( iTerator != iEnd && (*iTerator)->blockAvailable() ) { if ((*iTerator)->ownsBlock(theObject) == true) { (*iTerator)->destroyObject(theObject); // move the block we have just deleted to the head of the list if (iTerator != this->m_blocks.begin()) { // move the block to the beginning ReusableArenaBlockType* block = *iTerator; assert(block != 0); this->m_blocks.erase(iTerator); this->m_blocks.push_front(block); } if (m_destroyBlocks) { destroyBlock(); } bResult = true; break; } ++iTerator; } reverse_iterator rIterator = this->m_blocks.rbegin(); reverse_iterator rEnd = this->m_blocks.rend(); // if the block hasn't been found from the head , start with full blocks ( from the taile) while ( !bResult && rIterator != rEnd ) { if ((*rIterator)->ownsBlock(theObject)) { (*rIterator)->destroyObject(theObject); if (rIterator != this->m_blocks.rbegin()) { // move the block to the beginning ReusableArenaBlockType* block = *iTerator; assert(block != 0); this->m_blocks.erase(iTerator); this->m_blocks.push_front(block); } if (m_destroyBlocks) { destroyBlock(); } bResult = true; break; } if ( *rIterator == *iTerator) { break; } else { ++rIterator; } } return bResult; } /* * Allocate a block of the appropriate size for an * object. Call commitAllocation() when after * the object is successfully constructed. You _must_ * commit an allocation before performing any other * operation on the allocator. * * * @return A pointer to a block of memory */ virtual ObjectType* allocateBlock() { if( this->m_blocks.empty() || !this->m_blocks.front()->blockAvailable() ) { this->m_blocks.push_front( ReusableArenaBlockType::create( this->getMemoryManager(), this->m_blockSize)); assert( this->m_blocks.front() != 0 ); } assert( this->m_blocks.front() != 0 ); assert( this->m_blocks.front()->blockAvailable() ); return this->m_blocks.front()->allocateBlock(); } /* * Commits the allocation of the previous * allocateBlock() call. * * @param theObject A pointer to a block of memory */ virtual void commitAllocation(ObjectType* theObject) { // Note that this-> is required by template lookup rules. assert( this->m_blocks.empty() == false ); assert( this->m_blocks.front() != 0 ); assert( this->m_blocks.front()->ownsBlock(theObject) == true ); this->m_blocks.front()->commitAllocation(theObject); if( !this->m_blocks.front()->blockAvailable() ) { ReusableArenaBlockType* fullBlock = this->m_blocks.front(); assert ( fullBlock != 0 ); this->m_blocks.pop_front(); this->m_blocks.push_back( fullBlock ); } } virtual bool ownsObject(const ObjectType* theObject) const { if ( this->m_blocks.empty() ) return false; const_iterator iTerator = this->m_blocks.begin(); const_iterator iEnd = this->m_blocks.end(); while( iTerator != iEnd && (*iTerator)->blockAvailable() ) { if ((*iTerator)->ownsBlock(theObject) ) { return true; } ++iTerator; } const_reverse_iterator rIterator = this->m_blocks.rbegin(); const_reverse_iterator rEnd = this->m_blocks.rend(); while( rIterator != rEnd ) { if ((*rIterator)->ownsBlock(theObject) ) { return true; } if ( *iTerator == *rIterator ) { break; } else { ++rIterator; } } return false; } protected: /* * The method destroys an empty block from the head of the list. * For eliminating multiple create/destroy operation, the block * is destroyed only if the second one is not full. */ void destroyBlock() { assert(m_destroyBlocks == true); if ( this->m_blocks.empty() == false) { const_iterator iTerator = this->m_blocks.begin(); if ( (*iTerator)->isEmpty() ) { ++iTerator; if (iTerator == this->m_blocks.end() || (*iTerator)->blockAvailable() ) { this->m_blocks.pop_front(); } } } } // data members const bool m_destroyBlocks; private: // Not defined... ReusableArenaAllocator(const ReusableArenaAllocator&); ReusableArenaAllocator& operator=(const ReusableArenaAllocator&); bool operator==(const ReusableArenaAllocator&) const; }; XALAN_CPP_NAMESPACE_END #endif // !defined(REUSABLEARENAALLOCATOR_INCLUDE_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanInMemoryMessageLoader.cpp0000664000175000000640000000445011731656102025301 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined (XALAN_INMEM_MSG_LOADER) // Class header file. #include "XalanInMemoryMessageLoader.hpp" #include "PlatformSupportInit.hpp" #include "DOMStringHelper.hpp" #include XALAN_CPP_NAMESPACE_BEGIN bool XalanInMemoryMessageLoader::loadMsg( XalanMessages::Codes msgToLoad, XalanDOMChar* toFill, XalanSize_t maxChars) { if (toFill == 0) { return false; } else if (XalanMsgContainer::getMessageCount() < static_cast(msgToLoad)) { const XalanDOMString::size_type msgLength = m_unknownMessage.length() + 1; XalanCopy( m_unknownMessage.c_str(), m_unknownMessage.c_str() + (msgLength < maxChars ? msgLength : maxChars), toFill); } else { const XalanDOMChar* const pErrMsg = XalanMsgContainer::getMessage(msgToLoad); assert(pErrMsg != 0); const XalanDOMString::size_type msgLength = XalanDOMString::length(pErrMsg) + 1; XalanCopy( pErrMsg, pErrMsg + (msgLength < maxChars ? msgLength : maxChars), toFill); } return true; } XalanInMemoryMessageLoader::~XalanInMemoryMessageLoader() { } XalanInMemoryMessageLoader::XalanInMemoryMessageLoader(MemoryManager& theManager) : m_unknownMessage("The message was not found in the message library.", theManager) { } XALAN_CPP_NAMESPACE_END #endif xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanParsedURI.cpp0000664000175000000640000002446211731656102022711 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanParsedURI.hpp" #include "DOMStringHelper.hpp" #include "XalanUnicode.hpp" XALAN_CPP_NAMESPACE_BEGIN #if defined(XALAN_INLINE_INITIALIZATION) && !defined(XALAN_INLINE_INITIALIZATION_IS_DEFINITION_BUG) const int XalanParsedURI::d_scheme; const int XalanParsedURI::d_authority; const int XalanParsedURI::d_query; const int XalanParsedURI::d_fragment; #endif /* Merge the components back into a complete URI string */ XalanDOMString& XalanParsedURI::make(XalanDOMString& uri) const { uri.erase(); if (m_defined & d_scheme) { uri += m_scheme; uri += XalanUnicode::charColon; } if (m_defined & d_authority) { uri += XalanUnicode::charSolidus; uri += XalanUnicode::charSolidus; uri += m_authority; } uri += m_path; if (m_defined & d_query) { uri += XalanUnicode::charQuestionMark; uri += m_query; } if (m_defined & d_fragment) { uri += XalanUnicode::charNumberSign; uri += m_fragment; } return uri; } /* Parse a URI into component parts. Essentially implements the regex ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))? */ void XalanParsedURI::parse( const XalanDOMChar* uriString, XalanDOMString::size_type uriStringLen ) { XalanDOMString::size_type index = 0; // Clear the components present mask m_defined = 0; // Scheme portion while (index < uriStringLen && uriString[index] != XalanUnicode::charColon && uriString[index] != XalanUnicode::charSolidus && uriString[index] != XalanUnicode::charQuestionMark && uriString[index] != XalanUnicode::charNumberSign) { ++index; } if (index > 0 && uriString[index] == XalanUnicode::charColon) { m_scheme = XalanDOMString(uriString, getMemoryManager(), index); ++index; m_defined |= d_scheme; } else { index = 0; m_scheme.clear(); } // Authority portion if (index < uriStringLen - 1 && uriString[index] == XalanUnicode::charSolidus && uriString[index+1] == XalanUnicode::charSolidus) { index += 2; XalanDOMString::size_type authority = index; while (index < uriStringLen && uriString[index] != XalanUnicode::charSolidus && uriString[index] != XalanUnicode::charQuestionMark && uriString[index] != XalanUnicode::charNumberSign) { ++index; } m_authority = XalanDOMString(uriString + authority, getMemoryManager(), index - authority); m_defined |= d_authority; } else { m_authority.clear(); } // Path portion XalanDOMString::size_type path = index; while (index < uriStringLen && uriString[index] != XalanUnicode::charQuestionMark && uriString[index] != XalanUnicode::charNumberSign) { ++index; } m_path = XalanDOMString(uriString + path,getMemoryManager(), index - path); // Query portion if (index < uriStringLen && uriString[index] == XalanUnicode::charQuestionMark) { ++index; XalanDOMString::size_type query = index; while (index < uriStringLen && uriString[index] != XalanUnicode::charNumberSign) { ++index; } m_query = XalanDOMString(uriString + query,getMemoryManager(), index - query); m_defined |= d_query; } else { m_query.clear(); } // Fragment portion if (index < uriStringLen && uriString[index] == XalanUnicode::charNumberSign) { ++index; m_fragment = XalanDOMString(uriString + index, getMemoryManager(), uriStringLen - index); m_defined |= d_fragment; } else { m_fragment.clear(); } } /* Resolve this URI relative to another according to RFC2396, section 5.2 */ void XalanParsedURI::resolve( const XalanParsedURI &base ) { if (base.isSchemeDefined() == false) { // Protect against a base URI that is relative... // This might become an assert or an exception. } // Handle references to the current document (step 2) else if ((m_defined & (d_scheme | d_authority | d_query)) == 0 && m_path.empty()) { m_scheme = base.m_scheme; m_authority = base.m_authority; m_path = base.m_path; m_query = base.m_query; // There is an error/unclarity in the specification in step 2 in that // it doesn't state that the fragment should be inherited; however // it is clear from the examples that it should be if (!(m_defined & d_fragment)) { m_fragment = base.m_fragment; } m_defined |= base.m_defined; } // A defined scheme component implies that this is an absolute URI (step 3) // Also allow a scheme without authority that matches the base scheme to be // interpreted as a relative URI else if (!(m_defined & d_scheme) || ( (base.m_defined & d_scheme) && !(m_defined & d_authority) && equalsIgnoreCaseASCII(m_scheme, base.m_scheme))) { // Inherit the base scheme m_scheme = base.m_scheme; m_defined |= d_scheme; // Step 4: If the authority is unm_defined then inherit it, otherwise skip to step 7 if (!(m_defined & d_authority)) { // Inherit the base authority m_authority = base.m_authority; m_defined |= d_authority; // Step 5: if the path starts with a / then it is absolute if (!(m_path.length() > 0 && m_path[0] == XalanUnicode::charSolidus)) { // Step 6: merge relative path components // a) strip off characters after the right most slash in the base path XalanDOMString::size_type pathEnd = base.m_path.length(); while (pathEnd > 0 && base.m_path[pathEnd - 1] != XalanUnicode::charSolidus) { --pathEnd; } if (pathEnd > 0) { // b) append relative path // This inserts the path portion from base... m_path.insert(0, base.m_path, 0, pathEnd); } else { // TODO, maybe raise an error here as this // is a severely wonky looking URI } // c)->g remove various "./" and "../" segments for (XalanDOMString::size_type index = 0; index < m_path.length(); ) { // remove '/../' and ./ if (m_path[index] == XalanUnicode::charFullStop) { if (index < m_path.length()-1 && m_path[index+1] == XalanUnicode::charSolidus) // ./ { m_path.erase(index,2); continue; } else if (index == m_path.length()-1) // trailing /. { m_path.erase(index,1); continue; } // Note: also strips leading ../ in an attempt to get // something out of a bad m_path else if (index < m_path.length()-2 && m_path[index+1] == XalanUnicode::charFullStop && m_path[index+2] == XalanUnicode::charSolidus) // ../ { const XalanDOMString::size_type end = index + 2; if (index > 0) --index; for ( ; index > 0 && m_path[index-1] != XalanUnicode::charSolidus; index--) ; if (index > 0) --index; m_path.erase(index, end - index); continue; } else if (index == m_path.length()-2 && m_path[index+1] == XalanUnicode::charFullStop) // trailing /.. { const XalanDOMString::size_type end = index + 2; if (index > 0) --index; for ( ; index > 0 && m_path[index-1] != XalanUnicode::charSolidus; index--) ; m_path.erase(index, end - index); continue; } } for ( ; index < m_path.length() && m_path[index] != XalanUnicode::charSolidus ; ++index) { } ++index; } } } } } /* Static helper function to perform a resolve without mucking about with this class */ XalanDOMString& XalanParsedURI::resolve( const XalanDOMChar *relative, XalanDOMString::size_type relativeLen, const XalanDOMChar *base, XalanDOMString::size_type baseLen, XalanDOMString& theResult ) { XalanParsedURI relativeURI(relative, relativeLen, theResult.getMemoryManager()); XalanParsedURI baseURI(base, baseLen, theResult.getMemoryManager()); relativeURI.resolve(baseURI); return relativeURI.make(theResult); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanDOMStringPool.cpp0000664000175000000640000000701011731656102023541 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XalanDOMStringPool.hpp" XALAN_CPP_NAMESPACE_BEGIN const XalanDOMString XalanDOMStringPool::s_emptyString(XalanMemMgrs::getDummyMemMgr()); XalanDOMStringPool::XalanDOMStringPool( MemoryManager& theManager, block_size_type theBlockSize, bucket_count_type theBucketCount, bucket_size_type theBucketSize) : m_stringAllocator(theManager, theBlockSize), m_stringCount(0), m_hashTable(theManager, theBucketCount, theBucketSize) { } XalanDOMStringPool* XalanDOMStringPool::create( MemoryManager& theManager, block_size_type theBlockSize, bucket_count_type theBucketCount, bucket_size_type theBucketSize) { typedef XalanDOMStringPool ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType(theManager, theBlockSize, theBucketCount, theBucketSize); theGuard.release(); return theResult; } XalanDOMStringPool::~XalanDOMStringPool() { } void XalanDOMStringPool::clear() { m_stringAllocator.reset(); m_hashTable.clear(); m_stringCount = 0; } size_t XalanDOMStringPool::size() const { assert(m_stringCount == m_hashTable.size()); return m_stringCount; } const XalanDOMString& XalanDOMStringPool::get(const XalanDOMString& theString) { return get(theString.c_str(), theString.length()); } const XalanDOMString& XalanDOMStringPool::get( const XalanDOMChar* theString, XalanDOMString::size_type theLength) { assert(m_stringCount == m_hashTable.size()); if (theString == 0 || *theString == 0) { return s_emptyString; } else { const XalanDOMString::size_type theActualLength = theLength == XalanDOMString::npos ? length(theString) : theLength; size_t theBucketIndex; const XalanDOMString* theTableString = m_hashTable.find(theString, theActualLength, &theBucketIndex); if (theTableString != 0) { return *theTableString; } else { // Not found, so insert the string... XalanDOMString* const theNewString = m_stringAllocator.create(theString, theActualLength); assert(theNewString != 0); assert(theActualLength == theNewString->length()); ++m_stringCount; // Insert the string into the hash table... m_hashTable.insert(*theNewString, theBucketIndex); assert(m_stringCount == m_hashTable.size()); return *theNewString; } } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/PrefixResolver.hpp0000664000175000000640000000371611731656102023112 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(PREFIXRESOLVER_HEADER_GUARD_1357924680) #define PREFIXRESOLVER_HEADER_GUARD_1357924680 // Base include file. Must be first. #include XALAN_CPP_NAMESPACE_BEGIN class XalanDOMString; /** * This class defines an interface for classes that resolve namespace prefixes * to their URIs */ class XALAN_PLATFORMSUPPORT_EXPORT PrefixResolver { public: PrefixResolver(); PrefixResolver(const PrefixResolver&); virtual ~PrefixResolver(); /** * Retrieve a namespace corresponding to a prefix. This assumes that * the PrevixResolver holds its own namespace context, or is a namespace * context itself. * * @param prefix Prefix to resolve * @return namespace that prefix resolves to, or null if prefix is not found */ virtual const XalanDOMString* getNamespaceForPrefix(const XalanDOMString& prefix) const = 0; /** * Retrieve the base URI for the resolver. * * @return URI string */ virtual const XalanDOMString& getURI() const = 0; }; XALAN_CPP_NAMESPACE_END #endif // PREFIXRESOLVER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanXMLChar.hpp0000664000175000000640000000425611731656102022355 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANXMLCHAR_HEADER_GUARD_1357924680) #define XALANXMLCHAR_HEADER_GUARD_1357924680 // Base include file. Must be first. #include XALAN_CPP_NAMESPACE_BEGIN struct XALAN_PLATFORMSUPPORT_EXPORT XalanXMLChar { public: enum eType { XML_XX = 0, XML_BC = 1, XML_ID = 2, XML_EX = 3, XML_DI = 4, XML_CC = 5, XML_WS = 6 }; static const char theUnicodeTable[]; static bool isBaseChar(XalanDOMChar c) { return theUnicodeTable[c] == char(XML_BC); } static bool isIdeographic(XalanDOMChar c) { return theUnicodeTable[c] == char(XML_ID); } static bool isExtender(XalanDOMChar c) { return theUnicodeTable[c] == char(XML_EX); } static bool isDigit(XalanDOMChar c) { return theUnicodeTable[c] == char(XML_DI); } static bool isCombiningChar(XalanDOMChar c) { return theUnicodeTable[c] == char(XML_CC); } static bool isWhitespace(XalanDOMChar c) { return theUnicodeTable[c] == char(XML_WS); } static bool isLetter(XalanDOMChar c) { return theUnicodeTable[c] == char(XML_BC) || theUnicodeTable[c] == char(XML_ID); } }; XALAN_CPP_NAMESPACE_END #endif // XALANXMLCHAR_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanMemoryManagement.cpp0000664000175000000640000000422011731656102024346 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "xalanc/Include/XalanMemoryManagement.hpp" #include "xercesc/util/PlatformUtils.hpp" #include "xercesc/util/OutOfMemoryException.hpp" #include #include XALAN_CPP_NAMESPACE_BEGIN XalanMemoryManager::XalanMemoryManager() : MemoryManager() { } XalanMemoryManager::~XalanMemoryManager() { } XalanMemoryManager::XalanMemoryManager(const XalanMemoryManager& /* theSource */) : MemoryManager() { } class XalanDummyMemoryManager : public XalanMemoryManager { public: XalanDummyMemoryManager() { } virtual ~XalanDummyMemoryManager() { } virtual void* allocate(size_type /* size */ ) { XALAN_USING_XERCES(OutOfMemoryException) throw OutOfMemoryException(); } virtual void deallocate(void* /* pDataPointer */ ) { XALAN_USING_XERCES(OutOfMemoryException) throw OutOfMemoryException(); } MemoryManager* getExceptionMemoryManager() { return this; } }; static XalanDummyMemoryManager s_dummyMemMgr; MemoryManager& XalanMemMgrs::getDummyMemMgr() { return s_dummyMemMgr; } MemoryManager& XalanMemMgrs::getDefaultXercesMemMgr() { XALAN_USING_XERCES(XMLPlatformUtils) assert(XMLPlatformUtils::fgMemoryManager != 0); return *XMLPlatformUtils::fgMemoryManager; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/XalanReferenceCountedObject.cpp0000664000175000000640000000341311731656102025453 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class heaer file... #include "XalanReferenceCountedObject.hpp" #include #if !defined(NDEBUG) #include #endif XALAN_CPP_NAMESPACE_BEGIN XalanReferenceCountedObject::XalanReferenceCountedObject() : m_referenceCount(0) { } XalanReferenceCountedObject::~XalanReferenceCountedObject() { assert(m_referenceCount == 0); } void XalanReferenceCountedObject::addReference(XalanReferenceCountedObject* theInstance) { if (theInstance != 0) { assert(theInstance->m_referenceCount < UINT_MAX); if (++theInstance->m_referenceCount == 1) { theInstance->referenced(); } } } void XalanReferenceCountedObject::removeReference(XalanReferenceCountedObject* theInstance) { if (theInstance != 0) { assert(theInstance->m_referenceCount > 0); if (--theInstance->m_referenceCount == 0) { theInstance->dereferenced(); } } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/PlatformSupport/ArenaAllocator.hpp0000664000175000000640000001257411731656102023024 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(ARENAALLOCATOR_INCLUDE_GUARD_1357924680) #define ARENAALLOCATOR_INCLUDE_GUARD_1357924680 #include #include #include #include "ArenaBlock.hpp" XALAN_CPP_NAMESPACE_BEGIN template #else class ArenaBlockType = ArenaBlock > #endif class ArenaAllocator { public: typedef ArenaAllocator ThisType; typedef XalanList ArenaBlockListType; typedef typename ArenaBlockType::size_type size_type; /* * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ ArenaAllocator( MemoryManager& theManager, size_type theBlockSize) : m_blockSize(theBlockSize), m_blocks(theManager) { } virtual ~ArenaAllocator() { reset(); } MemoryManager& getMemoryManager() { return m_blocks.getMemoryManager(); } const MemoryManager& getMemoryManager() const { return m_blocks.getMemoryManager(); } /* * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockSize() const { return m_blockSize; } /* * Set size of an ArenaBlock, that is, the number * of objects in each block. Only affects blocks * allocated after the call. * * @param theSize The size of the block */ void setBlockSize(size_type theSize) { m_blockSize = theSize; } /* * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockCount() const { return (size_type)m_blocks.size(); } /* * Allocate a block of the appropriate size for an * object. Call commitAllocation() when after * the object is successfully constructed. * * @return A pointer to a block of memory */ virtual ObjectType* allocateBlock() { if (m_blocks.empty() == true || m_blocks.back()->blockAvailable() == false) { m_blocks.push_back( ArenaBlockType::create( getMemoryManager(), m_blockSize)); } assert( m_blocks.empty() == false && m_blocks.back() != 0 && m_blocks.back()->blockAvailable() == true); return m_blocks.back()->allocateBlock(); } /* * Commits the allocation of the previous * allocateBlock() call. * * @param theObject A pointer to a block of memory */ virtual void commitAllocation(ObjectType* theObject) { assert( m_blocks.empty() == false && m_blocks.back()->ownsBlock(theObject) == true); m_blocks.back()->commitAllocation(theObject); assert(m_blocks.back()->ownsObject(theObject) == true); } virtual bool ownsObject(const ObjectType* theObject) const { bool fResult = false; typedef typename ArenaBlockListType::const_reverse_iterator const_reverse_iterator; // Search back for a block that may have allocated the object... const const_reverse_iterator theEnd = this->m_blocks.rend(); const_reverse_iterator i = this->m_blocks.rbegin(); while(i != theEnd) { assert(*i != 0); if ((*i)->ownsObject(theObject) == true) { fResult = true; break; } else { ++i; } } return fResult; } virtual void reset() { XALAN_STD_QUALIFIER for_each( m_blocks.begin(), m_blocks.end(), DeleteFunctor(m_blocks.getMemoryManager())); m_blocks.clear(); } protected: // data members... size_type m_blockSize; ArenaBlockListType m_blocks; private: // Not defined... ArenaAllocator(const ArenaAllocator&); ArenaAllocator& operator=(const ArenaAllocator&); bool operator==(const ArenaAllocator&) const; }; XALAN_CPP_NAMESPACE_END #endif // !defined(ARENAALLOCATOR_INCLUDE_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XPathCAPI/0002775000175000000640000000000012037700125015710 5ustar stevesambaxalan-c-1.11/c/src/xalanc/XPathCAPI/XPathCAPI.cpp0000664000175000000640000004033411731656102020104 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XPathCAPI.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static bool fInitialized = false; static bool fTerminated = false; XALAN_USING_XALAN(XalanDOMChar) XALAN_USING_XALAN(XalanDOMString) XALAN_USING_XALAN(XalanOutputTranscoder) XALAN_USING_XALAN(XPath) XALAN_USING_XALAN(XPathEvaluator) XALAN_USING_XALAN(XalanSourceTreeInit) XALAN_USING_XALAN(XalanTranscodingServices) XALAN_USING_XALAN(XalanMemMgrs) static XalanSourceTreeInit* theSourceTreeInit = 0; XALAN_XPATHCAPI_EXPORT_FUNCTION(int) XalanXPathAPIInitialize() { if (fInitialized == true) { return XALAN_XPATH_API_ERROR_ALREADY_INITIALIZED; } else if (fTerminated == true) { return XALAN_XPATH_API_ERROR_CANNOT_REINITIALIZE; } else { int theResult = XALAN_XPATH_API_SUCCESS; try { XALAN_USING_XERCES(XMLPlatformUtils) XMLPlatformUtils::Initialize(); try { XPathEvaluator::initialize(XalanMemMgrs::getDefaultXercesMemMgr()); try { theSourceTreeInit = new XalanSourceTreeInit(XalanMemMgrs::getDefaultXercesMemMgr()); } catch(...) { XPathEvaluator::terminate(); throw; } } catch(...) { XMLPlatformUtils::Terminate(); throw; } fInitialized = true; } catch(...) { fTerminated = true; theResult = XALAN_XPATH_API_ERROR_INITIALIZATION_FAILED; } return theResult; } } XALAN_XPATHCAPI_EXPORT_FUNCTION(int) XalanXPathAPITerminate() { if (fInitialized == false) { return XALAN_XPATH_API_ERROR_NOT_INITIALIZED; } else if (fTerminated == true) { return XALAN_XPATH_API_ERROR_ALREADY_TERMINATED; } else { int theResult = XALAN_XPATH_API_SUCCESS; try { XALAN_USING_XERCES(XMLPlatformUtils) delete theSourceTreeInit; theSourceTreeInit = 0; XPathEvaluator::terminate(); XMLPlatformUtils::Terminate(); fTerminated = true; } catch(...) { theResult = XALAN_XPATH_API_ERROR_TERMINATION_FAILED; } return theResult; } } XALAN_XPATHCAPI_EXPORT_FUNCTION(int) XalanCreateXPathEvaluator(XalanXPathEvaluatorHandle* theHandle) { if (fInitialized == false) { return XALAN_XPATH_API_ERROR_NOT_INITIALIZED; } else if (fTerminated == true) { return XALAN_XPATH_API_ERROR_ALREADY_TERMINATED; } else if (theHandle == 0) { return XALAN_XPATH_API_ERROR_INVALID_PARAMETER; } else { int theResult = XALAN_XPATH_API_SUCCESS; try { *theHandle = new XPathEvaluator(XalanMemMgrs::getDefaultXercesMemMgr()); } catch(...) { theResult = XALAN_XPATH_API_ERROR_UNKNOWN; } return theResult; } } inline XPathEvaluator* getEvaluator(XalanXPathEvaluatorHandle theHandle) { assert(theHandle != 0); return static_cast(theHandle); } inline XPath* getXPath(XalanXPathHandle theHandle) { assert(theHandle != 0); return static_cast(theHandle); } XALAN_XPATHCAPI_EXPORT_FUNCTION(int) XalanDestroyXPathEvaluator(XalanXPathEvaluatorHandle theXalanHandle) { if (fInitialized == false) { return XALAN_XPATH_API_ERROR_NOT_INITIALIZED; } else if (fTerminated == true) { return XALAN_XPATH_API_ERROR_ALREADY_TERMINATED; } else if (theXalanHandle == 0) { return XALAN_XPATH_API_ERROR_INVALID_PARAMETER; } else { int theResult = XALAN_XPATH_API_SUCCESS; try { delete getEvaluator(theXalanHandle); } catch(...) { theResult = XALAN_XPATH_API_ERROR_UNKNOWN; } return theResult; } } typedef XalanTranscodingServices::size_type size_type; inline int transcodeString( XalanOutputTranscoder* theTranscoder, const char* theString, XalanDOMChar* theChars, unsigned char* theCharsCount, size_type theLength, XalanDOMString& theResultString) { assert(theTranscoder != 0); assert(theString != 0); assert(theChars != 0); assert(theCharsCount != 0); size_type theSourceCharsTranscoded = 0; size_type theTargetBytesUsed = 0; const XalanTranscodingServices::eCode theCode = theTranscoder->transcode( reinterpret_cast(theString), theLength, theChars, theLength, theSourceCharsTranscoded, theTargetBytesUsed, theCharsCount); if (theCode != XalanTranscodingServices::OK) { return XALAN_XPATH_API_ERROR_TRANSCODING; } else { assert(XalanDOMString::size_type(theTargetBytesUsed) == theTargetBytesUsed); theResultString.assign(theChars, XalanDOMString::size_type(theTargetBytesUsed)); return XALAN_XPATH_API_SUCCESS; } } inline int transcodeString( const char* theString, const char* theStringEncoding, XalanDOMString& theResultString) { assert(theString != 0); int theResult = XALAN_XPATH_API_SUCCESS; if (theStringEncoding == 0 || XalanDOMString::length(theStringEncoding) == 0) { theResultString = theString; } else { XalanTranscodingServices::eCode theCode = XalanTranscodingServices::OK; XalanOutputTranscoder* const theTranscoder = XalanTranscodingServices::makeNewTranscoder( XalanMemMgrs::getDefaultXercesMemMgr(), XalanDOMString(theStringEncoding, XalanMemMgrs::getDefaultXercesMemMgr()), theCode, 1024); if (theCode == XalanTranscodingServices::UnsupportedEncoding) { theResult = XALAN_XPATH_API_ERROR_UNSUPPORTED_ENCODING; } else if (theCode != XalanTranscodingServices::OK) { theResult = XALAN_XPATH_API_ERROR_UNKNOWN; } else { assert(theTranscoder != 0); // Since UTF-16 can represent any Unicode value in // one 16-bit value, we'll use the length of the // string as the maximum length of the resulting // transcoded string. This doesn't account for // surrogate pairs, but those are for private use // only right now, so we don't really need to // worry about them. const XalanDOMString::size_type theLength = XalanDOMString::length(theString); // Only use a dynamically-allocated array for very long // XPath expressions. const XalanDOMString::size_type maxStackArraySize = 100; if (theLength >= maxStackArraySize) { XALAN_USING_XALAN(XalanArrayAutoPtr) XalanArrayAutoPtr theCharsCount(new unsigned char[theLength + 1]); XalanArrayAutoPtr theChars(new XalanDOMChar[theLength + 1]); theResult = transcodeString( theTranscoder, theString, theChars.get(), theCharsCount.get(), theLength, theResultString); } else { unsigned char theCharsCount[maxStackArraySize]; XalanDOMChar theChars[maxStackArraySize]; theResult = transcodeString( theTranscoder, theString, theChars, theCharsCount, theLength, theResultString); } XalanTranscodingServices::destroyTranscoder(theTranscoder); } } return theResult; } XALAN_XPATHCAPI_EXPORT_FUNCTION(int) XalanCreateXPath( XalanXPathEvaluatorHandle theXalanHandle, const char* theXPathExpression, const char* theXPathExpressionEncoding, XalanXPathHandle* theXPathHandle) { if (fInitialized == false) { return XALAN_XPATH_API_ERROR_NOT_INITIALIZED; } else if (fTerminated == true) { return XALAN_XPATH_API_ERROR_ALREADY_TERMINATED; } else if (theXalanHandle == 0 || theXPathHandle == 0 || theXPathExpression == 0 || XalanDOMString::length(theXPathExpression) == 0) { return XALAN_XPATH_API_ERROR_INVALID_PARAMETER; } else { int theResult = XALAN_XPATH_API_SUCCESS; try { XPathEvaluator* const theEvaluator = getEvaluator(theXalanHandle); assert(theEvaluator != 0); XalanDOMString theExpressionString(XalanMemMgrs::getDefaultXercesMemMgr()); theResult = transcodeString( theXPathExpression, theXPathExpressionEncoding, theExpressionString); if (theResult == XALAN_XPATH_API_SUCCESS) { const XalanDOMChar* const thePointer = theExpressionString.c_str(); XALAN_USING_XALAN(length) if (length(thePointer) == 0) { theResult = XALAN_XPATH_API_ERROR_TRANSCODING; } else { *theXPathHandle = theEvaluator->createXPath(thePointer); } } } catch(...) { theResult = XALAN_XPATH_API_ERROR_INVALID_XPATH; } return theResult; } } XALAN_XPATHCAPI_EXPORT_FUNCTION(int) XalanDestroyXPath( XalanXPathEvaluatorHandle theXalanHandle, XalanXPathHandle theXPathHandle) { if (fInitialized == false) { return XALAN_XPATH_API_ERROR_NOT_INITIALIZED; } else if (fTerminated == true) { return XALAN_XPATH_API_ERROR_ALREADY_TERMINATED; } else if (theXalanHandle == 0 || theXPathHandle == 0) { return XALAN_XPATH_API_ERROR_INVALID_PARAMETER; } else { int theResult = XALAN_XPATH_API_SUCCESS; try { XPathEvaluator* const theEvaluator = getEvaluator(theXalanHandle); assert(theEvaluator != 0); if (theEvaluator->destroyXPath(getXPath(theXPathHandle)) == false) { theResult = XALAN_XPATH_API_ERROR_INVALID_XPATH; } } catch(...) { theResult = XALAN_XPATH_API_ERROR_UNKNOWN; } return theResult; } } XALAN_XPATHCAPI_EXPORT_FUNCTION(int) XalanEvaluateXPathAsBoolean( XalanXPathEvaluatorHandle theXalanHandle, XalanXPathHandle theXPathHandle, const char* theXML, int* theResult) { if (fInitialized == false) { return XALAN_XPATH_API_ERROR_NOT_INITIALIZED; } else if (fTerminated == true) { return XALAN_XPATH_API_ERROR_ALREADY_TERMINATED; } else if (theXalanHandle == 0 || theXPathHandle == 0 || theXML == 0) { return XALAN_XPATH_API_ERROR_INVALID_PARAMETER; } else { int theError = XALAN_XPATH_API_SUCCESS; XALAN_USING_XERCES(SAXException) try { XPathEvaluator* const theEvaluator = getEvaluator(theXalanHandle); assert(theEvaluator != 0); XPath* const theXPath = getXPath(theXPathHandle); assert(theXPath != 0); XALAN_USING_XALAN(XalanDocument) XALAN_USING_XALAN(XalanSourceTreeDOMSupport) XALAN_USING_XALAN(XalanSourceTreeParserLiaison) XalanSourceTreeDOMSupport theDOMSupport; XalanSourceTreeParserLiaison theLiaison(theDOMSupport, XalanMemMgrs::getDefaultXercesMemMgr()); // Hook the two together... theDOMSupport.setParserLiaison(&theLiaison); XALAN_USING_XERCES(MemBufInputSource) // Create an input source... const MemBufInputSource theInputSource( reinterpret_cast(theXML), XalanDOMString::length(theXML), "SourceXML", false); // Parse the document... XalanDocument* const theDocument = theLiaison.parseXMLStream(theInputSource); assert(theDocument != 0); if (theEvaluator->evaluate( theDOMSupport, theDocument, *theXPath)->boolean(theEvaluator->getExecutionContext()) == true) { *theResult = 1; } else { *theResult = 0; } } catch(const SAXException&) { theError = XALAN_XPATH_API_ERROR_BAD_XML; } catch(...) { theError = XALAN_XPATH_API_ERROR_UNKNOWN; } return theError; } } XALAN_XPATHCAPI_EXPORT_FUNCTION(int) XalanEvaluateXPathExpressionAsBoolean( XalanXPathEvaluatorHandle theXalanHandle, const char* theXPathExpression, const char* theXPathExpressionEncoding, const char* theXML, int* theResult) { XalanXPathHandle theXPathHandle = 0; int theError = XalanCreateXPath( theXalanHandle, theXPathExpression, theXPathExpressionEncoding, &theXPathHandle); if (theError == XALAN_XPATH_API_SUCCESS) { assert(theXPathHandle != 0); theError = XalanEvaluateXPathAsBoolean(theXalanHandle, theXPathHandle, theXML, theResult); const int theDestroyResult = XalanDestroyXPath(theXalanHandle, theXPathHandle); if (theDestroyResult != XALAN_XPATH_API_SUCCESS) { theError = theDestroyResult; } } return theError; } xalan-c-1.11/c/src/xalanc/XPathCAPI/XPathCAPI.h0000664000175000000640000001543611731656102017556 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_XPATHCAPI_HEADER_GUARD_1357924680) #define XALAN_XPATHCAPI_HEADER_GUARD_1357924680 #if defined(_MSC_VER) #if defined(XALAN_BUILD_DLL) #define XALAN_XPATHCAPI_EXPORT __declspec(dllexport) #define XALAN_XPATHCAPI_EXPORT_FUNCTION(T) T __declspec(dllexport) #else #define XALAN_XPATHCAPI_EXPORT __declspec(dllimport) #define XALAN_XPATHCAPI_EXPORT_FUNCTION(T) T __declspec(dllimport) #endif #else #define XALAN_XPATHCAPI_EXPORT #define XALAN_XPATHCAPI_EXPORT_FUNCTION(T) T #endif /** * This is a simple C interface for the class XPathEvaluator. It's * the user's responsibility to call XalanXPathAPIInitialize() before making * any other API calls, and to call XalanXPathAPITerminate() when finished * with the API. */ #if defined(__cplusplus) extern "C" { #endif #define XALAN_XPATH_API_SUCCESS 0 #define XALAN_XPATH_API_ERROR_ALREADY_INITIALIZED 1 #define XALAN_XPATH_API_ERROR_ALREADY_TERMINATED 2 #define XALAN_XPATH_API_ERROR_INITIALIZATION_FAILED 3 #define XALAN_XPATH_API_ERROR_TERMINATION_FAILED 4 #define XALAN_XPATH_API_ERROR_NOT_INITIALIZED 5 #define XALAN_XPATH_API_ERROR_CANNOT_REINITIALIZE 6 #define XALAN_XPATH_API_ERROR_INVALID_PARAMETER 7 #define XALAN_XPATH_API_ERROR_INVALID_EXPRESSION 8 #define XALAN_XPATH_API_ERROR_BAD_XML 9 #define XALAN_XPATH_API_ERROR_UNSUPPORTED_ENCODING 10 #define XALAN_XPATH_API_ERROR_TRANSCODING 11 #define XALAN_XPATH_API_ERROR_INVALID_XPATH 12 #define XALAN_XPATH_API_ERROR_UNKNOWN 13 /** * Handle used to store the address of XalanTransformer instance. */ typedef void* XalanXPathEvaluatorHandle; /** * Handle used to store the address of compiled XPath instance. */ typedef void* XalanXPathHandle; #if defined(OS390) #pragma export(XalanXPathAPIInitialize) #pragma export(XalanXPathAPITerminate) #pragma export(XalanCreateXPathEvaluator) #pragma export(XalanDestroyXPathEvaluator) #pragma export(XalanCreateXPath) #pragma export(XalanDestroyXPath) #pragma export(XalanEvaluateXPathAsBoolean) #pragma export(XalanEvaluateXPathExpressionAsBoolean) #endif /** * Initialize Xerces and the XPath API. * * Should be called only once per process before making * any other API calls. * * @return 0 for success, or a non-zero error code upon failure */ XALAN_XPATHCAPI_EXPORT_FUNCTION(int) XalanXPathAPIInitialize(); /** * Terminate Xerces and the XPath API. * * Should be called only once per process after deleting all * instances of XalanXPathEvaluator. Once a process has called * this function, it cannot use the API for the remaining * lifetime of the process. * * @return 0 for success, or a non-zero error code upon failure */ XALAN_XPATHCAPI_EXPORT_FUNCTION(int) XalanXPathAPITerminate(); /** * Create a XalanXPathEvaluator instance. * * @param theXalanHandle A pointer to the handle for the new instance. * @return 0 for success, or a non-zero error code upon failure */ XALAN_XPATHCAPI_EXPORT_FUNCTION(int) XalanCreateXPathEvaluator(XalanXPathEvaluatorHandle* theHandle); /** * Destroy a XalanXPathEvaluator instance. * * @param theXalanHandle The handle of the instance to destroy. * @return 0 for success, or a non-zero error code upon failure */ XALAN_XPATHCAPI_EXPORT_FUNCTION(int) XalanDestroyXPathEvaluator(XalanXPathEvaluatorHandle theXalanHandle); /** * Creates a compiled XPath instance. * * @param theXalanHandle The handle of XalanXPathEvaluatorHandle instance. * @param theXPathExpression The expression to compile * @param theXPathExpressionEncoding The encoding of the expression. If NULL or an empty string, the local code page is assumed. * @param theXPathHandle A pointer to the handle for the new instance * @return 0 for success, or a non-zero error code upon failure */ XALAN_XPATHCAPI_EXPORT_FUNCTION(int) XalanCreateXPath( XalanXPathEvaluatorHandle theXalanHandle, const char* theXPathExpression, const char* theXPathExpressionEncoding, XalanXPathHandle* theXPathHandle); /** * Destroys a compiled XPath instance. * * @param theXalanHandle The handle of XalanXPathEvaluatorHandle instance. * @param theXPathHandle The handle of XPath instance * @return 0 for success, or a non-zero error code upon failure */ XALAN_XPATHCAPI_EXPORT_FUNCTION(int) XalanDestroyXPath( XalanXPathEvaluatorHandle theXalanHandle, XalanXPathHandle theXPathHandle); /** * Evaluates a compiled XPath instance. * * @param theXalanHandle The handle of XalanXPathEvaluatorHandle instance. * @param theXPathHandle The pointer to handle for instance * @param theXML The XML document to use for evaluating the XPath expression * @param theResult A pointer to an int to receive the result. * @return 0 for success, or a non-zero error code upon failure */ XALAN_XPATHCAPI_EXPORT_FUNCTION(int) XalanEvaluateXPathAsBoolean( XalanXPathEvaluatorHandle theXalanHandle, XalanXPathHandle theXPathHandle, const char* theXML, int* theResult); /** * Evaluates an XPath expression * * @param theXalanHandle The handle of XalanXPathEvaluatorHandle instance. * @param theXPathExpression The expression to evaluate * @param theXPathExpressionEncoding The encoding of the expression. If NULL or an empty string, the local code page is assumed. * @param theXML The XML document to use for evaluating the XPath expression * @param theResult A pointer to an int to receive the result. * @return 0 for success, or a non-zero error code upon failure */ XALAN_XPATHCAPI_EXPORT_FUNCTION(int) XalanEvaluateXPathExpressionAsBoolean( XalanXPathEvaluatorHandle theXalanHandle, const char* theXPathExpression, const char* theXPathExpressionEncoding, const char* theXML, int* theResult); #if defined(__cplusplus) } #endif #endif xalan-c-1.11/c/src/xalanc/XalanExtensions/0002775000175000000640000000000012037700125017352 5ustar stevesambaxalan-c-1.11/c/src/xalanc/XalanExtensions/FunctionDifference.cpp0000664000175000000640000000566711731656102023637 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionDifference.hpp" #include #include #include XALAN_CPP_NAMESPACE_BEGIN FunctionDifference::FunctionDifference() { } FunctionDifference::~FunctionDifference() { } XObjectPtr FunctionDifference::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 2) { generalError( executionContext, context, locator); } assert(args[0].null() == false && args[1].null() == false); const NodeRefListBase& nodeset1 = args[0]->nodeset(); const NodeRefListBase& nodeset2 = args[1]->nodeset(); typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList theResult(executionContext); const NodeRefListBase::size_type theLength = nodeset1.getLength(); // Check the second node-set for nodes in the // first node-set. If a node is not found, // add it to the result. for (NodeRefListBase::size_type i = 0; i < theLength; ++i) { XalanNode* const theNode = nodeset1.item(i); assert(theNode != 0); if (nodeset2.indexOf(theNode) == NodeRefListBase::npos) { theResult->addNodeInDocOrder(theNode, executionContext); } } theResult->setDocumentOrder(); return executionContext.getXObjectFactory().createNodeSet(theResult); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionDifference* #endif FunctionDifference::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionDifference::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionAcceptsTwoArguments_1Param, "difference"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanExtensions/FunctionHasSameNodes.cpp0000664000175000000640000000541711731656102024110 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionHasSameNodes.hpp" #include #include #include XALAN_CPP_NAMESPACE_BEGIN FunctionHasSameNodes::FunctionHasSameNodes() { } FunctionHasSameNodes::~FunctionHasSameNodes() { } XObjectPtr FunctionHasSameNodes::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 2) { generalError( executionContext, context, locator); } assert(args[0].null() == false && args[1].null() == false); const NodeRefListBase& nodeset1 = args[0]->nodeset(); const NodeRefListBase& nodeset2 = args[1]->nodeset(); const NodeRefListBase::size_type theLength = nodeset1.getLength(); bool fResult = true; if (theLength != nodeset2.getLength()) { fResult = false; } else { for (NodeRefListBase::size_type i = 0; i < theLength && fResult == true; ++i) { XalanNode* const theNode = nodeset1.item(i); assert(theNode != 0); if (nodeset2.indexOf(theNode) == NodeRefListBase::npos) { fResult = false; } } } return executionContext.getXObjectFactory().createBoolean(fResult); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionHasSameNodes* #endif FunctionHasSameNodes::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionHasSameNodes::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionAcceptsTwoArguments_1Param, "has-same-nodes"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanExtensions/FunctionEvaluate.hpp0000664000175000000640000000421311731656102023342 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONEVALUATE_HEADER_GUARD_1357924680) #define FUNCTIONEVALUATE_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file... #include XALAN_CPP_NAMESPACE_BEGIN /** * XPath implementation of "node-set" function. */ class XALAN_XALANEXTENSIONS_EXPORT FunctionEvaluate : public Function { public: typedef Function ParentType; FunctionEvaluate(); virtual ~FunctionEvaluate(); using ParentType::execute; // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionEvaluate* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: // Not implemented... FunctionEvaluate& operator=(const FunctionEvaluate&); bool operator==(const FunctionEvaluate&) const; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONEVALUATE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanExtensions/FunctionIntersection.hpp0000664000175000000640000000430411731656102024243 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONINTERSECTION_HEADER_GUARD_1357924680) #define FUNCTIONINTERSECTION_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file... #include XALAN_CPP_NAMESPACE_BEGIN /** * XPath implementation of "intersection" function for NodeSets. */ class XALAN_XALANEXTENSIONS_EXPORT FunctionIntersection : public Function { public: typedef Function ParentType; FunctionIntersection(); virtual ~FunctionIntersection(); // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionIntersection* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: // Not implemented... FunctionIntersection& operator=(const FunctionIntersection&); bool operator==(const FunctionIntersection&) const; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONINTERSECTION_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanExtensions/XalanExtensions.cpp0000664000175000000640000002136611731656102023214 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanExtensions.hpp" #include "FunctionDifference.hpp" #include "FunctionDistinct.hpp" #include "FunctionEvaluate.hpp" #include "FunctionHasSameNodes.hpp" #include "FunctionIntersection.hpp" #include "FunctionNodeSet.hpp" #include XALAN_CPP_NAMESPACE_BEGIN static const XalanDOMChar s_extensionsNamespace[] = { XalanUnicode::charLetter_h, XalanUnicode::charLetter_t, XalanUnicode::charLetter_t, XalanUnicode::charLetter_p, XalanUnicode::charColon, XalanUnicode::charSolidus, XalanUnicode::charSolidus, XalanUnicode::charLetter_x, XalanUnicode::charLetter_m, XalanUnicode::charLetter_l, XalanUnicode::charFullStop, XalanUnicode::charLetter_a, XalanUnicode::charLetter_p, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_h, XalanUnicode::charLetter_e, XalanUnicode::charFullStop, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charLetter_g, XalanUnicode::charSolidus, XalanUnicode::charLetter_x, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, 0 }; static const XalanDOMChar s_differenceFunctionName[] = { XalanUnicode::charLetter_d, XalanUnicode::charLetter_i, XalanUnicode::charLetter_f, XalanUnicode::charLetter_f, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, 0 }; static const XalanDOMChar s_distinctFunctionName[] = { XalanUnicode::charLetter_d, XalanUnicode::charLetter_i, XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_c, XalanUnicode::charLetter_t, 0 }; static const XalanDOMChar s_evaluateFunctionName[] = { XalanUnicode::charLetter_e, XalanUnicode::charLetter_v, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_u, XalanUnicode::charLetter_a, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, 0 }; static const XalanDOMChar s_hasSameNodesFunctionName[] = { XalanUnicode::charLetter_h, XalanUnicode::charLetter_a, XalanUnicode::charLetter_s, XalanUnicode::charLetter_S, XalanUnicode::charLetter_a, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, XalanUnicode::charLetter_N, XalanUnicode::charLetter_o, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, 0 }; static const XalanDOMChar s_intersectionFunctionName[] = { XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, XalanUnicode::charLetter_s, XalanUnicode::charLetter_e, XalanUnicode::charLetter_c, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; static const XalanDOMChar s_nodeSetFunctionName1[] = { XalanUnicode::charLetter_n, XalanUnicode::charLetter_o, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charLetter_e, XalanUnicode::charLetter_t, 0 }; static const XalanDOMChar s_nodeSetFunctionName2[] = { XalanUnicode::charLetter_n, XalanUnicode::charLetter_o, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_s, XalanUnicode::charLetter_e, XalanUnicode::charLetter_t, 0 }; static const FunctionDifference s_differenceFunction; static const FunctionDistinct s_distinctFunction; static const FunctionEvaluate s_evaluateFunction; static const FunctionHasSameNodes s_hasSameNodesFunction; static const FunctionIntersection s_intersectionFunction; static const FunctionNodeSet s_nodesetFunction(true); static const XalanExtensionsInstaller::FunctionTableEntry theFunctionTable[] = { { s_differenceFunctionName, &s_differenceFunction }, { s_distinctFunctionName, &s_distinctFunction }, { s_evaluateFunctionName, &s_evaluateFunction }, { s_hasSameNodesFunctionName, &s_hasSameNodesFunction }, { s_intersectionFunctionName, &s_intersectionFunction }, { s_nodeSetFunctionName1, &s_nodesetFunction }, { s_nodeSetFunctionName2, &s_nodesetFunction }, { 0, 0 } }; void XalanExtensionsInstaller::installLocal(XPathEnvSupportDefault& theSupport) { doInstallLocal(s_extensionsNamespace, theFunctionTable, theSupport); } void XalanExtensionsInstaller::installGlobal(MemoryManager& theManager) { doInstallGlobal( theManager, s_extensionsNamespace, theFunctionTable); } void XalanExtensionsInstaller::uninstallLocal(XPathEnvSupportDefault& theSupport) { doUninstallLocal(s_extensionsNamespace, theFunctionTable, theSupport); } void XalanExtensionsInstaller::uninstallGlobal(MemoryManager& theManager) { doUninstallGlobal(theManager, s_extensionsNamespace, theFunctionTable); } void XalanExtensionsInstaller::doInstallLocal( const XalanDOMChar* theNamespace, const FunctionTableEntry theFunctionTable[], XPathEnvSupportDefault& theSupport) { assert(theNamespace != 0); const XalanDOMString theNamespaceString(theNamespace, theSupport.getMemoryManager()); XalanDOMString theFunctionName( theSupport.getMemoryManager()); for(const FunctionTableEntry* theEntry = theFunctionTable; theEntry->theFunctionName != 0; ++theEntry) { assert(theEntry->theFunction != 0); theFunctionName = theEntry->theFunctionName; theSupport.installExternalFunctionLocal(theNamespaceString, theFunctionName, *theEntry->theFunction); } } void XalanExtensionsInstaller::doInstallGlobal( MemoryManager& theManager, const XalanDOMChar* theNamespace, const FunctionTableEntry theFunctionTable[]) { assert(theNamespace != 0); const XalanDOMString theNamespaceString(theNamespace, theManager); XalanDOMString theFunctionName(theManager); for(const FunctionTableEntry* theEntry = theFunctionTable; theEntry->theFunctionName != 0; ++theEntry) { assert(theEntry->theFunction != 0); theFunctionName = theEntry->theFunctionName; XPathEnvSupportDefault::installExternalFunctionGlobal(theNamespaceString, theFunctionName, *theEntry->theFunction); } } void XalanExtensionsInstaller::doUninstallLocal( const XalanDOMChar* theNamespace, const FunctionTableEntry theFunctionTable[], XPathEnvSupportDefault& theSupport) { assert(theNamespace != 0); const XalanDOMString theNamespaceString(theNamespace, theSupport.getMemoryManager()); XalanDOMString theFunctionName(theSupport.getMemoryManager()); for(const FunctionTableEntry* theEntry = theFunctionTable; theEntry->theFunctionName != 0; ++theEntry) { theFunctionName = theEntry->theFunctionName; theSupport.uninstallExternalFunctionLocal(theNamespaceString, theFunctionName); } } void XalanExtensionsInstaller::doUninstallGlobal( MemoryManager& theManager, const XalanDOMChar* theNamespace, const FunctionTableEntry theFunctionTable[]) { assert(theNamespace != 0); const XalanDOMString theNamespaceString(theNamespace, theManager); XalanDOMString theFunctionName(theManager); for(const FunctionTableEntry* theEntry = theFunctionTable; theEntry->theFunctionName != 0; ++theEntry) { theFunctionName = theEntry->theFunctionName; XPathEnvSupportDefault::uninstallExternalFunctionGlobal(theNamespaceString, theFunctionName); } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanExtensions/XalanExtensionsDefinitions.hpp0000664000175000000640000000255011731656102025407 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANEXTENSIONS_DEFINITIONS_HEADER_GUARD_1357924680) #define XALANEXTENSIONS_DEFINITIONS_HEADER_GUARD_1357924680 #include #if defined(XALAN_BUILD_DLL) #define XALAN_XALANEXTENSIONS_EXPORT XALAN_PLATFORM_EXPORT #define XALAN_XALANEXTENSIONS_EXPORT_FUNCTION(T) XALAN_PLATFORM_EXPORT_FUNCTION(T) #else #define XALAN_XALANEXTENSIONS_EXPORT XALAN_PLATFORM_IMPORT #define XALAN_XALANEXTENSIONS_EXPORT_FUNCTION(T) XALAN_PLATFORM_IMPORT_FUNCTION(T) #endif #endif // XALANEXTENSIONS_DEFINITIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanExtensions/FunctionDifference.hpp0000664000175000000640000000424111731656102023627 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONDIFFERENCE_HEADER_GUARD_1357924680) #define FUNCTIONDIFFERENCE_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file... #include XALAN_CPP_NAMESPACE_BEGIN /** * XPath implementation of "difference" function. */ class XALAN_XALANEXTENSIONS_EXPORT FunctionDifference : public Function { public: typedef Function ParentType; FunctionDifference(); virtual ~FunctionDifference(); // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionDifference* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: // Not implemented... FunctionDifference& operator=(const FunctionDifference&); bool operator==(const FunctionDifference&) const; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONDIFFERENCE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanExtensions/FunctionHasSameNodes.hpp0000664000175000000640000000430611731656102024111 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONHASSAMENODES_HEADER_GUARD_1357924680) #define FUNCTIONHASSAMENODES_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file... #include XALAN_CPP_NAMESPACE_BEGIN /** * XPath implementation of "has-same-nodes" function for NodeSets. */ class XALAN_XALANEXTENSIONS_EXPORT FunctionHasSameNodes : public Function { public: typedef Function ParentType; FunctionHasSameNodes(); virtual ~FunctionHasSameNodes(); // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionHasSameNodes* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: // Not implemented... FunctionHasSameNodes& operator=(const FunctionHasSameNodes&); bool operator==(const FunctionHasSameNodes&) const; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONHASSAMENODES_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanExtensions/FunctionDistinct.cpp0000664000175000000640000000704111731656102023352 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionDistinct.hpp" #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN FunctionDistinct::FunctionDistinct() { } FunctionDistinct::~FunctionDistinct() { } XObjectPtr FunctionDistinct::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 1) { generalError( executionContext, context, locator); } assert(args[0].null() == false); const NodeRefListBase& nodeset = args[0]->nodeset(); typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList theResult(executionContext); const NodeRefListBase::size_type theLength = nodeset.getLength(); if (theLength == 1) { theResult->addNode(nodeset.item(0)); } else if (theLength > 1) { const GetCachedString theGuard(executionContext); XalanDOMString& theCachedString = theGuard.get(); typedef XalanSet SetType; SetType theStrings(executionContext.getMemoryManager()); // Check to make sure each node has a unique // string value. for (NodeRefListBase::size_type i = 0; i < theLength; ++i) { XalanNode* const theNode = nodeset.item(i); assert(theNode != 0); DOMServices::getNodeData(*theNode, executionContext, theCachedString); if (theStrings.find(theCachedString) == theStrings.end()) { theResult->addNodeInDocOrder(theNode, executionContext); theStrings.insert(theCachedString); } theCachedString.clear(); } } theResult->setDocumentOrder(); return executionContext.getXObjectFactory().createNodeSet(theResult); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionDistinct* #endif FunctionDistinct::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionDistinct::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionAcceptsOneArgument_1Param, "distinct"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanExtensions/FunctionNodeSet.cpp0000664000175000000640000001211711731656102023132 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionNodeSet.hpp" #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanDocumentFragmentXNodeSetBaseProxy : public XNodeSetBase { public: XalanDocumentFragmentXNodeSetBaseProxy( XPathExecutionContext& theExecutionContext, const XObjectPtr& theXObject) : XNodeSetBase(theExecutionContext.getMemoryManager()), m_xobject(theXObject), m_proxy(theXObject->rtree()) { } static XalanDocumentFragmentXNodeSetBaseProxy* create( XPathExecutionContext& theExecutionContext, const XObjectPtr& theXObject) { XalanDocumentFragmentXNodeSetBaseProxy* theResult; return XalanConstruct( theExecutionContext.getMemoryManager(), theResult, theExecutionContext, theXObject); } XalanDocumentFragmentXNodeSetBaseProxy( MemoryManager& theManager, const XalanDocumentFragmentXNodeSetBaseProxy& theSource) : XNodeSetBase(theSource, theManager), m_xobject(theSource.m_xobject), m_proxy(theSource.m_proxy) { } virtual ~XalanDocumentFragmentXNodeSetBaseProxy() { } virtual const NodeRefListBase& nodeset(XPathExecutionContext& /* theExecutionContext */) const { return m_proxy; } virtual const NodeRefListBase& nodeset() const { return m_proxy; } virtual void dereferenced() { XalanDestroy(getMemoryManager(), *this); } virtual XalanNode* item(size_type index) const { return m_proxy.item(index); } virtual size_type getLength() const { return m_proxy.getLength(); } private: const XObjectPtr m_xobject; const XalanDocumentFragmentNodeRefListBaseProxy m_proxy; }; FunctionNodeSet::FunctionNodeSet(bool convertString) : m_convertString(convertString) { } FunctionNodeSet::~FunctionNodeSet() { } XObjectPtr FunctionNodeSet::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 1) { generalError( executionContext, context, locator); } assert(args[0].null() == false); const XObject::eObjectType theType = args[0]->getType(); if (theType == XObject::eTypeResultTreeFrag || (theType == XObject::eTypeString && m_convertString == true)) { const XObjectPtr theResult( XalanDocumentFragmentXNodeSetBaseProxy::create( executionContext, args[0])); executionContext.getXObjectFactory().holdReference(theResult); return theResult; } else { const GetCachedString theGuard(executionContext); XalanDOMString& theMessage = theGuard.get(); executionContext.problem( XPathExecutionContext::eXPath, XPathExecutionContext::eWarning, getInvalidArgumentTypeError(theMessage), locator, context); return args[0]; } } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionNodeSet* #endif FunctionNodeSet::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionNodeSet::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionAcceptsOneArgument_1Param, "nodeset"); } const XalanDOMString& FunctionNodeSet::getInvalidArgumentTypeError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::InvalidArgumentTypeFunction_1Param, "nodeset"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanExtensions/XalanExtensions.hpp0000664000175000000640000000474711731656102023225 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANEXTENSIONS_HEADER_GUARD_1357924680) #define XALANEXTENSIONS_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN class Function; class XPathEnvSupportDefault; class XALAN_XALANEXTENSIONS_EXPORT XalanExtensionsInstaller { public: struct FunctionTableEntry { const XalanDOMChar* theFunctionName; const Function* theFunction; }; static void installLocal(XPathEnvSupportDefault& theSupport); static void installGlobal(MemoryManager& theManager); static void uninstallLocal(XPathEnvSupportDefault& theSupport); static void uninstallGlobal(MemoryManager& theManager); protected: static void doInstallLocal( const XalanDOMChar* theNamespace, const FunctionTableEntry theFunctionTable[], XPathEnvSupportDefault& theSupport); static void doInstallGlobal( MemoryManager& theManager, const XalanDOMChar* theNamespace, const FunctionTableEntry theFunctionTable[]); static void doUninstallLocal( const XalanDOMChar* theNamespace, const FunctionTableEntry theFunctionTable[], XPathEnvSupportDefault& theSupport); static void doUninstallGlobal( MemoryManager& theManager, const XalanDOMChar* theNamespace, const FunctionTableEntry theFunctionTable[]); }; XALAN_CPP_NAMESPACE_END #endif // XALANEXTENSIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanExtensions/FunctionDistinct.hpp0000664000175000000640000000421511731656102023357 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONDISTINCT_HEADER_GUARD_1357924680) #define FUNCTIONDISTINCT_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file... #include XALAN_CPP_NAMESPACE_BEGIN /** * XPath implementation of "difference" function. */ class XALAN_XALANEXTENSIONS_EXPORT FunctionDistinct : public Function { public: typedef Function ParentType; FunctionDistinct(); virtual ~FunctionDistinct(); // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionDistinct* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: // Not implemented... FunctionDistinct& operator=(const FunctionDistinct&); bool operator==(const FunctionDistinct&) const; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONDISTINCT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanExtensions/FunctionEvaluate.cpp0000664000175000000640000001177211731656102023345 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionEvaluate.hpp" #include #include #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN FunctionEvaluate::FunctionEvaluate() { } FunctionEvaluate::~FunctionEvaluate() { } inline XObjectPtr doExecute( XPathExecutionContext& executionContext, XalanNode* context, const XalanDOMString& expression, const PrefixResolver& resolver, const Locator* locator) { // $$$ ToDo: Consider moving all of this into a member function of // XPathExecutionContext. XPathProcessorImpl theProcessor(executionContext.getMemoryManager()); XPathConstructionContextDefault theConstructionContext(executionContext.getMemoryManager()); XPath theXPath(executionContext.getMemoryManager(), locator); theProcessor.initXPath( theXPath, theConstructionContext, expression, resolver, locator); return theXPath.execute(context, resolver, executionContext); } inline XObjectPtr doExecute( XPathExecutionContext& executionContext, XalanNode* context, const XalanDOMString& expression, const XalanNode* resolver, const Locator* locator) { assert(resolver == 0 || resolver->getNodeType() == XalanNode::ELEMENT_NODE); ElementPrefixResolverProxy theProxy(static_cast(resolver), executionContext.getMemoryManager()); return doExecute(executionContext, context, expression, theProxy, locator); } XObjectPtr FunctionEvaluate::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 1) { generalError( executionContext, context, locator); } assert(args[0].null() == false); const XalanDOMString& theExpression = args[0]->str(executionContext); const PrefixResolver* const theResolver = executionContext.getPrefixResolver(); if (theResolver != 0) { return doExecute(executionContext, context, theExpression, *theResolver, locator); } else { const XalanNode* resolverNode = context; if (resolverNode->getNodeType() != XalanNode::ELEMENT_NODE) { resolverNode = DOMServices::getParentOfNode(*resolverNode); if (context->getNodeType() != XalanNode::ELEMENT_NODE) { const XPathExecutionContext::GetCachedString theString(executionContext); executionContext.problem( XPathExecutionContext::eXPath, XPathExecutionContext::eWarning, XalanMessageLoader::getMessage( theString.get(), XalanMessages::NoPrefixResolverAvailable), locator, context); resolverNode = 0; } } return doExecute(executionContext, context, theExpression, resolverNode, locator); } } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionEvaluate* #endif FunctionEvaluate::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionEvaluate::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionAcceptsOneArgument_1Param, "evaluate"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanExtensions/FunctionIntersection.cpp0000664000175000000640000000551011731656102024236 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionIntersection.hpp" #include #include #include XALAN_CPP_NAMESPACE_BEGIN FunctionIntersection::FunctionIntersection() { } FunctionIntersection::~FunctionIntersection() { } XObjectPtr FunctionIntersection::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 2) { generalError( executionContext, context, locator); } assert(args[0].null() == false && args[1].null() == false); const NodeRefListBase& nodeset1 = args[0]->nodeset(); const NodeRefListBase& nodeset2 = args[1]->nodeset(); typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList theResult(executionContext); const NodeRefListBase::size_type theLength = nodeset1.getLength(); for (NodeRefListBase::size_type i = 0; i < theLength; ++i) { XalanNode* const theNode = nodeset1.item(i); assert(theNode != 0); if (nodeset2.indexOf(theNode) != NodeRefListBase::npos) { theResult->addNodeInDocOrder(theNode, executionContext); } } theResult->setDocumentOrder(); return executionContext.getXObjectFactory().createNodeSet(theResult); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionIntersection* #endif FunctionIntersection::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionIntersection::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionAcceptsTwoArguments_1Param, "intersection"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanExtensions/FunctionNodeSet.hpp0000664000175000000640000000500311731656102023133 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONNODESET_HEADER_GUARD_1357924680) #define FUNCTIONNODESET_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file... #include #include XALAN_CPP_NAMESPACE_BEGIN /** * XPath implementation of "node-set" function. */ class XALAN_XALANEXTENSIONS_EXPORT FunctionNodeSet : public Function { public: typedef Function ParentType; /** * Constructor. * * @param convertString If true, strings as well as result tree fragments will be converted to nodesets. */ FunctionNodeSet(bool convertString = true); virtual ~FunctionNodeSet(); // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionNodeSet* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; virtual const XalanDOMString& getInvalidArgumentTypeError(XalanDOMString& theResult) const; private: // Not implemented... FunctionNodeSet& operator=(const FunctionNodeSet&); bool operator==(const FunctionNodeSet&) const; // Data members... const bool m_convertString; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONNODESET_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/Include/0002775000175000000640000000000012037700125015612 5ustar stevesambaxalan-c-1.11/c/src/xalanc/Include/XalanMemoryManagement.hpp0000664000175000000640000003132511731656102022563 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANMEMORYMANAGEMENT_HEADER_GUARD_1357924680) #define XALANMEMORYMANAGEMENT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN XALAN_USING_XERCES(MemoryManager) typedef MemoryManager MemoryManagerType; class XALAN_PLATFORM_EXPORT XalanMemoryManager : public MemoryManager { public: #if XERCES_VERSION_MAJOR < 3 #if defined(XALAN_STRICT_ANSI_HEADERS) typedef std::size_t size_type; #else typedef size_t size_type; #endif #else typedef XalanSize_t size_type; #endif XalanMemoryManager(); virtual ~XalanMemoryManager(); virtual void* allocate(size_type size) = 0; virtual void deallocate(void* pointer) = 0; virtual MemoryManager* getExceptionMemoryManager() = 0; static MemoryManager& getExceptionMemoryManager(MemoryManager& theMemoryManager) { #if XERCES_VERSION_MAJOR < 3 return theMemoryManager; #else assert(theMemoryManager.getExceptionMemoryManager() != 0); return *theMemoryManager.getExceptionMemoryManager(); #endif } protected: XalanMemoryManager(const XalanMemoryManager& theSource); XalanMemoryManager& operator=(const XalanMemoryManager& /* theRHS */) { return *this; } }; class XalanAllocationGuard { public: #if defined(XALAN_STRICT_ANSI_HEADERS) typedef std::size_t size_type; #else typedef size_t size_type; #endif XalanAllocationGuard( MemoryManager& theMemoryManager, void* thePointer) : m_memoryManager(theMemoryManager), m_pointer(thePointer) { } XalanAllocationGuard( MemoryManager& theMemoryManager, size_type theSize) : m_memoryManager(theMemoryManager), m_pointer(theMemoryManager.allocate(theSize)) { } ~XalanAllocationGuard() { if (m_pointer != 0) { m_memoryManager.deallocate(m_pointer); } } void* get() const { return m_pointer; } void release() { m_pointer = 0; } private: // Data members... MemoryManager& m_memoryManager; void* m_pointer; }; template void XalanDestroy(Type& theArg) { theArg.~Type(); } template void XalanDestroy(Type* theArg) { if (theArg != 0) { theArg->~Type(); } } template void XalanDestroy( MemoryManager& theMemoryManager, Type* theArg) { if (theArg != 0) { XalanDestroy(*theArg); theMemoryManager.deallocate(theArg); } } template void XalanDestroy( MemoryManager& theMemoryManager, Type& theArg) { XalanDestroy(theArg); theMemoryManager.deallocate(&theArg); } template Type* XalanConstruct( MemoryManager& theMemoryManager, Type*& theInstance) { XalanAllocationGuard theGuard( theMemoryManager, sizeof(Type)); theInstance = new (theGuard.get()) Type; theGuard.release(); return theInstance; } template< class Type, class Param1Type> Type* XalanConstruct( MemoryManager& theMemoryManager, Type*& theInstance, const Param1Type& theParam1) { XalanAllocationGuard theGuard( theMemoryManager, sizeof(Type)); theInstance = new (theGuard.get()) Type(theParam1); theGuard.release(); return theInstance; } template< class Type, class Param1Type> Type* XalanConstruct( MemoryManager& theMemoryManager, Type*& theInstance, Param1Type& theParam1) { XalanAllocationGuard theGuard( theMemoryManager, sizeof(Type)); theInstance = new (theGuard.get()) Type(theParam1); theGuard.release(); return theInstance; } template< class Type, class Param1Type, class Param2Type> Type* XalanConstruct( MemoryManager& theMemoryManager, Type*& theInstance, Param1Type& theParam1, const Param2Type& theParam2) { XalanAllocationGuard theGuard( theMemoryManager, sizeof(Type)); theInstance = new (theGuard.get()) Type(theParam1, theParam2); theGuard.release(); return theInstance; } template< class Type, class Param1Type, class Param2Type, class Param3Type, class Param4Type> Type* XalanConstruct( MemoryManager& theMemoryManager, Type*& theInstance, const Param1Type* theParam1, const Param2Type* theParam2, const Param3Type* theParam3, Param4Type& theParam4) { XalanAllocationGuard theGuard( theMemoryManager, sizeof(Type)); theInstance = new (theGuard.get()) Type(theParam1, theParam2, theParam3, theParam4); theGuard.release(); return theInstance; } template< class Type, class Param1Type, class Param2Type, class Param3Type, class Param4Type, class Param5Type, class Param6Type> Type* XalanConstruct( MemoryManager& theMemoryManager, Type*& theInstance, const Param1Type* theParam1, const Param2Type* theParam2, const Param3Type* theParam3, const Param4Type* theParam4, const Param5Type* theParam5, Param6Type& theParam6) { XalanAllocationGuard theGuard( theMemoryManager, sizeof(Type)); theInstance = new (theGuard.get()) Type( theParam1, theParam2, theParam3, theParam4, theParam5, theParam6); theGuard.release(); return theInstance; } template< class Type, class Param1Type, class Param2Type, class Param3Type> Type* XalanConstruct( MemoryManager& theMemoryManager, Type*& theInstance, Param1Type& theParam1, const Param2Type& theParam2, Param3Type& theParam3) { XalanAllocationGuard theGuard( theMemoryManager, sizeof(Type)); theInstance = new (theGuard.get()) Type(theParam1, theParam2, theParam3); theGuard.release(); return theInstance; } template< class Type, class Param1Type, class Param2Type, class Param3Type, class Param4Type, class Param5Type> Type* XalanConstruct( MemoryManager& theMemoryManager, Type*& theInstance, Param1Type& theParam1, Param2Type& theParam2, const Param3Type& theParam3, const Param4Type& theParam4, const Param5Type& theParam5) { XalanAllocationGuard theGuard( theMemoryManager, sizeof(Type)); theInstance = new (theGuard.get()) Type(theParam1, theParam2, theParam3, theParam4, theParam5); theGuard.release(); return theInstance; } template< class Type, class Param1Type, class Param2Type, class Param3Type, class Param4Type, class Param5Type, class Param6Type> Type* XalanConstruct( MemoryManager& theMemoryManager, Type*& theInstance, Param1Type& theParam1, Param2Type& theParam2, const Param3Type& theParam3, const Param4Type& theParam4, const Param5Type& theParam5, const Param6Type& theParam6) { XalanAllocationGuard theGuard( theMemoryManager, sizeof(Type)); theInstance = new (theGuard.get()) Type(theParam1, theParam2, theParam3, theParam4, theParam5, theParam6); theGuard.release(); return theInstance; } template Type* XalanCopyConstruct( MemoryManager& theMemoryManager, const Type& theSource) { XalanAllocationGuard theGuard( theMemoryManager, sizeof(Type)); Type* const theInstance = new (theGuard.get()) Type(theSource); theGuard.release(); return theInstance; } template< class Type, class Param1Type> Type* XalanCopyConstruct( MemoryManager& theMemoryManager, const Type& theSource, Param1Type& theParam1) { XalanAllocationGuard theGuard( theMemoryManager, sizeof(Type)); Type* const theInstance = new (theGuard.get()) Type(theSource, theParam1); theGuard.release(); return theInstance; } class XALAN_PLATFORM_EXPORT XalanMemMgrs { public: static MemoryManager& getDummyMemMgr(); static MemoryManager& getDefaultXercesMemMgr(); static MemoryManager& getDefault() { return getDefaultXercesMemMgr(); } }; #if defined (XALAN_DEVELOPMENT) #define XALAN_DEFAULT_CONSTRUCTOR_MEMMGR #define XALAN_DEFAULT_MEMMGR = XalanMemMgrs::getDummyMemMgr() #else #define XALAN_DEFAULT_CONSTRUCTOR_MEMMGR = XalanMemMgrs::getDefaultXercesMemMgr() #define XALAN_DEFAULT_MEMMGR = XalanMemMgrs::getDefaultXercesMemMgr() #endif template struct ConstructValueWithNoMemoryManager { ConstructValueWithNoMemoryManager(MemoryManager& /*mgr*/) : value() { } C value; }; template struct ConstructValueWithMemoryManager { ConstructValueWithMemoryManager(MemoryManager& mgr) : value(mgr) { } C value; }; template struct ConstructWithNoMemoryManager { typedef ConstructValueWithNoMemoryManager ConstructableType; static C* construct(C* address, MemoryManager& /* mgr */) { return (C*) new (address) C(); } static C* construct(C* address, const C& theRhs, MemoryManager& /* mgr */) { return (C*) new (address) C(theRhs); } }; template struct ConstructWithMemoryManager { typedef ConstructValueWithMemoryManager ConstructableType; static C* construct(C* address, MemoryManager& mgr) { return (C*) new (address) C(mgr); } static C* construct(C* address, const C& theRhs, MemoryManager& mgr) { return (C*) new (address) C(theRhs, mgr); } }; template struct MemoryManagedConstructionTraits { typedef ConstructWithNoMemoryManager Constructor; }; template struct ExplicitMemoryManagedConstructionTraits { typedef ConstructWithMemoryManager Constructor; }; #define XALAN_USES_MEMORY_MANAGER(Type) \ template<> \ struct MemoryManagedConstructionTraits \ { \ typedef ConstructWithMemoryManager Constructor; \ }; template struct ConstructWithMemoryManagerTraits { typedef ConstructWithMemoryManager Constructor; }; template struct ConstructWithNoMemoryManagerTraits { typedef ConstructWithNoMemoryManager Constructor; }; XALAN_CPP_NAMESPACE_END #endif // XALANMEMORYMANAGEMENT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/Include/XalanList.hpp0000664000175000000640000003102111731656102020222 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANLIST_HEADER_GUARD_1357924680) #define XALANLIST_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN template struct XalanListIteratorTraits { typedef Value value_type; typedef Value& reference; typedef Value* pointer; }; template struct XalanListConstIteratorTraits { typedef Value value_type; typedef const Value& reference; typedef const Value* pointer; }; template struct XalanListIteratorBase { typedef typename XalanListTraits::value_type value_type; typedef typename XalanListTraits::reference reference; typedef typename XalanListTraits::pointer pointer; typedef ptrdiff_t difference_type; typedef XALAN_STD_QUALIFIER bidirectional_iterator_tag iterator_category; typedef XalanListIteratorBase, Node> iterator; XalanListIteratorBase(Node& node) : currentNode(&node) { } XalanListIteratorBase(const iterator& theRhs) : currentNode(theRhs.currentNode) { } XalanListIteratorBase operator++() { currentNode = currentNode->next; return *this; } XalanListIteratorBase operator++(int) { Node& origNode = *currentNode; currentNode = currentNode->next; return XalanListIteratorBase(origNode); } XalanListIteratorBase operator--() { currentNode = currentNode->prev; return *this; } XalanListIteratorBase operator-(difference_type decrement) const { Node* node = currentNode; while (decrement > 0) { node = node->prev; --decrement; }; return XalanListIteratorBase(*node); } reference operator*() const { return currentNode->value; } pointer operator->() const { return ¤tNode->value; } const XalanListIteratorBase & operator=(const XalanListIteratorBase& theRhs) { currentNode = theRhs.currentNode; return *this; } bool operator!=(const XalanListIteratorBase& theRhs) const { return !operator==(theRhs); } bool operator==(const XalanListIteratorBase& theRhs) const { return currentNode == theRhs.currentNode; } Node& node() { return *currentNode; } Node* currentNode; }; /** * Xalan implementation of a doubly linked list */ template class XalanList { public: typedef Type value_type; typedef value_type* pointer; typedef const value_type* const_pointer; typedef value_type& reference; typedef const value_type& const_reference; typedef size_t size_type; typedef XalanList ThisType; struct Node { Node( const value_type & theValue, Node& prevNode, Node& nextNode) : value(theValue), prev(&prevNode), next(&nextNode) { } value_type value; Node* prev; Node* next; }; typedef XalanListIteratorBase, Node> iterator; typedef XalanListIteratorBase, Node> const_iterator; #if defined(XALAN_HAS_STD_ITERATORS) typedef XALAN_STD_QUALIFIER reverse_iterator reverse_iterator_; typedef XALAN_STD_QUALIFIER reverse_iterator const_reverse_iterator_; #elif defined(XALAN_RW_NO_CLASS_PARTIAL_SPEC) typedef typename iterator::iterator_category iterator_category; // This is a specific case for the Rogue Wave STL on Solaris. typedef XALAN_STD_QUALIFIER reverse_iterator< iterator, iterator_category, value_type> reverse_iterator_; typedef XALAN_STD_QUALIFIER reverse_iterator< const_iterator, iterator_category, const value_type> const_reverse_iterator_; #else typedef XALAN_STD_QUALIFIER reverse_iterator< iterator, value_type> reverse_iterator_; typedef XALAN_STD_QUALIFIER reverse_iterator< const_iterator, value_type, const_reference> const_reverse_iterator_; #endif typedef reverse_iterator_ reverse_iterator; typedef const_reverse_iterator_ const_reverse_iterator; typedef typename MemoryManagedConstructionTraits::Constructor Constructor; XalanList( MemoryManager& theManager) : m_memoryManager(&theManager), m_listHead(0), m_freeListHeadPtr(0) { } ~XalanList() { if (m_listHead != 0) { iterator pos = begin(); while (pos != end()) { destroyNode(pos++.node()); } Node * freeNode = m_freeListHeadPtr; while (freeNode != 0) { Node * nextNode = freeNode->next; deallocate(freeNode); freeNode = nextNode; } deallocate(m_listHead); } } MemoryManager& getMemoryManager() { assert(m_memoryManager != 0 ); return *m_memoryManager; } const MemoryManager& getMemoryManager() const { assert(m_memoryManager != 0 ); return *m_memoryManager; } iterator begin() { return iterator(*(getListHead().next)); } const_iterator begin() const { return const_iterator(*(getListHead().next)); } iterator end() { return iterator(getListHead()); } const_iterator end() const { return const_iterator(getListHead()); } reverse_iterator rbegin() { return reverse_iterator(end()); } const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } reverse_iterator rend() { return reverse_iterator(begin()); } const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } reference front() { return *begin(); } reference back() { return *(--end()); } size_type size() const { size_type size = 0; const_iterator item = begin(); while (item != end()) { ++size; ++item; } return size; } bool empty() const { return (begin() == end()) != 0; } void push_back(const value_type& data) { constructNode(data, end()); } void push_front(const value_type& data) { constructNode(data, begin()); } void pop_front() { erase(begin()); } void pop_back() { erase(--end()); } iterator insert(const iterator& pos, const value_type& value) { return iterator(constructNode(value,pos)); } void erase(iterator pos) { assert(pos != end()); freeNode(pos.node()); } void splice( iterator pos, #if defined(NDEBUG) ThisType& /* list */, #else ThisType& list, #endif iterator toInsert) { assert(m_memoryManager == list.m_memoryManager); if (pos != toInsert) { Node & posNode = pos.node(); Node & toInsertNode = toInsert.node(); toInsertNode.prev->next = toInsertNode.next; toInsertNode.next->prev = toInsertNode.prev; toInsertNode.prev = posNode.prev; toInsertNode.next = &posNode; posNode.prev->next = &toInsertNode; posNode.prev = &toInsertNode; } } void splice( iterator pos, #if defined(NDEBUG) ThisType& /* list */, #else ThisType& list, #endif iterator toInsertFirst, iterator toInsertLast) { assert(m_memoryManager == list.m_memoryManager); if (toInsertFirst != toInsertLast) { Node & posNode = pos.node(); Node & toInsertFirstNode = toInsertFirst.node(); Node & toInsertLastNode = *(toInsertLast.node().prev); toInsertFirstNode.prev->next = toInsertLastNode.next; toInsertLastNode.next->prev = toInsertFirstNode.prev; toInsertFirstNode.prev = posNode.prev; toInsertLastNode.next = &posNode; posNode.prev->next = &toInsertFirstNode; posNode.prev = &toInsertLastNode; } } void clear() { iterator pos = begin(); while (pos != end()) { freeNode(pos++.node()); } } void swap(ThisType& theRHS) { #if defined(XALAN_NO_STD_NAMESPACE) ::swap(m_memoryManager, theRHS.m_memoryManager); ::swap(m_listHead, theRHS.m_listHead); ::swap(m_freeListHeadPtr, theRHS.m_freeListHeadPtr); #else XALAN_STD_QUALIFIER swap(m_memoryManager, theRHS.m_memoryManager); XALAN_STD_QUALIFIER swap(m_listHead, theRHS.m_listHead); XALAN_STD_QUALIFIER swap(m_freeListHeadPtr, theRHS.m_freeListHeadPtr); #endif } protected: Node& constructNode(const value_type& data, iterator pos) { Node * newNode = 0; Node * nextFreeNode = 0; if (m_freeListHeadPtr != 0) { newNode = m_freeListHeadPtr; nextFreeNode = m_freeListHeadPtr->next; } else { m_freeListHeadPtr = allocate(1); newNode = m_freeListHeadPtr; } Constructor::construct(&newNode->value, data, *m_memoryManager); new (&newNode->prev) Node*(pos.node().prev); new (&newNode->next) Node*(&(pos.node())); pos.node().prev->next = newNode; pos.node().prev = newNode; m_freeListHeadPtr = nextFreeNode; return *newNode; } void freeNode(Node& node) { node.prev->next = node.next; node.next->prev = node.prev; node.~Node(); node.prev = 0; node.next = m_freeListHeadPtr; m_freeListHeadPtr = &node; } void destroyNode(Node& node) { assert(&node != m_listHead); node.~Node(); deallocate(&node); } Node& getListHead() { if (0 == m_listHead) { m_listHead = allocate(1); m_listHead->next = m_listHead; m_listHead->prev = m_listHead; } return *m_listHead; } Node& getListHead() const { return const_cast(this)->getListHead(); } Node* allocate(size_type size) { const size_type theBytesNeeded = size * sizeof(Node); assert(m_memoryManager != 0); void* pointer = m_memoryManager->allocate(theBytesNeeded); assert( pointer != 0 ); return (Node*) pointer; } void deallocate(Node* pointer) { assert(m_memoryManager != 0); m_memoryManager->deallocate(pointer); } MemoryManager * m_memoryManager; Node* m_listHead; Node* m_freeListHeadPtr; private: // not defined XalanList(); XalanList(const XalanList& theRhs); XalanList& operator=(const XalanList& theRhs); }; XALAN_CPP_NAMESPACE_END #endif // XALANLIST_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/Include/OS400Definitions.hpp0000664000175000000640000000323611731656102021273 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(OS400DEFINITIONS_HEADER_GUARD_1357924680) #define OS400DEFINITIONS_HEADER_GUARD_1357924680 // --------------------------------------------------------------------------- // A define in the build for each project is also used to control whether // the export keyword is from the project's viewpoint or the client's. // These defines provide the platform specific keywords that they need // to do this. // --------------------------------------------------------------------------- #define XALAN_PLATFORM_EXPORT #define XALAN_PLATFORM_IMPORT #define XALAN_PLATFORM_EXPORT_FUNCTION(T) T XALAN_PLATFORM_EXPORT #define XALAN_PLATFORM_IMPORT_FUNCTION(T) T XALAN_PLATFORM_IMPORT #define XALAN_POSIX2_AVAILABLE #define XALAN_EXPLICIT_SCOPE_IN_TEMPLATE_BUG #define XALAN_NEW_STD_ALLOCATOR #define XALAN_HAS_CPP_NAMESPACE #endif // OS400DEFINITIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/Include/XalanMap.hpp0000664000175000000640000004364511731656102020043 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANMAP_HEADER_GUARD_1357924680) #define XALANMAP_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN #if defined(_MSC_VER) #pragma warning(push) #pragma warning(disable: 4189) #endif typedef size_t size_type; template class XalanHasher : public XALAN_STD_QUALIFIER unary_function { public: size_type operator()(const Key& key) const { const char *byteArray = reinterpret_cast(&key); size_type result = 0; for (size_type i = 0; i < sizeof(Key); ++i) { result = (result << 1) ^ byteArray[i]; } return result; } }; template struct XalanMapKeyTraits { typedef XalanHasher Hasher; typedef XALAN_STD_QUALIFIER equal_to Comparator; }; template struct XalanHashMemberPointer { size_type operator() (const Key * key) const { assert (key != 0); return key->hash(); } }; template struct XalanHashMemberReference { size_type operator() (const Key& key) const { return key.hash(); } }; template struct XalanMapIteratorTraits { typedef Value value_type; typedef Value& reference; typedef Value* pointer; }; template struct XalanMapConstIteratorTraits { typedef Value value_type; typedef const Value& reference; typedef const Value* pointer; }; template struct XalanMapIterator { typedef typename XalanMapTraits::value_type value_type; typedef typename XalanMapTraits::reference reference; typedef typename XalanMapTraits::pointer pointer; typedef ptrdiff_t difference_type; typedef XALAN_STD_QUALIFIER bidirectional_iterator_tag iterator_category; typedef XalanMapIterator< XalanMapIteratorTraits, BaseIterator> Iterator; XalanMapIterator(const Iterator & theRhs) : baseIterator(theRhs.baseIterator) { } XalanMapIterator(const BaseIterator & theRhs) : baseIterator(theRhs) { } XalanMapIterator operator++(int) { XalanMapIterator temp(*this); ++baseIterator; return temp; } XalanMapIterator& operator++() { ++baseIterator; return *this; } reference operator*() const { return *baseIterator->value; } pointer operator->() const { return baseIterator->value; } bool operator==(const XalanMapIterator& theRhs) const { return theRhs.baseIterator == baseIterator; } bool operator!=(const XalanMapIterator& theRhs) const { return !(theRhs == *this); } BaseIterator baseIterator; }; /** * Xalan implementation of a hashtable. * */ template < class Key, class Value, class KeyTraits = XalanMapKeyTraits, class KeyConstructionTraits = MemoryManagedConstructionTraits, class ValueConstructionTraits = MemoryManagedConstructionTraits > class XalanMap { public: /** * Each map entry is stored in a linked list where an entry * consists of a pointer to the key/value pair and a flag to indicate * whether the entry has been erased. * The hash buckets are a vector of pointers into the entry list. * Deleted entries are spliced into another list and marked 'erased'. */ typedef Key key_type; typedef Value data_type; typedef size_t size_type; typedef XALAN_STD_QUALIFIER pair value_type; struct Entry { value_type* value; bool erased; Entry(value_type* theValue) : value(theValue), erased(false) { } }; typedef XalanList EntryListType; typedef XalanVector BucketType; typedef XalanVector > BucketTableType; typedef typename EntryListType::iterator EntryListIterator; typedef typename BucketTableType::iterator TableIterator; typedef typename BucketType::iterator BucketIterator; typedef XalanMapIterator< XalanMapIteratorTraits, typename EntryListType::iterator> iterator; typedef XalanMapIterator< XalanMapConstIteratorTraits, typename EntryListType::iterator> const_iterator; typedef typename KeyConstructionTraits::Constructor FirstConstructor; typedef typename ValueConstructionTraits::Constructor SecondConstructor; enum { eDefaultMinBuckets = 29u, eDefaultEraseThreshold = 50u, eMinimumBucketSize = 5u }; XalanMap( MemoryManager& theMemoryManager, double loadFactor = 0.75, size_type minBuckets = eDefaultMinBuckets, size_type eraseThreshold = eDefaultEraseThreshold) : m_memoryManager(&theMemoryManager), m_loadFactor(loadFactor), m_minBuckets(minBuckets), m_size(0), m_entries(theMemoryManager), m_freeEntries(theMemoryManager), m_buckets(theMemoryManager), m_eraseCount(0), m_eraseThreshold(eraseThreshold) { } XalanMap( const XalanMap& theRhs, MemoryManager& theMemoryManager) : m_memoryManager(&theMemoryManager), m_loadFactor(theRhs.m_loadFactor), m_minBuckets(theRhs.m_minBuckets), m_size(0), m_entries(theMemoryManager), m_freeEntries(theMemoryManager), m_buckets( size_type(m_loadFactor * theRhs.size()) + 1, BucketType(*m_memoryManager), theMemoryManager), m_eraseCount(0), m_eraseThreshold(theRhs.m_eraseThreshold) { const_iterator entry = theRhs.begin(); while(entry != theRhs.end()) { insert(*entry); ++entry; } assert(m_size == theRhs.m_size); } MemoryManager& getMemoryManager() { assert (m_memoryManager != 0); return *m_memoryManager; } ~XalanMap() { doRemoveEntries(); if (!m_buckets.empty()) { EntryListIterator toRemove = m_freeEntries.begin(); while(toRemove != m_freeEntries.end()) { deallocate(toRemove->value); ++toRemove; } } } XalanMap& operator=(const XalanMap& theRhs) { XalanMap theTemp(theRhs, *m_memoryManager); swap(theTemp); return *this; } size_type size() const { return m_size; } bool empty() const { return m_size == 0; } iterator begin() { return m_entries.begin(); } const_iterator begin() const { return const_cast(this)->begin(); } iterator end() { return m_entries.end(); } const_iterator end() const { return const_cast(this)->end(); } iterator find(const key_type& key) { if (m_size != 0) { assert(m_buckets.empty() == false); const size_type index = doHash(key); assert(index < m_buckets.size()); BucketType& bucket = m_buckets[index]; BucketIterator pos = bucket.begin(); while (pos != bucket.end()) { if (!(*pos)->erased && m_equals(key, (*pos)->value->first)) { return iterator(*pos); } ++pos; } } return end(); } const_iterator find(const key_type& key) const { return const_cast(this)->find(key); } data_type & operator[](const key_type& key) { iterator pos = find(key); if (pos == end()) { pos = doCreateEntry(key); } return (*pos).second; } void insert(const value_type& value) { insert(value.first, value.second); } void insert(const key_type& key, const data_type& data) { const const_iterator pos = find(key); if (pos == end()) { doCreateEntry(key, &data); } } void erase(iterator pos) { if (pos != end()) { doErase(pos); } } size_type erase(const key_type& key) { const iterator pos = find(key); if (pos != end()) { doErase(pos); return 1; } else { return 0; } } void clear() { doRemoveEntries(); TableIterator bucketPos = m_buckets.begin(); while (bucketPos != m_buckets.end()) { bucketPos->clear(); ++bucketPos; } m_eraseCount = 0; assert(0 == m_size); assert(m_entries.empty()); } void swap(XalanMap& theRhs) { const size_type tempSize = m_size; m_size = theRhs.m_size; theRhs.m_size = tempSize; MemoryManager* const tempMemoryManager = m_memoryManager; m_memoryManager = theRhs.m_memoryManager; theRhs.m_memoryManager = tempMemoryManager; const size_type tempEraseCount = m_eraseCount; m_eraseCount = theRhs.m_eraseCount; theRhs.m_eraseCount = tempEraseCount; const size_type tempEraseTheshold = m_eraseThreshold; m_eraseThreshold = theRhs.m_eraseThreshold; theRhs.m_eraseThreshold = tempEraseTheshold; m_entries.swap(theRhs.m_entries); m_freeEntries.swap(theRhs.m_freeEntries); m_buckets.swap(theRhs.m_buckets); } protected: iterator doCreateEntry(const key_type & key, const data_type* data = 0) { // if there are no buckets, create initial minimum set of buckets if (m_buckets.empty()) { m_buckets.insert( m_buckets.begin(), m_minBuckets, BucketType(*m_memoryManager)); } // if the load factor has been reached, rehash if (size_type(m_loadFactor * size()) > m_buckets.size()) { rehash(); } const size_type index = doHash(key); if (m_freeEntries.empty()) { m_freeEntries.push_back(Entry(allocate(1))); } // insert a new entry as the first position in the bucket Entry& newEntry = m_freeEntries.back(); newEntry.erased = false; FirstConstructor::construct( const_cast(&newEntry.value->first), key, *m_memoryManager); if (data != 0) { SecondConstructor::construct( &newEntry.value->second, *data, *m_memoryManager); } else { SecondConstructor::construct( &newEntry.value->second, *m_memoryManager); } m_entries.splice(m_entries.end(), m_freeEntries, --m_freeEntries.end()); m_buckets[index].push_back(--m_entries.end()); ++m_size; return iterator(--m_entries.end()); } void doRemoveEntry(const iterator & toRemovePos) { value_type& toRemove = *toRemovePos; #if defined(_MSC_VER) && _MSC_VER <= 1300 toRemove.value_type::~value_type(); #else toRemove.~value_type(); #endif m_freeEntries.splice( m_freeEntries.end(), m_entries, toRemovePos.baseIterator); toRemovePos.baseIterator->erased = true; --m_size; } void doRemoveEntries() { while(size() > 0) { doRemoveEntry(begin()); } } void doErase(iterator pos) { assert(pos != end()); doRemoveEntry(pos); ++m_eraseCount; if (m_eraseCount == m_eraseThreshold) { compactBuckets(); m_eraseCount = 0; } } size_type doHash( const Key& key, size_type modulus) const { assert(modulus != 0); return m_hash(key) % modulus; } size_type doHash(const Key & key) const { return doHash(key, m_buckets.size()); } void rehash() { // grow the number of buckets by 60% const size_type theNewSize = size_type(1.6 * size()); assert(theNewSize != 0); BucketTableType temp( theNewSize, BucketType(*m_memoryManager), *m_memoryManager); // rehash each entry assign to bucket and insert into list EntryListIterator entryPos = m_entries.begin(); while (entryPos != m_entries.end()) { const size_type index = doHash( entryPos->value->first, theNewSize); temp[index].push_back(entryPos); ++entryPos; } // Now that we've rebuilt the buckets, swap the rebuilt // buckets with our existing buckets. m_buckets.swap(temp); } value_type* allocate(size_type size) { const size_type theBytesNeeded = size * sizeof(value_type); assert(m_memoryManager != 0); void* pointer = m_memoryManager->allocate(theBytesNeeded); assert(pointer != 0); return reinterpret_cast(pointer); } void deallocate(value_type* pointer) { assert(m_memoryManager != 0); m_memoryManager->deallocate(pointer); } static size_type calculateNewBucketCapacity( size_type theCurrentSize, size_type theExtraCapacity) { assert(theExtraCapacity > theCurrentSize); // We'll use the current extra capacity a convenient number. // Perhaps a better choice would be to determine how much // of the extra capacity to keep, but we really need to // figure out how to keep the buckets compacted during // removal of an item. return theCurrentSize == 0 ? eMinimumBucketSize : theExtraCapacity; } void compactBuckets() { for(TableIterator i = m_buckets.begin(); i != m_buckets.end(); ++i) { BucketType& theCurrentBucket = *i; BucketIterator j = theCurrentBucket.begin(); while(j != theCurrentBucket.end()) { if ((*j)->erased == true) { j = theCurrentBucket.erase(j); } else { ++j; } } // Now we should do something if the // bucket has a much greater capacity // than the number of items in it. const size_type theCurrentSize = theCurrentBucket.size(); const size_type theExtraCapacity = theCurrentBucket.capacity() - theCurrentSize; if (theExtraCapacity > theCurrentSize) { const size_type theNewCapacity = calculateNewBucketCapacity( theCurrentSize, theExtraCapacity); // Create a copy of the bucket, and // give it the new capacity of the extra // capacity. BucketType theTempBucket( theCurrentBucket, *m_memoryManager, theNewCapacity); theCurrentBucket.swap(theTempBucket); } } } // Data members... typename KeyTraits::Hasher m_hash; typename KeyTraits::Comparator m_equals; MemoryManager* m_memoryManager; double m_loadFactor; const size_type m_minBuckets; size_type m_size; EntryListType m_entries; EntryListType m_freeEntries; BucketTableType m_buckets; size_type m_eraseCount; size_type m_eraseThreshold; private: // These are not implemented. XalanMap(); XalanMap(const XalanMap&); }; #if defined(_MSC_VER) #pragma warning(pop) #endif XALAN_CPP_NAMESPACE_END #endif // XALANMAP_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/Include/STLHelper.hpp0000664000175000000640000004171511731656102020140 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(STLHELPERS_HEADER_GUARD_1357924680) #define STLHELPERS_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN template struct XalanDestroyFunctor { void operator()(Type& theArg) { theArg.~Type(); } void operator()(Type* theArg) { theArg->~Type(); } void operator()(const Type* theArg) { (*this)(const_cast(theArg)); } void operator()( Type* theArg, MemoryManager& theMemoryManager) { if (theArg != 0) { (*this)(*theArg); theMemoryManager.deallocate(theArg); } } void operator()( const Type* theArg, MemoryManager& theMemoryManager) { (*this)(const_cast(theArg), theMemoryManager); } }; template XalanDestroyFunctor makeXalanDestroyFunctor(const Type* /* theType */) { return XalanDestroyFunctor(); } /** * Functor to delete objects, used in STL iteration algorithms. */ template #if defined(XALAN_NO_STD_NAMESPACE) struct DeleteFunctor : public unary_function #else struct DeleteFunctor : public std::unary_function #endif { #if defined(XALAN_NO_STD_NAMESPACE) typedef unary_function BaseClassType; #else typedef std::unary_function BaseClassType; #endif typedef typename BaseClassType::result_type result_type; typedef typename BaseClassType::argument_type argument_type; DeleteFunctor(MemoryManager& theManager) : m_memoryManager(theManager) { } /** * Delete the object pointed to by argument. * * @param thePointer pointer to object to be deleted */ result_type operator()(argument_type thePointer) const { return makeXalanDestroyFunctor(thePointer)(thePointer, m_memoryManager); } private: MemoryManager& m_memoryManager; }; #if !defined(XALAN_SGI_BASED_STL) /** * Functor to retrieve the key of a key-value pair in a map, used in STL * iteration algorithms. */ template #if defined(XALAN_NO_STD_NAMESPACE) struct select1st : public unary_function #else struct select1st : public std::unary_function #endif { #if defined(XALAN_NO_STD_NAMESPACE) typedef unary_function BaseClassType; #else typedef std::unary_function BaseClassType; #endif typedef typename BaseClassType::result_type result_type; typedef typename BaseClassType::argument_type argument_type; typedef PairType value_type; /** * Retrieve the key of a key-value pair. * * @param thePair key-value pair * @return key */ result_type operator()(const argument_type& thePair) const { return thePair.first; } }; /** * Functor to retrieve the value of a key-value pair in a map, used in STL * iteration algorithms. */ template #if defined(XALAN_NO_STD_NAMESPACE) struct select2nd : public unary_function #else struct select2nd : public std::unary_function #endif { #if defined(XALAN_NO_STD_NAMESPACE) typedef unary_function BaseClassType; #else typedef std::unary_function BaseClassType; #endif typedef typename BaseClassType::result_type result_type; typedef typename BaseClassType::argument_type argument_type; typedef PairType value_type; /** * Retrieve the value of a key-value pair. * * @param thePair key-value pair * @return value */ result_type operator()(const argument_type& thePair) const { return thePair.second; } }; #endif /** * Functor to call a clear() member function on its argument. */ template #if defined(XALAN_NO_STD_NAMESPACE) struct ClearFunctor : public unary_function #else struct ClearFunctor : public std::unary_function #endif { #if defined(XALAN_NO_STD_NAMESPACE) typedef unary_function BaseClassType; #else typedef std::unary_function BaseClassType; #endif typedef typename BaseClassType::result_type result_type; typedef typename BaseClassType::argument_type argument_type; typedef Type value_type; /** * Retrieve the value of a key-value pair. * * @param thePair key-value pair * @return value */ result_type operator()(argument_type& theArg) const { return theArg.clear(); } }; /** * Functor to delete value objects in maps, used in STL iteration algorithms. */ template #if defined(XALAN_NO_STD_NAMESPACE) struct MapValueDeleteFunctor : public unary_function #else struct MapValueDeleteFunctor : public std::unary_function #endif { #if defined(XALAN_NO_STD_NAMESPACE) typedef unary_function BaseClassType; #else typedef std::unary_function BaseClassType; #endif typedef typename BaseClassType::result_type result_type; typedef typename BaseClassType::argument_type argument_type; MapValueDeleteFunctor(MemoryManager& theManager) : m_memoryManager(theManager) { } /** * Delete the value object in a map value pair. The value of the pair must * be of pointer type. * * @param thePair key-value pair */ result_type operator()(argument_type thePair) const { return makeXalanDestroyFunctor(thePair.second)(thePair.second, m_memoryManager); } private: MemoryManager& m_memoryManager; }; template MapValueDeleteFunctor makeMapValueDeleteFunctor(MapType& theMap) { return MapValueDeleteFunctor(theMap.getMemoryManager()); } /** * This functor is designed to compare 0-terminated arrays. It substitutes * for the default less so that pointers to arrays can be compared, * rather than copies of arrays. For example, you might want to use C-style * strings as keys in a map, rather than string objects. The default * algorithm less would just compare the pointers, and not the * vector of characters to which it points. Using this algorithm instead of * the default will allow the map to work as expected. */ template #if defined(XALAN_NO_STD_NAMESPACE) struct less_null_terminated_arrays : public binary_function #else struct less_null_terminated_arrays : public std::binary_function #endif { #if defined(XALAN_NO_STD_NAMESPACE) typedef binary_function BaseClassType; #else typedef std::binary_function BaseClassType; #endif typedef typename BaseClassType::result_type result_type; typedef typename BaseClassType::first_argument_type first_argument_type; typedef typename BaseClassType::second_argument_type second_argument_type; /** * Compare the values of two objects. * * * @param theLHS first object to compare * @param theRHS second object to compare * @return true if objects are the same */ result_type operator()( first_argument_type theLHS, second_argument_type theRHS) const { while(*theLHS && *theRHS) { if (*theLHS != *theRHS) { break; } else { theLHS++; theRHS++; } } return *theLHS < *theRHS ? true : false; } }; template struct equal_null_terminated_arrays : public XALAN_STD_QUALIFIER binary_function { typedef XALAN_STD_QUALIFIER binary_function BaseClassType; typedef typename BaseClassType::result_type result_type; typedef typename BaseClassType::first_argument_type first_argument_type; typedef typename BaseClassType::second_argument_type second_argument_type; /** * Compare the values of two objects. * * * @param theLHS first object to compare * @param theRHS second object to compare * @return true if objects are the same */ result_type operator()( first_argument_type theLHS, second_argument_type theRHS) const { while(*theLHS && *theRHS) { if (*theLHS != *theRHS) { return false; } else { ++theLHS; ++theRHS; } } if (*theLHS || *theRHS) { return false; } else { return true; } } }; template inline size_t XalanScalarHash( ScalarType theValue, size_t theResult) { return (theResult * 37) + (theResult >> 24) + size_type(theValue); } template struct hash_non_terminated_array : public XALAN_STD_QUALIFIER unary_function { typedef XALAN_STD_QUALIFIER unary_function BaseClassType; typedef typename BaseClassType::result_type result_type; typedef typename BaseClassType::argument_type argument_type; result_type operator() ( argument_type theKey, result_type theLength, result_type theInitialValue = 0) const { result_type theHashValue = theInitialValue; const argument_type theEnd = theKey + theLength; while (theKey != theEnd) { theHashValue += XalanScalarHash(*theKey, theHashValue); ++theKey; } return ++theHashValue; } }; template struct hash_null_terminated_array : public XALAN_STD_QUALIFIER unary_function { typedef XALAN_STD_QUALIFIER unary_function BaseClassType; typedef typename BaseClassType::result_type result_type; typedef typename BaseClassType::argument_type argument_type; result_type operator() ( argument_type theKey, result_type theInitialValue = 0) const { result_type theHashValue = theInitialValue; while (*theKey) { theHashValue += XalanScalarHash(*theKey, theHashValue); ++theKey; } return ++theHashValue; } }; template<> struct XalanMapKeyTraits { typedef hash_null_terminated_array Hasher; typedef equal_null_terminated_arrays Comparator; }; template class CollectionClearGuard { public: CollectionClearGuard(CollectionType& theCollection) : m_collection(&theCollection) { } ~CollectionClearGuard() { if (m_collection != 0) { m_collection->clear(); } } void release() { m_collection = 0; } private: // Not implemented... CollectionClearGuard(const CollectionClearGuard&); CollectionClearGuard& operator=(const CollectionClearGuard&); // Data members... CollectionType* m_collection; }; template class CollectionDeleteGuard { public: CollectionDeleteGuard(CollectionType& theCollection) : m_collection(&theCollection) { } ~CollectionDeleteGuard() { if (m_collection != 0) { #if !defined(XALAN_NO_STD_NAMESPACE) using std::for_each; #endif // Delete all of the objects in the temp vector. for_each(m_collection->begin(), m_collection->end(), DeleteFunctorType(m_collection->getMemoryManager())); } } void release() { m_collection = 0; } private: // Not implemented... CollectionDeleteGuard(const CollectionDeleteGuard&); CollectionDeleteGuard& operator=(const CollectionDeleteGuard&); // Data members... CollectionType* m_collection; }; template #if defined(XALAN_NO_STD_NAMESPACE) struct pointer_equals : public binary_function #else struct pointer_equals : public std::binary_function #endif { #if defined(XALAN_NO_STD_NAMESPACE) typedef binary_function BaseClassType; #else typedef std::binary_function BaseClassType; #endif typedef typename BaseClassType::result_type result_type; typedef typename BaseClassType::first_argument_type first_argument_type; typedef typename BaseClassType::second_argument_type second_argument_type; result_type operator()( first_argument_type theLHS, second_argument_type theRHS) const { assert(theLHS != 0 && theRHS != 0); return *theLHS == *theRHS; } }; template #if defined(XALAN_NO_STD_NAMESPACE) struct pointer_equals_predicate : public unary_function #else struct pointer_equals_predicate : public std::unary_function #endif { #if defined(XALAN_NO_STD_NAMESPACE) typedef unary_function BaseClassType; #else typedef std::unary_function BaseClassType; #endif typedef typename BaseClassType::result_type result_type; typedef typename BaseClassType::argument_type argument_type; pointer_equals_predicate(argument_type theArg) : m_arg(theArg) { } result_type operator()( argument_type theOther) const { assert(theOther != 0); return *theOther == *m_arg; } private: const argument_type m_arg; }; template #if defined(XALAN_NO_STD_NAMESPACE) struct pointer_less : public binary_function #else struct pointer_less : public std::binary_function #endif { #if defined(XALAN_NO_STD_NAMESPACE) typedef binary_function BaseClassType; #else typedef std::binary_function BaseClassType; #endif typedef typename BaseClassType::result_type result_type; typedef typename BaseClassType::first_argument_type first_argument_type; typedef typename BaseClassType::second_argument_type second_argument_type; result_type operator()( first_argument_type theLHS, second_argument_type theRHS) const { assert(theLHS != 0 && theRHS != 0); #if !defined(XALAN_NO_STD_NAMESPACE) using std::less; #endif return less()(*theLHS, *theRHS); } }; template struct pointer_equal : public XALAN_STD_QUALIFIER binary_function { typedef XALAN_STD_QUALIFIER binary_function BaseClassType; typedef typename BaseClassType::result_type result_type; typedef typename BaseClassType::first_argument_type first_argument_type; typedef typename BaseClassType::second_argument_type second_argument_type; result_type operator()( first_argument_type theLHS, second_argument_type theRHS) const { assert(theLHS != 0 && theRHS != 0); return XALAN_STD_QUALIFIER equal_to()(*theLHS, *theRHS); } }; XALAN_CPP_NAMESPACE_END #endif // STLHELPERS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/Include/XalanObjectStackCache.hpp0000664000175000000640000001030611731656102022432 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_OBJECTSTACKCACHE_HEADER_GUARD) #define XALAN_OBJECTSTACKCACHE_HEADER_GUARD #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN template< class ObjectType, #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) class CreateFunctorType, class DeleteFunctorType, class ResetFunctorType> #else class CreateFunctorType = DefaultCacheCreateFunctor, class DeleteFunctorType = DeleteFunctor, class ResetFunctorType = DefaultCacheResetFunctor > #endif class XalanObjectStackCache { public: typedef XalanVector VectorType; typedef ObjectType CacheObjectType; explicit XalanObjectStackCache( MemoryManager& theManager, XalanSize_t initialListSize = 0) : m_createFunctor(), m_deleteFunctor(theManager), m_stack(theManager), m_numObjectsOnStack(0) { m_stack.reserve(initialListSize); } ~XalanObjectStackCache() { #if !defined(XALAN_NO_STD_NAMESPACE) using std::for_each; #endif for_each( m_stack.begin(), m_stack.end(), m_deleteFunctor); } ObjectType* get() { if (m_stack.size() == m_numObjectsOnStack) { ObjectType* const theNewObject = m_createFunctor(m_stack.getMemoryManager()); m_stack.push_back(theNewObject); ++m_numObjectsOnStack; return theNewObject; } else { return m_stack[m_numObjectsOnStack++]; } } ObjectType* top() { assert (m_numObjectsOnStack > 0); return m_stack[m_numObjectsOnStack-1]; } ObjectType* release() { assert(m_numObjectsOnStack > 0); return m_stack[--m_numObjectsOnStack]; } void reset() { typename VectorType::iterator iterator; for (iterator = m_stack.begin(); iterator < m_stack.end(); iterator++) { m_resetFunctor(*iterator); } } // Functors for various operations... CreateFunctorType m_createFunctor; DeleteFunctorType m_deleteFunctor; ResetFunctorType m_resetFunctor; private: // There are not defined... XalanObjectStackCache(const XalanObjectCache& theRHS); XalanObjectStackCache& operator=(const XalanObjectCache& theRHS); // Data members... VectorType m_stack; typename VectorType::size_type m_numObjectsOnStack; }; template class XalanObjectStackCacheDefault : public XalanObjectStackCache, DeleteFunctor, DefaultCacheResetFunctor > { public: typedef XalanObjectStackCache, DeleteFunctor, DefaultCacheResetFunctor > BaseClassType; explicit XalanObjectStackCacheDefault(XalanSize_t initialListSize = 0) : BaseClassType(initialListSize) { } }; XALAN_CPP_NAMESPACE_END #endif xalan-c-1.11/c/src/xalanc/Include/VCPPDefinitions.hpp0000664000175000000640000000545511731656102021303 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(VCPPDEFINITIONS_HEADER_GUARD_1357924680) #define VCPPDEFINITIONS_HEADER_GUARD_1357924680 #pragma warning(disable: 4127 4146 4251 4284 4345 4351 4355 4511 4512 4514 4521 4702 4710 4711 4786 4097 4503 4786; error: 4150 4172 4238 4239 4715) #include // --------------------------------------------------------------------------- // A define in the build for each project is also used to control whether // the export keyword is from the project's viewpoint or the client's. // These defines provide the platform specific keywords that they need // to do this. // --------------------------------------------------------------------------- #define XALAN_PLATFORM_EXPORT __declspec(dllexport) #define XALAN_PLATFORM_IMPORT __declspec(dllimport) #define XALAN_PLATFORM_EXPORT_FUNCTION(T) XALAN_PLATFORM_EXPORT T #define XALAN_PLATFORM_IMPORT_FUNCTION(T) XALAN_PLATFORM_IMPORT T #if _MSC_VER >= 1300 #define XALAN_INLINE_INITIALIZATION #if !defined(__INTEL_COMPILER) #define XALAN_INLINE_INITIALIZATION_IS_DEFINITION_BUG #if _MSC_VER >= 1400 #define XALAN_AUTO_PTR_REQUIRES_DEFINITION #define XALAN_USE_WINDOWS_COLLATION #endif #endif #define XALAN_NEW_STD_ALLOCATOR #define XALAN_HAS_STD_ITERATORS #if _MSC_VER == 1300 #define XALAN_VCPP_USE_PTRIT #endif #else #define XALAN_REQUIRES_QUALIFIED_DESTRUCTOR #define XALAN_NO_COVARIANT_RETURN_TYPE #endif #define XALAN_NEWLINE_IS_CRLF #define XALAN_HAS_CPP_NAMESPACE #define XALAN_HAS_STD_DISTANCE #define XALAN_NO_REENTRANT_TIME_FUNCTIONS // long long is not supported on all MS compilers. #define XALAN_NO_LONG_LONG typedef UINT64 XALAN_UINT64; typedef INT64 XALAN_INT64; #define XALAN_WINDOWS #define XALAN_WINDOWS_DIR_FUNCTIONS #define WINDOWS_THREAD_FUNCTIONS #if defined(_DEBUG) && defined(NDEBUG) #error NDEBUG must not be defined when _DEBUG is defined. #elif !defined(_DEBUG) && !defined(NDEBUG) #error NDEBUG must be defined when _DEBUG is not defined. #endif #endif // VCPPDEFINITIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/Include/IntelDefinitions.hpp0000664000175000000640000000326411731656102021602 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(INTELDEFINITIONS_HEADER_GUARD_1357924680) #define INTELDEFINITIONS_HEADER_GUARD_1357924680 // --------------------------------------------------------------------------- // A define in the build for each project is also used to control whether // the export keyword is from the project's viewpoint or the client's. // These defines provide the platform specific keywords that they need // to do this. // --------------------------------------------------------------------------- #define XALAN_PLATFORM_EXPORT #define XALAN_PLATFORM_IMPORT #define XALAN_PLATFORM_EXPORT_FUNCTION(T) T XALAN_PLATFORM_EXPORT #define XALAN_PLATFORM_IMPORT_FUNCTION(T) T XALAN_PLATFORM_IMPORT #define XALAN_HAS_STD_ITERATORS #define XALAN_HAS_STD_DISTANCE #define XALAN_HAS_CPP_NAMESPACE #define XALAN_POSIX2_AVAILABLE #define XALAN_INLINE_INITIALIZATION #endif // INTELDEFINITIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/Include/SolarisDefinitions.hpp0000664000175000000640000000350711731656102022143 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(SOLARISDEFINITIONS_HEADER_GUARD_1357924680) #define SOLARISDEFINITIONS_HEADER_GUARD_1357924680 // --------------------------------------------------------------------------- // A define in the build for each project is also used to control whether // the export keyword is from the project's viewpoint or the client's. // These defines provide the platform specific keywords that they need // to do this. // --------------------------------------------------------------------------- #define XALAN_PLATFORM_EXPORT #define XALAN_PLATFORM_IMPORT #define XALAN_PLATFORM_EXPORT_FUNCTION(T) T XALAN_PLATFORM_EXPORT #define XALAN_PLATFORM_IMPORT_FUNCTION(T) T XALAN_PLATFORM_IMPORT #define XALAN_HAS_CPP_NAMESPACE #define XALAN_STRICT_ANSI_HEADERS #if defined(_STLP_CONFIG_H) #define XALAN_HAS_STD_ITERATORS #define XALAN_HAS_STD_DISTANCE #else #define XALAN_RW_NO_CLASS_PARTIAL_SPEC #endif #define XALAN_POSIX2_AVAILABLE #if defined(__sparc) #define XALAN_NO_STD_NUMERIC_LIMITS #endif #endif // SOLARISDEFINITIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/Include/XalanVersion.hpp0000664000175000000640000002033111731656102020736 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANVERSION_HEADER_GUARD_1357924680) #define XALANVERSION_HEADER_GUARD_1357924680 // --------------------------------------------------------------------------- // X A L A N V E R S I O N H E A D E R D O C U M E N T A T I O N /** * User Documentation for Xalan Version Values: * * * * Xalan Notes: * * Xalan Committers Documentation: * * Xalan committers normally only need to modify one or two of the * following macros: * * XALAN_VERSION_MAJOR * XALAN_VERSION_MINOR * XALAN_VERSION_REVISION * * The integer values of these macros define the Xalan version number. All * other constants and preprocessor macros are automatically generated from * these three definitions. * * Xalan User Documentation: * * The following sections in the user documentation have examples based upon * the following three version input values: * * #define XALAN_VERSION_MAJOR 19 * #define XALAN_VERSION_MINOR 3 * #define XALAN_VERSION_REVISION 74 * * The minor and revision (patch level) numbers have two digits of resolution * which means that '3' becomes '03' in this example. This policy guarantees * that when using preprocessor macros, version 19.3.74 will be greater than * version 1.94.74 since the first will expand to 190374 and the second to * 19474. * * Preprocessor Macros: * * _XALAN_VERSION defines the primary preprocessor macro that users will * introduce into their code to perform conditional compilation where the * version of Xalan is detected in order to enable or disable version * specific capabilities. The value of _XALAN_VERSION for the above example * will be 190374. To use it a user would perform an operation such as the * following: * * #if _XALAN_VERSION >= 190374 * // code specific to new version of Xalan... * #else * // old code here... * #endif * * XALAN_FULLVERSIONSTR is a preprocessor macro that expands to a string * constant whose value, for the above example, will be "19_3_74". * * XALAN_FULLVERSIONDOT is a preprocessor macro that expands to a string * constant whose value, for the above example, will be "19.3.74". * * XALAN_VERSIONSTR is a preprocessor macro that expands to a string * constant whose value, for the above example, will be "19374". This * particular macro is very dangerous if it were to be used for comparing * version numbers since ordering will not be guaranteed. * * Xalan_DLLVersionStr is a preprocessor macro that expands to a string * constant whose value, for the above example, will be "19_3_74". This * macro is provided for backwards compatibility to pre-1.7 versions of * Xalan. * * String Constants: * * gXalanVersionStr is a global string constant whose value corresponds to * the value "19_3" for the above example. * * gXalanFullVersionStr is a global string constant whose value corresponds * to the value "19_3_74" for the above example. * * Numeric Constants: * * gXalanMajVersion is a global integer constant whose value corresponds to * the major version number. For the above example its value will be 19. * * gXalanMinVersion is a global integer constant whose value corresponds to * the minor version number. For the above example its value will be 3. * * gXalanRevision is a global integer constant whose value corresponds to * the revision (patch) version number. For the above example its value will * be 74. * */ // --------------------------------------------------------------------------- // X A L A N V E R S I O N S P E C I F I C A T I O N /** * MODIFY THESE NUMERIC VALUES TO COINCIDE WITH XALAN VERSION * AND DO NOT MODIFY ANYTHING ELSE IN THIS VERSION HEADER FILE */ #define XALAN_VERSION_MAJOR 1 #define XALAN_VERSION_MINOR 11 #define XALAN_VERSION_REVISION 0 /** DO NOT MODIFY BELOW THIS LINE */ /** * MAGIC THAT AUTOMATICALLY GENERATES THE FOLLOWING: * * Xalan_DLLVersionStr, gXalanVersionStr, gXalanFullVersionStr, * gXalanMajVersion, gXalanMinVersion, gXalanRevision */ // --------------------------------------------------------------------------- // T W O A R G U M E N T C O N C A T E N A T I O N M A C R O S // two argument concatenation routines #define CAT2_SEP_UNDERSCORE(a, b) #a "_" #b #define CAT2_SEP_PERIOD(a, b) #a "." #b #define CAT2_SEP_NIL(a, b) #a #b #define CAT2_RAW_NUMERIC(a, b) a ## b #define CAT2_RAW_NUMERIC_SEP_UNDERSCORE(a, b) a ## _ ## b // two argument macro invokers #define INVK_CAT2_SEP_UNDERSCORE(a,b) CAT2_SEP_UNDERSCORE(a,b) #define INVK_CAT2_SEP_PERIOD(a,b) CAT2_SEP_PERIOD(a,b) #define INVK_CAT2_STR_SEP_NIL(a,b) CAT2_SEP_NIL(a,b) #define INVK_CAT2_RAW_NUMERIC(a,b) CAT2_RAW_NUMERIC(a,b) #define INVK_CAT2_RAW_NUMERIC_SEP_UNDERSCORE(a,b) CAT2_RAW_NUMERIC_SEP_UNDERSCORE(a,b) // --------------------------------------------------------------------------- // T H R E E A R G U M E N T C O N C A T E N A T I O N M A C R O S // three argument concatenation routines #define CAT3_SEP_UNDERSCORE(a, b, c) #a "_" #b "_" #c #define CAT3_SEP_PERIOD(a, b, c) #a "." #b "." #c #define CAT3_SEP_NIL(a, b, c) #a #b #c #define CAT3_RAW_NUMERIC(a, b, c) a ## b ## c #define CAT3_RAW_NUMERIC_SEP_UNDERSCORE(a, b, c) a ## _ ## b ## _ ## c // three argument macro invokers #define INVK_CAT3_SEP_UNDERSCORE(a,b,c) CAT3_SEP_UNDERSCORE(a,b,c) #define INVK_CAT3_SEP_PERIOD(a,b,c) CAT3_SEP_PERIOD(a,b,c) #define INVK_CAT3_SEP_NIL(a,b,c) CAT3_SEP_NIL(a,b,c) #define INVK_CAT3_RAW_NUMERIC(a,b,c) CAT3_RAW_NUMERIC(a,b,c) #define INVK_CAT3_RAW_NUMERIC_SEP_UNDERSCORE(a,b,c) CAT3_RAW_NUMERIC_SEP_UNDERSCORE(a,b,c) // --------------------------------------------------------------------------- // C A L C U L A T E V E R S I O N - E X P A N D E D F O R M #define MULTIPLY(factor,value) factor * value #define CALC_EXPANDED_FORM(a,b,c) ( MULTIPLY(10000,a) + MULTIPLY(100,b) + MULTIPLY(1,c) ) // --------------------------------------------------------------------------- // X A L A N V E R S I O N I N F O R M A T I O N // Xalan version strings; these particular macros cannot be used for // conditional compilation as they are not numeric constants #define XALAN_FULLVERSIONSTR INVK_CAT3_SEP_UNDERSCORE(XALAN_VERSION_MAJOR,XALAN_VERSION_MINOR,XALAN_VERSION_REVISION) #define XALAN_FULLVERSIONDOT INVK_CAT3_SEP_PERIOD(XALAN_VERSION_MAJOR,XALAN_VERSION_MINOR,XALAN_VERSION_REVISION) #define XALAN_FULLVERSIONNUM INVK_CAT3_SEP_NIL(XALAN_VERSION_MAJOR,XALAN_VERSION_MINOR,XALAN_VERSION_REVISION) #define XALAN_VERSIONSTR INVK_CAT2_SEP_UNDERSCORE(XALAN_VERSION_MAJOR,XALAN_VERSION_MINOR) // Xalan C++ Namespace string, concatenated with full version string #define XALAN_PRODUCT xalanc #define XALAN_CPP_NAMESPACE INVK_CAT3_RAW_NUMERIC_SEP_UNDERSCORE(XALAN_PRODUCT,XALAN_VERSION_MAJOR,XALAN_VERSION_MINOR) // original from Xalan header #define Xalan_DLLVersionStr XALAN_FULLVERSIONSTR const char* const gXalanVersionStr = XALAN_VERSIONSTR; const char* const gXalanFullVersionStr = XALAN_FULLVERSIONSTR; const unsigned int gXalanMajVersion = XALAN_VERSION_MAJOR; const unsigned int gXalanMinVersion = XALAN_VERSION_MINOR; const unsigned int gXalanRevision = XALAN_VERSION_REVISION; // Xalan version numeric constants that can be used for conditional // compilation purposes. #define _XALAN_VERSION CALC_EXPANDED_FORM (XALAN_VERSION_MAJOR,XALAN_VERSION_MINOR,XALAN_VERSION_REVISION) #endif // XALANVERSION_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/Include/OS390Definitions.hpp0000664000175000000640000000347111731656102021304 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(OS390DEFINITIONS_HEADER_GUARD_1357924680) #define OS390DEFINITIONS_HEADER_GUARD_1357924680 // --------------------------------------------------------------------------- // A define in the build for each project is also used to control whether // the export keyword is from the project's viewpoint or the client's. // These defines provide the platform specific keywords that they need // to do this. // --------------------------------------------------------------------------- #define XALAN_PLATFORM_EXPORT _Export #define XALAN_PLATFORM_IMPORT _Export #define XALAN_PLATFORM_EXPORT_FUNCTION(T) T XALAN_PLATFORM_EXPORT #define XALAN_PLATFORM_IMPORT_FUNCTION(T) T XALAN_PLATFORM_IMPORT #define XALAN_NON_ASCII_PLATFORM #define XALAN_EXPLICIT_SCOPE_IN_TEMPLATE_BUG //#define XALAN_NEW_STD_ALLOCATOR #define XALAN_HAS_STD_ITERATORS #define XALAN_HAS_STD_DISTANCE #define XALAN_HAS_CPP_NAMESPACE #define XALAN_NO_REENTRANT_TIME_FUNCTIONS #define XALAN_POSIX2_AVAILABLE #endif // OS390DEFINITIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/Include/AIXDefinitions.hpp0000664000175000000640000000333011731656102021142 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(AIXDEFINITIONS_HEADER_GUARD_1357924680) #define AIXDEFINITIONS_HEADER_GUARD_1357924680 // --------------------------------------------------------------------------- // A define in the build for each project is also used to control whether // the export keyword is from the project's viewpoint or the client's. // These defines provide the platform specific keywords that they need // to do this. // --------------------------------------------------------------------------- #define XALAN_PLATFORM_EXPORT #define XALAN_PLATFORM_IMPORT #define XALAN_PLATFORM_EXPORT_FUNCTION(T) T XALAN_PLATFORM_EXPORT #define XALAN_PLATFORM_IMPORT_FUNCTION(T) T XALAN_PLATFORM_IMPORT #define XALAN_POSIX2_AVAILABLE #define XALAN_EXPLICIT_SCOPE_IN_TEMPLATE_BUG #define XALAN_NEW_STD_ALLOCATOR #define XALAN_HAS_CPP_NAMESPACE #define XALAN_HAS_STD_ITERATORS #define XALAN_HAS_STD_DISTANCE #endif // AIXDEFINITIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/Include/XalanObjectCache.hpp0000664000175000000640000002402511731656102021447 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_OBJECTCACHE_HEADER_GUARD) #define XALAN_OBJECTCACHE_HEADER_GUARD #include #include #include XALAN_CPP_NAMESPACE_BEGIN template class DefaultCacheCreateFunctor { public: ObjectType* operator()(MemoryManager& theManager) const { typedef ObjectType ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType(); theGuard.release(); return theResult; } }; template class DefaultCacheCreateFunctorMemMgr { public: ObjectType* operator()(MemoryManager& theManager) const { typedef ObjectType ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType(theManager); theGuard.release(); return theResult; } }; template class DefaultCacheResetFunctor { public: void operator()(ObjectType*) const { } }; template class ClearCacheResetFunctor { public: void operator()(ObjectType* theInstance) const { theInstance->clear(); } }; #if defined(XALAN_OBJECT_CACHE_KEEP_BUSY_LIST) template< class ObjectType, #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) class CreateFunctorType, class DeleteFunctorType, class ResetFunctorType> #else class CreateFunctorType = DefaultCacheCreateFunctor, class DeleteFunctorType = DeleteFunctor, class ResetFunctorType = DefaultCacheResetFunctor > #endif class XalanObjectCache { public: typedef XalanVector VectorType; typedef ObjectType CacheObjectType; explicit XalanObjectCache( MemoryManager& theManager, XalanSize_t initialListSize = 0) : m_availableList(theManager), m_busyList(theManager) { m_availableList.reserve(initialListSize); m_busyList.reserve(initialListSize); } ~XalanObjectCache() { reset(); #if !defined(XALAN_NO_STD_NAMESPACE) using std::for_each; #endif for_each( m_availableList.begin(), m_availableList.end(), m_deleteFunctor(theManager)); } ObjectType* get() { // We'll always return the back of the free list, since // that's the cheapest thing. if (m_availableList.empty() == true) { ObjectType* const theNewObject = m_createFunctor(m_availableList.getMemoryManager()); m_busyList.push_back(theNewObject); return theNewObject; } else { ObjectType* const theObject = m_availableList.back(); m_busyList.push_back(theObject); m_availableList.pop_back(); return theObject; } } bool release(ObjectType* theInstance) { #if !defined(XALAN_NO_STD_NAMESPACE) using std::find; #endif typedef typename VectorType::iterator IteratorType; const IteratorType i = find( m_busyList.begin(), m_busyList.end(), theInstance); if (i == m_busyList.end()) { return false; } else { m_resetFunctor(theInstance); m_availableList.push_back(theInstance); m_busyList.erase(i); return true; } } void reset() { while (m_busyList.empty() == false) { ObjectType* const theInstance = m_busyList.back(); m_resetFunctor(theInstance); m_availableList.push_back(theInstance); m_busyList.pop_back(); } } // Functors for various operations... CreateFunctorType m_createFunctor; DeleteFunctorType m_deleteFunctor; ResetFunctorType m_resetFunctor; private: // There are not defined... XalanObjectCache(const XalanObjectCache& theRHS); XalanObjectCache& operator=(const XalanObjectCache& theRHS); // Data members... VectorType m_availableList; VectorType m_busyList; }; #else template< class ObjectType, #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) class CreateFunctorType, class DeleteFunctorType, class ResetFunctorType> #else class CreateFunctorType = DefaultCacheCreateFunctor, class DeleteFunctorType = DeleteFunctor, class ResetFunctorType = DefaultCacheResetFunctor > #endif class XalanObjectCache { public: typedef XalanVector VectorType; typedef ObjectType CacheObjectType; explicit XalanObjectCache(MemoryManager& theManager, XalanSize_t initialListSize = 0) : m_deleteFunctor(theManager), m_availableList(theManager) { m_availableList.reserve(initialListSize); } ~XalanObjectCache() { reset(); #if !defined(XALAN_NO_STD_NAMESPACE) using std::for_each; #endif for_each( m_availableList.begin(), m_availableList.end(), m_deleteFunctor); } ObjectType* get() { // We'll always return the back of the free list, since // that's the cheapest thing. if (m_availableList.empty() == true) { return m_createFunctor(m_availableList.getMemoryManager()); } else { ObjectType* const theObject = m_availableList.back(); m_availableList.pop_back(); return theObject; } } bool release(ObjectType* theInstance) { m_resetFunctor(theInstance); m_availableList.push_back(theInstance); return true; } void reset() { } // Functors for various operations... CreateFunctorType m_createFunctor; DeleteFunctorType m_deleteFunctor; ResetFunctorType m_resetFunctor; private: // These are not defined... XalanObjectCache(const XalanObjectCache& theRHS); XalanObjectCache& operator=(const XalanObjectCache& theRHS); // Data members... VectorType m_availableList; }; #endif template class GuardCachedObject { public: typedef typename XalanObjectCacheType::CacheObjectType CacheObjectType; GuardCachedObject(XalanObjectCacheType& theCache) : m_cache(theCache), m_cachedObject(theCache.get()) { } ~GuardCachedObject() { if (m_cachedObject != 0) { m_cache.release(m_cachedObject); } } CacheObjectType* get() const { return m_cachedObject; } CacheObjectType* release() { CacheObjectType* const temp = m_cachedObject; m_cachedObject = 0; return temp; } private: // Not implemented... GuardCachedObject(const GuardCachedObject&); // Data members... XalanObjectCacheType& m_cache; CacheObjectType* m_cachedObject; }; template class XalanObjectCacheDefault : public XalanObjectCache< ObjectType, DefaultCacheCreateFunctor, DeleteFunctor, DefaultCacheResetFunctor > { public: typedef XalanObjectCache< ObjectType, DefaultCacheCreateFunctor, DeleteFunctor, DefaultCacheResetFunctor > BaseClassType; explicit XalanObjectCacheDefault( MemoryManager& theManager, XalanSize_t initialListSize = 0) : BaseClassType(theManager, initialListSize) { } }; template class XalanMemoryManagerObjectCacheDefault : public XalanObjectCache< ObjectType, DefaultCacheCreateFunctorMemMgr, DeleteFunctor, DefaultCacheResetFunctor > { public: typedef XalanObjectCache< ObjectType, DefaultCacheCreateFunctorMemMgr, DeleteFunctor, DefaultCacheResetFunctor > BaseClassType; explicit XalanMemoryManagerObjectCacheDefault( MemoryManager& theManager, XalanSize_t initialListSize = 0) : BaseClassType(theManager, initialListSize) { } }; XALAN_CPP_NAMESPACE_END #endif xalan-c-1.11/c/src/xalanc/Include/XalanSet.hpp0000664000175000000640000000737211731656102020056 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSET_HEADER_GUARD_1357924680) #define XALANSET_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN template struct XalanSetIterator { typedef Value value_type; typedef Value& reference; typedef Value* pointer; typedef ptrdiff_t difference_type; typedef XALAN_STD_QUALIFIER bidirectional_iterator_tag iterator_category; XalanSetIterator(const MapIterator& iter) : m_mapIterator(iter) { } reference operator*() const { return m_mapIterator->first; }; bool operator==(const XalanSetIterator& theRhs) const { return theRhs.m_mapIterator == m_mapIterator; } bool operator!=(const XalanSetIterator& theRhs) const { return !(theRhs == *this); } XalanSetIterator operator++() { ++m_mapIterator; return *this; } XalanSetIterator operator++(int) { XalanSetIterator orig(m_mapIterator); ++(*this); return orig; } protected: MapIterator m_mapIterator; }; /** * Xalan set implementation. * * Set relies on the XalanMap hashtable. Users must ensure the right key * traits specialization is aviable to define the proper hash functor. */ template class XalanSet { public: typedef Value value_type; typedef size_t size_type; typedef XalanMap SetMapType; typedef XalanSetIterator iterator; typedef XalanSetIterator const_iterator; XalanSet(MemoryManager& theMemoryManager) : m_map(theMemoryManager) { } XalanSet( const XalanSet& other, MemoryManager& theMemoryManager) : m_map(other.m_map, theMemoryManager) { } MemoryManager& getMemoryManager() { return m_map.getMemoryManager(); } const_iterator begin() const { return m_map.begin(); } const_iterator end() const { return m_map.end(); } size_type size() const { return m_map.size(); } size_type count(const value_type& value) const { return find(value) != end() ? 1 : 0; } const_iterator find(const value_type& value) const { return m_map.find(value); } void insert(const value_type& value) { m_map.insert(value, true); } size_type erase(const value_type& value) { return m_map.erase(value); } void clear() { m_map.clear(); } private: SetMapType m_map; }; XALAN_CPP_NAMESPACE_END #endif // XALANSET_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/Include/PlatformDefinitions.hpp0000664000175000000640000001206011731656102022305 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(PLATFORMDEFINITIONS_HEADER_GUARD_1357924680) #define PLATFORMDEFINITIONS_HEADER_GUARD_1357924680 #if defined(__cplusplus) # include "xercesc/util/XercesDefs.hpp" #else /* Include xercesc autoconf to define XMLCh when using a 'C' compiler. */ # include "xercesc/util/Xerces_autoconf_config.hpp" # include "xercesc/util/XercesVersion.hpp" #endif #if defined(_MSC_VER) #include "VCPPDefinitions.hpp" #elif defined(__GNUC__) #include "GCCDefinitions.hpp" #elif defined(_AIX) #include "AIXDefinitions.hpp" #elif defined(__hpux) #include "HPUXDefinitions.hpp" #elif defined(SOLARIS) #include "SolarisDefinitions.hpp" #elif defined(OS390) #include "OS390Definitions.hpp" #elif defined(OS400) #include "OS400Definitions.hpp" #elif defined(__DECCXX) #include "TRU64Definitions.hpp" #elif defined(__INTEL_COMPILER) #include "IntelDefinitions.hpp" #elif defined(__IBMCPP__) && defined(__TOS_LINUX__) // This is for Linux PPC using the IBM xlC compiler. #include "AIXDefinitions.hpp" #else #error Unknown compiler! #endif #include "XalanVersion.hpp" #if defined(__cplusplus) // --------------------------------------------------------------------------- // Define namespace symbols if the compiler supports it. // --------------------------------------------------------------------------- #if defined(XALAN_HAS_CPP_NAMESPACE) #define XALAN_CPP_NAMESPACE_BEGIN namespace XALAN_CPP_NAMESPACE { #define XALAN_CPP_NAMESPACE_END } #define XALAN_CPP_NAMESPACE_USE using namespace XALAN_CPP_NAMESPACE; #define XALAN_CPP_NAMESPACE_QUALIFIER XALAN_CPP_NAMESPACE:: #define XALAN_USING(NAMESPACE,NAME) using NAMESPACE :: NAME; #define XALAN_DECLARE_CLASS(NAMESPACE,NAME) namespace NAMESPACE { class NAME; } #define XALAN_DECLARE_STRUCT(NAMESPACE,NAME) namespace NAMESPACE { struct NAME; } namespace XALAN_CPP_NAMESPACE { } namespace xalanc = XALAN_CPP_NAMESPACE; #else #if defined(XALAN_CPP_NAMESPACE) #undef XALAN_CPP_NAMESPACE #endif #define XALAN_CPP_NAMESPACE #define XALAN_CPP_NAMESPACE_BEGIN #define XALAN_CPP_NAMESPACE_END #define XALAN_CPP_NAMESPACE_USE #define XALAN_CPP_NAMESPACE_QUALIFIER #define XALAN_USING(NAMESPACE,NAME) #define XALAN_DECLARE_CLASS(NAMESPACE,NAME) class NAME; #define XALAN_DECLARE_STRUCT(NAMESPACE,NAME) struct NAME; #if !defined(XALAN_NO_STD_NAMESPACE) #define XALAN_NO_STD_NAMESPACE #endif #endif #if defined(XALAN_NO_STD_NAMESPACE) #define XALAN_USING_STD(NAME) #define XALAN_STD_QUALIFIER #else #define XALAN_USING_STD(NAME) using std :: NAME; #define XALAN_STD_QUALIFIER std :: #endif #define XALAN_DECLARE_XALAN_CLASS(NAME) XALAN_DECLARE_CLASS(XALAN_CPP_NAMESPACE, NAME) #define XALAN_DECLARE_XALAN_STRUCT(NAME) XALAN_DECLARE_STRUCT(XALAN_CPP_NAMESPACE, NAME) #define XALAN_USING_XALAN(NAME) XALAN_USING(XALAN_CPP_NAMESPACE, NAME) #if defined(XERCES_HAS_CPP_NAMESPACE) #define XALAN_USING_XERCES(NAME) XALAN_USING(XERCES_CPP_NAMESPACE, NAME) #define XALAN_DECLARE_XERCES_CLASS(NAME) XALAN_DECLARE_CLASS(XERCES_CPP_NAMESPACE, NAME) #define XALAN_DECLARE_XERCES_STRUCT(NAME) XALAN_DECLARE_STRUCT(XERCES_CPP_NAMESPACE, NAME) #else #define XERCES_CPP_NAMESPACE_QUALIFIER #define XERCES_CPP_NAMESPACE_BEGIN #define XERCES_CPP_NAMESPACE_END #define XERCES_CPP_NAMESPACE_USE #define XALAN_USING_XERCES(NAME) #define XALAN_DECLARE_XERCES_CLASS(NAME) class NAME; #define XALAN_DECLARE_XERCES_STRUCT(NAME) struct NAME; #endif #include XALAN_CPP_NAMESPACE_BEGIN #if XERCES_VERSION_MAJOR < 3 typedef unsigned int XalanSize_t; typedef unsigned int XalanFilePos; typedef XMLSSize_t XalanFileLoc; #else typedef XMLSize_t XalanSize_t; typedef XMLFilePos XalanFilePos; typedef XMLFileLoc XalanFileLoc; #endif typedef XMLCh XalanDOMChar; typedef unsigned int XalanUnicodeChar; typedef XMLSSize_t XalanSSize_t; template struct XalanCompileErrorBoolean { char foo[value]; }; XALAN_CPP_NAMESPACE_END #if !defined(XALAN_NO_LONG_LONG) typedef unsigned long long XALAN_UINT64; typedef long long XALAN_INT64; #endif #define XALAN_STATIC_ASSERT(expr) XALAN_CPP_NAMESPACE_QUALIFIER XalanCompileErrorBoolean() #endif // __cplusplus #endif // PLATFORMDEFINITIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/Include/TRU64Definitions.hpp0000664000175000000640000000362711731656102021356 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(TRU64DEFINITIONS_HEADER_GUARD_1357924680) #define TRU64DEFINITIONS_HEADER_GUARD_1357924680 // --------------------------------------------------------------------------- // A define in the build for each project is also used to control whether // the export keyword is from the project's viewpoint or the client's. // These defines provide the platform specific keywords that they need // to do this. // --------------------------------------------------------------------------- #define XALAN_PLATFORM_EXPORT #define XALAN_PLATFORM_IMPORT #define XALAN_PLATFORM_EXPORT_FUNCTION(T) T XALAN_PLATFORM_EXPORT #define XALAN_PLATFORM_IMPORT_FUNCTION(T) T XALAN_PLATFORM_IMPORT // This next line enables standard IO streams. #define __USE_STD_IOSTREAM #define XALAN_HAS_CPP_NAMESPACE #define XALAN_POSIX2_AVAILABLE #define XALAN_INLINE_INITIALIZATION #define XALAN_HAS_STD_ITERATORS #define XALAN_HAS_STD_DISTANCE #define XALAN_NO_REENTRANT_TIME_FUNCTIONS #if defined(__STD_STRICT_ANSI) || defined(__STD_STRICT_ANSI_ERRORS) #define XALAN_STRICT_ANSI_HEADERS #endif #endif // TRU64DEFINITIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/Include/HPUXDefinitions.hpp0000664000175000000640000000401711731656102021310 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* Patch from Trevor Smigiel */ #if !defined(HPUXDEFINITIONS_HEADER_GUARD_1357924680) #define HPUXDEFINITIONS_HEADER_GUARD_1357924680 // --------------------------------------------------------------------------- // A define in the build for each project is also used to control whether // the export keyword is from the project's viewpoint or the client's. // These defines provide the platform specific keywords that they need // to do this. // --------------------------------------------------------------------------- #define XALAN_PLATFORM_EXPORT #define XALAN_PLATFORM_IMPORT #define XALAN_PLATFORM_EXPORT_FUNCTION(T) T XALAN_PLATFORM_EXPORT #define XALAN_PLATFORM_IMPORT_FUNCTION(T) T XALAN_PLATFORM_IMPORT #if defined(_HP_NAMESPACE_STD) #define XALAN_HAS_STD_ITERATORS #define XALAN_HAS_STD_DISTANCE #else #if defined(RWSTD_MULTI_THREAD) && !defined(__HPACC_THREAD_SAFE_RB_TREE) #define __HPACC_THREAD_SAFE_RB_TREE #endif #define XALAN_NO_STD_NAMESPACE #define XALAN_CLASSIC_IOSTREAMS #define XALAN_NO_STD_ALLOCATORS #define XALAN_SGI_BASED_STL #endif #define XALAN_HAS_CPP_NAMESPACE #define XALAN_POSIX2_AVAILABLE #define XALAN_INLINE_INITIALIZATION #endif // HPUXDEFINITIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/Include/XalanAutoPtr.hpp0000664000175000000640000001064511731656102020716 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANAUTOPTR_HEADER_GUARD_1357924680) #define XALANAUTOPTR_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN // We're using our own auto_ptr-like class due to wide // variations amongst the varous platforms we have to // support template class XalanAutoPtr { public: XalanAutoPtr(Type* thePointer = 0) : m_pointer(thePointer) { } XalanAutoPtr(const XalanAutoPtr& theSource) : m_pointer(const_cast&>(theSource).release()) { } XalanAutoPtr& operator=(XalanAutoPtr& theRHS) { if (this != &theRHS) { // This test ought not to be necessary, but // MSVC 6.0 calls delete, which checks for 0. // The problem with that is the locking is // extremely expensive. if (m_pointer != 0) { delete m_pointer; } m_pointer = theRHS.release(); } return *this; } ~XalanAutoPtr() { // See note in operator=() about this... if (m_pointer != 0) { delete m_pointer; } } Type& operator*() const { return *m_pointer; } Type* operator->() const { return m_pointer; } Type* get() const { return m_pointer; } Type* release() { Type* const temp = m_pointer; m_pointer = 0; return temp; } void reset(Type* thePointer = 0) { // See note in operator=() about this... if (m_pointer != 0) { delete m_pointer; } m_pointer = thePointer; } private: Type* m_pointer; }; // A class similar to XalanAutoPtr, but for arrays. template class XalanArrayAutoPtr { public: XalanArrayAutoPtr(Type* thePointer = 0) : m_pointer(thePointer) { } XalanArrayAutoPtr(const XalanArrayAutoPtr& theSource) : m_pointer(((XalanArrayAutoPtr&)theSource).release()) { } XalanArrayAutoPtr& operator=(XalanArrayAutoPtr& theRHS) { if (this != &theRHS) { // This test ought not to be necessary, but // MSVC 6.0 calls delete, which checks for 0. // The problem with that is the locking is // extremely expensive. if (m_pointer != 0) { delete [] m_pointer; } m_pointer = theRHS.release(); } return *this; } ~XalanArrayAutoPtr() { // See note in operator=() about this... if (m_pointer != 0) { delete [] m_pointer; } } Type& operator*() const { return *m_pointer; } Type& #if defined(XALAN_STRICT_ANSI_HEADERS) operator[](std::size_t index) const #else operator[](size_t index) const #endif { return m_pointer[index]; } Type* get() const { return m_pointer; } Type* release() { Type* const temp = m_pointer; m_pointer = 0; return temp; } void reset(Type* thePointer = 0) { // See note in operator=() about this... if (m_pointer != 0) { delete [] m_pointer; } m_pointer = thePointer; } private: Type* m_pointer; }; XALAN_CPP_NAMESPACE_END #endif // if !defined(XALANAUTOPTR_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/Include/XalanVector.hpp0000664000175000000640000006703211731656102020564 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANVECTOR_HEADER_GUARD_1357924680) #define XALANVECTOR_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN #if defined(_MSC_VER) #pragma warning(push) #pragma warning(disable: 4100) #endif XALAN_USING_XERCES(MemoryManager) template > class XalanVector { public: typedef Type value_type; typedef value_type* pointer; typedef const value_type* const_pointer; typedef value_type& reference; typedef const value_type& const_reference; typedef size_t size_type; typedef ptrdiff_t difference_type; #if defined(XALAN_VCPP_USE_PTRIT) typedef std::_Ptrit< Type, ptrdiff_t, pointer, reference, pointer, reference> iterator; typedef std::_Ptrit< Type, ptrdiff_t, const_pointer, const_reference, pointer, reference> const_iterator; #else typedef value_type* iterator; typedef const value_type* const_iterator; #endif #if defined(XALAN_HAS_STD_ITERATORS) typedef XALAN_STD_QUALIFIER reverse_iterator reverse_iterator_; typedef XALAN_STD_QUALIFIER reverse_iterator const_reverse_iterator_; #elif defined(XALAN_RW_NO_CLASS_PARTIAL_SPEC) typedef XALAN_STD_QUALIFIER random_access_iterator_tag iterator_category; // This is a specific case for the Rogue Wave STL on Solaris. typedef XALAN_STD_QUALIFIER reverse_iterator< iterator, iterator_category, value_type> reverse_iterator_; typedef XALAN_STD_QUALIFIER reverse_iterator< const_iterator, iterator_category, const value_type> const_reverse_iterator_; #else typedef XALAN_STD_QUALIFIER reverse_iterator< iterator, value_type> reverse_iterator_; typedef XALAN_STD_QUALIFIER reverse_iterator< const_iterator, value_type, const_reference> const_reverse_iterator_; #endif typedef reverse_iterator_ reverse_iterator; typedef const_reverse_iterator_ const_reverse_iterator; typedef XalanVector ThisType; typedef typename ConstructionTraits::Constructor Constructor; typedef typename Constructor::ConstructableType ConstructibleType; XalanVector( MemoryManager& theManager XALAN_DEFAULT_CONSTRUCTOR_MEMMGR, size_type initialAllocation = size_type(0)) : m_memoryManager(&theManager), m_size(0), m_allocation(initialAllocation), m_data(initialAllocation > 0 ? allocate(initialAllocation) : 0) { invariants(); } static XalanVector* create( MemoryManager& theManager, size_type initialAllocation = size_type(0)) { typedef XalanVector ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType(theManager, initialAllocation); theGuard.release(); return theResult; } XalanVector( const ThisType& theSource, MemoryManager& theManager XALAN_DEFAULT_CONSTRUCTOR_MEMMGR, size_type theInitialAllocation = size_type(0)) : m_memoryManager(&theManager), m_size(0), m_allocation(0), m_data(0) { if (theSource.m_size > 0) { ThisType theTemp(theManager, local_max(theSource.m_size, theInitialAllocation)); theTemp.insert(theTemp.begin(), theSource.begin(), theSource.end()); swap(theTemp); } else if (theInitialAllocation > 0) { m_data = allocate(theInitialAllocation); m_allocation = theInitialAllocation; } invariants(); } XalanVector( const_iterator theFirst, const_iterator theLast, MemoryManager& theManager) : m_memoryManager(&theManager), m_size(0), m_allocation(0), m_data(0) { ThisType theTemp(theManager); theTemp.insert(theTemp.begin(), theFirst, theLast); swap(theTemp); invariants(); } static XalanVector* create( const_iterator theFirst, const_iterator theLast, MemoryManager& theManager) { typedef XalanVector ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType(theFirst, theLast, theManager); theGuard.release(); return theResult; } XalanVector( size_type theInsertSize, const value_type& theData, MemoryManager& theManager) : m_memoryManager(&theManager), m_size(0), m_allocation(0), m_data(0) { ThisType theTemp(theManager); theTemp.insert(theTemp.begin(), theInsertSize, theData); swap(theTemp); invariants(); } ~XalanVector() { invariants(); if (m_allocation != 0) { destroy(begin(), end()); deallocate(m_data); } } void push_back(const value_type& data) { invariants(); doPushBack(data); invariants(); } void pop_back() { invariants(); --m_size; destroy(m_data[m_size]); invariants(); } iterator erase( iterator theFirst, iterator theLast) { invariants(); if (theFirst != theLast) { XALAN_STD_QUALIFIER copy( theLast, end(), theFirst); shrinkCount(local_distance(theFirst, theLast)); } invariants(); return theFirst; } iterator erase(iterator position) { return erase(position, position + 1); } void insert( iterator thePosition, const_iterator theFirst, const_iterator theLast) { // Since we're using bare pointers for now, we can // assert this... assert(theFirst <= theLast); assert(thePosition >= begin()); assert(thePosition <= end()); invariants(); const size_type theInsertSize = local_distance(theFirst, theLast); if (theInsertSize == 0) { return; } const size_type theTotalSize = size() + theInsertSize; if (thePosition == end()) { pointer thePointer = ensureCapacity(theTotalSize); while (theFirst != theLast) { Constructor::construct(thePointer, *theFirst, *m_memoryManager); ++thePointer; ++m_size; ++theFirst; } } else { if (theTotalSize > capacity()) { assert (m_memoryManager != 0); ThisType theTemp(*m_memoryManager, theTotalSize); // insert everything up to the position... theTemp.insert(theTemp.end(), begin(), thePosition); // insert the new stuff... theTemp.insert(theTemp.end(), theFirst, theLast); // insert everything from the position to the end... theTemp.insert(theTemp.end(), thePosition, end()); swap(theTemp); } else { // insert into the middle of the vector that has enough capacity const iterator theOriginalEnd = end(); const size_type theRightSplitSize = local_distance(thePosition, theOriginalEnd); if (theRightSplitSize <= theInsertSize) { // inserted range will go to or beyond edge of current vector // append from inserted range, all values that will extend // beyond the current vector const const_iterator toInsertSplit = theFirst + theRightSplitSize; const_iterator toInsertIter = toInsertSplit; while (toInsertIter != theLast) { doPushBack(*toInsertIter); ++toInsertIter; } // copy the "right" of the current vector to the end toInsertIter = thePosition; while (toInsertIter != theOriginalEnd) { doPushBack(*toInsertIter); ++toInsertIter; } // copy the remaining part of inserted range into // the original vector spaces XALAN_STD_QUALIFIER copy(theFirst, toInsertSplit, thePosition); } else { // inserted range will not extend beyond edge of current vector // move end of current vector by insertion size const_iterator toMoveIter = end() - theInsertSize; while (toMoveIter != theOriginalEnd) { doPushBack(*toMoveIter); ++toMoveIter; } // reverse copy the remaining part of the "right" piece of the current vector XALAN_STD_QUALIFIER copy_backward(thePosition, theOriginalEnd - theInsertSize, theOriginalEnd); // insert into current vector XALAN_STD_QUALIFIER copy(theFirst, theLast, thePosition); } } } invariants(); } void insert( iterator thePosition, size_type theCount, const value_type& theData) { invariants(); const size_type theTotalSize = size() + theCount; // Needs to be optimized if (thePosition == end()) { pointer thePointer = ensureCapacity(theTotalSize); for (size_type index = 0; index < theCount; ++index) { Constructor::construct(thePointer, theData, *m_memoryManager); ++thePointer; ++m_size; } } else { if (theTotalSize > capacity()) { assert ( m_memoryManager != 0 ); ThisType theTemp(*m_memoryManager, theTotalSize); // insert everything up to the position... theTemp.insert(theTemp.end(), begin(), thePosition); // insert the new stuff... theTemp.insert(theTemp.end(), theCount, theData); // insert everything from the position to the end... theTemp.insert(theTemp.end(), thePosition, end()); swap(theTemp); } else { // insert into the middle of the vector that has enough capacity const iterator theOriginalEnd = end(); const size_type theRightSplitSize = local_distance(thePosition, theOriginalEnd); if (theRightSplitSize <= theCount) { // inserted range will go to or beyond edge of current vector // append all copies that will extend // beyond the current vector for (size_type i = 0; i < (theCount - theRightSplitSize); ++i) { doPushBack(theData); } // copy the "right" of the current vector to the end iterator toInsertIter = thePosition; while (toInsertIter != theOriginalEnd) { doPushBack(*toInsertIter); ++toInsertIter; } // copy the remaining part of inserted range into // the original vector spaces XALAN_STD_QUALIFIER fill(thePosition, thePosition + theRightSplitSize, theData); } else { // inserted range will not extend beyond edge of current vector // move end of current vector by insertion size const_iterator toMoveIter = end() - theCount; while (toMoveIter != theOriginalEnd) { doPushBack(*toMoveIter); ++toMoveIter; } // reverse copy the remaining part of the "right" piece of the current vector XALAN_STD_QUALIFIER copy_backward(thePosition, theOriginalEnd - theCount, theOriginalEnd); // insert into current vector XALAN_STD_QUALIFIER fill(thePosition, thePosition + theCount, theData); } } } invariants(); } iterator insert( iterator thePosition, const value_type& theData) { if (m_allocation > m_size) { insert(thePosition, 1, theData); return thePosition; } else { const size_type theDistance = local_distance(begin(), thePosition); insert(thePosition, 1, theData); return begin() + theDistance; } } void assign( const_iterator theFirst, const_iterator theLast) { clear(); insert( begin(), theFirst, theLast); } void assign( iterator theFirst, iterator theLast) { assign( const_iterator(theFirst), const_iterator(theLast)); } void assign( size_type theCount, const value_type& theData) { clear(); insert(theCount, theData); } size_type size() const { invariants(); return m_size; } size_type max_size() const { invariants(); return ~size_type(0); } void resize(size_type theSize) { const ConstructibleType defaultValue(*m_memoryManager); resize(theSize, defaultValue.value); } void resize( size_type theSize, const value_type& theValue) { invariants(); if (m_size > theSize) { shrinkToSize(theSize); } else if (m_size < theSize) { // Reserve memory up-front... reserve(theSize); assert(m_allocation >= theSize); const value_type* const theEnd = m_data + theSize; // Fill the new area... for (value_type* data = endPointer(); data != theEnd; ++data, ++m_size) { Constructor::construct(data, theValue, *m_memoryManager); } } assert(m_size == theSize); invariants(); } size_type capacity() const { invariants(); return m_allocation; } bool empty() const { invariants(); return m_size == 0 ? true : false; } void reserve(size_type theSize) { invariants(); if (theSize > m_allocation) { doReserve(theSize); } invariants(); } reference front() { invariants(); return m_data[0]; } const_reference front() const { invariants(); return m_data[0]; } reference back() { return m_data[m_size - 1]; } const_reference back() const { return m_data[m_size - 1]; } iterator begin() { invariants(); return m_data; } const_iterator begin() const { invariants(); return m_data; } iterator end() { invariants(); return endPointer(); } const_iterator end() const { invariants(); return endPointer(); } reverse_iterator rbegin() { invariants(); return reverse_iterator(end()); } const_reverse_iterator rbegin() const { invariants(); return const_reverse_iterator(end()); } reverse_iterator rend() { invariants(); return reverse_iterator(begin()); } const_reverse_iterator rend() const { invariants(); return const_reverse_iterator(begin()); } reference at(size_type theIndex) { if (theIndex >= m_size) { outOfRange(); } return m_data[theIndex]; } const_reference at(size_type theIndex) const { if (theIndex >= m_size) { outOfRange(); } return m_data[theIndex]; } reference operator[](size_type theIndex) { assert (theIndex < m_size); return m_data[theIndex]; } const_reference operator[](size_type theIndex) const { assert (theIndex < m_size); return m_data[theIndex]; } void clear() { invariants(); if (m_size > 0) { shrinkToSize(0); } invariants(); } // Operators... ThisType& operator=(const ThisType& theRHS) { invariants(); if (&theRHS != this) { if (m_allocation < theRHS.m_size) { ThisType theTemp(theRHS,*m_memoryManager); swap(theTemp); } else { const_iterator theRHSCopyEnd = theRHS.end(); if (m_size > theRHS.m_size) { // Resize to the target size... shrinkToSize(theRHS.m_size); } else if (m_size < theRHS.m_size) { // Insert the portion of theRHS that won't fit // at the end... theRHSCopyEnd = theRHS.begin() + m_size; insert( end(), theRHSCopyEnd, theRHS.end()); } // Copy everything that already exists... XALAN_STD_QUALIFIER copy( theRHS.begin(), theRHSCopyEnd, begin()); } } invariants(); return *this; } void swap(ThisType& theOther) { invariants(); MemoryManager* const theTempManager = m_memoryManager; const size_type theTempLength = m_size; const size_type theTempAllocation = m_allocation; value_type* const theTempData = m_data; m_memoryManager = theOther.m_memoryManager; m_size = theOther.m_size; m_allocation = theOther.m_allocation; m_data = theOther.m_data; theOther.m_memoryManager = theTempManager; theOther.m_size = theTempLength; theOther.m_allocation = theTempAllocation; theOther.m_data = theTempData; invariants(); } const MemoryManager& getMemoryManager() const { assert (m_memoryManager != 0); return *m_memoryManager; } MemoryManager& getMemoryManager() { assert (m_memoryManager != 0); return *m_memoryManager; } // Detaches the allocated memory from the vector, and returns // the pointer to the caller. The caller then owns the memory // and must destroy any objects and deallocate it using the // the memory manager returned from getMemoryManager() pointer detach() { m_size = 0; m_allocation = 0; value_type* const theTemp = m_data; m_data = 0; return theTemp; } private: #if defined(NDEBUG) void invariants() const { } #else void invariants() const { assert(m_allocation >= m_size); assert( (m_data == 0 && m_allocation == 0) || (m_data != 0 && m_allocation != 0)); } #endif size_type local_distance( const_iterator theFirst, const_iterator theLast) { // Since we're using bare pointers for now, we can // assert this... assert(theFirst <= theLast); #if defined(XALAN_HAS_STD_DISTANCE) return XALAN_STD_QUALIFIER distance(theFirst, theLast); #else size_type theDistance = size_type(0); XALAN_STD_QUALIFIER distance(theFirst, theLast, theDistance); return theDistance; #endif } value_type* allocate(size_type size) { const size_type theBytesNeeded = size * sizeof(value_type); assert (m_memoryManager != 0); void* pointer = m_memoryManager->allocate(theBytesNeeded); assert(pointer != 0); return (value_type*) pointer; } void deallocate(value_type* pointer) { assert(m_memoryManager != 0); m_memoryManager->deallocate(pointer); } static void destroy(value_type& theValue) { theValue.~Type(); } static void destroy( iterator theFirst, iterator theLast) { for(; theFirst != theLast; ++theFirst) { destroy(*theFirst); } } void grow(const value_type& data) { invariants(); assert(m_size != 0 && m_size == m_allocation); const size_type theNewSize = size_type((m_size * 1.6) + 0.5); assert(theNewSize > m_size); ThisType theTemp(*this, *m_memoryManager, theNewSize); theTemp.doPushBack(data); swap(theTemp); invariants(); } void construct_back(const value_type& data) { invariants(); assert(m_size < m_allocation); Constructor::construct( endPointer(), data, *m_memoryManager); ++m_size; invariants(); } void init(const value_type& data) { invariants(); assert(m_size == 0 && m_allocation == 0); m_data = allocate(1); m_allocation = 1; construct_back(data); invariants(); } void doPushBack(const value_type& data) { invariants(); if (m_size < m_allocation) { construct_back(data); } else if (m_size == 0) { init(data); } else { grow(data); } invariants(); } pointer ensureCapacity(size_type theSize) { if (theSize > capacity()) { doReserve(theSize); } return endPointer(); } void doReserve(size_type theSize) { invariants(); assert(theSize > m_allocation); ThisType theTemp(*this, *m_memoryManager, theSize); swap(theTemp); invariants(); } pointer endPointer() { return m_data + m_size; } const_pointer endPointer() const { return m_data + m_size; } static void outOfRange() { throw XALAN_STD_QUALIFIER out_of_range(""); } void shrinkToSize(size_type theSize) { assert(m_size > theSize); do { pop_back(); } while (m_size > theSize); } void shrinkCount(size_type theCount) { assert(m_size >= theCount); while (theCount > 0) { pop_back(); --theCount; } } size_type local_max( size_type theLHS, size_type theRHS) { return theLHS > theRHS ? theLHS : theRHS; } #if defined(XALAN_DEVELOPMENT) //not implemented XalanVector(const XalanVector&); XalanVector(); #endif // Data members... MemoryManager* m_memoryManager; size_type m_size; size_type m_allocation; value_type* m_data; }; template inline void swap( XalanVector& theLHS, XalanVector& theRHS) { theLHS.swap(theRHS); } template inline bool operator==( const XalanVector& theLHS, const XalanVector& theRHS) { if (theLHS.size() != theRHS.size()) { return false; } else if (theLHS.size() == 0) { return true; } else { return XALAN_STD_QUALIFIER equal(theLHS.begin(), theLHS.end(), theRHS.begin()); } } template inline bool operator!=( const XalanVector& theLHS, const XalanVector& theRHS) { return !(theLHS == theRHS); } template inline bool operator<( const XalanVector& theLHS, const XalanVector& theRHS) { return XALAN_STD_QUALIFIER lexicographical_compare( theLHS.begin(), theLHS.end(), theRHS.begin(), theRHS.end()); } template inline bool operator<=( const XalanVector& theLHS, const XalanVector& theRHS) { return !(theRHS < theLHS); } template inline bool operator>( const XalanVector& theLHS, const XalanVector& theRHS) { return theRHS < theLHS; } template inline bool operator>=( const XalanVector& theLHS, const XalanVector& theRHS) { return !(theLHS < theRHS); } #if defined(_MSC_VER) #pragma warning(pop) #endif XALAN_CPP_NAMESPACE_END #endif // XALANVECTOR_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/Include/XalanMemMgrAutoPtr.hpp0000664000175000000640000002150011731656102022013 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANMEMMGRAUTOPTR_HEADER_GUARD_1357924680) #define XALANMEMMGRAUTOPTR_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN XALAN_USING_XERCES(MemoryManager) // An auto_ptr-like class that supports the MemoryManager class. template class XalanMemMgrAutoPtr { public: typedef XALAN_STD_QUALIFIER pair AutoPtrPairType; class MemMgrAutoPtrData : public AutoPtrPairType { public: MemMgrAutoPtrData(): AutoPtrPairType() { } MemMgrAutoPtrData( MemoryManager* memoryManager, Type* dataPointer): AutoPtrPairType(memoryManager, dataPointer) { invariants(); } bool isInitialized()const { return this->first != 0 && this->second != 0; } void deallocate() { invariants(); if (isInitialized()) { this->second->~Type(); this->first->deallocate(this->second); } } void reset( MemoryManager* memoryManager, Type* dataPointer) { invariants(); this->first = memoryManager; this->second = dataPointer; invariants(); } private: void invariants() const { assert( isInitialized() || (this->first == 0 && this->second == 0)); } }; XalanMemMgrAutoPtr( MemoryManager& theManager, Type* ptr) : m_pointerInfo(&theManager, ptr) { } XalanMemMgrAutoPtr() : m_pointerInfo() { } XalanMemMgrAutoPtr(const XalanMemMgrAutoPtr& theSource) : m_pointerInfo(const_cast&>(theSource).release()) { } XalanMemMgrAutoPtr& operator=(XalanMemMgrAutoPtr& theRHS) { if (this != &theRHS) { m_pointerInfo.deallocate(); m_pointerInfo = theRHS.release(); } return *this; } ~XalanMemMgrAutoPtr() { m_pointerInfo.deallocate(); } Type& operator*() const { return *m_pointerInfo.second; } Type* operator->() const { return m_pointerInfo.second; } Type* get() const { return m_pointerInfo.second; } MemoryManager* getMemoryManager() { return m_pointerInfo.first; } const MemoryManager* getMemoryManager() const { return m_pointerInfo.first; } MemMgrAutoPtrData release() { MemMgrAutoPtrData tmp = m_pointerInfo; m_pointerInfo.reset(0, 0); return MemMgrAutoPtrData(tmp); } Type* releasePtr() { MemMgrAutoPtrData tmp = release(); return tmp.second; } void reset( MemoryManager* theManager = 0, Type* thePointer = 0) { m_pointerInfo.deallocate(); m_pointerInfo.reset(theManager, thePointer); } private: // data member MemMgrAutoPtrData m_pointerInfo; }; template class XalanMemMgrAutoPtrArray { public: #if defined(XALAN_STRICT_ANSI_HEADERS) typedef std::size_t size_type; #else typedef size_t size_type; #endif class MemMgrAutoPtrArrayData { public: MemMgrAutoPtrArrayData(): m_memoryManager(0), m_dataArray(0), m_size(0) { } MemMgrAutoPtrArrayData( MemoryManager* memoryManager, Type* dataPointer, size_type size): m_memoryManager(memoryManager), m_dataArray(dataPointer), m_size(size) { invariants(); } bool isInitilized()const { return m_memoryManager != 0 && m_dataArray != 0 && m_size != 0; } void deallocate() { invariants(); if ( isInitilized() ) { assert ( m_dataArray != 0 ); for ( size_type i = 0; i < m_size ; ++i ) { m_dataArray[i].~Type(); } m_memoryManager->deallocate(m_dataArray); } } void reset( MemoryManager* theMemoryManager, Type* thePointer, size_type size) { invariants(); m_memoryManager = theMemoryManager; m_dataArray = thePointer; m_size = size; invariants(); } MemoryManager* m_memoryManager; Type* m_dataArray; size_type m_size; private: void invariants()const { assert( isInitilized() || (m_memoryManager == 0 && m_dataArray == 0 && m_size == 0)); } }; XalanMemMgrAutoPtrArray( MemoryManager& theManager, Type* ptr, size_type size) : m_pointerInfo( &theManager, ptr, size) { } XalanMemMgrAutoPtrArray() : m_pointerInfo() { } XalanMemMgrAutoPtrArray(const XalanMemMgrAutoPtrArray& theSource) : m_pointerInfo(((XalanMemMgrAutoPtr&)theSource).release()) { } XalanMemMgrAutoPtrArray& operator=(XalanMemMgrAutoPtrArray& theRHS) { if (this != &theRHS) { m_pointerInfo.deallocate(); m_pointerInfo = theRHS.release(); } return *this; } ~XalanMemMgrAutoPtrArray() { m_pointerInfo.deallocate(); } Type& operator*() const { return *m_pointerInfo.m_dataArray; } Type* operator->() const { return m_pointerInfo.m_dataArray; } Type* get() const { return m_pointerInfo.m_dataArray; } size_type getSize()const { return m_pointerInfo.m_size; } MemoryManager* getMemoryManager() { return m_pointerInfo.m_memoryManager; } const MemoryManager* getMemoryManager() const { return m_pointerInfo.m_memoryManager; } XalanMemMgrAutoPtrArray& operator++ () { ++m_pointerInfo.m_size; return *this; } /* Since this class is not reference-counted, I don't see how this could work, since the destruction of the temporary will free the controlled pointer. XalanMemMgrAutoPtrArray operator++ (int) { XalanMemMgrAutoPtrArray temp = *this; ++*this; return temp; } */ MemMgrAutoPtrArrayData release() { MemMgrAutoPtrArrayData tmp = m_pointerInfo; m_pointerInfo.reset(0, 0, 0); return MemMgrAutoPtrArrayData(tmp); } Type* releasePtr() { MemMgrAutoPtrArrayData tmp = release(); return tmp.m_dataArray; } void reset( MemoryManager* theManager = 0, Type* thePointer = 0 , size_type size = 0) { m_pointerInfo.deallocate(); m_pointerInfo.reset(theManager, thePointer, size); } Type& operator[](size_type index) const { return m_pointerInfo.m_dataArray[index]; } private: // data member MemMgrAutoPtrArrayData m_pointerInfo; }; XALAN_CPP_NAMESPACE_END #endif // if !defined(XALANMEMMGRAUTOPTR_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/Include/XalanDeque.hpp0000664000175000000640000003331311731656102020360 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANDEQUE_HEADER_GUARD_1357924680) #define XALANDEQUE_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN template struct XalanDequeIteratorTraits { typedef Value value_type; typedef Value& reference; typedef Value* pointer; typedef const Value& const_reference; }; template struct XalanDequeConstIteratorTraits { typedef Value value_type; typedef const Value& reference; typedef const Value* pointer; typedef const Value& const_reference; }; template class XalanDequeIterator { public: typedef size_t size_type; typedef typename Traits::value_type value_type; typedef typename Traits::reference reference; typedef typename Traits::pointer pointer; typedef typename Traits::const_reference const_reference; typedef ptrdiff_t difference_type; typedef XALAN_STD_QUALIFIER random_access_iterator_tag iterator_category; // The non-const iterator type. In the case of the non-const instatiation, this // is the same type. typedef XalanDequeIterator, XalanDeque> Iterator; // The const version needs access to our private data members for copy construction and // assignment. For the const instantiation, this is a superfluous friend declaration, // since it's the same type as the class itself. friend class XalanDequeIterator, XalanDeque>; XalanDequeIterator( XalanDeque* deque, size_type pos) : m_deque(deque), m_pos(pos) { } // This is standard copy-construction for the non-const iterator type. For the // const iterator type, this is copy construction from the non-const type, and the // compiler will generate the standard copy constructor. XalanDequeIterator(const Iterator& iterator) : m_deque(iterator.m_deque), m_pos(iterator.m_pos) { } // This is the standard assignment operator for the non-const iterator type. // For the const iterator type, this is the assignment operator from the // non-const type, and the compiler will generate the standard assignment // operator. XalanDequeIterator& operator=(const Iterator& iterator) { m_deque = iterator.m_deque; m_pos = iterator.m_pos; return *this; } XalanDequeIterator& operator++() { ++m_pos; return *this; } XalanDequeIterator operator++(int) { XalanDequeIterator temp = *this; ++m_pos; return temp; } XalanDequeIterator& operator--() { --m_pos; return *this; } pointer operator->() { return &(*m_deque[m_pos]); } reference operator*() { return (*m_deque)[m_pos]; } const_reference operator*() const { return (*m_deque)[m_pos]; } XalanDequeIterator operator+(difference_type difference) const { return XalanDequeIterator(m_deque, m_pos + difference); } XalanDequeIterator operator-(difference_type difference) const { return XalanDequeIterator(m_deque, m_pos - difference); } difference_type operator-(const XalanDequeIterator& theRHS) const { return m_pos - theRHS.m_pos; } bool operator==(const XalanDequeIterator& theRHS) const { return theRHS.m_deque == m_deque && theRHS.m_pos == m_pos; } bool operator!=(const XalanDequeIterator& theRHS) const { return !(theRHS == *this); } bool operator<(const XalanDequeIterator& theRHS) const { return m_pos < theRHS.m_pos; } private: XalanDeque* m_deque; size_type m_pos; }; /** * Xalan implementation of deque */ template > class XalanDeque { public: typedef size_t size_type; typedef Type value_type; typedef Type& reference; typedef const Type& const_reference; typedef XalanVector BlockType; typedef XalanVector BlockIndexType; typedef XalanDeque ThisType; typedef XalanDequeIterator, ThisType> iterator; typedef XalanDequeIterator, ThisType> const_iterator; #if defined(XALAN_HAS_STD_ITERATORS) typedef XALAN_STD_QUALIFIER reverse_iterator reverse_iterator_; typedef XALAN_STD_QUALIFIER reverse_iterator const_reverse_iterator_; #elif defined(XALAN_RW_NO_CLASS_PARTIAL_SPEC) typedef typename iterator::iterator_category iterator_category; // This is a specific case for the Rogue Wave STL on Solaris. typedef XALAN_STD_QUALIFIER reverse_iterator< iterator, iterator_category, value_type> reverse_iterator_; typedef XALAN_STD_QUALIFIER reverse_iterator< const_iterator, iterator_category, const value_type> const_reverse_iterator_; #else typedef XALAN_STD_QUALIFIER reverse_iterator< iterator, value_type> reverse_iterator_; typedef XALAN_STD_QUALIFIER reverse_iterator< const_iterator, value_type, const_reference> const_reverse_iterator_; #endif typedef reverse_iterator_ reverse_iterator; typedef const_reverse_iterator_ const_reverse_iterator; typedef typename ConstructionTraits::Constructor Constructor; typedef typename Constructor::ConstructableType ConstructableType; XalanDeque( MemoryManager& memoryManager, size_type initialSize = 0, size_type blockSize = 10) : m_memoryManager(&memoryManager), m_blockSize(blockSize), m_blockIndex(memoryManager, initialSize / blockSize + (initialSize % blockSize == 0 ? 0 : 1)), m_freeBlockVector(memoryManager) { const ConstructableType defaultValue(*m_memoryManager); XALAN_USING_STD(fill_n) XALAN_USING_STD(back_inserter) fill_n( back_inserter(*this), initialSize, defaultValue.value); } XalanDeque( const XalanDeque& theRHS, MemoryManager& theMemoryManager) : m_memoryManager(&theMemoryManager), m_blockSize(theRHS.m_blockSize), m_blockIndex(*theRHS.m_memoryManager, theRHS.size() / theRHS.m_blockSize + (theRHS.size() % theRHS.m_blockSize == 0 ? 0 : 1)), m_freeBlockVector(theMemoryManager) { XALAN_USING_STD(copy) XALAN_USING_STD(back_inserter) copy( theRHS.begin(), theRHS.end(), back_inserter(*this)); } static XalanDeque* create( MemoryManager& theManager, size_type initialSize = 0, size_type blockSize = 10) { XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType(theManager, initialSize, blockSize); theGuard.release(); return theResult; } ~XalanDeque() { destroyBlockList(m_freeBlockVector); destroyBlockList(m_blockIndex); } iterator begin() { return iterator(this, 0); } const_iterator begin() const { return const_iterator(const_cast(this), 0); } iterator end() { return iterator(this, size()); } const_iterator end() const { return const_iterator(const_cast(this), size()); } const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } bool empty() const { return m_blockIndex.empty(); } size_type size() const { if (m_blockIndex.empty()) { return 0; } else { return (m_blockIndex.size() - 1) * m_blockSize + m_blockIndex.back()->size(); } } value_type& back() { return m_blockIndex.back()->back(); } value_type& operator[](size_type index) { BlockType& block = *m_blockIndex[index / m_blockSize]; return block[index % m_blockSize]; } const value_type& operator[](size_type index) const { BlockType& block = *m_blockIndex[index / m_blockSize]; return block[index % m_blockSize]; } void clear() { typename BlockIndexType::iterator iter = m_blockIndex.begin(); m_freeBlockVector.reserve(m_freeBlockVector.size() + m_blockIndex.size()); while (iter != m_blockIndex.end()) { (*iter)->clear(); m_freeBlockVector.push_back(*iter); ++iter; } m_blockIndex.clear(); } void push_back(const value_type& value) { if (m_blockIndex.empty() || m_blockIndex.back()->size() >= m_blockSize) { pushNewIndexBlock(); } m_blockIndex.back()->push_back(value); } void pop_back() { assert(!empty()); BlockType& lastBlock = *m_blockIndex.back(); lastBlock.pop_back(); if (lastBlock.empty()) { m_freeBlockVector.push_back(&lastBlock); m_blockIndex.pop_back(); } } void resize(size_type newSize) { const ConstructableType defaultValue(*m_memoryManager); if (newSize > size()) { for (size_type i = 0; i < newSize - size(); ++i) { push_back(defaultValue.value); } } else { for (size_type i = 0; i < size() - newSize; ++i) { pop_back(); } } } void swap(XalanDeque& theRHS) { MemoryManager* const temp = m_memoryManager; m_memoryManager = theRHS.m_memoryManager; theRHS.m_memoryManager = temp; theRHS.m_blockIndex.swap(m_blockIndex); theRHS.m_freeBlockVector.swap(m_freeBlockVector); } XalanDeque& operator=(const XalanDeque& theRHS) { if (this != &theRHS) { XALAN_USING_STD(copy) XALAN_USING_STD(back_inserter) clear(); copy( theRHS.begin(), theRHS.end(), back_inserter(*this)); } return *this; } MemoryManager& getMemoryManager() { assert (m_memoryManager != 0); return *m_memoryManager; } private: void pushNewIndexBlock() { // Allocate space first, so we don't have to worry // about an out-of-memory error once we've constructed // the new block. m_blockIndex.push_back(0); if (m_freeBlockVector.empty()) { XalanConstruct( *m_memoryManager, m_blockIndex.back(), *m_memoryManager, m_blockSize); } else { m_blockIndex.back() = m_freeBlockVector.back(); // Now that ownership has been transfered, pop // it off the free list. m_freeBlockVector.pop_back(); } assert(m_blockIndex.back() != 0); } void destroyBlockList(BlockIndexType& theBlockIndex) { typename BlockIndexType::iterator iter = theBlockIndex.begin(); while (iter != theBlockIndex.end()) { // Normally, we should be able to just call // the version of XalanDestroy() that accepts // a pointer, but Visual Studio 6 has issues // with partial ordering, so we're stuck with // this for now. if (*iter != 0) { XalanDestroy(*m_memoryManager, **iter); } ++iter; } } MemoryManager* m_memoryManager; const size_type m_blockSize; BlockIndexType m_blockIndex; BlockIndexType m_freeBlockVector; // These are not implemented XalanDeque(); XalanDeque(const XalanDeque&); }; XALAN_CPP_NAMESPACE_END #endif // XALANDEQUE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/Include/GCCDefinitions.hpp0000664000175000000640000000370611731656102021124 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(GCCDEFINITIONS_HEADER_GUARD_1357924680) #define GCCDEFINITIONS_HEADER_GUARD_1357924680 // --------------------------------------------------------------------------- // A define in the build for each project is also used to control whether // the export keyword is from the project's viewpoint or the client's. // These defines provide the platform specific keywords that they need // to do this. // --------------------------------------------------------------------------- #define XALAN_PLATFORM_EXPORT #define XALAN_PLATFORM_IMPORT #define XALAN_PLATFORM_EXPORT_FUNCTION(T) T XALAN_PLATFORM_EXPORT #define XALAN_PLATFORM_IMPORT_FUNCTION(T) T XALAN_PLATFORM_IMPORT #define XALAN_SGI_BASED_STL #define XALAN_INLINE_INITIALIZATION #define XALAN_HAS_CPP_NAMESPACE #define XALAN_HAS_STD_ITERATORS #define XALAN_HAS_STD_DISTANCE #define XALAN_NO_STD_NUMERIC_LIMITS #if defined(CYGWIN) #if defined(WIN32) #undef WIN32 #endif #endif #if defined(__MINGW32__) #define XALAN_NO_REENTRANT_TIME_FUNCTIONS #define XALAN_WINDOWS_DIR_FUNCTIONS #define WINDOWS_THREAD_FUNCTIONS #else #define XALAN_POSIX2_AVAILABLE #endif #endif // GCCDEFINITIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanEXSLT/0002775000175000000640000000000012037700125016112 5ustar stevesambaxalan-c-1.11/c/src/xalanc/XalanEXSLT/XalanEXSLTSet.cpp0000664000175000000640000002417311731656102021167 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanEXSLTSet.hpp" #include "XalanEXSLTSetImpl.hpp" #include #include #include XALAN_CPP_NAMESPACE_BEGIN XObjectPtr XalanEXSLTFunctionHasSameNode::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 2) { generalError( executionContext, context, locator); } assert(args[0].null() == false && args[1].null() == false); const NodeRefListBase& nodeset1 = args[0]->nodeset(); const NodeRefListBase& nodeset2 = args[1]->nodeset(); const NodeRefListBase::size_type theLength1 = nodeset1.getLength(); const NodeRefListBase::size_type theLength2 = nodeset2.getLength(); bool fResult = false; if (theLength1 != 0 && theLength2 != 0) { for (NodeRefListBase::size_type i = 0; i < theLength1 && fResult == false; ++i) { XalanNode* const theNode = nodeset1.item(i); assert(theNode != 0); if (nodeset2.indexOf(theNode) != NodeRefListBase::npos) { fResult = true; } } } return executionContext.getXObjectFactory().createBoolean(fResult); } typedef Function::XObjectArgVectorType XObjectArgVectorType; template XObjectPtr findNodes( XPathExecutionContext& executionContext, const XObjectArgVectorType& args, PredicateType thePredicate) { assert(args[0].null() == false && args[1].null() == false); const NodeRefListBase& nodeset1 = args[0]->nodeset(); const NodeRefListBase& nodeset2 = args[1]->nodeset(); const NodeRefListBase::size_type theLength1 = nodeset1.getLength(); const NodeRefListBase::size_type theLength2 = nodeset2.getLength(); if (theLength1 == 0 || theLength2 == 0) { return args[0]; } else { const XalanNode* const theNode = nodeset2.item(0); assert(theNode != 0); XPathExecutionContext::BorrowReturnMutableNodeRefList theNodes(executionContext); const NodeRefListBase::size_type theIndex = nodeset1.indexOf(theNode); if (theIndex != NodeRefListBase::npos) { for (NodeRefListBase::size_type i = 0; i < theLength1; ++i) { XalanNode* const theCurrentNode = nodeset1.item(i); assert(theCurrentNode != 0); if (thePredicate(theCurrentNode, theNode) == true) { theNodes->addNodeInDocOrder(theCurrentNode, executionContext); } } } theNodes->setDocumentOrder(); return executionContext.getXObjectFactory().createNodeSet(theNodes); } } struct LeadingCompareFunctor { LeadingCompareFunctor(XPathExecutionContext& executionContext) : m_executionContext(executionContext) { } bool operator()( const XalanNode* theLHS, const XalanNode* theRHS) const { assert(theLHS != 0 && theRHS != 0); return theLHS != theRHS && m_executionContext.isNodeAfter(*theLHS, *theRHS) == false; } private: XPathExecutionContext& m_executionContext; }; XObjectPtr XalanEXSLTFunctionLeading::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 2) { generalError( executionContext, context, locator); } return findNodes(executionContext, args, LeadingCompareFunctor(executionContext)); } struct TrailingCompareFunctor { TrailingCompareFunctor(XPathExecutionContext& executionContext) : m_executionContext(executionContext) { } bool operator()( const XalanNode* theLHS, const XalanNode* theRHS) const { assert(theLHS != 0 && theRHS != 0); return m_executionContext.isNodeAfter(*theLHS, *theRHS) == true; } private: XPathExecutionContext& m_executionContext; }; XObjectPtr XalanEXSLTFunctionTrailing::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 2) { generalError( executionContext, context, locator); } return findNodes(executionContext, args, TrailingCompareFunctor(executionContext)); } static const XalanDOMChar s_setNamespace[] = { XalanUnicode::charLetter_h, XalanUnicode::charLetter_t, XalanUnicode::charLetter_t, XalanUnicode::charLetter_p, XalanUnicode::charColon, XalanUnicode::charSolidus, XalanUnicode::charSolidus, XalanUnicode::charLetter_e, XalanUnicode::charLetter_x, XalanUnicode::charLetter_s, XalanUnicode::charLetter_l, XalanUnicode::charLetter_t, XalanUnicode::charFullStop, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charLetter_g, XalanUnicode::charSolidus, XalanUnicode::charLetter_s, XalanUnicode::charLetter_e, XalanUnicode::charLetter_t, XalanUnicode::charLetter_s, 0 }; static const XalanDOMChar s_differenceFunctionName[] = { XalanUnicode::charLetter_d, XalanUnicode::charLetter_i, XalanUnicode::charLetter_f, XalanUnicode::charLetter_f, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, 0 }; static const XalanDOMChar s_distinctFunctionName[] = { XalanUnicode::charLetter_d, XalanUnicode::charLetter_i, XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_c, XalanUnicode::charLetter_t, 0 }; static const XalanDOMChar s_hasSameNodeFunctionName[] = { XalanUnicode::charLetter_h, XalanUnicode::charLetter_a, XalanUnicode::charLetter_s, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_s, XalanUnicode::charLetter_a, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_n, XalanUnicode::charLetter_o, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, 0 }; static const XalanDOMChar s_intersectionFunctionName[] = { XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, XalanUnicode::charLetter_s, XalanUnicode::charLetter_e, XalanUnicode::charLetter_c, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; static const XalanDOMChar s_leadingFunctionName[] = { XalanUnicode::charLetter_l, XalanUnicode::charLetter_e, XalanUnicode::charLetter_a, XalanUnicode::charLetter_d, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, 0 }; static const XalanDOMChar s_trailingFunctionName[] = { XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, 0 }; static const XalanEXSLTFunctionDifference s_differenceFunction; static const XalanEXSLTFunctionDistinct s_distinctFunction; static const XalanEXSLTFunctionHasSameNode s_hasSameNodeFunction; static const XalanEXSLTFunctionIntersection s_intersectionFunction; static const XalanEXSLTFunctionLeading s_leadingFunction; static const XalanEXSLTFunctionTrailing s_trailingFunction; static const XalanEXSLTSetFunctionsInstaller::FunctionTableEntry theFunctionTable[] = { { s_differenceFunctionName, &s_differenceFunction }, { s_distinctFunctionName, &s_distinctFunction }, { s_hasSameNodeFunctionName, &s_hasSameNodeFunction }, { s_intersectionFunctionName, &s_intersectionFunction }, { s_leadingFunctionName, &s_leadingFunction }, { s_trailingFunctionName, &s_trailingFunction }, { 0, 0 } }; void XalanEXSLTSetFunctionsInstaller::installLocal(XPathEnvSupportDefault& theSupport) { doInstallLocal(s_setNamespace, theFunctionTable, theSupport); } void XalanEXSLTSetFunctionsInstaller::installGlobal(MemoryManager& theManager) { doInstallGlobal(theManager, s_setNamespace, theFunctionTable); } void XalanEXSLTSetFunctionsInstaller::uninstallLocal(XPathEnvSupportDefault& theSupport) { doUninstallLocal(s_setNamespace, theFunctionTable, theSupport); } void XalanEXSLTSetFunctionsInstaller::uninstallGlobal(MemoryManager& theManager) { doUninstallGlobal(theManager, s_setNamespace, theFunctionTable); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanEXSLT/XalanEXSLTDateTime.cpp0000664000175000000640000001615311731656102022127 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanEXSLTDateTime.hpp" #include "XalanEXSLTDateTimeImpl.hpp" #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN static const XalanEXSLTFunctionDateTime s_dateTimeFunction; static const XalanDOMChar s_dateTimeFunctionName[] = { XalanUnicode::charLetter_d, XalanUnicode::charLetter_a, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, 0 }; static const XalanEXSLTDateTimeFunctionsInstaller::FunctionTableEntry theFunctionTable[] = { { s_dateTimeFunctionName, &s_dateTimeFunction }, { 0, 0 } }; static const XalanDOMChar s_dateTimeNamespace[] = { XalanUnicode::charLetter_h, XalanUnicode::charLetter_t, XalanUnicode::charLetter_t, XalanUnicode::charLetter_p, XalanUnicode::charColon, XalanUnicode::charSolidus, XalanUnicode::charSolidus, XalanUnicode::charLetter_e, XalanUnicode::charLetter_x, XalanUnicode::charLetter_s, XalanUnicode::charLetter_l, XalanUnicode::charLetter_t, XalanUnicode::charFullStop, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charLetter_g, XalanUnicode::charSolidus, XalanUnicode::charLetter_d, XalanUnicode::charLetter_a, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_d, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, 0 }; #if defined(XALAN_STRICT_ANSI_HEADERS) using std::sprintf; using std::time; using std::time_t; using std::tm; #endif #if defined(XALAN_NO_REENTRANT_TIME_FUNCTIONS) #if defined(XALAN_STRICT_ANSI_HEADERS) using std::gmtime; using std::localtime; #endif static struct tm* localtime_r(const time_t *clock, struct tm *res) { assert( res != 0 ); struct tm * tmpTime = localtime(clock); if (tmpTime == 0 ) { return 0; } else { *res = *tmpTime; return res; } } static struct tm * gmtime_r(const time_t *clock, struct tm *res) { assert( res != 0 ); struct tm * tmpTime = gmtime(clock); if (tmpTime == 0 ) { return 0; } else { *res = *tmpTime; return res; } } #endif XObjectPtr XalanEXSLTFunctionDateTime::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 0) { generalError( executionContext, context, locator); } const GetCachedString theGuard(executionContext); XalanDOMString& theResult = theGuard.get(); theResult.clear(); time_t long_time; time( &long_time ); struct tm localTime; const struct tm* ptrStrctTime = localtime_r(&long_time, &localTime); if (ptrStrctTime != 0 ) { struct tm gmtTime; ptrStrctTime = gmtime_r(&long_time, &gmtTime); if(ptrStrctTime != 0 ) { const size_t MAX_DATE_TIME_LEN = 1000; char stringTime[MAX_DATE_TIME_LEN + 1]; const size_t result = strftime(stringTime, MAX_DATE_TIME_LEN, "%Y-%m-%dT%H:%M:%S", ptrStrctTime); if (result != 0) { theResult.assign(stringTime); long localData = localTime.tm_year * 10000 + localTime.tm_mon * 100 + localTime.tm_mday; long gmtData = gmtTime.tm_year * 10000 + gmtTime.tm_mon * 100 + gmtTime.tm_mday; char timeZone[MAX_DATE_TIME_LEN+1]; int offset = 0; if( localData == gmtData ) { if(localTime.tm_hour == gmtTime.tm_hour) { offset = 100; // much bigger then any legal offset } else { offset = localTime.tm_hour - gmtTime.tm_hour; } } else if(localData < gmtData) { offset = localTime.tm_hour - gmtTime.tm_hour - 24; } else { offset = localTime.tm_hour - gmtTime.tm_hour + 24; } if(offset == 100) { sprintf(timeZone, "%s", "Z"); } else { if(offset < 0) { sprintf(timeZone, "%2.2d:00", offset); } else sprintf(timeZone, "+%2.2d:00", offset); } theResult.append(timeZone); } } } return executionContext.getXObjectFactory().createString(theResult); } const XalanDOMString& XalanEXSLTFunctionDateTime::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::EXSLTFunctionAcceptsOneArgument_1Param, s_dateTimeFunctionName); } void XalanEXSLTDateTimeFunctionsInstaller::installLocal(XPathEnvSupportDefault& theSupport) { doInstallLocal(s_dateTimeNamespace, theFunctionTable, theSupport); } void XalanEXSLTDateTimeFunctionsInstaller::installGlobal(MemoryManager& theManager) { doInstallGlobal(theManager, s_dateTimeNamespace, theFunctionTable); } void XalanEXSLTDateTimeFunctionsInstaller::uninstallLocal(XPathEnvSupportDefault& theSupport) { doUninstallLocal(s_dateTimeNamespace, theFunctionTable, theSupport); } void XalanEXSLTDateTimeFunctionsInstaller::uninstallGlobal(MemoryManager& theManager) { doUninstallGlobal(theManager, s_dateTimeNamespace, theFunctionTable); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanEXSLT/XalanEXSLTStringImpl.hpp0000664000175000000640000002211111731656102022517 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(EXSLT_STRINGIMPL_HEADER_GUARD_1357924680) #define EXSLT_STRINGIMPL_HEADER_GUARD_1357924680 #include "XalanEXSLTDefinitions.hpp" #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_EXSLT_EXPORT XalanEXSLTFunctionAlign : public Function { public: typedef Function ParentType; XalanEXSLTFunctionAlign() { } virtual ~XalanEXSLTFunctionAlign() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionAlign* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: const XalanDOMString& getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsTwoOrThreeArguments_1Param, "align()"); } private: // Not implemented... XalanEXSLTFunctionAlign& operator=(const XalanEXSLTFunctionAlign&); bool operator==(const XalanEXSLTFunctionAlign&) const; // Data members... static const XalanDOMChar s_centerString[]; static const XalanDOMChar s_rightString[]; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionConcat : public Function { public: typedef Function ParentType; XalanEXSLTFunctionConcat() : Function() { } virtual ~XalanEXSLTFunctionConcat() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionConcat* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: const XalanDOMString& getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsOneArgument_1Param, "concat()"); } private: // Not implemented... XalanEXSLTFunctionConcat& operator=(const XalanEXSLTFunctionConcat&); bool operator==(const XalanEXSLTFunctionConcat&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionPadding : public Function { public: typedef Function ParentType; XalanEXSLTFunctionPadding(MemoryManager& theManager) : Function(), m_space(s_spaceString, theManager) { } // A dummy constructor for use internally. Do not use this one!!!! XalanEXSLTFunctionPadding( MemoryManager& theManager, int /* theDummy */) : Function(), m_space(theManager) { } XalanEXSLTFunctionPadding( const XalanEXSLTFunctionPadding& other, MemoryManager& theManager) : Function(other), m_space(s_spaceString, theManager) { } virtual ~XalanEXSLTFunctionPadding() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionPadding* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this, theManager); } protected: const XalanDOMString& getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAccepts1Or2Argument_1Param, "padding()"); } private: // Not implemented... XalanEXSLTFunctionPadding(const XalanEXSLTFunctionPadding&); XalanEXSLTFunctionPadding& operator=(const XalanEXSLTFunctionPadding&); bool operator==(const XalanEXSLTFunctionPadding&) const; // Data members... const XalanDOMString m_space; static const XalanDOMChar s_spaceString[]; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionEncodeURI : public Function { public: typedef Function ParentType; XalanEXSLTFunctionEncodeURI() : Function() { } virtual ~XalanEXSLTFunctionEncodeURI() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionEncodeURI* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: const XalanDOMString& getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsTwoOrThreeArguments_1Param, "encode-uri()"); } const XalanDOMString& escapedOctet( XalanDOMChar theChar, XalanDOMString& theBuffer) const; static const XalanDOMChar s_reservedChars[]; static const XalanDOMString::size_type s_reservedCharsSize; static const XalanDOMChar s_excludedChars[]; static const XalanDOMString::size_type s_excludedCharsSize; private: // Not implemented... XalanEXSLTFunctionEncodeURI& operator=(const XalanEXSLTFunctionEncodeURI&); bool operator==(const XalanEXSLTFunctionEncodeURI&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionDecodeURI : public Function { public: typedef Function ParentType; XalanEXSLTFunctionDecodeURI() : Function() { } virtual ~XalanEXSLTFunctionDecodeURI() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionDecodeURI* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: const XalanDOMString& getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAccepts1Or2Argument_1Param, "decode-uri()"); } XalanDOMChar hexCharsToByte( XPathExecutionContext& executionContext, XalanNode* context, const Locator* locator, const XalanDOMChar highHexChar, const XalanDOMChar lowHexChar) const; static const XalanDOMString::size_type s_octetSize; private: // Not implemented... XalanEXSLTFunctionDecodeURI& operator=(const XalanEXSLTFunctionDecodeURI&); bool operator==(const XalanEXSLTFunctionDecodeURI&) const; }; XALAN_CPP_NAMESPACE_END #endif // EXSLT_STRINGIMPL_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanEXSLT/XalanEXSLTCommon.hpp0000664000175000000640000000275511731656102021673 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(EXSLT_COMMON_HEADER_GUARD_1357924680) #define EXSLT_COMMON_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_EXSLT_EXPORT XalanEXSLTCommonFunctionsInstaller : public XalanExtensionsInstaller { public: static void installLocal(XPathEnvSupportDefault& theSupport); static void installGlobal(MemoryManager& theManager); static void uninstallLocal(XPathEnvSupportDefault& theSupport); static void uninstallGlobal(MemoryManager& theManager); private: }; XALAN_CPP_NAMESPACE_END #endif // EXSLT_COMMON_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanEXSLT/XalanEXSLTMath.hpp0000664000175000000640000000274611731656102021334 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(EXSLT_MATH_HEADER_GUARD_1357924680) #define EXSLT_MATH_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_EXSLT_EXPORT XalanEXSLTMathFunctionsInstaller : public XalanExtensionsInstaller { public: static void installLocal(XPathEnvSupportDefault& theSupport); static void installGlobal(MemoryManager& theManager); static void uninstallLocal(XPathEnvSupportDefault& theSupport); static void uninstallGlobal(MemoryManager& theManager); private: }; XALAN_CPP_NAMESPACE_END #endif // EXSLT_MATH_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanEXSLT/XalanEXSLTSet.hpp0000664000175000000640000000274211731656102021172 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(EXSLT_SET_HEADER_GUARD_1357924680) #define EXSLT_SET_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_EXSLT_EXPORT XalanEXSLTSetFunctionsInstaller : public XalanExtensionsInstaller { public: static void installLocal(XPathEnvSupportDefault& theSupport); static void installGlobal(MemoryManager& theManager); static void uninstallLocal(XPathEnvSupportDefault& theSupport); static void uninstallGlobal(MemoryManager& theManager); private: }; XALAN_CPP_NAMESPACE_END #endif // EXSLT_SET_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanEXSLT/XalanEXSLTDateTime.hpp0000664000175000000640000000277211731656102022136 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(EXSLT_DATE_TIME_HEADER_GUARD_1357924680) #define EXSLT_DATE_TIME_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_EXSLT_EXPORT XalanEXSLTDateTimeFunctionsInstaller : public XalanExtensionsInstaller { public: static void installLocal(XPathEnvSupportDefault& theSupport); static void installGlobal(MemoryManager& theManager); static void uninstallLocal(XPathEnvSupportDefault& theSupport); static void uninstallGlobal(MemoryManager& theManager); private: }; XALAN_CPP_NAMESPACE_END #endif // EXSLT_DATE_TIME_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanEXSLT/XalanEXSLTString.cpp0000664000175000000640000006130011731656102021673 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanEXSLTString.hpp" #include "XalanEXSLTStringImpl.hpp" #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN const XalanDOMChar XalanEXSLTFunctionAlign::s_centerString[] = { XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, 0 }; const XalanDOMChar XalanEXSLTFunctionAlign::s_rightString[] = { XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, XalanUnicode::charLetter_g, XalanUnicode::charLetter_h, XalanUnicode::charLetter_t, 0 }; XObjectPtr XalanEXSLTFunctionAlign::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { const XObjectArgVectorType::size_type theSize = args.size(); if (theSize != 2 && theSize != 3) { generalError( executionContext, context, locator); } assert( args[0].null() == false && args[1].null() == false && (theSize == 2 || args[2].null() == false)); const XalanDOMString& theTargetString = args[0]->str(executionContext); const XalanDOMString& thePaddingString = args[1]->str(executionContext); const XalanDOMString::size_type theTargetStringLength = theTargetString.length(); const XalanDOMString::size_type thePaddingStringLength = thePaddingString.length(); if (theTargetStringLength == thePaddingStringLength) { return XObjectPtr(args[0]); } else { const GetCachedString theGuard(executionContext); XalanDOMString& theResult = theGuard.get(); if (theTargetStringLength > thePaddingStringLength) { theResult.assign(theTargetString, 0, thePaddingStringLength); } else { theResult.reserve(thePaddingStringLength); enum eAlignment { eCenter, eLeft, eRight }; eAlignment theAlignment = eLeft; if (theSize == 3) { const XalanDOMString& theAlignmentString = args[2]->str(executionContext); if (equals( s_centerString, theAlignmentString.c_str(), sizeof(s_centerString) / sizeof(s_centerString[0]) - 1) == true) { theAlignment = eCenter; } else if (equals( s_rightString, theAlignmentString.c_str(), sizeof(s_rightString) / sizeof(s_rightString[0]) - 1) == true) { theAlignment = eRight; } } if (theAlignment == eLeft) { theResult = theTargetString; theResult.append(thePaddingString, theTargetStringLength, thePaddingStringLength - theTargetStringLength); } else if (theAlignment == eRight) { theResult.assign(thePaddingString, 0, thePaddingStringLength - theTargetStringLength); theResult.append(theTargetString); } else if (theAlignment == eCenter) { const XalanDOMString::size_type theStartIndex = (thePaddingStringLength - theTargetStringLength) / 2; theResult.assign(thePaddingString, 0, theStartIndex); theResult.append(theTargetString); theResult.append( thePaddingString, theTargetStringLength + theStartIndex, thePaddingStringLength - theTargetStringLength - theStartIndex); } } return executionContext.getXObjectFactory().createString(theResult); } } static const XalanDOMString s_emptyString(XalanMemMgrs::getDummyMemMgr()); XObjectPtr XalanEXSLTFunctionConcat::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 1) { generalError( executionContext, context, locator); } assert(args[0].null() == false); const NodeRefListBase& theNodeSet = args[0]->nodeset(); const NodeRefListBase::size_type theLength = theNodeSet.getLength(); if (theLength == 0) { return executionContext.getXObjectFactory().createStringReference(s_emptyString); } else { const GetCachedString theGuard(executionContext); XalanDOMString& theResult = theGuard.get(); for(NodeRefListBase::size_type i = 0; i < theLength; ++i) { assert(theNodeSet.item(i) != 0); DOMServices::getNodeData(*theNodeSet.item(i), executionContext, theResult); } return executionContext.getXObjectFactory().createString(theResult); } } const XalanDOMChar XalanEXSLTFunctionPadding::s_spaceString[] = { XalanUnicode::charSpace, 0 }; XObjectPtr XalanEXSLTFunctionPadding::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { assert(m_space == s_spaceString); const XObjectArgVectorType::size_type theSize = args.size(); if (theSize != 1 && theSize != 2) { generalError( executionContext, context, locator); } assert( args[0].null() == false && (theSize == 1 || args[1].null() == false)); const double theLength = DoubleSupport::round(args[0]->num(executionContext)); const XalanDOMString& thePaddingString = theSize == 2 ? args[1]->str(executionContext) : m_space; const XalanDOMString::size_type thePaddingStringLength = thePaddingString.length(); if (theLength == 0.0 || thePaddingStringLength == 0) { return executionContext.getXObjectFactory().createStringReference(s_emptyString); } else { const GetCachedString theGuard(executionContext); XalanDOMString& theResult = theGuard.get(); if (thePaddingStringLength == 1) { theResult.assign(XalanDOMString::size_type(theLength), thePaddingString[0]); } else { XalanDOMString::size_type theRemainingLength = XalanDOMString::size_type(theLength); for(;;) { if (theRemainingLength > thePaddingStringLength) { theResult.append(thePaddingString); theRemainingLength -= thePaddingStringLength; } else { theResult.append( thePaddingString, 0, XalanDOMString::size_type(theRemainingLength)); break; } } } return executionContext.getXObjectFactory().createString(theResult); } } // Reserved URI characters const XalanDOMChar XalanEXSLTFunctionEncodeURI::s_reservedChars[] = { XalanUnicode::charDollarSign, XalanUnicode::charAmpersand, XalanUnicode::charPlusSign, XalanUnicode::charComma, XalanUnicode::charSolidus, XalanUnicode::charColon, XalanUnicode::charSemicolon, XalanUnicode::charEqualsSign, XalanUnicode::charQuestionMark, XalanUnicode::charCommercialAt, XalanUnicode::charLeftSquareBracket, XalanUnicode::charRightSquareBracket }; const XalanDOMString::size_type XalanEXSLTFunctionEncodeURI::s_reservedCharsSize = sizeof(s_reservedChars) / sizeof(s_reservedChars[0]); // Excluded URI characters const XalanDOMChar XalanEXSLTFunctionEncodeURI::s_excludedChars[] = { XalanUnicode::charSpace, XalanUnicode::charQuoteMark, XalanUnicode::charNumberSign, XalanUnicode::charPercentSign, XalanUnicode::charLessThanSign, XalanUnicode::charGreaterThanSign, XalanUnicode::charReverseSolidus, XalanUnicode::charCircumflexAccent, XalanUnicode::charGraveAccent, XalanUnicode::charLeftCurlyBracket, XalanUnicode::charVerticalLine, XalanUnicode::charRightCurlyBracket }; const XalanDOMString::size_type XalanEXSLTFunctionEncodeURI::s_excludedCharsSize = sizeof(s_excludedChars) / sizeof(s_excludedChars[0]); XObjectPtr XalanEXSLTFunctionEncodeURI::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { const XObjectArgVectorType::size_type theSize = args.size(); if (theSize != 2 && theSize != 3) { generalError( executionContext, context, locator); } assert( args[0].null() == false && args[1].null() == false && (theSize == 2 || args[2].null() == false)); const XalanDOMString& theString = args[0]->str(executionContext); const bool escapeReserved = args[1]->boolean(executionContext); // We only support UTF-8, which is the default when there are only two arguments. const bool fSupportedEncoding = theSize == 2 || XalanTranscodingServices::encodingIsUTF8(args[2]->str(executionContext)); if (theString.length() == 0 || !fSupportedEncoding) { return executionContext.getXObjectFactory().createStringReference(s_emptyString); } const GetCachedString theGuard(executionContext); XalanDOMString& theResult = theGuard.get(); const GetCachedString theGuard1(executionContext); XalanDOMString& theBuffer = theGuard1.get(); XALAN_USING_STD(find) for (XalanDOMString::size_type i = 0; i < theString.length(); ++i) { const XalanDOMChar ch = theString[i]; // ASCII characters (C0 control and basic Latin) if (ch <= 0x7F) { // Escape all control and excluded URI characters. // Reserved URI characters are optionally escaped. if (ch < 32 || ch > 126 || find(s_excludedChars,s_excludedChars+s_excludedCharsSize,ch) != s_excludedChars+s_excludedCharsSize || (escapeReserved && find(s_reservedChars,s_reservedChars+s_reservedCharsSize,ch) != s_reservedChars+s_reservedCharsSize)) { theResult+= escapedOctet(ch, theBuffer); } else { theResult+= ch; } } // Character is in the BMP else if(ch <= 0x7FF) { const XalanDOMChar highByte = XalanDOMChar((ch >> 6) | 0xC0); const XalanDOMChar lowByte = XalanDOMChar((ch & 0x3F) | 0x80); theResult+= escapedOctet(highByte,theBuffer); theResult+= escapedOctet(lowByte,theBuffer); } // Character is in a higher supplementary plane else if((ch & 0xFC00) == 0xD800) // high surrogate { const XalanDOMChar highSurrogate = XalanDOMChar((ch & 0x03FF) + 0x40); const XalanDOMChar nextChar = theString[++i]; const XalanDOMChar lowSurrogate = XalanDOMChar(nextChar & 0x03FF); const XalanDOMChar byte1 = XalanDOMChar(0xF0 + ((highSurrogate & 0x0300) >> 8)); const XalanDOMChar byte2 = XalanDOMChar(0x80 + ((highSurrogate & 0x00FC) >> 2)); const XalanDOMChar byte3 = XalanDOMChar(0x80 + ((highSurrogate & 0x0003) << 4) + ((lowSurrogate & 0x03C0) >> 6)); const XalanDOMChar byte4 = XalanDOMChar(0x80 + (lowSurrogate & 0x003F)); theResult+= escapedOctet(byte1,theBuffer); theResult+= escapedOctet(byte2,theBuffer); theResult+= escapedOctet(byte3,theBuffer); theResult+= escapedOctet(byte4,theBuffer); } else { const XalanDOMChar highByte = XalanDOMChar((ch >> 12) | 0xE0); const XalanDOMChar middleByte = XalanDOMChar(((ch & 0x0FC0) >> 6) | 0x80); const XalanDOMChar lowByte = XalanDOMChar((ch & 0x3F) | 0x80); theResult+= escapedOctet(highByte,theBuffer); theResult+= escapedOctet(middleByte,theBuffer); theResult+= escapedOctet(lowByte,theBuffer); } } return executionContext.getXObjectFactory().createString(theResult); } const XalanDOMString& XalanEXSLTFunctionEncodeURI::escapedOctet( XalanDOMChar theChar, XalanDOMString& theResult) const { theResult = XalanUnicode::charPercentSign; if (theChar < XalanDOMChar(16)) { theResult += XalanDOMChar(XalanUnicode::charDigit_0); } return NumberToHexDOMString(theChar, theResult); } const XalanDOMString::size_type XalanEXSLTFunctionDecodeURI::s_octetSize = 3; XObjectPtr XalanEXSLTFunctionDecodeURI::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { const XObjectArgVectorType::size_type theSize = args.size(); if (theSize != 1 && theSize != 2) { generalError( executionContext, context, locator); } assert( args[0].null() == false && (theSize == 1 || args[1].null() == false)); const XalanDOMString& theString = args[0]->str(executionContext); // We only support UTF-8, which is the default when there's only one argument. const bool fSupportedEncoding = theSize == 1 || XalanTranscodingServices::encodingIsUTF8(args[1]->str(executionContext)); if (theString.length() == 0 || !fSupportedEncoding) { return executionContext.getXObjectFactory().createStringReference(s_emptyString); } const XPathExecutionContext::GetCachedString theGuard(executionContext); XalanDOMString& theResult = theGuard.get(); for (XalanDOMString::size_type i = 0; i < theString.length(); ++i) { const XalanDOMChar ch = theString[i]; if (ch != XalanUnicode::charPercentSign) { theResult+= ch; continue; } // escaped character // count number of escaped octets XalanDOMString::size_type numOctets = 0; XalanDOMString::size_type j = i; //assert(theString[j] == XalanUnicode::charPercentSign); //assert(j + 2 < theString.length()); while (theString[j] == XalanUnicode::charPercentSign && j + 2 < theString.length()) { ++numOctets; j+= s_octetSize; } // no complete sequences found if (numOctets < 1) { break; } XalanDOMChar byte1 = hexCharsToByte(executionContext, context, locator, theString[i+1],theString[i+2]); if ((byte1 & 0x80) == 0) { i += 2; theResult+=byte1; } else if ((byte1 & 0xE0) == 0xC0 && numOctets >= 2) { i += s_octetSize; XalanDOMChar byte2 = hexCharsToByte(executionContext, context, locator, theString[i+1],theString[i+2]); i+=2; if ((byte2 & 0x80) == 0) { // invalid byte, bypass rest of this sequence i+= (numOctets - 2) * s_octetSize; } theResult+= XalanDOMChar(((byte1 & 0x1F) << 6) + (byte2 & 0x3F)); } else if ((byte1 & 0xF0) == 0xE0 && numOctets >= 3) { i+= s_octetSize; XalanDOMChar byte2 = hexCharsToByte(executionContext, context, locator, theString[i+1],theString[i+2]); i+= s_octetSize; XalanDOMChar byte3 = hexCharsToByte(executionContext, context, locator, theString[i+1],theString[i+2]); i+=2; if ((byte2 & 0x80) == 0 || (byte3 & 0x80) == 0) { // invalid byte, bypass rest of this sequence i+= (numOctets - 3) * s_octetSize; } theResult+= XalanDOMChar(((byte1 & 0x0F) << 12) + ((byte2 & 0x3F) << 6) + (byte3 & 0x3F)); } else if ((byte1 & 0xF8) == 0xF0 && numOctets >=4) { i+= s_octetSize; XalanDOMChar byte2 = hexCharsToByte(executionContext, context, locator, theString[i+1],theString[i+2]); i+= s_octetSize; XalanDOMChar byte3 = hexCharsToByte(executionContext, context, locator, theString[i+1],theString[i+2]); i+= s_octetSize; XalanDOMChar byte4 = hexCharsToByte(executionContext, context, locator, theString[i+1],theString[i+2]); i+=2; if ((byte2 & 0x80) == 0 || (byte3 & 0x80) == 0 || (byte4 & 0x80) == 0) { // invalid byte, bypass rest of this sequence i+= (numOctets - 4) * s_octetSize; } theResult+= XalanDOMChar(0xD800 + ((byte1 & 0x07) << 8) + ((byte2 & 0x3F) << 2) + ((byte3 & 0x30) >> 4) - 0x40); theResult+= XalanDOMChar(0xDC00 + ((byte3 & 0x0F) << 6) + (byte4 & 0x3F)); } else { // invalid byte, bypass rest of this sequence i+=numOctets * s_octetSize -1; } } return executionContext.getXObjectFactory().createString(theResult); } XalanDOMChar XalanEXSLTFunctionDecodeURI::hexCharsToByte( XPathExecutionContext& executionContext, XalanNode* context, const Locator* locator, const XalanDOMChar highHexChar, const XalanDOMChar lowHexChar) const { XalanDOMChar byte = 0; XalanDOMChar curChar = lowHexChar; for (int place = 0; place < 2; ++place) { if (curChar >= XalanUnicode::charDigit_0 && curChar <= XalanUnicode::charDigit_9) // Digit { byte = byte + XalanDOMChar((curChar - XalanUnicode::charDigit_0) << (place * 4)); } else if (curChar >= XalanUnicode::charLetter_A && curChar <= XalanUnicode::charLetter_F) // Uppercase { byte = byte + XalanDOMChar((curChar - XalanUnicode::charLetter_A + 10) << (place * 4)); } else if (curChar >= XalanUnicode::charLetter_a && curChar <= XalanUnicode::charLetter_f) // Lowercase { byte = byte + XalanDOMChar((curChar - XalanUnicode::charLetter_a + 10) << place); } else { const XPathExecutionContext::GetCachedString theGuard(executionContext); executionContext.problem( XPathExecutionContext::eXPath, XPathExecutionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::InvalidURI), locator, context); } curChar = highHexChar; } return byte; } static const XalanDOMChar s_stringNamespace[] = { XalanUnicode::charLetter_h, XalanUnicode::charLetter_t, XalanUnicode::charLetter_t, XalanUnicode::charLetter_p, XalanUnicode::charColon, XalanUnicode::charSolidus, XalanUnicode::charSolidus, XalanUnicode::charLetter_e, XalanUnicode::charLetter_x, XalanUnicode::charLetter_s, XalanUnicode::charLetter_l, XalanUnicode::charLetter_t, XalanUnicode::charFullStop, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charLetter_g, XalanUnicode::charSolidus, XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, XalanUnicode::charLetter_s, 0 }; static const XalanDOMChar s_alignFunctionName[] = { XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_i, XalanUnicode::charLetter_g, XalanUnicode::charLetter_n, 0 }; static const XalanDOMChar s_concatFunctionName[] = { XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, XalanUnicode::charLetter_c, XalanUnicode::charLetter_a, XalanUnicode::charLetter_t, 0 }; static const XalanDOMChar s_paddingFunctionName[] = { XalanUnicode::charLetter_p, XalanUnicode::charLetter_a, XalanUnicode::charLetter_d, XalanUnicode::charLetter_d, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, 0 }; static const XalanDOMChar s_encodeUriFunctionName[] = { XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_u, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, 0 }; static const XalanDOMChar s_decodeUriFunctionName[] = { XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_u, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, 0 }; static const XalanEXSLTFunctionAlign s_alignFunction; static const XalanEXSLTFunctionConcat s_concatFunction; // Note this is a special constructor of XalanEXSLTFunctionPadding which // allocates no memory. It is only used here, so we can have table-based // initialization, but not have any memory allocation. static const XalanEXSLTFunctionPadding s_paddingFunction(XalanMemMgrs::getDummyMemMgr(), 1); static const XalanEXSLTFunctionEncodeURI s_encodeUriFunction; static const XalanEXSLTFunctionDecodeURI s_decodeUriFunction; static const XalanEXSLTStringFunctionsInstaller::FunctionTableEntry theFunctionTable[] = { { s_alignFunctionName, &s_alignFunction }, { s_concatFunctionName, &s_concatFunction }, { s_paddingFunctionName, &s_paddingFunction }, { s_encodeUriFunctionName, &s_encodeUriFunction }, { s_decodeUriFunctionName, &s_decodeUriFunction }, { 0, 0 } }; void XalanEXSLTStringFunctionsInstaller::installLocal(XPathEnvSupportDefault& theSupport) { doInstallLocal(s_stringNamespace, theFunctionTable, theSupport); } void XalanEXSLTStringFunctionsInstaller::installGlobal(MemoryManager& theManager) { doInstallGlobal(theManager, s_stringNamespace, theFunctionTable); } void XalanEXSLTStringFunctionsInstaller::uninstallLocal(XPathEnvSupportDefault& theSupport) { doUninstallLocal(s_stringNamespace, theFunctionTable, theSupport); } void XalanEXSLTStringFunctionsInstaller::uninstallGlobal(MemoryManager& theManager) { doUninstallGlobal(theManager, s_stringNamespace, theFunctionTable); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanEXSLT/XalanEXSLTString.hpp0000664000175000000640000000275711731656102021713 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(EXSLT_STRING_HEADER_GUARD_1357924680) #define EXSLT_STRING_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_EXSLT_EXPORT XalanEXSLTStringFunctionsInstaller : public XalanExtensionsInstaller { public: static void installLocal(XPathEnvSupportDefault& theSupport); static void installGlobal(MemoryManager& theManager); static void uninstallLocal(XPathEnvSupportDefault& theSupport); static void uninstallGlobal(MemoryManager& theManager); private: }; XALAN_CPP_NAMESPACE_END #endif // EXSLT_STRING_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanEXSLT/XalanEXSLTDynamicImpl.hpp0000664000175000000640000000470311731656102022644 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(EXSLT_DYNAMICIMPL_HEADER_GUARD_1357924680) #define EXSLT_DYNAMICIMPL_HEADER_GUARD_1357924680 #include "XalanEXSLTDefinitions.hpp" #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_EXSLT_EXPORT XalanEXSLTFunctionEvaluate : public FunctionEvaluate { public: typedef FunctionEvaluate ParentType; XalanEXSLTFunctionEvaluate() : FunctionEvaluate() { } virtual ~XalanEXSLTFunctionEvaluate() { } using ParentType::execute; virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionEvaluate* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::EXSLTFunctionAcceptsOneArgument_1Param, "evaluate"); } private: // Not implemented... XalanEXSLTFunctionEvaluate& operator=(const XalanEXSLTFunctionEvaluate&); bool operator==(const XalanEXSLTFunctionEvaluate&) const; }; XALAN_CPP_NAMESPACE_END #endif // EXSLT_DYNAMICIMPL_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanEXSLT/XalanEXSLTCommonImpl.hpp0000664000175000000640000001176411731656102022515 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(EXSLT_COMMONIMPL_HEADER_GUARD_1357924680) #define EXSLT_COMMONIMPL_HEADER_GUARD_1357924680 #include "XalanEXSLTDefinitions.hpp" #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_EXSLT_EXPORT XalanEXSLTFunctionNodeSet : public FunctionNodeSet { public: XalanEXSLTFunctionNodeSet() : FunctionNodeSet(true) { } virtual ~XalanEXSLTFunctionNodeSet() { } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionNodeSet* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: virtual const XalanDOMString& getError(XalanDOMString& theBuffer) const { XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsOneArgument_1Param, "node-set()"); return theBuffer; } virtual const XalanDOMString& getInvalidArgumentTypeError(XalanDOMString& theResult) const { XalanMessageLoader::getMessage( theResult, XalanMessages::InvalidArgumentType_1Param, "node-set()"); return theResult; } private: // Not implemented... XalanEXSLTFunctionNodeSet& operator=(const XalanEXSLTFunctionNodeSet&); bool operator==(const XalanEXSLTFunctionNodeSet&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionObjectType : public Function { public: typedef Function ParentType; XalanEXSLTFunctionObjectType(MemoryManager& theManager) : Function(), m_boolean(s_booleanString, theManager), m_external(s_externalString, theManager), m_nodeSet(s_nodeSetString, theManager), m_number(s_numberString, theManager), m_rtf(s_rtfString, theManager), m_string(s_stringString, theManager) { } // A dummy constructor for use internally. Do not use this one!!!! XalanEXSLTFunctionObjectType(MemoryManager& theManager, int /* theDummy */) : Function(), m_boolean(theManager), m_external(theManager), m_nodeSet(theManager), m_number(theManager), m_rtf(theManager), m_string(theManager) { } virtual ~XalanEXSLTFunctionObjectType() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionObjectType* #endif clone(MemoryManager& theManager) const { typedef XalanEXSLTFunctionObjectType ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType(theManager); theGuard.release(); return theResult; } protected: const XalanDOMString& getError(XalanDOMString& theResult) const; private: // Not implemented... XalanEXSLTFunctionObjectType(const XalanEXSLTFunctionObjectType&); XalanEXSLTFunctionObjectType& operator=(const XalanEXSLTFunctionObjectType&); bool operator==(const XalanEXSLTFunctionObjectType&) const; // Data members... const XalanDOMString m_boolean; const XalanDOMString m_external; const XalanDOMString m_nodeSet; const XalanDOMString m_number; const XalanDOMString m_rtf; const XalanDOMString m_string; static const XalanDOMChar s_booleanString[]; static const XalanDOMChar s_externalString[]; static const XalanDOMChar s_nodeSetString[]; static const XalanDOMChar s_numberString[]; static const XalanDOMChar s_rtfString[]; static const XalanDOMChar s_stringString[]; }; XALAN_CPP_NAMESPACE_END #endif // EXSLT_COMMONIMPL_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanEXSLT/XalanEXSLTDefinitions.hpp0000664000175000000640000000244211731656102022707 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(EXSLT_DEFINITIONS_HEADER_GUARD_1357924680) #define EXSLT_DEFINITIONS_HEADER_GUARD_1357924680 #include #if defined(XALAN_BUILD_DLL) #define XALAN_EXSLT_EXPORT XALAN_PLATFORM_EXPORT #define XALAN_EXSLT_EXPORT_FUNCTION(T) XALAN_PLATFORM_EXPORT_FUNCTION(T) #else #define XALAN_EXSLT_EXPORT XALAN_PLATFORM_IMPORT #define XALAN_EXSLT_EXPORT_FUNCTION(T) XALAN_PLATFORM_IMPORT_FUNCTION(T) #endif #endif // EXSLT_DEFINITIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanEXSLT/XalanEXSLTMathImpl.hpp0000664000175000000640000005103511731656102022151 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(EXSLT_MATHIMPL_HEADER_GUARD_1357924680) #define EXSLT_MATHIMPL_HEADER_GUARD_1357924680 #include "XalanEXSLTDefinitions.hpp" #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_EXSLT_EXPORT XalanEXSLTFunctionAbs : public Function { public: typedef Function ParentType; XalanEXSLTFunctionAbs() { } virtual ~XalanEXSLTFunctionAbs() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionAbs* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: const XalanDOMString& getError(XalanDOMString& theBuffer) const; private: // Not implemented... XalanEXSLTFunctionAbs& operator=(const XalanEXSLTFunctionAbs&); bool operator==(const XalanEXSLTFunctionAbs&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionRandom : public Function { public: typedef Function ParentType; XalanEXSLTFunctionRandom() { } virtual ~XalanEXSLTFunctionRandom() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionRandom* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: const XalanDOMString& getError(XalanDOMString& theBuffer) const; private: // Not implemented... XalanEXSLTFunctionRandom& operator=(const XalanEXSLTFunctionRandom&); bool operator==(const XalanEXSLTFunctionRandom&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionAcos : public Function { public: typedef Function ParentType; XalanEXSLTFunctionAcos() { } virtual ~XalanEXSLTFunctionAcos() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionAcos* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: const XalanDOMString& getError(XalanDOMString& theBuffer) const; private: // Not implemented... XalanEXSLTFunctionAcos& operator=(const XalanEXSLTFunctionAcos&); bool operator==(const XalanEXSLTFunctionAcos&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionAsin : public Function { public: typedef Function ParentType; XalanEXSLTFunctionAsin() { } virtual ~XalanEXSLTFunctionAsin() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionAsin* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: const XalanDOMString& getError(XalanDOMString& theBuffer) const; private: // Not implemented... XalanEXSLTFunctionAsin& operator=(const XalanEXSLTFunctionAsin&); bool operator==(const XalanEXSLTFunctionAsin&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionAtan : public Function { public: typedef Function ParentType; XalanEXSLTFunctionAtan() { } virtual ~XalanEXSLTFunctionAtan() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionAtan* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: const XalanDOMString& getError(XalanDOMString& theBuffer) const; private: // Not implemented... XalanEXSLTFunctionAtan& operator=(const XalanEXSLTFunctionAtan&); bool operator==(const XalanEXSLTFunctionAtan&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionAtan2 : public Function { public: typedef Function ParentType; XalanEXSLTFunctionAtan2() { } virtual ~XalanEXSLTFunctionAtan2() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionAtan2* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: const XalanDOMString& getError(XalanDOMString& theBuffer) const; private: // Not implemented... XalanEXSLTFunctionAtan2& operator=(const XalanEXSLTFunctionAtan2&); bool operator==(const XalanEXSLTFunctionAtan2&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionConstant : public Function { public: typedef Function ParentType; XalanEXSLTFunctionConstant() { } virtual ~XalanEXSLTFunctionConstant() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionConstant* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: const XalanDOMString& getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsTwoArguments_1Param, "constant()"); } private: static const XalanDOMChar s_eString[]; static const XalanDOMChar s_ln10String[]; static const XalanDOMChar s_ln2String[]; static const XalanDOMChar s_log2EString[]; static const XalanDOMChar s_piString[]; static const XalanDOMChar s_sqrt1_2String[]; static const XalanDOMChar s_sqrt2String[]; static const double s_eValues[]; static const double s_ln10Values[]; static const double s_ln2Values[]; static const double s_log2EValues[]; static const double s_piValues[]; static const double s_sqrt1_2Values[]; static const double s_sqrt2Values[]; // Not implemented... XalanEXSLTFunctionConstant& operator=(const XalanEXSLTFunctionConstant&); bool operator==(const XalanEXSLTFunctionConstant&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionCos : public Function { public: typedef Function ParentType; XalanEXSLTFunctionCos() { } virtual ~XalanEXSLTFunctionCos() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionCos* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: const XalanDOMString& getError(XalanDOMString& theBuffer) const; private: // Not implemented... XalanEXSLTFunctionCos& operator=(const XalanEXSLTFunctionCos&); bool operator==(const XalanEXSLTFunctionCos&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionExp : public Function { public: typedef Function ParentType; XalanEXSLTFunctionExp() { } virtual ~XalanEXSLTFunctionExp() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionExp* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: const XalanDOMString& getError(XalanDOMString& theBuffer) const; private: // Not implemented... XalanEXSLTFunctionExp& operator=(const XalanEXSLTFunctionExp&); bool operator==(const XalanEXSLTFunctionExp&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionHighest : public Function { public: typedef Function ParentType; XalanEXSLTFunctionHighest() { } virtual ~XalanEXSLTFunctionHighest() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionHighest* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: const XalanDOMString& getError(XalanDOMString& theBuffer) const; private: // Not implemented... XalanEXSLTFunctionHighest& operator=(const XalanEXSLTFunctionHighest&); bool operator==(const XalanEXSLTFunctionHighest&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionLog : public Function { public: typedef Function ParentType; XalanEXSLTFunctionLog() { } virtual ~XalanEXSLTFunctionLog() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionLog* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: const XalanDOMString& getError(XalanDOMString& theBuffer) const; private: // Not implemented... XalanEXSLTFunctionLog& operator=(const XalanEXSLTFunctionLog&); bool operator==(const XalanEXSLTFunctionLog&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionLowest : public Function { public: typedef Function ParentType; XalanEXSLTFunctionLowest() { } virtual ~XalanEXSLTFunctionLowest() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionLowest* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: const XalanDOMString& getError(XalanDOMString& theBuffer) const; private: // Not implemented... XalanEXSLTFunctionLowest& operator=(const XalanEXSLTFunctionLowest&); bool operator==(const XalanEXSLTFunctionLowest&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionMax : public Function { public: typedef Function ParentType; XalanEXSLTFunctionMax() { } virtual ~XalanEXSLTFunctionMax() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionMax* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: const XalanDOMString& getError(XalanDOMString& theBuffer) const; private: // Not implemented... XalanEXSLTFunctionMax& operator=(const XalanEXSLTFunctionMax&); bool operator==(const XalanEXSLTFunctionMax&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionMin : public Function { public: typedef Function ParentType; XalanEXSLTFunctionMin() { } virtual ~XalanEXSLTFunctionMin() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionMin* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: const XalanDOMString& getError(XalanDOMString& theBuffer) const; private: // Not implemented... XalanEXSLTFunctionMin& operator=(const XalanEXSLTFunctionMin&); bool operator==(const XalanEXSLTFunctionMin&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionPower : public Function { public: typedef Function ParentType; XalanEXSLTFunctionPower() { } virtual ~XalanEXSLTFunctionPower() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionPower* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: const XalanDOMString& getError(XalanDOMString& theBuffer) const; private: // Not implemented... XalanEXSLTFunctionPower& operator=(const XalanEXSLTFunctionPower&); bool operator==(const XalanEXSLTFunctionPower&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionSin : public Function { public: typedef Function ParentType; XalanEXSLTFunctionSin() { } virtual ~XalanEXSLTFunctionSin() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionSin* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: const XalanDOMString& getError(XalanDOMString& theBuffer) const; private: // Not implemented... XalanEXSLTFunctionSin& operator=(const XalanEXSLTFunctionSin&); bool operator==(const XalanEXSLTFunctionSin&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionSqrt : public Function { public: typedef Function ParentType; XalanEXSLTFunctionSqrt() { } virtual ~XalanEXSLTFunctionSqrt() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionSqrt* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: const XalanDOMString& getError(XalanDOMString& theBuffer) const; private: // Not implemented... XalanEXSLTFunctionSqrt& operator=(const XalanEXSLTFunctionSqrt&); bool operator==(const XalanEXSLTFunctionSqrt&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionTan : public Function { public: typedef Function ParentType; XalanEXSLTFunctionTan() { } virtual ~XalanEXSLTFunctionTan() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionTan* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: const XalanDOMString& getError(XalanDOMString& theBuffer) const; private: // Not implemented... XalanEXSLTFunctionTan& operator=(const XalanEXSLTFunctionTan&); bool operator==(const XalanEXSLTFunctionTan&) const; }; XALAN_CPP_NAMESPACE_END #endif // EXSLT_MATHIMPL_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanEXSLT/XalanEXSLTSetImpl.hpp0000664000175000000640000001774611731656102022026 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(EXSLT_SETIMPL_HEADER_GUARD_1357924680) #define EXSLT_SETIMPL_HEADER_GUARD_1357924680 #include "XalanEXSLTDefinitions.hpp" #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_EXSLT_EXPORT XalanEXSLTFunctionDifference : public FunctionDifference { public: XalanEXSLTFunctionDifference() : FunctionDifference() { } virtual ~XalanEXSLTFunctionDifference() { } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionDifference* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: virtual const XalanDOMString& getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsTwoArguments_1Param, "difference()"); } private: // Not implemented... XalanEXSLTFunctionDifference& operator=(const XalanEXSLTFunctionDifference&); bool operator==(const XalanEXSLTFunctionDifference&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionDistinct : public FunctionDistinct { public: XalanEXSLTFunctionDistinct() : FunctionDistinct() { } virtual ~XalanEXSLTFunctionDistinct() { } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionDistinct* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: virtual const XalanDOMString& getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer , XalanMessages::EXSLTFunctionAcceptsOneArgument_1Param, "distinct()"); } private: // Not implemented... XalanEXSLTFunctionDistinct& operator=(const XalanEXSLTFunctionDistinct&); bool operator==(const XalanEXSLTFunctionDistinct&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionHasSameNode : public Function { public: typedef Function ParentType; XalanEXSLTFunctionHasSameNode() : Function() { } virtual ~XalanEXSLTFunctionHasSameNode() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionHasSameNode* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: virtual const XalanDOMString& getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsTwoArguments_1Param, "has-same-node()"); } private: // Not implemented... XalanEXSLTFunctionHasSameNode& operator=(const XalanEXSLTFunctionHasSameNode&); bool operator==(const XalanEXSLTFunctionHasSameNode&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionIntersection : public FunctionIntersection { public: XalanEXSLTFunctionIntersection() : FunctionIntersection() { } virtual ~XalanEXSLTFunctionIntersection() { } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionIntersection* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: virtual const XalanDOMString& getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsTwoArguments_1Param, "distinct()"); } private: // Not implemented... XalanEXSLTFunctionIntersection& operator=(const XalanEXSLTFunctionIntersection&); bool operator==(const XalanEXSLTFunctionIntersection&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionLeading : public Function { public: typedef Function ParentType; XalanEXSLTFunctionLeading() : Function() { } virtual ~XalanEXSLTFunctionLeading() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionLeading* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: virtual const XalanDOMString& getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsTwoArguments_1Param, "leading()"); } private: // Not implemented... XalanEXSLTFunctionLeading& operator=(const XalanEXSLTFunctionLeading&); bool operator==(const XalanEXSLTFunctionLeading&) const; }; class XALAN_EXSLT_EXPORT XalanEXSLTFunctionTrailing : public Function { public: typedef Function ParentType; XalanEXSLTFunctionTrailing() : Function() { } virtual ~XalanEXSLTFunctionTrailing() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionTrailing* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: virtual const XalanDOMString& getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsTwoArguments_1Param, "trailing()"); } private: // Not implemented... XalanEXSLTFunctionTrailing& operator=(const XalanEXSLTFunctionTrailing&); bool operator==(const XalanEXSLTFunctionTrailing&) const; }; XALAN_CPP_NAMESPACE_END #endif // EXSLT_SETIMPL_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanEXSLT/XalanEXSLTDateTimeImpl.hpp0000664000175000000640000000424311731656102022753 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(EXSLT_DATE_TIMEIMPL_HEADER_GUARD_1357924680) #define EXSLT_DATE_TIMEIMPL_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_EXSLT_EXPORT XalanEXSLTFunctionDateTime : public Function { public: typedef Function ParentType; XalanEXSLTFunctionDateTime() { } virtual ~XalanEXSLTFunctionDateTime() { } // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual XalanEXSLTFunctionDateTime* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: // Not implemented... XalanEXSLTFunctionDateTime& operator=(const XalanEXSLTFunctionDateTime&); bool operator==(const XalanEXSLTFunctionDateTime&) const; }; XALAN_CPP_NAMESPACE_END #endif //EXSLT_DATE_TIMEIMPL_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanEXSLT/XalanEXSLTDynamic.cpp0000664000175000000640000000720711731656102022017 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanEXSLTDynamic.hpp" #include "XalanEXSLTDynamicImpl.hpp" #include #include #include XALAN_CPP_NAMESPACE_BEGIN XObjectPtr XalanEXSLTFunctionEvaluate::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { try { return ParentType::execute(executionContext, context, args, locator); } catch(const XSLException&) { } XPathExecutionContext::BorrowReturnMutableNodeRefList theGuard(executionContext); return executionContext.getXObjectFactory().createNodeSet(theGuard); } static const XalanDOMChar s_dynamicNamespace[] = { XalanUnicode::charLetter_h, XalanUnicode::charLetter_t, XalanUnicode::charLetter_t, XalanUnicode::charLetter_p, XalanUnicode::charColon, XalanUnicode::charSolidus, XalanUnicode::charSolidus, XalanUnicode::charLetter_e, XalanUnicode::charLetter_x, XalanUnicode::charLetter_s, XalanUnicode::charLetter_l, XalanUnicode::charLetter_t, XalanUnicode::charFullStop, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charLetter_g, XalanUnicode::charSolidus, XalanUnicode::charLetter_d, XalanUnicode::charLetter_y, XalanUnicode::charLetter_n, XalanUnicode::charLetter_a, XalanUnicode::charLetter_m, XalanUnicode::charLetter_i, XalanUnicode::charLetter_c, 0 }; static const XalanDOMChar s_evaluateFunctionName[] = { XalanUnicode::charLetter_e, XalanUnicode::charLetter_v, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_u, XalanUnicode::charLetter_a, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, 0 }; static const XalanEXSLTFunctionEvaluate s_evaluateFunction; static const XalanEXSLTDynamicFunctionsInstaller::FunctionTableEntry theFunctionTable[] = { { s_evaluateFunctionName, &s_evaluateFunction}, { 0, 0 } }; void XalanEXSLTDynamicFunctionsInstaller::installLocal(XPathEnvSupportDefault& theSupport) { doInstallLocal(s_dynamicNamespace, theFunctionTable, theSupport); } void XalanEXSLTDynamicFunctionsInstaller::installGlobal(MemoryManager& theManager) { doInstallGlobal(theManager, s_dynamicNamespace, theFunctionTable); } void XalanEXSLTDynamicFunctionsInstaller::uninstallLocal(XPathEnvSupportDefault& theSupport) { doUninstallLocal(s_dynamicNamespace, theFunctionTable, theSupport); } void XalanEXSLTDynamicFunctionsInstaller::uninstallGlobal(MemoryManager& theManager) { doUninstallGlobal(theManager, s_dynamicNamespace, theFunctionTable); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanEXSLT/XalanEXSLTCommon.cpp0000664000175000000640000001661011731656102021661 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanEXSLTCommon.hpp" #include "XalanEXSLTCommonImpl.hpp" #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN const XalanDOMChar XalanEXSLTFunctionObjectType::s_booleanString[] = { XalanUnicode::charLetter_b, XalanUnicode::charLetter_o, XalanUnicode::charLetter_o, XalanUnicode::charLetter_l, XalanUnicode::charLetter_e, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, 0 }; const XalanDOMChar XalanEXSLTFunctionObjectType::s_externalString[] = { XalanUnicode::charLetter_e, XalanUnicode::charLetter_x, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, XalanUnicode::charLetter_n, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, 0 }; const XalanDOMChar XalanEXSLTFunctionObjectType::s_nodeSetString[] = { XalanUnicode::charLetter_n, XalanUnicode::charLetter_o, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_s, XalanUnicode::charLetter_e, XalanUnicode::charLetter_t, 0 }; const XalanDOMChar XalanEXSLTFunctionObjectType::s_numberString[] = { XalanUnicode::charLetter_n, XalanUnicode::charLetter_u, XalanUnicode::charLetter_m, XalanUnicode::charLetter_b, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, 0 }; const XalanDOMChar XalanEXSLTFunctionObjectType::s_rtfString[] = { XalanUnicode::charLetter_R, XalanUnicode::charLetter_T, XalanUnicode::charLetter_F, 0 }; const XalanDOMChar XalanEXSLTFunctionObjectType::s_stringString[] = { XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, 0 }; static const XalanDOMChar s_objectTypeFunctionName[] = { XalanUnicode::charLetter_o, XalanUnicode::charLetter_b, XalanUnicode::charLetter_j, XalanUnicode::charLetter_e, XalanUnicode::charLetter_c, XalanUnicode::charLetter_t, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_t, XalanUnicode::charLetter_y, XalanUnicode::charLetter_p, XalanUnicode::charLetter_e, 0 }; XObjectPtr XalanEXSLTFunctionObjectType::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { // Make sure nothing's happened to our strings and that // they were actually initialized... assert(XalanDOMString::equals(m_boolean, s_booleanString) == true); assert(XalanDOMString::equals(m_external, s_externalString) == true); assert(XalanDOMString::equals(m_nodeSet, s_nodeSetString) == true); assert(XalanDOMString::equals(m_number, s_numberString) == true); assert(XalanDOMString::equals(m_rtf, s_rtfString) == true); assert(XalanDOMString::equals(m_string, s_stringString) == true); if (args.size() != 1) { generalError( executionContext, context, locator); } assert(args[0].null() == false); const XalanDOMString* theResult = &m_external; switch(args[0]->getType()) { case XObject::eTypeBoolean: theResult = &m_boolean; break; case XObject::eTypeNodeSet: theResult = &m_nodeSet; break; case XObject::eTypeNumber: theResult = &m_number; break; case XObject::eTypeResultTreeFrag: theResult = &m_rtf; break; case XObject::eTypeString: theResult = &m_string; break; default: break; } assert(theResult != 0); return executionContext.getXObjectFactory().createStringReference(*theResult); } const XalanDOMString& XalanEXSLTFunctionObjectType::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::EXSLTFunctionAcceptsOneArgument_1Param, s_objectTypeFunctionName); } static const XalanDOMChar s_commonNamespace[] = { XalanUnicode::charLetter_h, XalanUnicode::charLetter_t, XalanUnicode::charLetter_t, XalanUnicode::charLetter_p, XalanUnicode::charColon, XalanUnicode::charSolidus, XalanUnicode::charSolidus, XalanUnicode::charLetter_e, XalanUnicode::charLetter_x, XalanUnicode::charLetter_s, XalanUnicode::charLetter_l, XalanUnicode::charLetter_t, XalanUnicode::charFullStop, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charLetter_g, XalanUnicode::charSolidus, XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_m, XalanUnicode::charLetter_m, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; static const XalanDOMChar s_nodeSetFunctionName[] = { XalanUnicode::charLetter_n, XalanUnicode::charLetter_o, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_s, XalanUnicode::charLetter_e, XalanUnicode::charLetter_t, 0 }; static const XalanEXSLTFunctionNodeSet s_nodesetFunction; // Note this is a special constructor of XalanEXSLTFunctionObjectType which // allocates no memory. It is only used here, so we can have table-based // initialization, but not have any memory allocation. static const XalanEXSLTFunctionObjectType s_objectTypeFunction(XalanMemMgrs::getDummyMemMgr(), 1); static const XalanEXSLTCommonFunctionsInstaller::FunctionTableEntry theFunctionTable[] = { { s_nodeSetFunctionName, &s_nodesetFunction }, { s_objectTypeFunctionName, &s_objectTypeFunction }, { 0, 0 } }; void XalanEXSLTCommonFunctionsInstaller::installLocal(XPathEnvSupportDefault& theSupport) { doInstallLocal(s_commonNamespace, theFunctionTable, theSupport); } void XalanEXSLTCommonFunctionsInstaller::installGlobal(MemoryManager& theManager) { doInstallGlobal( theManager, s_commonNamespace, theFunctionTable); } void XalanEXSLTCommonFunctionsInstaller::uninstallLocal(XPathEnvSupportDefault& theSupport) { doUninstallLocal(s_commonNamespace, theFunctionTable, theSupport); } void XalanEXSLTCommonFunctionsInstaller::uninstallGlobal(MemoryManager& theManager) { doUninstallGlobal(theManager, s_commonNamespace, theFunctionTable); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanEXSLT/XalanEXSLTMath.cpp0000664000175000000640000011657611731656102021336 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanEXSLTMath.hpp" #include "XalanEXSLTMathImpl.hpp" #include #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN template XObjectPtr findNodes( XPathExecutionContext& executionContext, const NodeRefListBase& theNodeSet, FunctionType theCompareFunction) { const NodeRefListBase::size_type theLength = theNodeSet.getLength(); XPathExecutionContext::BorrowReturnMutableNodeRefList theNodes(executionContext); theNodes->setDocumentOrder(); if (theLength != 0) { const XPathExecutionContext::GetCachedString theGuard(executionContext); XalanDOMString& theStringValue = theGuard.get(); XalanNode* theCurrentNode = theNodeSet.item(0); assert(theCurrentNode != 0); DOMServices::getNodeData(*theCurrentNode, executionContext, theStringValue); double theNumericValue = DOMStringToDouble(theStringValue, executionContext.getMemoryManager()); if (DoubleSupport::isNaN(theNumericValue) == false) { theNodes->addNode(theCurrentNode); for (NodeRefListBase::size_type i = 1; i < theLength; ++i) { theCurrentNode = theNodeSet.item(i); assert(theCurrentNode != 0); theStringValue.clear(); DOMServices::getNodeData(*theCurrentNode, executionContext, theStringValue); const double theCurrent = DOMStringToDouble(theStringValue, executionContext.getMemoryManager()); if (DoubleSupport::isNaN(theCurrent) == true) { theNodes->clear(); break; } else if (DoubleSupport::equal(theCurrent, theNumericValue) == true) { theNodes->addNodeInDocOrder(theCurrentNode, executionContext); } else if (theCompareFunction(theCurrent, theNumericValue) == true) { theNodes->clear(); theNodes->addNode(theCurrentNode); theNumericValue = theCurrent; } } } } return executionContext.getXObjectFactory().createNodeSet(theNodes); } static const XalanDOMChar s_highestFunctionName[] = { XalanUnicode::charLetter_h, XalanUnicode::charLetter_i, XalanUnicode::charLetter_g, XalanUnicode::charLetter_h, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, 0 }; XObjectPtr XalanEXSLTFunctionHighest::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 1) { generalError( executionContext, context, locator); } assert(args[0].null() == false); return findNodes( executionContext, args[0]->nodeset(), DoubleSupport::greaterThan); } const XalanDOMString& XalanEXSLTFunctionHighest::getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsOneArgument_1Param, s_highestFunctionName); } static const XalanDOMChar s_lowestFunctionName[] = { XalanUnicode::charLetter_l, XalanUnicode::charLetter_o, XalanUnicode::charLetter_w, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, 0 }; XObjectPtr XalanEXSLTFunctionLowest::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 1) { generalError( executionContext, context, locator); } assert(args[0].null() == false); return findNodes( executionContext, args[0]->nodeset(), DoubleSupport::lessThan); } const XalanDOMString& XalanEXSLTFunctionLowest::getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsOneArgument_1Param, s_lowestFunctionName); } template XObjectPtr findValue( XPathExecutionContext& executionContext, const NodeRefListBase& theNodeSet, FunctionType theCompareFunction) { const NodeRefListBase::size_type theLength = theNodeSet.getLength(); if (theLength == 0) { return executionContext.getXObjectFactory().createNumber(DoubleSupport::getNaN()); } else { const XPathExecutionContext::GetCachedString theGuard(executionContext); XalanDOMString& theStringValue = theGuard.get(); assert(theNodeSet.item(0) != 0); DOMServices::getNodeData(*theNodeSet.item(0), executionContext, theStringValue); double theResult = DOMStringToDouble(theStringValue, executionContext.getMemoryManager()); for (NodeRefListBase::size_type i = 1; i < theLength; ++i) { assert(theNodeSet.item(i) != 0); theStringValue.clear(); DOMServices::getNodeData(*theNodeSet.item(i), executionContext, theStringValue); const double theCurrent = DOMStringToDouble( theStringValue, executionContext.getMemoryManager()); if (DoubleSupport::isNaN(theCurrent) == true) { theResult = theCurrent; break; } else if (theCompareFunction(theCurrent, theResult) == true) { theResult = theCurrent; } } return executionContext.getXObjectFactory().createNumber(theResult); } } static const XalanDOMChar s_minFunctionName[] = { XalanUnicode::charLetter_m, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, 0 }; XObjectPtr XalanEXSLTFunctionMin::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 1) { generalError( executionContext, context, locator); } assert(args[0].null() == false); return findValue( executionContext, args[0]->nodeset(), DoubleSupport::lessThan); } const XalanDOMString& XalanEXSLTFunctionMin::getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsOneArgument_1Param, s_minFunctionName); } static const XalanDOMChar s_maxFunctionName[] = { XalanUnicode::charLetter_m, XalanUnicode::charLetter_a, XalanUnicode::charLetter_x, 0 }; XObjectPtr XalanEXSLTFunctionMax::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 1) { generalError( executionContext, context, locator); } assert(args[0].null() == false); return findValue( executionContext, args[0]->nodeset(), DoubleSupport::greaterThan); } const XalanDOMString& XalanEXSLTFunctionMax::getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsOneArgument_1Param, s_maxFunctionName); } static const XalanDOMChar s_absFunctionName[] = { XalanUnicode::charLetter_a, XalanUnicode::charLetter_b, XalanUnicode::charLetter_s, 0 }; XObjectPtr XalanEXSLTFunctionAbs::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 1) { generalError( executionContext, context, locator); } assert(args[0].null() == false); return executionContext.getXObjectFactory().createNumber(DoubleSupport::abs(args[0]->num(executionContext))); } const XalanDOMString& XalanEXSLTFunctionAbs::getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsOneArgument_1Param, s_absFunctionName); } static const XalanDOMChar s_randomFunctionName[] = { XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_d, XalanUnicode::charLetter_o, XalanUnicode::charLetter_m, 0 }; XObjectPtr XalanEXSLTFunctionRandom::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.empty() == false) { generalError( executionContext, context, locator); } #if defined(XALAN_STRICT_ANSI_HEADERS) using std::rand; #endif const int value = rand(); double result = 0.0; if (value != 0) { result = double(value) / RAND_MAX; } assert(result >= 0.0L && result <= 1.0L); return executionContext.getXObjectFactory().createNumber(result); } const XalanDOMString& XalanEXSLTFunctionRandom::getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsNoArgument_1Param, s_randomFunctionName); } static const XalanDOMChar s_acosFunctionName[] = { XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_s, 0 }; XObjectPtr XalanEXSLTFunctionAcos::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 1) { generalError( executionContext, context, locator); } assert(args[0].null() == false); #if defined(XALAN_STRICT_ANSI_HEADERS) using std::acos; #endif return executionContext.getXObjectFactory().createNumber(acos(args[0]->num(executionContext))); } const XalanDOMString& XalanEXSLTFunctionAcos::getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsOneArgument_1Param, s_acosFunctionName); } static const XalanDOMChar s_asinFunctionName[] = { XalanUnicode::charLetter_a, XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, 0 }; XObjectPtr XalanEXSLTFunctionAsin::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 1) { generalError( executionContext, context, locator); } assert(args[0].null() == false); #if defined(XALAN_STRICT_ANSI_HEADERS) using std::asin; #endif return executionContext.getXObjectFactory().createNumber(asin(args[0]->num(executionContext))); } const XalanDOMString& XalanEXSLTFunctionAsin::getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsOneArgument_1Param, s_asinFunctionName); } static const XalanDOMChar s_atanFunctionName[] = { XalanUnicode::charLetter_a, XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, 0 }; XObjectPtr XalanEXSLTFunctionAtan::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 1) { generalError( executionContext, context, locator); } assert(args[0].null() == false); #if defined(XALAN_STRICT_ANSI_HEADERS) using std::atan; #endif return executionContext.getXObjectFactory().createNumber(atan(args[0]->num(executionContext))); } const XalanDOMString& XalanEXSLTFunctionAtan::getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsOneArgument_1Param, s_atanFunctionName); } static const XalanDOMChar s_atan2FunctionName[] = { XalanUnicode::charLetter_a, XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charDigit_2, 0 }; XObjectPtr XalanEXSLTFunctionAtan2::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 2) { generalError( executionContext, context, locator); } assert(args[0].null() == false && args[1].null() == false); #if defined(XALAN_STRICT_ANSI_HEADERS) using std::atan2; #endif return executionContext.getXObjectFactory().createNumber( atan2(args[0]->num(executionContext), args[1]->num(executionContext))); } const XalanDOMString& XalanEXSLTFunctionAtan2::getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsTwoArguments_1Param, s_atan2FunctionName); } const XalanDOMChar XalanEXSLTFunctionConstant::s_eString[] = { XalanUnicode::charLetter_E, 0 }; const XalanDOMChar XalanEXSLTFunctionConstant::s_ln10String[] = { XalanUnicode::charLetter_L, XalanUnicode::charLetter_N, XalanUnicode::charDigit_1, XalanUnicode::charDigit_0, 0 }; const XalanDOMChar XalanEXSLTFunctionConstant::s_ln2String[] = { XalanUnicode::charLetter_L, XalanUnicode::charLetter_N, XalanUnicode::charDigit_2, 0 }; const XalanDOMChar XalanEXSLTFunctionConstant::s_log2EString[] = { XalanUnicode::charLetter_L, XalanUnicode::charLetter_O, XalanUnicode::charLetter_G, XalanUnicode::charDigit_2, XalanUnicode::charLetter_E, 0 }; const XalanDOMChar XalanEXSLTFunctionConstant::s_piString[] = { XalanUnicode::charLetter_P, XalanUnicode::charLetter_I, 0 }; const XalanDOMChar XalanEXSLTFunctionConstant::s_sqrt1_2String[] = { XalanUnicode::charLetter_S, XalanUnicode::charLetter_Q, XalanUnicode::charLetter_R, XalanUnicode::charLetter_T, XalanUnicode::charDigit_1, XalanUnicode::charLowLine, XalanUnicode::charDigit_2, 0 }; const XalanDOMChar XalanEXSLTFunctionConstant::s_sqrt2String[] = { XalanUnicode::charLetter_S, XalanUnicode::charLetter_Q, XalanUnicode::charLetter_R, XalanUnicode::charLetter_R, XalanUnicode::charLetter_T, XalanUnicode::charDigit_2, 0 }; const double XalanEXSLTFunctionConstant::s_eValues[] = { 0.0L, 2.7L, 2.71L, 2.718L, 2.7182L, 2.71828L, 2.718281L, 2.7182818L, 2.71828182L, 2.718281828L, 2.7182818284L, 2.71828182845L, 2.718281828459L, 2.7182818284590L, 2.71828182845904L, 2.718281828459045L, 2.7182818284590452L, 2.71828182845904523L, 2.718281828459045235L, 2.7182818284590452353L, 2.71828182845904523536L, 2.718281828459045235360L, 2.7182818284590452353602L, 2.71828182845904523536028L, 2.718281828459045235360287L, 2.7182818284590452353602874L, 2.71828182845904523536028747L, 2.718281828459045235360287471L, 2.7182818284590452353602874713L, 2.71828182845904523536028747135L, 2.718281828459045235360287471352L, 2.7182818284590452353602874713526L, 2.71828182845904523536028747135266L, 2.718281828459045235360287471352662L, 2.7182818284590452353602874713526624L, 2.71828182845904523536028747135266249L, 2.718281828459045235360287471352662497L, 2.7182818284590452353602874713526624977L, 2.71828182845904523536028747135266249775L, 2.718281828459045235360287471352662497757L, 2.7182818284590452353602874713526624977572L, 2.71828182845904523536028747135266249775724L, 2.718281828459045235360287471352662497757247L, 2.7182818284590452353602874713526624977572470L, 2.71828182845904523536028747135266249775724709L, 2.718281828459045235360287471352662497757247093L, 2.7182818284590452353602874713526624977572470936L, 2.71828182845904523536028747135266249775724709369L, 2.718281828459045235360287471352662497757247093699L, 2.7182818284590452353602874713526624977572470936999L, 2.71828182845904523536028747135266249775724709369996L, }; const double XalanEXSLTFunctionConstant::s_ln10Values[] = { 0.0L, 2.3L, 2.30L, 2.302L, 2.3025L, 2.30258L, 2.302585L, 2.3025850L, 2.30258509L, 2.302585092L, 2.3025850929L, 2.30258509299L, 2.302585092994L, 2.3025850929940L, 2.30258509299404L, 2.302585092994046L }; const double XalanEXSLTFunctionConstant::s_ln2Values[] = { 0.0L, 0.6L, 0.69L, 0.693L, 0.6931L, 0.69314L, 0.693147L, 0.6931471L, 0.69314718L, 0.693147180L, 0.6931471805L, 0.69314718055L, 0.693147180559L, 0.6931471805599L, 0.69314718055994L, 0.693147180559945L, 0.6931471805599453L, 0.69314718055994530L, 0.693147180559945309L, 0.6931471805599453094L, 0.69314718055994530941L, 0.693147180559945309417L, 0.6931471805599453094172L, 0.69314718055994530941723L, 0.693147180559945309417232L, 0.6931471805599453094172321L, 0.69314718055994530941723212L, 0.693147180559945309417232121L, 0.6931471805599453094172321214L, 0.69314718055994530941723212145L, 0.693147180559945309417232121458L, 0.6931471805599453094172321214581L, 0.69314718055994530941723212145817L, 0.693147180559945309417232121458176L, 0.6931471805599453094172321214581765L, 0.69314718055994530941723212145817656L, 0.693147180559945309417232121458176568L, 0.6931471805599453094172321214581765680L, 0.69314718055994530941723212145817656807L, 0.693147180559945309417232121458176568075L, 0.6931471805599453094172321214581765680755L, 0.69314718055994530941723212145817656807550L, 0.693147180559945309417232121458176568075500L, 0.6931471805599453094172321214581765680755001L, 0.69314718055994530941723212145817656807550013L, 0.693147180559945309417232121458176568075500134L, 0.6931471805599453094172321214581765680755001343L, 0.69314718055994530941723212145817656807550013436L, 0.693147180559945309417232121458176568075500134360L, 0.6931471805599453094172321214581765680755001343602L, 0.69314718055994530941723212145817656807550013436025L }; const double XalanEXSLTFunctionConstant::s_log2EValues[] = { 0.0L, 1.4L, 1.44L, 1.442L, 1.4426L, 1.44269L, 1.442695L, 1.4426950L, 1.44269504L, 1.442695040L, 1.4426950408L, 1.44269504088L, 1.442695040888L, 1.4426950408889L, 1.44269504088896L, 1.442695040888963L, 1.4426950408889633L }; const double XalanEXSLTFunctionConstant::s_piValues[] = { 0.0L, 3.1L, 3.14L, 3.141L, 3.1415L, 3.14159L, 3.141592L, 3.1415926L, 3.14159265L, 3.141592653L, 3.1415926535L, 3.14159265358L, 3.141592653589L, 3.1415926535897L, 3.14159265358979L, 3.141592653589793L, 3.1415926535897932L, 3.14159265358979323L, 3.141592653589793238L, 3.1415926535897932384L, 3.14159265358979323846L, 3.141592653589793238462L, 3.1415926535897932384626L, 3.14159265358979323846264L, 3.141592653589793238462643L, 3.1415926535897932384626433L, 3.14159265358979323846264338L, 3.141592653589793238462643383L, 3.1415926535897932384626433832L, 3.14159265358979323846264338327L, 3.141592653589793238462643383279L, 3.1415926535897932384626433832795L, 3.14159265358979323846264338327950L, 3.141592653589793238462643383279502L, 3.1415926535897932384626433832795028L, 3.14159265358979323846264338327950288L, 3.141592653589793238462643383279502884L, 3.1415926535897932384626433832795028841L, 3.14159265358979323846264338327950288419L, 3.141592653589793238462643383279502884197L, 3.1415926535897932384626433832795028841971L, 3.14159265358979323846264338327950288419716L, 3.141592653589793238462643383279502884197169L, 3.1415926535897932384626433832795028841971693L, 3.14159265358979323846264338327950288419716939L, 3.141592653589793238462643383279502884197169399L, 3.1415926535897932384626433832795028841971693993L, 3.14159265358979323846264338327950288419716939937L, 3.141592653589793238462643383279502884197169399375L, 3.1415926535897932384626433832795028841971693993751L }; const double XalanEXSLTFunctionConstant::s_sqrt1_2Values[] = { 0.0L, 0.7L, 0.70L, 0.707L, 0.7071L, 0.70710L, 0.707106L, 0.7071067L, 0.70710678L, 0.707106781L, 0.7071067811L, 0.70710678118L, 0.707106781186L, 0.7071067811865L, 0.70710678118654L, 0.707106781186547L, 0.7071067811865476L }; const double XalanEXSLTFunctionConstant::s_sqrt2Values[] = { 0.0L, 1.4L, 1.41L, 1.414L, 1.4142L, 1.41421L, 1.414213L, 1.4142135L, 1.41421356L, 1.414213562L, 1.4142135623L, 1.41421356237L, 1.414213562373L, 1.4142135623730L, 1.41421356237309L, 1.414213562373095L, 1.4142135623730950L, 1.41421356237309504L, 1.414213562373095048L, 1.4142135623730950488L, 1.41421356237309504880L, 1.414213562373095048801L, 1.4142135623730950488016L, 1.41421356237309504880168L, 1.414213562373095048801688L, 1.4142135623730950488016887L, 1.41421356237309504880168872L, 1.414213562373095048801688724L, 1.4142135623730950488016887242L, 1.41421356237309504880168872420L, 1.414213562373095048801688724209L, 1.4142135623730950488016887242096L, 1.41421356237309504880168872420969L, 1.414213562373095048801688724209698L, 1.4142135623730950488016887242096980L, 1.41421356237309504880168872420969807L, 1.414213562373095048801688724209698078L, 1.4142135623730950488016887242096980785L, 1.41421356237309504880168872420969807856L, 1.414213562373095048801688724209698078569L, 1.4142135623730950488016887242096980785696L, 1.41421356237309504880168872420969807856967L, 1.414213562373095048801688724209698078569671L, 1.4142135623730950488016887242096980785696718L, 1.41421356237309504880168872420969807856967187L, 1.414213562373095048801688724209698078569671875L, 1.4142135623730950488016887242096980785696718753L, 1.41421356237309504880168872420969807856967187537L, 1.414213562373095048801688724209698078569671875376L, 1.4142135623730950488016887242096980785696718753769L, 1.41421356237309504880168872420969807856967187537694L }; XObjectPtr doConvert( XPathExecutionContext& executionContext, const double theValues[], size_t theSize, double thePrecision) { return executionContext.getXObjectFactory().createNumber( theValues[XalanDOMString::size_type(thePrecision <= theSize ? thePrecision : theSize)]); } XObjectPtr XalanEXSLTFunctionConstant::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 2) { generalError( executionContext, context, locator); } assert(args[0].null() == false && args[1].null() == false); const XalanDOMString& theConstant = args[0]->str(executionContext); const double thePrecision = DoubleSupport::round(args[1]->num(executionContext)); if (thePrecision <= 0.0L) { return executionContext.getXObjectFactory().createNumber(DoubleSupport::getNaN()); } else if (equals(s_eString, theConstant) == true) { return doConvert( executionContext, s_eValues, sizeof(s_eValues) / sizeof(s_eValues[0]), thePrecision); } else if (equals(s_ln10String, theConstant) == true) { return doConvert( executionContext, s_ln10Values, sizeof(s_ln10Values) / sizeof(s_ln10Values[0]), thePrecision); } else if (equals(s_ln2String, theConstant) == true) { return doConvert( executionContext, s_ln2Values, sizeof(s_ln2Values) / sizeof(s_ln2Values[0]), thePrecision); } else if (equals(s_log2EString, theConstant) == true) { return doConvert( executionContext, s_log2EValues, sizeof(s_log2EValues) / sizeof(s_log2EValues[0]), thePrecision); } else if (equals(s_piString, theConstant) == true) { return doConvert( executionContext, s_piValues, sizeof(s_piValues) / sizeof(s_piValues[0]), thePrecision); } else if (equals(s_sqrt1_2String, theConstant) == true) { return doConvert( executionContext, s_sqrt1_2Values, sizeof(s_sqrt1_2Values) / sizeof(s_sqrt1_2Values[0]), thePrecision); } else if (equals(s_sqrt2String, theConstant) == true) { return doConvert( executionContext, s_sqrt2Values, sizeof(s_sqrt2Values) / sizeof(s_sqrt2Values[0]), thePrecision); } else { return executionContext.getXObjectFactory().createNumber(DoubleSupport::getNaN()); } } static const XalanDOMChar s_cosFunctionName[] = { XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_s, 0 }; XObjectPtr XalanEXSLTFunctionCos::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 1) { generalError( executionContext, context, locator); } assert(args[0].null() == false); #if defined(XALAN_STRICT_ANSI_HEADERS) using std::cos; #endif return executionContext.getXObjectFactory().createNumber(cos(args[0]->num(executionContext))); } const XalanDOMString& XalanEXSLTFunctionCos::getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsOneArgument_1Param, s_cosFunctionName); } static const XalanDOMChar s_expFunctionName[] = { XalanUnicode::charLetter_e, XalanUnicode::charLetter_x, XalanUnicode::charLetter_p, 0 }; XObjectPtr XalanEXSLTFunctionExp::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 1) { generalError( executionContext, context, locator); } assert(args[0].null() == false); #if defined(XALAN_STRICT_ANSI_HEADERS) using std::exp; #endif return executionContext.getXObjectFactory().createNumber(exp(args[0]->num(executionContext))); } const XalanDOMString& XalanEXSLTFunctionExp::getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsOneArgument_1Param, s_expFunctionName); } static const XalanDOMChar s_logFunctionName[] = { XalanUnicode::charLetter_l, XalanUnicode::charLetter_o, XalanUnicode::charLetter_g, 0 }; XObjectPtr XalanEXSLTFunctionLog::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 1) { generalError( executionContext, context, locator); } assert(args[0].null() == false); #if defined(XALAN_STRICT_ANSI_HEADERS) using std::log; #endif return executionContext.getXObjectFactory().createNumber(log(args[0]->num(executionContext))); } const XalanDOMString& XalanEXSLTFunctionLog::getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsOneArgument_1Param, s_logFunctionName); } static const XalanDOMChar s_powerFunctionName[] = { XalanUnicode::charLetter_p, XalanUnicode::charLetter_o, XalanUnicode::charLetter_w, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, 0 }; XObjectPtr XalanEXSLTFunctionPower::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 2) { generalError( executionContext, context, locator); } assert(args[0].null() == false && args[1].null() == false); #if defined(XALAN_STRICT_ANSI_HEADERS) using std::pow; #endif return executionContext.getXObjectFactory().createNumber( pow( args[0]->num(executionContext), args[1]->num(executionContext))); } const XalanDOMString& XalanEXSLTFunctionPower::getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsTwoArguments_1Param, s_powerFunctionName); } static const XalanDOMChar s_sinFunctionName[] = { XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, 0 }; XObjectPtr XalanEXSLTFunctionSin::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 1) { generalError( executionContext, context, locator); } assert(args[0].null() == false); #if defined(XALAN_STRICT_ANSI_HEADERS) using std::sin; #endif return executionContext.getXObjectFactory().createNumber(sin(args[0]->num(executionContext))); } const XalanDOMString& XalanEXSLTFunctionSin::getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsOneArgument_1Param, s_sinFunctionName); } static const XalanDOMChar s_sqrtFunctionName[] = { XalanUnicode::charLetter_s, XalanUnicode::charLetter_q, XalanUnicode::charLetter_r, XalanUnicode::charLetter_t, 0 }; XObjectPtr XalanEXSLTFunctionSqrt::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 1) { generalError( executionContext, context, locator); } assert(args[0].null() == false); #if defined(XALAN_STRICT_ANSI_HEADERS) using std::sqrt; #endif return executionContext.getXObjectFactory().createNumber(sqrt(args[0]->num(executionContext))); } const XalanDOMString& XalanEXSLTFunctionSqrt::getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsOneArgument_1Param, s_sqrtFunctionName); } static const XalanDOMChar s_tanFunctionName[] = { XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, 0 }; XObjectPtr XalanEXSLTFunctionTan::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 1) { generalError( executionContext, context, locator); } assert(args[0].null() == false); #if defined(XALAN_STRICT_ANSI_HEADERS) using std::tan; #endif return executionContext.getXObjectFactory().createNumber(tan(args[0]->num(executionContext))); } const XalanDOMString& XalanEXSLTFunctionTan::getError(XalanDOMString& theBuffer) const { return XalanMessageLoader::getMessage( theBuffer, XalanMessages::EXSLTFunctionAcceptsOneArgument_1Param, s_tanFunctionName); } static const XalanDOMChar s_mathNamespace[] = { XalanUnicode::charLetter_h, XalanUnicode::charLetter_t, XalanUnicode::charLetter_t, XalanUnicode::charLetter_p, XalanUnicode::charColon, XalanUnicode::charSolidus, XalanUnicode::charSolidus, XalanUnicode::charLetter_e, XalanUnicode::charLetter_x, XalanUnicode::charLetter_s, XalanUnicode::charLetter_l, XalanUnicode::charLetter_t, XalanUnicode::charFullStop, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charLetter_g, XalanUnicode::charSolidus, XalanUnicode::charLetter_m, XalanUnicode::charLetter_a, XalanUnicode::charLetter_t, XalanUnicode::charLetter_h, 0 }; static const XalanDOMChar s_constantFunctionName[] = { XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, 0 }; static const XalanEXSLTFunctionAbs s_absFunction; static const XalanEXSLTFunctionAcos s_acosFunction; static const XalanEXSLTFunctionAsin s_asinFunction; static const XalanEXSLTFunctionAtan s_atanFunction; static const XalanEXSLTFunctionAtan2 s_atan2Function; static const XalanEXSLTFunctionConstant s_constantFunction; static const XalanEXSLTFunctionCos s_cosFunction; static const XalanEXSLTFunctionExp s_expFunction; static const XalanEXSLTFunctionHighest s_highestFunction; static const XalanEXSLTFunctionLog s_logFunction; static const XalanEXSLTFunctionLowest s_lowestFunction; static const XalanEXSLTFunctionMax s_maxFunction; static const XalanEXSLTFunctionMin s_minFunction; static const XalanEXSLTFunctionPower s_powerFunction; static const XalanEXSLTFunctionSin s_sinFunction; static const XalanEXSLTFunctionSqrt s_sqrtFunction; static const XalanEXSLTFunctionTan s_tanFunction; static const XalanEXSLTFunctionRandom s_randomFunction; static const XalanEXSLTMathFunctionsInstaller::FunctionTableEntry theFunctionTable[] = { { s_absFunctionName, &s_absFunction }, { s_acosFunctionName, &s_acosFunction }, { s_asinFunctionName, &s_asinFunction }, { s_atanFunctionName, &s_atanFunction }, { s_atan2FunctionName, &s_atan2Function }, { s_constantFunctionName, &s_constantFunction }, { s_cosFunctionName, &s_cosFunction }, { s_expFunctionName, &s_expFunction }, { s_highestFunctionName, &s_highestFunction }, { s_logFunctionName, &s_logFunction }, { s_lowestFunctionName, &s_lowestFunction }, { s_maxFunctionName, &s_maxFunction }, { s_minFunctionName, &s_minFunction }, { s_powerFunctionName, &s_powerFunction }, { s_sinFunctionName, &s_sinFunction }, { s_sqrtFunctionName, &s_sqrtFunction }, { s_tanFunctionName, &s_tanFunction }, { s_randomFunctionName, &s_randomFunction }, { 0, 0 } }; void XalanEXSLTMathFunctionsInstaller::installLocal(XPathEnvSupportDefault& theSupport) { doInstallLocal(s_mathNamespace, theFunctionTable, theSupport); } void XalanEXSLTMathFunctionsInstaller::installGlobal(MemoryManager& theManager) { doInstallGlobal(theManager, s_mathNamespace, theFunctionTable); // Sets the starting point for generating a series of pseudorandom integers, // we need it for random() EXSLT function #if defined(XALAN_STRICT_ANSI_HEADERS) using std::srand; using std::time; #endif srand( (unsigned)time( NULL ) ); } void XalanEXSLTMathFunctionsInstaller::uninstallLocal(XPathEnvSupportDefault& theSupport) { doUninstallLocal(s_mathNamespace, theFunctionTable, theSupport); } void XalanEXSLTMathFunctionsInstaller::uninstallGlobal(MemoryManager& theManager) { doUninstallGlobal(theManager, s_mathNamespace, theFunctionTable); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanEXSLT/XalanEXSLTDynamic.hpp0000664000175000000640000000276311731656102022026 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(EXSLT_DYNAMIC_HEADER_GUARD_1357924680) #define EXSLT_DYNAMIC_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_EXSLT_EXPORT XalanEXSLTDynamicFunctionsInstaller : public XalanExtensionsInstaller { public: static void installLocal(XPathEnvSupportDefault& theSupport); static void installGlobal(MemoryManager& theManager); static void uninstallLocal(XPathEnvSupportDefault& theSupport); static void uninstallGlobal(MemoryManager& theManager); private: }; XALAN_CPP_NAMESPACE_END #endif // EXSLT_DYNAMIC_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/TestXPath/0002775000175000000640000000000012037700125016113 5ustar stevesambaxalan-c-1.11/c/src/xalanc/TestXPath/NodeNameTreeWalker.hpp0000664000175000000640000000465011731656102022310 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(NODENAMETREEWALKER_HEADER_GUARD_1357924680) #define NODENAMETREEWALKER_HEADER_GUARD_1357924680 #include #include // Base class include file. #include XALAN_CPP_NAMESPACE_BEGIN class NodeNameTreeWalker : public TreeWalker { public: typedef XalanVector NodeVectorType; NodeNameTreeWalker(MemoryManager& theManager); virtual ~NodeNameTreeWalker(); /** * Find all nodes matching a specified node in a specified node tree. The * member m_matchingNodes is populated as a side effect. * * @param theNodeName name of node sought * @param theStartNode start node for search */ virtual void findMatchingNodes( const XalanDOMString& theNodeName, const XalanNode* theStartNode); virtual void findMatchingNodes( const XalanDOMString& theNodeName, XalanNode* theStartNode); /** * Retrieve the matching nodes from the last search. * * @return vector of nodes */ const NodeVectorType& getMatchingNodes() const { return m_matchingNodes; } protected: virtual bool startNode(XalanNode* node); virtual bool endNode(XalanNode* node); virtual bool startNode(const XalanNode* node); virtual bool endNode(const XalanNode* node); private: XalanDOMString m_nodeName; NodeVectorType m_matchingNodes; }; XALAN_CPP_NAMESPACE_END #endif // NODENAMETREEWALKER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/TestXPath/TestXPath.cpp0000664000175000000640000012301411731656102020507 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #if !defined(NDEBUG) && defined(_MSC_VER) #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "NodeNameTreeWalker.hpp" XALAN_CPP_NAMESPACE_USE XERCES_CPP_NAMESPACE_USE const XObjectPtr ExecuteXPath( XPathProcessor& theXPathProcessor, XPathConstructionContext& theXPathConstructionContext, XPath& theXPath, const XalanDOMString& theXPathString, XalanNode* theContextNode, const PrefixResolver& thePrefixResolver, const NodeRefListBase& theContextNodeList, XPathExecutionContext& theExecutionContext) { theXPathProcessor.initXPath( theXPath, theXPathConstructionContext, theXPathString, thePrefixResolver); const XObjectPtr theResult = theXPath.execute(theContextNode, thePrefixResolver, theContextNodeList, theExecutionContext); return theResult; } bool TestNumericResult( XPathProcessor& theXPathProcessor, XPath& theXPath, XPathConstructionContext& theXPathConstructionContext, const XalanDOMString& theXPathString, PrintWriter& thePrintWriter, double theExpectedResult, XalanNode* theContextNode, const PrefixResolver& thePrefixResolver, const NodeRefListBase& theContextNodeList, XPathExecutionContext& theExecutionContext) { bool fError = false; const XObjectPtr theResult = ExecuteXPath( theXPathProcessor, theXPathConstructionContext, theXPath, theXPathString, theContextNode, thePrefixResolver, theContextNodeList, theExecutionContext); thePrintWriter.print("Execution of XPath "); thePrintWriter.print(theXPathString); if (theResult->num(theExecutionContext) == theExpectedResult) { thePrintWriter.println(" succeeded."); thePrintWriter.print("The result was "); thePrintWriter.println(theResult->num(theExecutionContext)); } else { fError = true; thePrintWriter.println(" failed!"); thePrintWriter.print("The expected result was "); thePrintWriter.println(theExpectedResult); thePrintWriter.print("The actual result was "); thePrintWriter.println(theResult->num(theExecutionContext)); } return fError; } bool TestStringResult( XPathProcessor& theXPathProcessor, XPath& theXPath, XPathConstructionContext& theXPathConstructionContext, const XalanDOMString& theXPathString, PrintWriter& thePrintWriter, const XalanDOMString& theExpectedResult, XalanNode* theContextNode, const PrefixResolver& thePrefixResolver, const NodeRefListBase& theContextNodeList, XPathExecutionContext& theExecutionContext) { bool fError = false; const XObjectPtr theResult = ExecuteXPath( theXPathProcessor, theXPathConstructionContext, theXPath, theXPathString, theContextNode, thePrefixResolver, theContextNodeList, theExecutionContext); thePrintWriter.print("Execution of XPath "); thePrintWriter.print(theXPathString); if (equals(theResult->str(theExecutionContext), theExpectedResult) == true) { thePrintWriter.println(" succeeded."); thePrintWriter.print("The result was \""); thePrintWriter.print(theResult->str(theExecutionContext)); thePrintWriter.println("\"."); } else { fError = true; thePrintWriter.println(" failed!"); thePrintWriter.print("The expected result was \""); thePrintWriter.print(theExpectedResult); thePrintWriter.println("\"."); thePrintWriter.print("The actual result was \""); thePrintWriter.print(theResult->str(theExecutionContext)); thePrintWriter.println("\"."); } return fError; } bool TestBooleanResult( XPathProcessor& theXPathProcessor, XPath& theXPath, XPathConstructionContext& theXPathConstructionContext, const XalanDOMString& theXPathString, PrintWriter& thePrintWriter, bool theExpectedResult, XalanNode* theContextNode, const PrefixResolver& thePrefixResolver, const NodeRefListBase& theContextNodeList, XPathExecutionContext& theExecutionContext) { bool fError = false; const XObjectPtr theResult = ExecuteXPath( theXPathProcessor, theXPathConstructionContext, theXPath, theXPathString, theContextNode, thePrefixResolver, theContextNodeList, theExecutionContext); bool fDump = false; if (fDump == true) { thePrintWriter.println(); thePrintWriter.println(); theXPath.getExpression().dumpOpCodeMap(thePrintWriter); thePrintWriter.println(); theXPath.getExpression().dumpTokenQueue(thePrintWriter); thePrintWriter.println(); thePrintWriter.println(); } thePrintWriter.print("Execution of XPath "); thePrintWriter.print(theXPathString); if (theResult->boolean(theExecutionContext) == theExpectedResult) { thePrintWriter.println(" succeeded."); thePrintWriter.print("The result was "); thePrintWriter.print(theResult->boolean(theExecutionContext)); thePrintWriter.println("."); } else { fError = true; thePrintWriter.println(" failed!"); thePrintWriter.print("The expected result was \""); thePrintWriter.print(theExpectedResult); thePrintWriter.println("\"."); thePrintWriter.print("The actual result was \""); thePrintWriter.print(theResult->boolean(theExecutionContext)); thePrintWriter.println("\"."); } return fError; } XalanDocument* ParseXML( XMLParserLiaison& theLiaison, const XalanDOMString& theFileName) { const URLInputSource theURLInputSource(theFileName.c_str()); const XalanDOMString empty(XalanMemMgrs::getDummyMemMgr()); return theLiaison.parseXMLStream(theURLInputSource, empty); } XalanDOMString& GetAttributeFromNode( const XalanNode* theNode, const XalanDOMString& theAttributeName, XalanDOMString& theResult) { if (theNode->getNodeType() == XalanNode::ELEMENT_NODE) { const XalanElement* const theElement = static_cast(theNode); const XalanNamedNodeMap* const theAttributes = theElement->getAttributes(); if (theAttributes != 0) { const XalanNode* const theNode = theAttributes->getNamedItem(theAttributeName); if (theNode != 0) { theResult = theNode->getNodeValue(); } } } return theResult; } XalanDOMString& FindNodeAndGetAttributeValue( XalanNode* theStartNode, const XalanDOMString& theNodeName, const XalanDOMString& theAttributeName, XalanDOMString& theResult, MemoryManager& theMemoryManager) { NodeNameTreeWalker theTreeWalker(theMemoryManager); theTreeWalker.findMatchingNodes(theNodeName, theStartNode); const NodeNameTreeWalker::NodeVectorType& theMatchingNodes = theTreeWalker.getMatchingNodes(); if (theMatchingNodes.size() == 1) { const XalanNode* const theMatchingNode = theMatchingNodes[0]; if (theMatchingNode != 0) { GetAttributeFromNode( theMatchingNode, theAttributeName, theResult); } } return theResult; } bool GetXSLInput( XMLParserLiaison& theLiaison, const XalanDOMString& theXSLFileURL, XalanDOMString& theContextNodeMatchPattern, XalanDOMString& theXPathString, MemoryManager& theMemoryManager) { bool fResult = false; XalanDocument* const theDocument = ParseXML(theLiaison, theXSLFileURL); if (theDocument != 0) { const XalanDOMString theContextNodeName("xsl:for-each", theMemoryManager); const XalanDOMString theAttributeName("select", theMemoryManager); FindNodeAndGetAttributeValue( theDocument->getDocumentElement(), theContextNodeName, theAttributeName, theContextNodeMatchPattern, theMemoryManager); if (theContextNodeMatchPattern.empty() == false) { const XalanDOMString theSelectNodeName("xsl:apply-templates", theMemoryManager); FindNodeAndGetAttributeValue( theDocument->getDocumentElement(), theSelectNodeName, theAttributeName, theXPathString, theMemoryManager); if (theXPathString.empty() == false) { fResult = true; } } } return fResult; } XalanNode* FindContextNode( XPathProcessor& theXPathProcessor, XPathEnvSupport& theXPathEnvSupport, DOMSupport& theDOMSupport, XPathFactory& theXPathFactory, XalanDocument* theDocument, const XalanDOMString& theContextNodeMatchPattern, PrintWriter& thePrintWriter, XPathExecutionContext& theExecutionContext) { XalanNode* theResult = 0; MemoryManager& theMemoryManager = theExecutionContext.getMemoryManager(); XPath* const theXPath = theXPathFactory.create(); XPathConstructionContextDefault theXPathConstructionContext; XPathGuard theGuard( theXPathFactory, theXPath); XalanElement* theNamespaceContext = 0; ElementPrefixResolverProxy thePrefixResolver(theNamespaceContext, theXPathEnvSupport, theDOMSupport); NodeRefList theContextNodeList(theMemoryManager); const XObjectPtr theXObject = ExecuteXPath( theXPathProcessor, theXPathConstructionContext, *theXPath, theContextNodeMatchPattern, theDocument, thePrefixResolver, theContextNodeList, theExecutionContext); try { assert(theXObject.null() == false); const NodeRefListBase& theResultList = theXObject->nodeset(); if (theResultList.getLength() == 0) { thePrintWriter.print("FindContextNode: Unable to find context node using select \""); thePrintWriter.print(theContextNodeMatchPattern); thePrintWriter.println("\"."); thePrintWriter.println("FindContextNode: No nodes matched the pattern."); } else if (theResultList.getLength() != 1) { thePrintWriter.print("FindContextNode: Unable to find context node using select \""); thePrintWriter.print(theContextNodeMatchPattern); thePrintWriter.println("\"."); thePrintWriter.println("FindContextNode: More than one node matched the pattern."); } else { theResult = theResultList.item(0); } } catch(...) { thePrintWriter.print("FindContextNode: Error executing match pattern \""); thePrintWriter.print(theContextNodeMatchPattern); thePrintWriter.println("\"."); } return theResult; } bool TestAxisResult( XPathProcessor& theXPathProcessor, XPathEnvSupport& theXPathEnvSupport, DOMSupport& theDOMSupport, XMLParserLiaison& theLiaison, XPathFactory& theXPathFactory, const XalanDOMString& theXMLFileURL, const XalanDOMString& theXSLFileURL, PrintWriter& thePrintWriter, XPathExecutionContext& theExecutionContext) { bool fError = false; XalanDocument* const theXMLDocument = ParseXML(theLiaison, theXMLFileURL); MemoryManager& theMemoryManager = theExecutionContext.getMemoryManager(); if (theXMLDocument != 0) { XalanDOMString theContextNodeMatchPattern(theMemoryManager); XalanDOMString theXPathString(theMemoryManager); if (GetXSLInput(theLiaison, theXSLFileURL, theContextNodeMatchPattern, theXPathString, theMemoryManager) == true) { XalanNode* const theContextNode = FindContextNode(theXPathProcessor, theXPathEnvSupport, theDOMSupport, theXPathFactory, theXMLDocument, theContextNodeMatchPattern, thePrintWriter, theExecutionContext); if (theContextNode != 0) { XalanElement* const theNamespaceContext = 0; ElementPrefixResolverProxy thePrefixResolver(theNamespaceContext, theXPathEnvSupport, theDOMSupport); NodeRefList theContextNodeList(theMemoryManager); XPath* const theXPath = theXPathFactory.create(); XPathConstructionContextDefault theXPathConstructionContext(theMemoryManager); XPathGuard theGuard(theXPathFactory, theXPath); theXPathProcessor.initXPath(*theXPath, theXPathConstructionContext, theXPathString, thePrefixResolver); bool fDump = false; if (fDump == true) { thePrintWriter.println(); thePrintWriter.println(); theXPath->getExpression().dumpOpCodeMap(thePrintWriter); thePrintWriter.println(); theXPath->getExpression().dumpTokenQueue(thePrintWriter); thePrintWriter.println(); thePrintWriter.println(); } const XObjectPtr theResult = theXPath->execute(theContextNode, thePrefixResolver, theContextNodeList, theExecutionContext); try { assert(theResult.null() == false); const NodeRefListBase& theResultList = theResult->nodeset(); const NodeRefListBase::size_type theLength = theResultList.getLength(); if (theLength == 0) { thePrintWriter.println(""); } else { thePrintWriter.print(""); for (NodeRefListBase::size_type i = 0; i < theLength; i++) { thePrintWriter.print(theResultList.item(i)->getNodeName()); thePrintWriter.print(" "); } thePrintWriter.println(""); } } catch(...) { thePrintWriter.print("Execution of XPath "); thePrintWriter.print(theXPathString); thePrintWriter.println(" failed!"); } } } } theLiaison.reset(); return fError; } bool TestPredicateResult( XPathProcessor& theXPathProcessor, XPathEnvSupport& theXPathEnvSupport, DOMSupport& theDOMSupport, XMLParserLiaison& theLiaison, XPathFactory& theXPathFactory, const XalanDOMString& theXMLFileURL, const XalanDOMString& theXSLFileURL, PrintWriter& thePrintWriter, XPathExecutionContext& theExecutionContext) { bool fError = false; XalanDocument* const theXMLDocument = ParseXML(theLiaison, theXMLFileURL); MemoryManager& theMemoryManager = theExecutionContext.getMemoryManager(); if (theXMLDocument != 0) { XalanDOMString theContextNodeMatchPattern(theMemoryManager); XalanDOMString theXPathString(theMemoryManager); if (GetXSLInput(theLiaison, theXSLFileURL, theContextNodeMatchPattern, theXPathString, theMemoryManager) == true) { XalanNode* const theContextNode = FindContextNode(theXPathProcessor, theXPathEnvSupport, theDOMSupport, theXPathFactory, theXMLDocument, theContextNodeMatchPattern, thePrintWriter, theExecutionContext); if (theContextNode != 0) { XalanElement* const theNamespaceContext = 0; ElementPrefixResolverProxy thePrefixResolver(theNamespaceContext, theXPathEnvSupport, theDOMSupport); NodeRefList theContextNodeList(theMemoryManager); XPath* const theXPath1 = theXPathFactory.create(); XPathConstructionContextDefault theXPathConstructionContext(theMemoryManager); XPathGuard theGuard1(theXPathFactory, theXPath1); XalanDOMString theResult(theMemoryManager); theXPathProcessor.initXPath(*theXPath1, theXPathConstructionContext, TranscodeFromLocalCodePage("following-sibling::*", theResult), thePrefixResolver); XPath* const theXPath2 = theXPathFactory.create(); XPathGuard theGuard2(theXPathFactory, theXPath2); theXPathProcessor.initXPath(*theXPath2, theXPathConstructionContext, TranscodeFromLocalCodePage("descendant::*", theResult), thePrefixResolver); bool fDump = false; if (fDump == true) { thePrintWriter.println(); thePrintWriter.println(); theXPath1->getExpression().dumpOpCodeMap(thePrintWriter); thePrintWriter.println(); theXPath1->getExpression().dumpTokenQueue(thePrintWriter); thePrintWriter.println(); thePrintWriter.println(); theXPath2->getExpression().dumpOpCodeMap(thePrintWriter); thePrintWriter.println(); theXPath2->getExpression().dumpTokenQueue(thePrintWriter); thePrintWriter.println(); thePrintWriter.println(); } XalanNode* theContextNode = theXMLDocument->getFirstChild()->getFirstChild(); for( ; theContextNode != 0; theContextNode = theContextNode->getNextSibling()) { if (theContextNode->getNodeType() != XalanNode::ELEMENT_NODE) { continue; } const XObjectPtr theResult1 = theXPath1->execute(theExecutionContext); try { assert(theResult1.null() == false); const NodeRefListBase& theResultList = theResult1->nodeset(); const NodeRefListBase::size_type theLength = theResultList.getLength(); thePrintWriter.print("theResult1->str() == \""); thePrintWriter.print(theResult1->str(theExecutionContext)); thePrintWriter.print("\""); thePrintWriter.println(); for (NodeRefListBase::size_type i = 0; i < theLength; i++) { thePrintWriter.print(theResultList.item(i)->getNodeName()); thePrintWriter.println(); } } catch(...) { thePrintWriter.print("Execution of XPath "); thePrintWriter.print(theXPathString); thePrintWriter.println(" failed!"); } const XObjectPtr theResult2 = theXPath2->execute(theExecutionContext); try { assert(theResult2.null() == false); const NodeRefListBase& theResultList = theResult2->nodeset(); const NodeRefListBase::size_type theLength = theResultList.getLength(); thePrintWriter.print("theResult2->str() == \""); thePrintWriter.print(theResult2->str(theExecutionContext)); thePrintWriter.print("\""); thePrintWriter.println(); for (NodeRefListBase::size_type i = 0; i < theLength; i++) { thePrintWriter.print(theResultList.item(i)->getNodeName()); thePrintWriter.println(); } } catch(...) { thePrintWriter.print("Execution of XPath "); thePrintWriter.print(theXPathString); thePrintWriter.println(" failed!"); } if (theResult1->equals(*theResult2, theExecutionContext) == true) { thePrintWriter.print("theResult1 is equal to theResult2"); thePrintWriter.println(); thePrintWriter.print("theContextNode->getNodeName() == \""); thePrintWriter.print(theContextNode->getNodeName()); thePrintWriter.print("\" theContextNode->getNodeValue() == \""); thePrintWriter.print(theContextNode->getNodeValue()); thePrintWriter.println("\""); } } } } } return fError; } const char* const theNumericTestInput[] = { "9 + 7 - 6 * 42 + 36 div 3 + 100 - 2 * 6", "9 + 7 - 6 + 3 + 24 - 32 - 89 + 123 - 12256 + 89957", "0 + 0", "1 div 2", "1 * 0.25", "3 * 3 * 3", "9 div 3 div 3", "15.95 - 13.56", 0 }; const double theNumericTestExpectedOutput[] = { -136.0, 77740.0, 0, 0.5, 0.25, 27, 1, 15.95 - 13.56, 0 // This is a dummy entry and should be last. }; void TestNumericResults( XPathFactory& theXPathFactory, XPathProcessor& theXPathProcessor, XPathEnvSupport& theXPathEnvSupport, DOMSupport& theDOMSupport, PrintWriter& thePrintWriter, XPathExecutionContext& theExecutionContext) { assert(sizeof(theNumericTestInput) / sizeof(theNumericTestInput[0]) == sizeof(theNumericTestExpectedOutput) / sizeof(theNumericTestExpectedOutput[0])); MemoryManager& theMemoryManager = theExecutionContext.getMemoryManager(); for(int i = 0; theNumericTestInput[i] != 0; i++) { try { XPath* const theXPath = theXPathFactory.create(); XPathConstructionContextDefault theXPathConstructionContext(theMemoryManager); XPathGuard theGuard(theXPathFactory, theXPath); XalanDOMString theInputString(theMemoryManager); const ElementPrefixResolverProxy thePrefixResolver( 0, theXPathEnvSupport, theDOMSupport); const NodeRefList theDummyNodeList(theMemoryManager); TestNumericResult( theXPathProcessor, *theXPath, theXPathConstructionContext, TranscodeFromLocalCodePage(theNumericTestInput[i], theInputString), thePrintWriter, theNumericTestExpectedOutput[i], 0, thePrefixResolver, theDummyNodeList, theExecutionContext); } catch(...) { thePrintWriter.print("Exception caught evaluating XPath \""); thePrintWriter.print(theNumericTestInput[i]); thePrintWriter.println(); } } } const char* const theStringTestInput[] = { "string(0)", "string(1.5)", "string(-1.5)", "string(0.5)", "string(-0.5)", "string(9)", "string(-9)", "string(\"9\")", "string(0.25)", "concat(\"foo\", \"bar\")", "concat(\"foo\", \"bar\", \"sky\")", "contains(\"foobar\", \"oba\")", "contains(\"LotusXSL4C is great\", \"boag\")", "starts-with(\"foobar\", \"foo\")", "starts-with(\"LotusXSL4C is great\", \"boag\")", "substring-after(\"1999/04/01\", \"/\")", "substring-after(\"1999/04/01\", \"19\")", "substring-before(\"1999/04/01\", \"/\")", "substring-before(\"1999/04/01\", \"01\")", "substring(\"12345\", 1.5, 2.6)", "substring(\"12345\", 0, 3)", "substring(\"12345\", 5, 29)", "substring(\"12345\", -1, 2)", "substring(\"12345\", -2, -1)", "substring(\"12345\", -2)", "normalize-space(\" aa a \")", "translate(\"---aaa--\", \"abc-\", \"ABC\")", "5 = 0", "5 = 5", 0 }; const char* const theStringTestExpectedOutput[] = { "0", "1.5", "-1.5", "0.5", "-0.5", "9", "-9", "9", "0.25", "foobar", "foobarsky", "true", "false", "true", "false", "04/01", "99/04/01", "1999", "1999/04/", "234", "12", "5", "", "", "12345", "aa a", "AAA", "false", "true", 0 }; void TestStringResults( XPathFactory& theXPathFactory, XPathProcessor& theXPathProcessor, XPathEnvSupport& theXPathEnvSupport, DOMSupport& theDOMSupport, PrintWriter& thePrintWriter, XPathExecutionContext& theExecutionContext) { assert(sizeof(theStringTestInput) == sizeof(theStringTestExpectedOutput)); MemoryManager& theMemoryManager = theExecutionContext.getMemoryManager(); for(int i = 0; theStringTestInput[i] != 0; i++) { try { XPath* const theXPath = theXPathFactory.create(); XPathConstructionContextDefault theXPathConstructionContext(theMemoryManager); const XPathGuard theGuard( theXPathFactory, theXPath); XalanDOMString theInputString(theMemoryManager); XalanDOMString theResult(theMemoryManager); const ElementPrefixResolverProxy thePrefixResolver( 0, theXPathEnvSupport, theDOMSupport); const NodeRefList theDummyNodeList(theMemoryManager); TestStringResult( theXPathProcessor, *theXPath, theXPathConstructionContext, TranscodeFromLocalCodePage(theStringTestInput[i], theInputString), thePrintWriter, TranscodeFromLocalCodePage(theStringTestExpectedOutput[i], theResult), 0, thePrefixResolver, theDummyNodeList, theExecutionContext); } catch(...) { thePrintWriter.print("Exception caught evaluating XPath \""); thePrintWriter.print(theStringTestInput[i]); thePrintWriter.println(); } } } const char* const theBooleanTestInput[] = { "0 < 2 < 3", "0 < 2 > 3", "1 < 2 < 3", "0 div 0 != 0 div 0", "0 div 0 = 0 div 0", "1 < 0 div 0", "1 <= 0 div 0", "2 > 0 div 0", "2 >= 0 div 0", "1 < 2", "1500 < 657", "1465787676 < 5 div 0", "4657 div 0 < 4563745658", "1000 <= 256000", "1000 <= 1000", "200564 <= 1999", "5768594 <= 56 div 0", "564783 div 0 <= 6758494857", "2015 > 100", "56478 > 240000", "4657 div 0 > 57683946", "573068574 > 5 div 0", "46000 >= 1500", "56983 >= 56983", "460983 >= 1500000", "67594876 div 0 >= 576849", "1465787676 >= 5 div 0", "-1465787676 >= -5 div 0", "-1679 < -87 div 0", "1 = 2 = 0", "1 = 2 != 0", 0 }; const bool theBooleanTestExpectedOutput[] = { true, false, true, true, false, false, false, false, false, true, false, true, false, true, true, false, true, false, true, false, true, false, true, true, false, true, false, true, false, true, false, 0 }; void TestBooleanResults( XPathFactory& theXPathFactory, XPathProcessor& theXPathProcessor, XPathEnvSupport& theXPathEnvSupport, DOMSupport& theDOMSupport, PrintWriter& thePrintWriter, XPathExecutionContext& theExecutionContext) { assert(sizeof(theBooleanTestInput) / sizeof(theBooleanTestInput[0]) == sizeof(theBooleanTestExpectedOutput) / sizeof(theBooleanTestExpectedOutput[0])); MemoryManager& theMemoryManager = theExecutionContext.getMemoryManager(); for(int i = 0; theBooleanTestInput[i] != 0; i++) { try { XPath* const theXPath = theXPathFactory.create(); XPathConstructionContextDefault theXPathConstructionContext(theMemoryManager); XPathGuard theGuard(theXPathFactory, theXPath); XalanDOMString theInputString(theMemoryManager); const ElementPrefixResolverProxy thePrefixResolver( 0, theXPathEnvSupport, theDOMSupport); const NodeRefList theDummyNodeList(theMemoryManager); TestBooleanResult( theXPathProcessor, *theXPath, theXPathConstructionContext, TranscodeFromLocalCodePage(theBooleanTestInput[i], theInputString), thePrintWriter, theBooleanTestExpectedOutput[i], 0, thePrefixResolver, theDummyNodeList, theExecutionContext); } catch(...) { thePrintWriter.print("Exception caught evaluating XPath \""); thePrintWriter.print(theStringTestInput[i]); thePrintWriter.println(); } } } XalanDOMString& GetXSLFileName( const XalanDOMString& theXMLFileName, XalanDOMString& theResult) { const XalanDOMString::size_type thePeriodIndex = lastIndexOf(theXMLFileName, XalanUnicode::charFullStop); if (thePeriodIndex != XalanDOMString::npos) { substring( theXMLFileName, theResult, 0, thePeriodIndex + 1); theResult.append("xsl"); } return theResult; } void TestAxes( XPathFactory& theXPathFactory, XPathProcessor& theXPathProcessor, XPathEnvSupport& theXPathEnvSupport, DOMSupport& theDOMSupport, XMLParserLiaison& theLiaison, const XalanDOMString& theDirectory, PrintWriter& thePrintWriter, XPathExecutionContext& theExecutionContext) { MemoryManager& theMemoryManager = XalanMemMgrs::getDefaultXercesMemMgr(); const XalanDOMString theProtocol("file://", theMemoryManager); XalanDOMString theBaseURL (theProtocol , theMemoryManager); theBaseURL += theDirectory; XalanDOMString thetmp(theDirectory, theMemoryManager); #if defined(XALAN_WINDOWS) thetmp.append("\\*"); #else thetmp.append("/*"); #endif const XalanDOMString theSearchSpecification(thetmp, theMemoryManager); const XalanDOMString theXMLSuffix(".xml", theMemoryManager); typedef XalanVector FileNameVectorType; DirectoryEnumeratorFunctor theEnumerator(theMemoryManager); FileNameVectorType theFiles(theMemoryManager); theEnumerator(theSearchSpecification, theFiles); thePrintWriter.println(); for(FileNameVectorType::size_type i = 0; i < theFiles.size(); i++) { if (endsWith(theFiles[i], theXMLSuffix) == true) { try { // Create a fully qualified URL specification... XalanDOMString theXMLFileName (theBaseURL, theMemoryManager); theXMLFileName += theFiles[i]; // Get the name of the corresponding XSL file... XalanDOMString theXSLFileName (theMemoryManager); GetXSLFileName(theXMLFileName, theXSLFileName); XPathGuard theXPath(theXPathFactory, theXPathFactory.create()); TestAxisResult(theXPathProcessor, theXPathEnvSupport, theDOMSupport, theLiaison, theXPathFactory, theXMLFileName, theXSLFileName, thePrintWriter, theExecutionContext); } catch(...) { thePrintWriter.print("Exception caught evaluating XPath!"); thePrintWriter.println(); } } } } void RunTests( XPathFactory& theXPathFactory, XPathProcessor& theXPathProcessor, XPathEnvSupport& theXPathEnvSupport, DOMSupport& theDOMSupport, XMLParserLiaison& theLiaison, PrintWriter& thePrintWriter, XPathExecutionContext& theExecutionContext) { TestNumericResults(theXPathFactory, theXPathProcessor, theXPathEnvSupport, theDOMSupport, thePrintWriter, theExecutionContext); TestStringResults(theXPathFactory, theXPathProcessor, theXPathEnvSupport, theDOMSupport, thePrintWriter, theExecutionContext); TestBooleanResults(theXPathFactory, theXPathProcessor, theXPathEnvSupport, theDOMSupport, thePrintWriter, theExecutionContext); const XalanDOMString theDir( "/xsl-test/conf/axes/", XalanMemMgrs::getDefaultXercesMemMgr()); TestAxes(theXPathFactory, theXPathProcessor, theXPathEnvSupport, theDOMSupport, theLiaison, theDir, thePrintWriter, theExecutionContext); } int main( int /* argc */, char* /* argv */ []) { XALAN_USING_STD(cout) #if !defined(NDEBUG) && defined(_MSC_VER) _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); #endif XMLPlatformUtils::Initialize(); XalanTransformer::initialize(); { MemoryManager& theMemoryManager = XalanMemMgrs::getDefaultXercesMemMgr(); XMLSupportInit theXMLSupportInit; XPathInit theXPathInit( theMemoryManager ); XPathEnvSupportDefault theXPathEnvSupport( theMemoryManager ); XalanSourceTreeDOMSupport theDOMSupport; XObjectFactoryDefault theXObjectFactory( theMemoryManager ); XPathFactoryDefault theXPathFactory( theMemoryManager ); XPathProcessorImpl theXPathProcessor( theMemoryManager ); XPathExecutionContextDefault theExecutionContext(theXPathEnvSupport, theDOMSupport, theXObjectFactory); XalanStdOutputStream theStdOut(cout, theMemoryManager); XalanOutputStreamPrintWriter thePrintWriter(theStdOut); XalanSourceTreeParserLiaison theLiaison(theDOMSupport, theMemoryManager); RunTests(theXPathFactory, theXPathProcessor, theXPathEnvSupport, theDOMSupport, theLiaison, thePrintWriter, theExecutionContext); } XalanTransformer::terminate(); XMLPlatformUtils::Terminate(); return 0; } xalan-c-1.11/c/src/xalanc/TestXPath/NodeNameTreeWalker.cpp0000664000175000000640000000473011731656102022302 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include // Class include file. #include "NodeNameTreeWalker.hpp" XALAN_CPP_NAMESPACE_BEGIN NodeNameTreeWalker::NodeNameTreeWalker(MemoryManager& theManager) : TreeWalker(), m_nodeName(theManager), m_matchingNodes(theManager) { } NodeNameTreeWalker::~NodeNameTreeWalker() { } void NodeNameTreeWalker::findMatchingNodes( const XalanDOMString& theNodeName, const XalanNode* theStartNode) { assert(theStartNode != 0); m_nodeName = theNodeName; m_matchingNodes.clear(); traverse(theStartNode->getFirstChild(), theStartNode); } void NodeNameTreeWalker::findMatchingNodes( const XalanDOMString& theNodeName, XalanNode* theStartNode) { assert(theStartNode != 0); m_nodeName = theNodeName; m_matchingNodes.clear(); traverse(theStartNode->getFirstChild(), theStartNode); } bool NodeNameTreeWalker::startNode(XalanNode* node) { const XalanDOMString& theNodeName = node->getNodeName(); if (equals(theNodeName, m_nodeName) == true) { m_matchingNodes.push_back(node); } return false; } bool NodeNameTreeWalker::endNode(XalanNode* /* node */) { return false; } bool NodeNameTreeWalker::startNode(const XalanNode* node) { const XalanDOMString& theNodeName = node->getNodeName(); if (equals(theNodeName, m_nodeName) == true) { m_matchingNodes.push_back(node); } return false; } bool NodeNameTreeWalker::endNode(const XalanNode* /* node */) { return false; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/0002775000175000000640000000000012037700125015253 5ustar stevesambaxalan-c-1.11/c/src/xalanc/XPath/XStringAllocator.cpp0000664000175000000640000000463611731656102021232 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XStringAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XStringAllocator::XStringAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XStringAllocator::~XStringAllocator() { } XStringAllocator::string_type* XStringAllocator::createString(const XalanDOMString& theString) { string_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); string_type* const theResult = new(theBlock) string_type(theString, m_allocator.getMemoryManager()); m_allocator.commitAllocation(theBlock); return theResult; } XStringAllocator::string_type* XStringAllocator::createString(const XalanDOMChar* theString) { string_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); string_type* const theResult = new(theBlock) string_type(theString, m_allocator.getMemoryManager()); m_allocator.commitAllocation(theBlock); return theResult; } XStringAllocator::string_type* XStringAllocator::createString( const XalanDOMChar* theString, XalanSize_t theLength) { string_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); string_type* const theResult = new(theBlock) string_type(theString, theLength, m_allocator.getMemoryManager()); m_allocator.commitAllocation(theBlock); return theResult; } bool XStringAllocator::destroy(string_type* theString) { return m_allocator.destroyObject(theString); } void XStringAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/FunctionTranslate.cpp0000664000175000000640000000765011731656102021435 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionTranslate.hpp" #include #include #include "XObjectFactory.hpp" XALAN_CPP_NAMESPACE_BEGIN FunctionTranslate::FunctionTranslate() { } FunctionTranslate::~FunctionTranslate() { } XObjectPtr FunctionTranslate::execute( XPathExecutionContext& executionContext, XalanNode* /* context */, const XObjectPtr arg1, const XObjectPtr arg2, const XObjectPtr arg3, const Locator* const /* locator */) const { assert(arg1.null() == false && arg2.null() == false && arg3.null() == false); const XalanDOMString& theFirstString = arg1->str(executionContext); const XalanDOMString& theSecondString = arg2->str(executionContext); const XalanDOMString& theThirdString = arg3->str(executionContext); const XalanDOMString::size_type theFirstStringLength = theFirstString.length(); const XalanDOMString::size_type theSecondStringLength = theSecondString.length(); const XalanDOMString::size_type theThirdStringLength = theThirdString.length(); typedef XalanVector VectorType; // A string to hold the result. GetCachedString theResult(executionContext); XalanDOMString& theString = theResult.get(); // The result string can only be as large as the first string, so // just reserve the space now. Also reserve space for the // terminating 0. theString.reserve(theFirstStringLength + 1); for (XalanDOMString::size_type i = 0; i < theFirstStringLength; i++) { const XalanDOMChar theCurrentChar = theFirstString[i]; const XalanDOMString::size_type theIndex = indexOf(theSecondString, theCurrentChar); if (theIndex >= theSecondStringLength) { // Didn't find the character in the second string, so it // is not translated. theString.append(1, theCurrentChar); } else if (theIndex < theThirdStringLength) { // OK, there's a corresponding character in the // third string, so do the translation... theString.append(1, theThirdString[theIndex]); } else { // There's no corresponding character in the // third string, since it's shorter than the // second string. In this case, the character // is removed from the output string, so don't // do anything. } } return executionContext.getXObjectFactory().createString(theResult); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionTranslate* #endif FunctionTranslate::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionTranslate::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionTakesThreeArguments_1Param, "translate()"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XPathExpression.cpp0000664000175000000640000006261711731656102021102 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XPathExpression.hpp" #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include #include #include "XObjectTypeCallback.hpp" XALAN_CPP_NAMESPACE_BEGIN #if defined(XALAN_INLINE_INITIALIZATION) && !defined(XALAN_INLINE_INITIALIZATION_IS_DEFINITION_BUG) const XPathExpression::TokenQueueSizeType XPathExpression::s_opCodeMapLengthIndex; #endif // This is an array which indicates which of the value defined by // XPathExpression::eOpCodes are node tests. static const bool theNodeTestOpCodesArray[] = { false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, true, true, true }; static const XalanSize_t theNodeTestOpCodesArraySize = sizeof(theNodeTestOpCodesArray) / sizeof(theNodeTestOpCodesArray[0]); // This is an array for all of the opcode defined by XPathExpression::eOpCodes. // It is offset by 3, because there opcode values are -3, -2, and -1. So, // when getting the length of an opcode, we add three to get the correct index. static const int theOpCodeLengthArray[] = { 1, 1, 1, 0, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 3, XPathExpression::s_opCodeMapLengthIndex + 3, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, 1, 1, 1, 1, 1, 1, 1, XPathExpression::s_opCodeMapLengthIndex + 2, XPathExpression::s_opCodeMapLengthIndex + 2, XPathExpression::s_opCodeMapLengthIndex + 2, XPathExpression::s_opCodeMapLengthIndex + 2, XPathExpression::s_opCodeMapLengthIndex + 2, XPathExpression::s_opCodeMapLengthIndex + 2, XPathExpression::s_opCodeMapLengthIndex + 2, XPathExpression::s_opCodeMapLengthIndex + 2, XPathExpression::s_opCodeMapLengthIndex + 2, XPathExpression::s_opCodeMapLengthIndex + 2, XPathExpression::s_opCodeMapLengthIndex + 2, XPathExpression::s_opCodeMapLengthIndex + 2, XPathExpression::s_opCodeMapLengthIndex + 2, XPathExpression::s_opCodeMapLengthIndex + 2, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 2, XPathExpression::s_opCodeMapLengthIndex + 2, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1, XPathExpression::s_opCodeMapLengthIndex + 1 }; static const int theOpCodeLengthArraySize = sizeof(theOpCodeLengthArray) / sizeof(theOpCodeLengthArray[0]); inline int getOpCodeLength(int theOpCode) { assert(theOpCodeLengthArraySize == XPathExpression::eOpCodeNextAvailable + 3); // Add 3 to get the correct index into the array... theOpCode += 3; if (theOpCode < 0 || theOpCode >= theOpCodeLengthArraySize) { return 0; } else { return theOpCodeLengthArray[theOpCode]; } } XPathExpression::XPathExpressionException::XPathExpressionException( const XalanDOMString& theMessage, MemoryManager& theManager) : XalanXPathException(theMessage, theManager) { } XPathExpression::XPathExpressionException::~XPathExpressionException() { } XPathExpression::InvalidOpCodeException::InvalidOpCodeException( OpCodeMapValueType theOpCode, XalanDOMString& theBuffer) : XPathExpressionException( FormatErrorMessage( theOpCode, theBuffer), theBuffer.getMemoryManager()) { } XPathExpression::InvalidOpCodeException::~InvalidOpCodeException() { } XalanDOMString& XPathExpression::InvalidOpCodeException::FormatErrorMessage( OpCodeMapValueType theOpCode, XalanDOMString& theBuffer) { XalanDOMString theOpcode(theBuffer.getMemoryManager()); NumberToDOMString(theOpCode, theOpcode); return XalanMessageLoader::getMessage( theBuffer, XalanMessages::InvalidOpcodeWasDetected_1Param, theOpcode); } XPathExpression::InvalidArgumentCountException::InvalidArgumentCountException( OpCodeMapValueType theOpCode, OpCodeMapValueType theExpectedCount, OpCodeMapValueType theSuppliedCount, XalanDOMString& theBuffer) : XPathExpressionException( FormatErrorMessage( theOpCode, theExpectedCount, theSuppliedCount, theBuffer), theBuffer.getMemoryManager()) { } XPathExpression::InvalidArgumentCountException::~InvalidArgumentCountException() { } XalanDOMString& XPathExpression::InvalidArgumentCountException::FormatErrorMessage( OpCodeMapValueType theOpCode, OpCodeMapValueType theExpectedCount, OpCodeMapValueType theSuppliedCount, XalanDOMString& theBuffer) { XalanDOMString theResult(theBuffer.getMemoryManager()); NumberToDOMString(theOpCode, theResult); XalanDOMString theResult1(theBuffer.getMemoryManager()); NumberToDOMString(theExpectedCount, theResult1); XalanDOMString theResult2(theBuffer.getMemoryManager()); NumberToDOMString(theSuppliedCount, theResult2); return XalanMessageLoader::getMessage( theBuffer, XalanMessages::InvalidNumberOfArgsWasDetected_3Param, theResult1, theResult2); } XPathExpression::InvalidArgumentException::InvalidArgumentException( OpCodeMapValueType theOpCode, OpCodeMapValueType theValue, XalanDOMString& theBuffer) : XPathExpressionException( FormatErrorMessage( theOpCode, theValue, theBuffer), theBuffer.getMemoryManager()) { } XPathExpression::InvalidArgumentException::~InvalidArgumentException() { } XalanDOMString& XPathExpression::InvalidArgumentException::FormatErrorMessage( OpCodeMapValueType theOpCode, OpCodeMapValueType theValue, XalanDOMString& theBuffer) { XalanDOMString theResult(theBuffer.getMemoryManager()); NumberToDOMString(theValue, theResult); XalanDOMString theResult1(theBuffer.getMemoryManager()); NumberToDOMString(theOpCode, theResult1); return XalanMessageLoader::getMessage( theBuffer, XalanMessages::InvalidNumberOfArgsWasSupplied_2Param, theResult1) ; } static const XalanDOMString s_emptyString(XalanMemMgrs::getDummyMemMgr()); XPathExpression::XPathExpression(MemoryManager& theManager) : m_opMap(theManager), m_lastOpCodeIndex(0), m_tokenQueue(theManager), m_currentPosition(0), m_currentPattern(&s_emptyString), m_numberLiteralValues(theManager) { m_opMap.reserve(eDefaultOpMapSize); m_tokenQueue.reserve(eDefaultTokenQueueSize); } XPathExpression::~XPathExpression() { reset(); } void XPathExpression::reset() { m_opMap.clear(); m_tokenQueue.clear(); } void XPathExpression::shrink() { if (m_opMap.capacity() > m_opMap.size()) { OpCodeMapType tmp(m_opMap, m_opMap.getMemoryManager()); tmp.swap(m_opMap); } } #if defined(XALAN_XPATH_EXPRESSION_USE_ITERATORS) XPathExpression::OpCodeMapValueType XPathExpression::getOpCodeLengthFromOpMap( OpCodeMapPositionType opPos, MemoryManager& theManager) const { assert(opPos - getInitialOpCodePosition() >= 0 && opPos - getInitialOpCodePosition() < opCodeMapSize()); OpCodeMapValueType theResult = 0; // Is there a valid opcode? const int theOpCodeLength = getOpCodeLength(*opPos); if (theOpCodeLength == 0) { XalanDOMString theBuffer(theManager); throw InvalidOpCodeException(-1, theBuffer); } else { // Does the Op code have a length > 1? if (theOpCodeLength > 1) { // Yes, so get the length. theResult = *(opPos + s_opCodeMapLengthIndex); } } return theResult; } #endif XPathExpression::OpCodeMapValueType XPathExpression::getOpCodeLengthFromOpMap( #if defined(XALAN_XPATH_EXPRESSION_USE_ITERATORS) OpCodeMapSizeType theIndex, #else OpCodeMapPositionType theIndex, #endif MemoryManager& theManager) const { OpCodeMapValueType theResult = 0; if (theIndex >= opCodeMapSize()) { XalanDOMString theBuffer(theManager); throw InvalidOpCodeException(-1, theBuffer); } else { // Is there a valid opcode? const int theOpCodeLength = getOpCodeLength(m_opMap[theIndex]); if (theOpCodeLength == 0) { XalanDOMString theBuffer(theManager); throw InvalidOpCodeException(-1, theBuffer); } else { // Does the Op code have a length > 1? if (theOpCodeLength > 1) { // Yes, so get the length. theResult = m_opMap[theIndex + s_opCodeMapLengthIndex]; } } } return theResult; } void XPathExpression::setOpCodeArgs( eOpCodes theOpCode, OpCodeMapSizeType theIndex, const OpCodeMapValueVectorType& theArgs) { // There must be at least enough space to hold the OpCode // and the length indicator. assert(opCodeMapSize() > theIndex + 1); const int theOpCodeLength = getOpCodeLength(theOpCode); // Make sure it's a valid op code and that it // matches the op code at supplied index. if (theOpCodeLength == 0 || m_opMap[theIndex] != theOpCode) { XalanDOMString theBuffer(getMemoryManager()); throw InvalidOpCodeException( theOpCode, theBuffer); } else { const OpCodeMapValueType theArgCount = theOpCodeLength - 1 - s_opCodeMapLengthIndex; if (OpCodeMapValueVectorType::size_type(theArgCount) != theArgs.size()) { XalanDOMString theBuffer(getMemoryManager()); throw InvalidArgumentCountException( theOpCode, theOpCodeLength, theArgCount, theBuffer); } else { assert(opCodeMapSize() > theIndex + theArgCount); for (OpCodeMapValueType i = 0; i < theArgCount; ++i) { if (theArgs[i] < 0) { XalanDOMString theBuffer(getMemoryManager()); throw InvalidArgumentException( theOpCode, theArgs[i], theBuffer); } else { m_opMap[i + theIndex + s_opCodeMapLengthIndex + 1] = theArgs[i]; } } } } } XPathExpression::OpCodeMapSizeType XPathExpression::appendOpCode(eOpCodes theOpCode) { const int theOpCodeLength = getOpCodeLength(theOpCode); if (theOpCodeLength == 0) { XalanDOMString theBuffer(getMemoryManager()); throw InvalidOpCodeException( theOpCode, theBuffer); } else { // Set the current index before pushing, by // getting the length, which will be correct // after the push. m_lastOpCodeIndex = opCodeMapSize(); m_opMap.push_back(theOpCode); assert(s_opCodeMapLengthIndex == 1); if (theOpCodeLength > 1) { m_opMap.push_back(theOpCodeLength); for (int i = 2; i < theOpCodeLength; ++i) { m_opMap.push_back(eENDOP); } } if (m_lastOpCodeIndex != 0) { m_opMap[s_opCodeMapLengthIndex] += theOpCodeLength; } } assert(opCodeMapSize() == OpCodeMapSizeType(opCodeMapLength())); return m_lastOpCodeIndex; } void XPathExpression::replaceOpCode( OpCodeMapSizeType theIndex, eOpCodes theOldOpCode, eOpCodes theNewOpCode) { if (theIndex >= opCodeMapSize() || m_opMap[theIndex] != theOldOpCode || getOpCodeLength(theOldOpCode) != getOpCodeLength(theNewOpCode)) { XalanDOMString theBuffer(getMemoryManager()); throw InvalidOpCodeException( theNewOpCode, theBuffer); } else { m_opMap[theIndex] = theNewOpCode; } } XPathExpression::OpCodeMapValueType XPathExpression::insertOpCode( eOpCodes theOpCode, OpCodeMapSizeType theIndex) { const int theOpCodeLength = getOpCodeLength(theOpCode); if (theOpCodeLength == 0) { XalanDOMString theBuffer(getMemoryManager()); throw InvalidOpCodeException( theOpCode, theBuffer); } else { // Insert -1 for each element of the opcode. m_opMap.insert( m_opMap.begin() + theIndex, OpCodeMapSizeType(theOpCodeLength), -1); // Set the member that contains the last insert/appended // index. m_lastOpCodeIndex = theIndex; // Assign the opcode. m_opMap[theIndex] = theOpCode; // Update the entire expression length. m_opMap[s_opCodeMapLengthIndex] += theOpCodeLength; } return theOpCodeLength; } void XPathExpression::updateShiftedOpCodeLength( OpCodeMapValueType theOpCode, #if defined(NDEBUG) OpCodeMapSizeType /* theOriginalIndex */, #else OpCodeMapSizeType theOriginalIndex, #endif OpCodeMapSizeType theNewIndex) { // There must be some other expressions in // the buffer... assert(opCodeMapSize() > theNewIndex + 1); assert(theNewIndex > theOriginalIndex); const OpCodeMapValueType theOpCodeLength = getOpCodeLength(theOpCode); // Make sure it's a valid op code and that it // matches the op code at supplied index. if (theOpCodeLength == 0 || m_opMap[theNewIndex] != theOpCode) { XalanDOMString theBuffer(getMemoryManager()); throw InvalidOpCodeException( theOpCode, theBuffer); } else { // Determine where the length position of the op code // is. const OpCodeMapSizeType theLengthIndex = theNewIndex + s_opCodeMapLengthIndex; // Too long, then throw an exception. if (theLengthIndex >= opCodeMapSize()) { XalanDOMString theBuffer(getMemoryManager()); throw InvalidOpCodeException( theOpCode, theBuffer); } else { // Look ahead to where the new operand is. const OpCodeMapSizeType theNextOpCodePosition = getNextOpCodePosition(theNewIndex); // If it's there, then update our size by // adding that size in. if (theNextOpCodePosition < opCodeMapSize()) { m_opMap[theLengthIndex] += getOpCodeLengthFromOpMap(theNextOpCodePosition, getMemoryManager()); } } } } void XPathExpression::updateOpCodeLength( OpCodeMapValueType theOpCode, OpCodeMapValueType theIndex) { // There must be some other expressions in // the buffer... assert(opCodeMapSize() > theIndex + 1); const int theOpCodeLength = getOpCodeLength(theOpCode); // Make sure it's a valid op code and that it // matches the op code at supplied index. if (theOpCodeLength == 0 || m_opMap[theIndex] != theOpCode) { XalanDOMString theBuffer(getMemoryManager()); throw InvalidOpCodeException( theOpCode, theBuffer); } else { // This presumes that the other opcodes // have been appended to the expression, // and that the specified op code's length // needs to be set. The size includes the // normal length of the opcode, plus the // length of its subexpressions. m_opMap[theIndex + s_opCodeMapLengthIndex] = opCodeMapLength() - theIndex; } } bool XPathExpression::isNodeTestOpCode(OpCodeMapValueType theOpCode) { if (theOpCode < theNodeTestOpCodesArraySize) { return theNodeTestOpCodesArray[theOpCode]; } else { return false; } } void XPathExpression::updateOpCodeLengthAfterNodeTest(OpCodeMapSizeType theIndex) { // There must be some other expressions in // the buffer... assert(opCodeMapSize() > theIndex + 1); const OpCodeMapValueType theOpCode = m_opMap[theIndex]; const int theOpCodeLength = getOpCodeLength(theOpCode); // Make sure it's a valid op code and that it // is a node test op code. if (theOpCodeLength == 0 || isNodeTestOpCode(theOpCode) == false) { XalanDOMString theBuffer(getMemoryManager()); throw InvalidOpCodeException( theOpCode, theBuffer); } else { m_opMap[theIndex + s_opCodeMapLengthIndex + 1] = opCodeMapLength() - theIndex; } } void XPathExpression::dumpOpCodeMap( PrintWriter& thePrintWriter, OpCodeMapSizeType theStartPosition) const { for (OpCodeMapSizeType i = theStartPosition; i < opCodeMapSize(); i++) { thePrintWriter.print(" '"); thePrintWriter.print(m_opMap[i]); thePrintWriter.print("'"); } } void XPathExpression::dumpOpCodeMap( OstreamType& theStream, OpCodeMapSizeType theStartPosition) const { for (OpCodeMapSizeType i = theStartPosition; i < opCodeMapSize(); i++) { theStream << " '" << m_opMap[i] << "'"; } } void XPathExpression::dumpTokenQueue( OstreamType& theStream, TokenQueueSizeType theStartPosition) const { for (TokenQueueSizeType i = theStartPosition; i < tokenQueueSize(); i++) { assert(getToken(i) != 0); theStream << " '" << getToken(i)->str() << "'"; } } void XPathExpression::dumpTokenQueue( PrintWriter& thePrintWriter, TokenQueueSizeType theStartPosition) const { for (TokenQueueSizeType i = theStartPosition; i < tokenQueueSize(); i++) { assert(getToken(i) != 0); if (i > 0) { thePrintWriter.print(" '"); } else { thePrintWriter.print("'"); } thePrintWriter.print(getToken(i)->str()); thePrintWriter.print("'"); } } void XPathExpression::dumpRemainingTokenQueue(PrintWriter& thePrintWriter) const { XalanDOMString tmpString(thePrintWriter.getMemoryManager()); thePrintWriter.print( XalanMessageLoader::getMessage( tmpString, XalanMessages::RemainingTokens)); thePrintWriter.print("("); dumpTokenQueue( thePrintWriter, m_currentPosition); thePrintWriter.print(")"); } void XPathExpression::dumpRemainingTokenQueue( OstreamType& theStream, MemoryManager& theMemoryManager) const { XalanDOMString tmpString(theMemoryManager); theStream << XalanMessageLoader::getMessage(tmpString, XalanMessages::RemainingTokens) << "("; dumpTokenQueue(theStream, m_currentPosition); theStream << ")"; } void XPathExpression::pushArgumentOnOpCodeMap(const XToken& theXToken) { assert(m_currentPosition != 0); const int thePosition = m_currentPosition - 1; assert(thePosition < tokenQueueSize()); // Set the entry in the token queue to the XObject. m_tokenQueue[thePosition] = theXToken; // Push the index onto the op map. m_opMap.push_back(thePosition); // Update the op map length. ++m_opMap[s_opCodeMapLengthIndex]; } void XPathExpression::pushArgumentOnOpCodeMap(const XalanDOMString& theToken) { assert(m_currentPosition != 0); const TokenQueueSizeType thePosition = m_currentPosition - 1; assert(thePosition < tokenQueueSize()); // Set the entry in the token queue to the XObject. m_tokenQueue[thePosition].set( theToken, DoubleSupport::toDouble(theToken, getMemoryManager())); // Push the index onto the op map. m_opMap.push_back(thePosition); // Update the op map length. ++m_opMap[s_opCodeMapLengthIndex]; } void XPathExpression::pushArgumentOnOpCodeMap( double theNumber, const XalanDOMString& theString) { assert(m_currentPosition != 0); const TokenQueueSizeType thePosition = m_currentPosition - 1; assert(thePosition < tokenQueueSize()); // Set the entry in the token queue to the XObject. m_tokenQueue[thePosition].set(theNumber, theString); // Push the index onto the op map. m_opMap.push_back(thePosition); // Update the op map length. ++m_opMap[s_opCodeMapLengthIndex]; } void XPathExpression::pushNumberLiteralOnOpCodeMap(double theNumber) { // Get the new index for the literal... const OpCodeMapValueType theIndex = OpCodeMapValueType(m_numberLiteralValues.size()); assert(NumberLiteralValueVectorType::size_type(theIndex) == m_numberLiteralValues.size()); // Push the index onto the op map. m_opMap.push_back(theIndex); // Update the op map length. ++m_opMap[s_opCodeMapLengthIndex]; m_numberLiteralValues.push_back(theNumber); } void XPathExpression::pushCurrentTokenOnOpCodeMap() { assert(m_currentPosition != 0); const TokenQueueSizeType thePosition = m_currentPosition - 1; assert(thePosition < tokenQueueSize()); // Push the index onto the op map. m_opMap.push_back(thePosition); // Update the op map length. ++m_opMap[s_opCodeMapLengthIndex]; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XalanQNameByReference.hpp0000664000175000000640000000711711731656102022074 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANQNAMEBYREFERENCE_HEADER_GUARD_1357924680) #define XALANQNAMEBYREFERENCE_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file... #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XalanQNameByReference : public XalanQName { public: /** * Construct an empty XalanQNameByReference. */ explicit XalanQNameByReference(); /** * Construct a XalanQNameByReference, with the supplied namespace and local part. * The instance keeps only a _reference_ to the string, to avoid making a * copy. * * @param theNamespace namespace string * @param theLocalPart local part string */ XalanQNameByReference( const XalanDOMString& theNamespace, const XalanDOMString& theLocalPart); /** * Construct a XalanQNameByReference, with the supplied local part. * The instance keeps only a _reference_ to the string, to avoid making a * copy. * * @param theLocalPart local part string */ XalanQNameByReference(const XalanDOMString& theLocalPart); /** * Construct a XalanQNameByReference, from the supplied XalanQName. The instance * keeps only a _reference_ to the string, to avoid making a copy. * * @param theQName The source QName */ XalanQNameByReference(const XalanQName& theQName); virtual ~XalanQNameByReference(); /** * Retrieve the local part of qualified name. * * @return local part string */ virtual const XalanDOMString& getLocalPart() const; /** * Set the local part of qualified name. * * @param theLocalPart local part string */ void setLocalPart(const XalanDOMString& theLocalPart) { m_localpart = &theLocalPart; } /** * Retrieve the namespace of qualified name. * * @return namespace string */ virtual const XalanDOMString& getNamespace() const; /** * Set the Namespace URI of qualified name. * * @param theLocalPart local part string */ void setNamespace(const XalanDOMString& theNamespace) { m_namespace = &theNamespace; } /** * Clear the instance. */ void clear() { m_namespace = &s_emptyString; m_localpart = &s_emptyString; } private: // OK, we said reference, but using pointers // allows for copy and assignment semantics. const XalanDOMString* m_namespace; const XalanDOMString* m_localpart; }; template<> struct XalanMapKeyTraits : public XalanMapKeyTraits { }; XALAN_CPP_NAMESPACE_END #endif // XALANQNAMEBYREFERENCE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XPathProcessorImpl.hpp0000664000175000000640000005740411731656102021547 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XPATHPROCESSORIMPL_HEADER_GUARD_1357924680) #define XPATHPROCESSORIMPL_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include #include #include #include #include "xalanc/PlatformSupport/XalanMessageLoader.hpp" // Base class header file... #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanNode; /** * The XPathProcessorImpl class responsibilities include tokenizing and * parsing the XPath expression, and acting as a general interface to XPaths. */ class XALAN_XPATH_EXPORT XPathProcessorImpl : public XPathProcessor { public: typedef XalanMap StringToStringMapType; typedef XalanVector BoolVectorType; typedef XalanDOMString::size_type t_size_type; XPathProcessorImpl(MemoryManager& theManager XALAN_DEFAULT_MEMMGR); virtual ~XPathProcessorImpl(); static XPathProcessorImpl* create(MemoryManager& theManager); // These are inherited from XPathProcessor... virtual void initXPath( XPath& pathObj, XPathConstructionContext& constructionContext, const XalanDOMString& expression, const PrefixResolver& resolver, const Locator* locator = 0, bool allowVariableReferences = true, bool allowKeyFunction = true); virtual void initMatchPattern( XPath& pathObj, XPathConstructionContext& constructionContext, const XalanDOMString& expression, const PrefixResolver& resolver, const Locator* locator = 0, bool allowVariableReferences = true, bool allowKeyFunction = true); private: /** * Walk through the expression and build a token queue, and a map of the * top-level elements. * * @param pat XSLT Expression. */ void tokenize(const XalanDOMString& pat); void addToTokenQueue(const XalanDOMString& s) const; void replaceTokenWithNamespaceToken() const; /** * When a separator token is found, see if there's a element name or the * like to map. */ t_size_type mapNSTokens( const XalanDOMString& pat, t_size_type startSubstring, t_size_type posOfNSSep, t_size_type posOfScan); /** * Check if m_token==s. If m_token is null, this won't throw * an exception, instead it just returns false (or true * if s is also null). */ bool tokenIs(const XalanDOMString& s) const; /** * Check if m_token==s. If m_token is null, this won't throw * an exception, instead it just returns false (or true * if s is also null). */ bool tokenIs(const XalanDOMChar* s) const; /** * Check if m_token==s. If m_token is null, this won't throw * an exception, instead it just returns false (or true * if s is also null). */ bool tokenIs(XalanDOMChar c) const; /** * Lookahead of the current token in order to * make a branching decision. * @param s the string to compare it to. * @param n number of tokens to lookahead. Must be * greater than 1. */ bool lookahead( XalanDOMChar c, int n) const; /** * Lookahead of the current token in order to * make a branching decision. * @param s the string to compare it to. * @param n number of tokens to lookahead. Must be * greater than 1. */ bool lookahead( const XalanDOMChar* s, int n) const; /** * Lookahead of the current token in order to * make a branching decision. * @param s the string to compare it to. * @param n number of tokens to lookahead. Must be * greater than 1. */ bool lookahead( const XalanDOMString& s, int n) const; /** * Lookbehind the first character of the current token in order to * make a branching decision. * @param c the character to compare it to. * @param n number of tokens to lookbehind. Must be * greater than 1. Note that the lookbehind terminates * at either the beginning of the string or on a '|' * character. Because of this, this method should only * be used for pattern matching. */ bool lookbehind( char c, int n) const; /** * look behind the current token in order to * see if there is a useable token. * @param n number of tokens to lookahead. Must be * greater than 1. Note that the lookbehind terminates * at either the beginning of the string or on a '|' * character. Because of this, this method should only * be used for pattern matching. * @return true if lookbehind has a token, false otherwise. */ bool lookbehindHasToken(int n) const; /** * Retrieve the next token from the command and * store it in m_token string. */ bool nextToken(); /** * Retrieve the next token from the command and * store it in m_token string. */ const XalanDOMString& getTokenRelative(int theOffset) const; /** * Retrieve the previous token from the command and * store it in m_token string. */ void prevToken(); /** * Consume an expected token, throwing an exception if it * isn't there. */ void consumeExpected(XalanDOMChar expected); bool isCurrentLiteral() const; /** * Determine if the token is an axis * * @param theToken The token to test * @return true if the token is a valid axis, false if not. */ static bool isAxis(const XalanDOMString& theToken); /** * Determine if the token could be a node test * * @param theToken The token to test * @return true if the token is a valid node test, false if not. */ static bool isNodeTest(const XalanDOMString& theToken); /** * Throw an exception using the provided message text. */ void error(const XalanDOMString& msg) const; /** * Throw an exception using the provided message text. */ void error(XalanMessages::Codes theCode) const; void error( XalanMessages::Codes theCode, const XalanDOMString& theToken) const; void error( XalanMessages::Codes theCode, const XalanDOMChar* theToken) const; void error( XalanMessages::Codes theCode, XalanDOMChar theToken1, const XalanDOMString& theToken2) const; /** * Given a string, return the corresponding token. */ static XPathExpression::eOpCodes getFunctionToken(const XalanDOMString& key) { return searchTable(s_functionTable, s_functionTableSize, key).m_opCode; } /** * Given a string, return the corresponding token. */ static XPathExpression::eOpCodes getNodeTypeToken(const XalanDOMString& key) { return searchTable(s_nodeTypeTable, s_nodeTypeTableSize, key).m_opCode; } /** * Given a string, return the corresponding token. */ static XPathExpression::eOpCodes getAxisToken(const XalanDOMString& key) { return searchTable(s_axisTable, s_axisTableSize, key).m_opCode; } /** * * -------------------------------------------------------------------------------- Expr ::= OrExpr * -------------------------------------------------------------------------------- */ void Expr(); /** * * -------------------------------------------------------------------------------- OrExpr ::= AndExpr | OrExpr 'or' AndExpr * -------------------------------------------------------------------------------- */ void OrExpr(); /** * * -------------------------------------------------------------------------------- AndExpr ::= EqualityExpr | AndExpr 'and' EqualityExpr * -------------------------------------------------------------------------------- */ void AndExpr() ; /** * XXXX. * @returns an Object which is either a String, a Number, a Boolean, or a vector * of nodes. * -------------------------------------------------------------------------------- EqualityExpr ::= RelationalExpr | EqualityExpr '=' RelationalExpr * -------------------------------------------------------------------------------- */ int EqualityExpr(int opCodePos = -1); /** * XXXX. * @returns an Object which is either a String, a Number, a Boolean, or a vector * of nodes. * -------------------------------------------------------------------------------- RelationalExpr ::= AdditiveExpr | RelationalExpr '<' AdditiveExpr | RelationalExpr '>' AdditiveExpr | RelationalExpr '<=' AdditiveExpr | RelationalExpr '>=' AdditiveExpr * -------------------------------------------------------------------------------- */ int RelationalExpr(int opCodePos = -1); /** * XXXX. * @returns an Object which is either a String, a Number, a Boolean, or a vector * of nodes. * -------------------------------------------------------------------------------- AdditiveExpr ::= MultiplicativeExpr | AdditiveExpr '+' MultiplicativeExpr | AdditiveExpr '-' MultiplicativeExpr * -------------------------------------------------------------------------------- */ int AdditiveExpr(int opCodePos = -1); /** * XXXX. * @returns an Object which is either a String, a Number, a Boolean, or a vector * of nodes. * -------------------------------------------------------------------------------- MultiplicativeExpr ::= UnaryExpr | MultiplicativeExpr MultiplyOperator UnaryExpr | MultiplicativeExpr 'div' UnaryExpr | MultiplicativeExpr 'mod' UnaryExpr | MultiplicativeExpr 'quo' UnaryExpr * -------------------------------------------------------------------------------- */ int MultiplicativeExpr(int opCodePos = -1); /** * XXXX. * @returns an Object which is either a String, a Number, a Boolean, or a vector * of nodes. * -------------------------------------------------------------------------------- UnaryExpr ::= UnionExpr | '-' UnaryExpr * -------------------------------------------------------------------------------- */ void UnaryExpr(); /** * The context of the right hand side expressions is the context of the * left hand side expression. The results of the right hand side expressions * are node sets. The result of the left hand side UnionExpr is the union * of the results of the right hand side expressions. * * -------------------------------------------------------------------------------- UnionExpr ::= PathExpr | UnionExpr '|' PathExpr * -------------------------------------------------------------------------------- */ void UnionExpr(); /** * * -------------------------------------------------------------------------------- PathExpr ::= LocationPath | FilterExpr | FilterExpr '/' RelativeLocationPath | FilterExpr '//' RelativeLocationPath * -------------------------------------------------------------------------------- * @exception XSLProcessorException thrown if the active ProblemListener and XMLParserLiaison decide * the error condition is severe enough to halt processing. */ void PathExpr(); /** * * -------------------------------------------------------------------------------- FilterExpr ::= PrimaryExpr | FilterExpr Predicate * -------------------------------------------------------------------------------- * @exception XSLProcessorException thrown if the active ProblemListener and XMLParserLiaison decide * the error condition is severe enough to halt processing. */ void FilterExpr(); /** * -------------------------------------------------------------------------------- PrimaryExpr ::= VariableReference | '(' Expr ')' | Literal | Number | FunctionCall * -------------------------------------------------------------------------------- */ void PrimaryExpr(); /** * -------------------------------------------------------------------------------- Argument ::= Expr * -------------------------------------------------------------------------------- */ void Argument(); /** * -------------------------------------------------------------------------------- FunctionCall ::= FunctionName '(' ( Argument ( ',' Argument)*)? ')' * -------------------------------------------------------------------------------- */ void FunctionCall(); void FunctionPosition(); void FunctionLast(); void FunctionCount(); void FunctionNot(); void FunctionTrue(); void FunctionFalse(); void FunctionBoolean(); void FunctionName(int opPos); void FunctionLocalName(int opPos); void FunctionNumber(int opPos); void FunctionFloor(); void FunctionCeiling(); void FunctionRound(); void FunctionString(int opPos); void FunctionStringLength(int opPos); void FunctionSum(); void FunctionNamespaceURI(int opPos); /** * -------------------------------------------------------------------------------- LocationPath ::= RelativeLocationPath | AbsoluteLocationPath * -------------------------------------------------------------------------------- */ void LocationPath(); /** * -------------------------------------------------------------------------------- RelativeLocationPath ::= Step | RelativeLocationPath '/' Step | AbbreviatedRelativeLocationPath * -------------------------------------------------------------------------------- */ void RelativeLocationPath(); /** * -------------------------------------------------------------------------------- Step ::= Basis Predicate* | AbbreviatedStep */ void Step(); /** * -------------------------------------------------------------------------------- Basis ::= AxisName '::' NodeTest | AbbreviatedBasis */ void Basis(); /** * -------------------------------------------------------------------------------- Basis ::= AxisName '::' NodeTest | AbbreviatedBasis */ XPathExpression::eOpCodes AxisName(); /** * -------------------------------------------------------------------------------- NodeTest ::= WildcardName | NodeType '(' ')' | 'processing-instruction' '(' Literal ')' */ int NodeTest(); /** * -------------------------------------------------------------------------------- Predicate ::= '[' PredicateExpr ']' * -------------------------------------------------------------------------------- */ void Predicate(); /** *-------------------------------------------------------------------------------- PredicateExpr ::= Expr *-------------------------------------------------------------------------------- */ void PredicateExpr(); /** * QName ::= (Prefix ':')? LocalPart * Prefix ::= NCName * LocalPart ::= NCName */ void QName(); /** * NCName ::= (Letter | '_') (NCNameChar)* * NCNameChar ::= Letter | Digit | '.' | '-' | '_' | CombiningChar | Extender */ void NCName(); /** * The value of the Literal is the sequence of characters inside * the " or ' characters>. * -------------------------------------------------------------------------------- Literal ::= '"' [^"]* '"' | "'" [^']* "'" * -------------------------------------------------------------------------------- */ void Literal(); /** * -------------------------------------------------------------------------------- * Number ::= [0-9]+('.'[0-9]+)? | '.'[0-9]+ * -------------------------------------------------------------------------------- */ void Number(); /** * -------------------------------------------------------------------------------- Pattern ::= LocationPathPattern | Pattern '|' LocationPathPattern * -------------------------------------------------------------------------------- */ void Pattern(); /** * * -------------------------------------------------------------------------------- LocationPathPattern ::= '/' RelativePathPattern? | IdKeyPattern (('/' | '//') RelativePathPattern)? | '//'? RelativePathPattern * -------------------------------------------------------------------------------- */ void LocationPathPattern(); /** * -------------------------------------------------------------------------------- IdKeyPattern ::= 'id' '(' Literal ')' | 'key' '(' Literal ',' Literal ')' * (Also handle doc()) * -------------------------------------------------------------------------------- */ void IdKeyPattern(); /** * -------------------------------------------------------------------------------- RelativePathPattern ::= StepPattern | RelativePathPattern '/' StepPattern | RelativePathPattern '//' StepPattern * -------------------------------------------------------------------------------- */ void RelativePathPattern(); /** * -------------------------------------------------------------------------------- StepPattern ::= AbbreviatedNodeTestStep * -------------------------------------------------------------------------------- */ void StepPattern(); /** * -------------------------------------------------------------------------------- AbbreviatedNodeTestStep ::= '@'? NodeTest Predicate* * -------------------------------------------------------------------------------- */ void AbbreviatedNodeTestStep(); static bool isValidFunction(const XalanDOMString& key); private: int FunctionCallArguments(); struct TableEntry { const XalanDOMChar* m_string; XPathExpression::eOpCodes m_opCode; }; #if defined(XALAN_STRICT_ANSI_HEADERS) typedef std::size_t size_type; #else typedef size_t size_type; #endif static const TableEntry& searchTable( const TableEntry theTable[], size_type theTableSize, const XalanDOMString& theString); /** * The current input token. */ XalanDOMString m_token; /** * The first char in m_token, the theory being that this * is an optimization because we won't have to do index * into the string as often. */ XalanDOMChar m_tokenChar; /** * A pointer to the current XPath. */ XPath* m_xpath; /** * A pointer to the current XPathConstructionContext. */ XPathConstructionContext* m_constructionContext; /** * A pointer to the current XPath's expression. */ XPathExpression* m_expression; /** * A pointer to the current executionContext. */ const PrefixResolver* m_prefixResolver; bool m_requireLiterals; bool m_isMatchPattern; const Locator* m_locator; BoolVectorType m_positionPredicateStack; StringToStringMapType m_namespaces; bool m_allowVariableReferences; bool m_allowKeyFunction; // Static stuff here... static const XalanDOMString s_emptyString; static const XalanDOMChar s_functionIDString[]; // This shouldn't really be here, since it's not part of the XPath standard, // but rather a part ofthe XSLT standard. static const XalanDOMChar s_functionKeyString[]; static const XalanDOMChar s_orString[]; static const XalanDOMChar s_andString[]; static const XalanDOMChar s_divString[]; static const XalanDOMChar s_modString[]; static const XalanDOMChar s_dotString[]; static const XalanDOMChar s_dotDotString[]; static const XalanDOMChar s_axisString[]; static const XalanDOMChar s_attributeString[]; static const XalanDOMChar s_childString[]; static const XalanDOMChar s_lastString[]; static const XalanDOMChar s_positionString[]; static const XalanDOMChar s_asteriskString[]; static const XalanDOMChar s_commentString[]; static const XalanDOMChar s_piString[]; static const XalanDOMChar s_nodeString[]; static const XalanDOMChar s_textString[]; static const XalanDOMChar s_ancestorString[]; static const XalanDOMChar s_ancestorOrSelfString[]; static const XalanDOMChar s_descendantString[]; static const XalanDOMChar s_descendantOrSelfString[]; static const XalanDOMChar s_followingString[]; static const XalanDOMChar s_followingSiblingString[]; static const XalanDOMChar s_parentString[]; static const XalanDOMChar s_precedingString[]; static const XalanDOMChar s_precedingSiblingString[]; static const XalanDOMChar s_selfString[]; static const XalanDOMChar s_namespaceString[]; static const TableEntry s_functionTable[]; static const size_type s_functionTableSize; static const TableEntry s_nodeTypeTable[]; static const size_type s_nodeTypeTableSize; static const TableEntry s_axisTable[]; static const size_type s_axisTableSize; static const TableEntry s_dummyEntry; }; XALAN_CPP_NAMESPACE_END #endif // XPATHPROCESSORIMPL_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XBoolean.hpp0000664000175000000640000000614511731656102017504 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XBOOLEAN_HEADER_GUARD_1357924680) #define XBOOLEAN_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XBoolean : public XObject { public: typedef XObject ParentType; /** * Construct an XBoolean object from a boolean value * * @param val The boolean value to initialize object * @param theMemoryManager The MemoryManager instance. */ XBoolean( bool val, MemoryManager& theMemoryManager); /** * Construct an XBoolean object from another. * * @param source The source XBoolean instance. * @param theMemoryManager The MemoryManager instance. */ XBoolean( const XBoolean& source, MemoryManager& theMemoryManager); virtual ~XBoolean(); // These methods are inherited from XObject ... virtual const XalanDOMString& getTypeString() const; virtual double num(XPathExecutionContext& executionContext) const; using ParentType::num; virtual bool boolean(XPathExecutionContext& executionContext) const; virtual const XalanDOMString& str(XPathExecutionContext& executionContext) const; virtual const XalanDOMString& str() const; virtual void str( XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( XPathExecutionContext& executionContext, XalanDOMString& theBuffer) const; virtual void str(XalanDOMString& theBuffer) const; using ParentType::str; virtual double stringLength(XPathExecutionContext& executionContext) const; virtual void ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject); virtual void ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject) const; private: bool m_value; }; XALAN_CPP_NAMESPACE_END #endif // XBOOLEAN_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XStringReference.cpp0000664000175000000640000000475111731656102021206 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XStringReference.hpp" XALAN_CPP_NAMESPACE_BEGIN XStringReference::XStringReference( const XalanDOMString& val, MemoryManager& theManager) : XStringBase(theManager), m_value(val) { } XStringReference::XStringReference( const XStringReference& source, MemoryManager& theManager) : XStringBase(source, theManager), m_value(source.m_value) { } XStringReference::~XStringReference() { } const XalanDOMString& XStringReference::str(XPathExecutionContext& /* executionContext */) const { return m_value; } const XalanDOMString& XStringReference::str() const { return m_value; } void XStringReference::str( XPathExecutionContext& /* executionContext */, FormatterListener& formatterListener, MemberFunctionPtr function) const { string(m_value, formatterListener, function); } void XStringReference::str( FormatterListener& formatterListener, MemberFunctionPtr function) const { string(m_value, formatterListener, function); } void XStringReference::str( XPathExecutionContext& /* executionContext */, XalanDOMString& theBuffer) const { theBuffer.append(m_value); } void XStringReference::str(XalanDOMString& theBuffer) const { theBuffer.append(m_value); } double XStringReference::stringLength(XPathExecutionContext& /* executionContext */) const { return static_cast(m_value.length()); } XStringReference::eObjectType XStringReference::getRealType() const { return eTypeStringReference; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XObjectTypeCallback.cpp0000664000175000000640000000212511731656102021577 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XObjectTypeCallback.hpp" XALAN_CPP_NAMESPACE_BEGIN XObjectTypeCallback::XObjectTypeCallback(XPathExecutionContext& theExecutionContext) : m_executionContext(theExecutionContext) { } XObjectTypeCallback::~XObjectTypeCallback() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/FunctionSubstringAfter.hpp0000664000175000000640000000427211731656102022444 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONSUBSTRINGAFTER_HEADER_GUARD_1357924680) #define FUNCTIONSUBSTRINGAFTER_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file... #include XALAN_CPP_NAMESPACE_BEGIN /** * XPath implementation of "substring-after" function. */ class XALAN_XPATH_EXPORT FunctionSubstringAfter : public Function { public: typedef Function ParentType; FunctionSubstringAfter(); virtual ~FunctionSubstringAfter(); // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const XObjectPtr arg2, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionSubstringAfter* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: // Not implemented... FunctionSubstringAfter& operator=(const FunctionSubstringAfter&); bool operator==(const FunctionSubstringAfter&) const; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONSUBSTRINGAFTER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XNumberBase.hpp0000664000175000000640000000605411731656102020147 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XNUMBERBASE_HEADER_GUARD_1357924680) #define XNUMBERBASE_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XNumberBase : public XObject { public: typedef XObject ParentType; /** * Construct an XNumberBase object from another. * * @param source The source XNumberBase instance. * @param theMemoryManager The MemoryManager instance. */ XNumberBase( const XNumberBase& source, MemoryManager& theMemoryManager); virtual ~XNumberBase(); // These methods are inherited from XObject ... virtual const XalanDOMString& getTypeString() const; virtual double num(XPathExecutionContext& executionContext) const = 0; using ParentType::num; virtual bool boolean(XPathExecutionContext& executionContext) const; virtual const XalanDOMString& str(XPathExecutionContext& executionContext) const = 0; virtual const XalanDOMString& str() const = 0; virtual void str( XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const = 0; virtual void str( FormatterListener& formatterListener, MemberFunctionPtr function) const = 0; virtual void str( XPathExecutionContext& executionContext, XalanDOMString& theBuffer) const = 0; virtual void str(XalanDOMString& theBuffer) const = 0; virtual double stringLength(XPathExecutionContext& executionContext) const = 0; virtual void ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject); virtual void ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject) const; protected: /** * Constructor for derived classes * * @param theMemoryManager The MemoryManager instance. */ XNumberBase(MemoryManager& theMemoryManager); private: }; XALAN_CPP_NAMESPACE_END #endif // XNUMBERBASE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XPathExecutionContextDefault.cpp0000664000175000000640000004112411731656102023546 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XPathExecutionContextDefault.hpp" #include #include #include #include #include #include #include #include #include #include "XObjectFactory.hpp" #include "XalanQName.hpp" #include "XPathEnvSupport.hpp" XALAN_CPP_NAMESPACE_BEGIN const NodeRefList XPathExecutionContextDefault::s_dummyList(XalanMemMgrs::getDummyMemMgr()); XPathExecutionContextDefault::XPathExecutionContextDefault( XPathEnvSupport& theXPathEnvSupport, DOMSupport& theDOMSupport, XObjectFactory& theXObjectFactory, XalanNode* theCurrentNode, const NodeRefListBase* theContextNodeList, const PrefixResolver* thePrefixResolver) : XPathExecutionContext(theXObjectFactory.getMemoryManager(), &theXObjectFactory), m_xpathEnvSupport(&theXPathEnvSupport), m_domSupport(&theDOMSupport), m_currentNodeStack(theXObjectFactory.getMemoryManager()), m_contextNodeListStack(theXObjectFactory.getMemoryManager()), m_prefixResolver(thePrefixResolver), m_currentPattern(theXObjectFactory.getMemoryManager()), m_nodeListCache(theXObjectFactory.getMemoryManager(), eNodeListCacheListSize), m_stringCache(theXObjectFactory.getMemoryManager()), m_cachedPosition(), m_scratchQName(theXObjectFactory.getMemoryManager()) { m_currentNodeStack.push_back(theCurrentNode); m_contextNodeListStack.push_back(theContextNodeList == 0 ? &s_dummyList : theContextNodeList); } XPathExecutionContextDefault::XPathExecutionContextDefault( MemoryManager& theManager, XalanNode* theCurrentNode, const NodeRefListBase* theContextNodeList, const PrefixResolver* thePrefixResolver) : XPathExecutionContext(theManager), m_xpathEnvSupport(0), m_domSupport(0), m_currentNodeStack(theManager), m_contextNodeListStack(theManager), m_prefixResolver(thePrefixResolver), m_currentPattern(theManager), m_nodeListCache(theManager, eNodeListCacheListSize), m_stringCache(theManager), m_cachedPosition(), m_scratchQName(theManager) { m_currentNodeStack.push_back(theCurrentNode); m_contextNodeListStack.push_back(theContextNodeList == 0 ? &s_dummyList : theContextNodeList); } XPathExecutionContextDefault* XPathExecutionContextDefault::create( MemoryManager& theManager, XalanNode* theCurrentNode, const NodeRefListBase* theContextNodeList, const PrefixResolver* thePrefixResolver) { typedef XPathExecutionContextDefault ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( theManager, theCurrentNode, theContextNodeList, thePrefixResolver); theGuard.release(); return theResult; } XPathExecutionContextDefault::~XPathExecutionContextDefault() { reset(); } void XPathExecutionContextDefault::problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode) { m_xpathEnvSupport->problem( source, classification, msg, locator, sourceNode); } void XPathExecutionContextDefault::problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode) { m_xpathEnvSupport->problem( source, classification, msg, sourceNode); } void XPathExecutionContextDefault::reset() { if (m_xpathEnvSupport != 0) { m_xpathEnvSupport->reset(); } if (m_domSupport != 0) { m_domSupport->reset(); } if (m_xobjectFactory != 0) { m_xobjectFactory->reset(); } m_currentNodeStack.clear(); m_currentNodeStack.push_back(0); m_contextNodeListStack.clear(); m_contextNodeListStack.push_back(&s_dummyList); m_prefixResolver = 0; m_nodeListCache.reset(), m_stringCache.reset(); m_cachedPosition.clear(); } XalanNode* XPathExecutionContextDefault::getCurrentNode() const { assert(m_currentNodeStack.empty() == false); return m_currentNodeStack.back(); } void XPathExecutionContextDefault::pushCurrentNode(XalanNode* theCurrentNode) { m_currentNodeStack.push_back(theCurrentNode); } void XPathExecutionContextDefault::popCurrentNode() { assert(m_currentNodeStack.empty() == false); m_currentNodeStack.pop_back(); } bool XPathExecutionContextDefault::isNodeAfter( const XalanNode& node1, const XalanNode& node2) const { return m_domSupport->isNodeAfter(node1, node2); } void XPathExecutionContextDefault::pushContextNodeList(const NodeRefListBase& theList) { m_cachedPosition.clear(); m_contextNodeListStack.push_back(&theList); } void XPathExecutionContextDefault::popContextNodeList() { m_cachedPosition.clear(); m_contextNodeListStack.pop_back(); } const NodeRefListBase& XPathExecutionContextDefault::getContextNodeList() const { assert(m_contextNodeListStack.empty() == false); return *m_contextNodeListStack.back(); } XPathExecutionContextDefault::size_type XPathExecutionContextDefault::getContextNodeListLength() const { assert(m_contextNodeListStack.empty() == false); return m_contextNodeListStack.back()->getLength(); } XPathExecutionContextDefault::size_type XPathExecutionContextDefault::getContextNodeListPosition(const XalanNode& contextNode) const { assert(m_contextNodeListStack.empty() == false); if (m_cachedPosition.m_node == &contextNode) { assert((m_cachedPosition.m_index == 0 && m_contextNodeListStack.back()->indexOf(&contextNode) == NodeRefListBase::npos) || (m_contextNodeListStack.back()->indexOf(&contextNode) + 1 == m_cachedPosition.m_index)); } else { // Get the index of the node... const size_type theIndex = m_contextNodeListStack.back()->indexOf(&contextNode); // If not found, it's 0. Otherwise, it's the index + 1 m_cachedPosition.m_index = theIndex == NodeRefListBase::npos ? 0 : theIndex + 1; m_cachedPosition.m_node = &contextNode; } return m_cachedPosition.m_index; } bool XPathExecutionContextDefault::elementAvailable(const XalanQName& theQName) const { assert(m_xpathEnvSupport != 0); return m_xpathEnvSupport->elementAvailable(theQName.getNamespace(), theQName.getLocalPart()); } bool XPathExecutionContextDefault::elementAvailable( const XalanDOMString& theName, const Locator* theLocator) const { assert(m_xpathEnvSupport != 0); XalanQNameByValue& theQName = getScratchQName(); theQName.set(theName, m_prefixResolver, theLocator); return elementAvailable(m_scratchQName); } bool XPathExecutionContextDefault::functionAvailable(const XalanQName& theQName) const { assert(m_xpathEnvSupport != 0); return m_xpathEnvSupport->functionAvailable(theQName.getNamespace(), theQName.getLocalPart()); } bool XPathExecutionContextDefault::functionAvailable( const XalanDOMString& theName, const Locator* theLocator) const { assert(m_xpathEnvSupport != 0); XalanQNameByValue& theQName = getScratchQName(); theQName.set(theName, m_prefixResolver, theLocator); return functionAvailable(theQName); } const XObjectPtr XPathExecutionContextDefault::extFunction( const XalanDOMString& theNamespace, const XalanDOMString& functionName, XalanNode* context, const XObjectArgVectorType& argVec, const Locator* locator) { assert(m_xpathEnvSupport != 0); return m_xpathEnvSupport->extFunction( *this, theNamespace, functionName, context, argVec, locator); } XalanDocument* XPathExecutionContextDefault::parseXML( MemoryManager& theManager, const XalanDOMString& urlString, const XalanDOMString& base, ErrorHandler* theErrorHandler) const { assert(m_xpathEnvSupport != 0); return m_xpathEnvSupport->parseXML( theManager, urlString, base, theErrorHandler); } MutableNodeRefList* XPathExecutionContextDefault::borrowMutableNodeRefList() { return m_nodeListCache.get(); } bool XPathExecutionContextDefault::returnMutableNodeRefList(MutableNodeRefList* theList) { return m_nodeListCache.release(theList); } MutableNodeRefList* XPathExecutionContextDefault::createMutableNodeRefList(MemoryManager& theManager) const { return MutableNodeRefList::create(theManager); } XalanDOMString& XPathExecutionContextDefault::getCachedString() { return m_stringCache.get(); } bool XPathExecutionContextDefault::releaseCachedString(XalanDOMString& theString) { return m_stringCache.release(theString); } void XPathExecutionContextDefault::getNodeSetByKey( XalanNode* /* context */, const XalanQName& /* qname */, const XalanDOMString& /* ref */, const Locator* const /* locator */, MutableNodeRefList& /* nodelist */) { } void XPathExecutionContextDefault::getNodeSetByKey( XalanNode* /* context */, const XalanDOMString& /* name */, const XalanDOMString& /* ref */, const Locator* const /* locator */, MutableNodeRefList& /* nodelist */) { } const XObjectPtr XPathExecutionContextDefault::getVariable( const XalanQName& name, const Locator* const /* locator */) { assert(m_xobjectFactory != 0); return m_xobjectFactory->createUnknown(name.getLocalPart()); } const PrefixResolver* XPathExecutionContextDefault::getPrefixResolver() const { return m_prefixResolver; } void XPathExecutionContextDefault::setPrefixResolver(const PrefixResolver* thePrefixResolver) { m_prefixResolver = thePrefixResolver; } const XalanDOMString* XPathExecutionContextDefault::getNamespaceForPrefix(const XalanDOMString& prefix) const { assert(m_prefixResolver != 0); return m_prefixResolver->getNamespaceForPrefix(prefix); } const XalanDOMString& XPathExecutionContextDefault::findURIFromDoc(const XalanDocument* owner) const { assert(m_xpathEnvSupport != 0); return m_xpathEnvSupport->findURIFromDoc(owner); } const XalanDOMString& XPathExecutionContextDefault::getUnparsedEntityURI( const XalanDOMString& theName, const XalanDocument& theDocument) const { return m_domSupport->getUnparsedEntityURI(theName, theDocument); } bool XPathExecutionContextDefault::shouldStripSourceNode(const XalanText& /* node */) { return false; } void XPathExecutionContextDefault::error( const XalanDOMString& msg, const XalanNode* sourceNode, const Locator* locator) const { assert(m_xpathEnvSupport != 0); m_xpathEnvSupport->problem( XPathEnvSupport::eXPATH, XPathEnvSupport::eError, msg, locator, sourceNode); MemoryManager& theManager = getMemoryManager(); XalanDOMString uri(theManager); uri = XalanLocator::getSystemId(locator, uri.c_str()); throw XalanXPathException( msg, theManager, locator); } void XPathExecutionContextDefault::warn( const XalanDOMString& msg, const XalanNode* sourceNode, const Locator* locator) const { assert(m_xpathEnvSupport != 0); m_xpathEnvSupport->problem( XPathEnvSupport::eXPATH, XPathEnvSupport::eWarning, msg, locator, sourceNode); } void XPathExecutionContextDefault::message( const XalanDOMString& msg, const XalanNode* sourceNode, const Locator* locator) const { assert(m_xpathEnvSupport != 0); m_xpathEnvSupport->problem( XPathEnvSupport::eXPATH, XPathEnvSupport::eWarning, msg, locator, sourceNode); } XalanDocument* XPathExecutionContextDefault::getSourceDocument(const XalanDOMString& theURI) const { assert(m_xpathEnvSupport != 0); return m_xpathEnvSupport->getSourceDocument(theURI); } void XPathExecutionContextDefault::setSourceDocument( const XalanDOMString& theURI, XalanDocument* theDocument) { assert(m_xpathEnvSupport != 0); m_xpathEnvSupport->setSourceDocument(theURI, theDocument); } void XPathExecutionContextDefault::formatNumber( double number, const XalanDOMString& pattern, XalanDOMString& theResult, const XalanNode* context, const Locator* locator) { doFormatNumber(number, pattern, 0, theResult, context, locator); } void XPathExecutionContextDefault::formatNumber( double number, const XalanDOMString& pattern, const XalanDOMString& /* dfsName */, XalanDOMString& theResult, const XalanNode* context, const Locator* locator) { doFormatNumber(number, pattern, 0, theResult, context, locator); } void XPathExecutionContextDefault::doFormatNumber( double number, const XalanDOMString& /* pattern */, const XalanDecimalFormatSymbols* theDFS, XalanDOMString& theResult, const XalanNode* context, const Locator* locator) { if (DoubleSupport::isNaN(number) == true) { if (theDFS != 0) { theResult = theDFS->getNaN(); } else { NumberToDOMString(number, theResult); } } else if (DoubleSupport::isNegativeInfinity(number) == true) { if (theDFS != 0) { theResult = theDFS->getMinusSign(); theResult += theDFS->getInfinity(); } else { NumberToDOMString(number, theResult); } } else if (DoubleSupport::isPositiveInfinity(number) == true ) { if (theDFS != 0) { theResult = theDFS->getInfinity(); } else { NumberToDOMString(number, theResult); } } else { const GetCachedString theGuard(*this); warn( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::FunctionIsNotImplemented_1Param, "format-number()"), context, locator); NumberToDOMString(number,theResult); } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XalanDocumentFragmentNodeRefListBaseProxy.cpp0000664000175000000640000000402211731656102026142 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanDocumentFragmentNodeRefListBaseProxy.hpp" #include #include XALAN_CPP_NAMESPACE_BEGIN XalanDocumentFragmentNodeRefListBaseProxy::XalanDocumentFragmentNodeRefListBaseProxy(const XalanDocumentFragment& value) : NodeRefListBase(), m_value(value) { } XalanDocumentFragmentNodeRefListBaseProxy::XalanDocumentFragmentNodeRefListBaseProxy(const XalanDocumentFragmentNodeRefListBaseProxy& source) : NodeRefListBase(), m_value(source.m_value) { } XalanDocumentFragmentNodeRefListBaseProxy::~XalanDocumentFragmentNodeRefListBaseProxy() { } XalanNode* #if defined(NDEBUG) XalanDocumentFragmentNodeRefListBaseProxy::item(size_type) const #else XalanDocumentFragmentNodeRefListBaseProxy::item(size_type index) const #endif { assert(index == 0); return const_cast(&m_value); } XalanDocumentFragmentNodeRefListBaseProxy::size_type XalanDocumentFragmentNodeRefListBaseProxy::getLength() const { return 1; } XalanDocumentFragmentNodeRefListBaseProxy::size_type XalanDocumentFragmentNodeRefListBaseProxy::indexOf(const XalanNode* theNode) const { return theNode == &m_value ? 0 : npos; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XPathProcessor.cpp0000664000175000000640000000234311731656102020710 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XPathProcessor.hpp" #include "XPath.hpp" XALAN_CPP_NAMESPACE_BEGIN XPathProcessor::XPathProcessor() { } XPathProcessor::~XPathProcessor() { } void XPathProcessor::installFunction( const XalanDOMString& theFunctionName, const Function& theFunction) { XPath::installFunction(theFunctionName, theFunction); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XObjectResultTreeFragProxyText.cpp0000664000175000000640000000771311731656102024056 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XObjectResultTreeFragProxyText.hpp" #include #include #include "XStringBase.hpp" XALAN_CPP_NAMESPACE_BEGIN static const XalanNodeListDummy s_emptyChildren; static const XalanDOMString s_emptyString(XalanMemMgrs::getDummyMemMgr()); XObjectResultTreeFragProxyText::XObjectResultTreeFragProxyText( const XObject& theXObject, MemoryManager& theManager, XPathExecutionContext* theExecutionContext) : XalanText(), m_value(theXObject), m_memoryManager(theManager), m_executionContext(theExecutionContext) { } XObjectResultTreeFragProxyText::~XObjectResultTreeFragProxyText() { } const XalanDOMString& XObjectResultTreeFragProxyText::getNodeName() const { return s_nameString; } const XalanDOMString& XObjectResultTreeFragProxyText::getNodeValue() const { if (m_executionContext != 0) { return m_value.str(*m_executionContext); } else { return m_value.str(); } } XObjectResultTreeFragProxyText::NodeType XObjectResultTreeFragProxyText::getNodeType() const { return TEXT_NODE; } XalanNode* XObjectResultTreeFragProxyText::getParentNode() const { return 0; } const XalanNodeList* XObjectResultTreeFragProxyText::getChildNodes() const { return &s_emptyChildren; } XalanNode* XObjectResultTreeFragProxyText::getFirstChild() const { return 0; } XalanNode* XObjectResultTreeFragProxyText::getLastChild() const { return 0; } XalanNode* XObjectResultTreeFragProxyText::getPreviousSibling() const { return 0; } XalanNode* XObjectResultTreeFragProxyText::getNextSibling() const { return 0; } const XalanNamedNodeMap* XObjectResultTreeFragProxyText::getAttributes() const { return 0; } XalanDocument* XObjectResultTreeFragProxyText::getOwnerDocument() const { return 0; } const XalanDOMString& XObjectResultTreeFragProxyText::getNamespaceURI() const { return s_emptyString; } const XalanDOMString& XObjectResultTreeFragProxyText::getPrefix() const { return s_emptyString; } const XalanDOMString& XObjectResultTreeFragProxyText::getLocalName() const { return s_emptyString; } bool XObjectResultTreeFragProxyText::isIndexed() const { return false; } XObjectResultTreeFragProxyText::IndexType XObjectResultTreeFragProxyText::getIndex() const { return 0; } const XalanDOMString& XObjectResultTreeFragProxyText::getData() const { return getNodeValue(); } bool XObjectResultTreeFragProxyText::isWhitespace() const { return isXMLWhitespace(getNodeValue()); } static XALAN_CPP_NAMESPACE_QUALIFIER XalanDOMString s_localNameString(XalanMemMgrs::getDummyMemMgr()); const XalanDOMString& XObjectResultTreeFragProxyText::s_nameString = s_localNameString; void XObjectResultTreeFragProxyText::initialize(MemoryManager& theManager) { XalanDOMString tmpString("#text", theManager); s_localNameString.swap(tmpString); } void XObjectResultTreeFragProxyText::terminate() { releaseMemory(s_localNameString, XalanMemMgrs::getDummyMemMgr()); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XNumberAllocator.hpp0000664000175000000640000000566511731656102021224 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XNUMBERALLOCATOR_INCLUDE_GUARD_135792455) #define XNUMBERALLOCATOR_INCLUDE_GUARD_135792455 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XNumberAllocator { public: typedef XNumber number_type; typedef ReusableArenaAllocator ArenaAllocatorType; typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XNumberAllocator(MemoryManager& theManager, size_type theBlockCount); ~XNumberAllocator(); /** * Create an XNumber object using allocator from a string. * * @param theString source number * * @return a pointer to a number */ number_type* createNumber(double theNumber); /** * Delete an XNumber object from allocator. */ bool destroy(number_type* theNumber); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const number_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all XNumber objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XNumberAllocator(const XNumberAllocator&); XNumberAllocator& operator=(const XNumberAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XNUMBERALLOCATOR_INCLUDE_GUARD_135792455 xalan-c-1.11/c/src/xalanc/XPath/XPathFactoryDefault.hpp0000664000175000000640000000375611731656102021663 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XPATHFACTORYDEFAULT_HEADER_GUARD_1357924680) #define XPATHFACTORYDEFAULT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include // Base class header file... #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XPathFactoryDefault : public XPathFactory { public: explicit XPathFactoryDefault(MemoryManager& theManager XALAN_DEFAULT_MEMMGR); virtual ~XPathFactoryDefault(); static XPathFactoryDefault* create(MemoryManager& theManager); // Inherited from XPathFactory... virtual void reset(); // Inherited from XPathFactory... virtual XPath* create(); typedef XalanSet CollectionType; CollectionType::size_type getInstanceCount() const { return m_xpaths.size(); } protected: // Inherited from XPathFactory... virtual bool doReturnObject( const XPath* theXPath, bool fInReset = false); private: CollectionType m_xpaths; }; XALAN_CPP_NAMESPACE_END #endif // XPATHFACTORYDEFAULT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/FunctionSubstring.cpp0000664000175000000640000002244011731656102021452 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionSubstring.hpp" #include #include #include "XObjectFactory.hpp" XALAN_CPP_NAMESPACE_BEGIN const XObjectPtr FunctionSubstring::s_nullXObjectPtr; FunctionSubstring::FunctionSubstring() { } FunctionSubstring::~FunctionSubstring() { } /* * Get the value for the start index (C-style, not XPath). This * function expects theSecondArgValue to be already rounded. */ inline XalanDOMString::size_type getStartIndex( double theSecondArgValue, XalanDOMString::size_type theStringLength) { // We always subtract 1 for C-style index, since // XPath indexes from 1. // If we end up with NaN, INF, or -INF, then no possible index // can be greater than or equal to that, so just return // the start index as the length of the string. That // will result in an empty string, which is what we want. if (DoubleSupport::isNaN(theSecondArgValue) == true || DoubleSupport::isPositiveInfinity(theSecondArgValue) == true || DoubleSupport::isNegativeInfinity(theSecondArgValue) == true) { return theStringLength; } // Anything less than, or equal to 1 is 0. else if (DoubleSupport::lessThanOrEqual(theSecondArgValue, 1) == true) { assert(DoubleSupport::round(theSecondArgValue) == theSecondArgValue); return 0; } else { assert(DoubleSupport::round(theSecondArgValue) == theSecondArgValue); // Since we have filtered out anything less than // 1, and any special values, we can do this without // calling DoubleSupport::subtract(). const double theResult = theSecondArgValue - 1; assert( DoubleSupport::equal( DoubleSupport::subtract( theSecondArgValue, 1), theResult)); return XalanDOMString::size_type(theResult); } } /* * Get the length of the substring. */ inline XalanDOMString::size_type getSubstringLength( XPathExecutionContext& executionContext, XalanDOMString::size_type theSourceStringLength, XalanDOMString::size_type theStartIndex, double theSecondArgValue, const XObjectPtr& arg3) { assert(theStartIndex < theSourceStringLength); assert(DoubleSupport::isNaN(theSecondArgValue) == false); assert(DoubleSupport::isNegativeInfinity(theSecondArgValue) == false); assert(DoubleSupport::isPositiveInfinity(theSecondArgValue) == false); typedef XalanDOMString::size_type size_type; const size_type theMaxLength = theSourceStringLength - theStartIndex; // Total the second and third arguments. If the third argument is // missing, make it the length of the string + 1 (for XPath // indexing style). if (arg3.null() == true) { return theMaxLength; } else { const double theThirdArgValue = arg3->num(executionContext); if (DoubleSupport::isNaN(theThirdArgValue) == true || DoubleSupport::isNegativeInfinity(theThirdArgValue) == true) { return 0; } else if (DoubleSupport::isPositiveInfinity(theThirdArgValue) == true) { return theMaxLength; } else { const double theRoundedValue = DoubleSupport::round(theThirdArgValue); assert(DoubleSupport::isNaN(theRoundedValue) == false); assert(DoubleSupport::isNegativeInfinity(theRoundedValue) == false); assert(DoubleSupport::isPositiveInfinity(theRoundedValue) == false); // The XPath recommendation states that following: // // http://www.w3.org/TR/xpath#function-substring // // "The returned substring contains those characters for which the // position of the character is greater than or equal to the rounded // value of the second argument and, if the third argument is specified, // less than the sum of the rounded value of the second argument and the // rounded value of the third argument; the comparisons and addition used // for the above follow the standard IEEE 754 rules; rounding is done as // if by a call to the round function." // // Note that this is indexing from 1. const double theTotal = theRoundedValue + theSecondArgValue; const size_type theXPathStartIndex = theStartIndex + 1; // If the total is less than or equal to // the starting index, or greater // than or equal to the starting index, the // substring is empty. if (theTotal <= theXPathStartIndex) { return 0; } else { const size_type theSubstringLength = size_type(theTotal) - theXPathStartIndex; return theSubstringLength > theMaxLength ? theMaxLength : theSubstringLength; } } } } static const XalanDOMString theEmptyString(XalanMemMgrs::getDummyMemMgr()); inline XObjectPtr createEmptyString(XPathExecutionContext& executionContext) { return executionContext.getXObjectFactory().createStringReference(theEmptyString); } XObjectPtr FunctionSubstring::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const XObjectPtr arg2, const Locator* locator) const { assert(arg1.null() == false && arg2.null() == false); return execute(executionContext, context, arg1, arg2, s_nullXObjectPtr, locator); } XObjectPtr FunctionSubstring::execute( XPathExecutionContext& executionContext, XalanNode* /* context */, const XObjectPtr arg1, const XObjectPtr arg2, const XObjectPtr arg3, const Locator* const /* locator */) const { assert(arg1.null() == false && arg2.null() == false); const XalanDOMString& theSourceString = arg1->str(executionContext); const XalanDOMString::size_type theSourceStringLength = theSourceString.length(); if (theSourceStringLength == 0) { return createEmptyString(executionContext); } else { // Get the value of the second argument... const double theSecondArgValue = DoubleSupport::round(arg2->num(executionContext)); // XPath indexes from 1, so this is the first XPath index.... const XalanDOMString::size_type theStartIndex = getStartIndex(theSecondArgValue, theSourceStringLength); if (theStartIndex >= theSourceStringLength) { return createEmptyString(executionContext); } else { assert(DoubleSupport::isNaN(theSecondArgValue) == false); assert(DoubleSupport::isPositiveInfinity(theSecondArgValue) == false); const XalanDOMString::size_type theSubstringLength = getSubstringLength( executionContext, theSourceStringLength, theStartIndex, theSecondArgValue, arg3); if (theSubstringLength == 0) { return createEmptyString(executionContext); } else { GetCachedString theResult(executionContext); XalanDOMString& theString = theResult.get(); theString.assign( theSourceString.c_str() + theStartIndex, theSubstringLength); return executionContext.getXObjectFactory().createString(theResult); } } } } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionSubstring* #endif FunctionSubstring::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionSubstring::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionTakesTwoOrThreeArguments_1Param, "substring()"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/FunctionNamespaceURI.hpp0000664000175000000640000000457611731656102021765 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONNAMESPACEURI_HEADER_GUARD_1357924680) #define FUNCTIONNAMESPACEURI_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include // Base class header file... #include #include XALAN_CPP_NAMESPACE_BEGIN /** * XPath implementation of "namespace-uri" function. */ class XALAN_XPATH_EXPORT FunctionNamespaceURI : public Function { public: typedef Function ParentType; FunctionNamespaceURI(); virtual ~FunctionNamespaceURI(); // These methods are inherited from Function ... using ParentType::execute; virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const Locator* locator) const; virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const Locator* locator) const; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionNamespaceURI* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: // Not implemented... FunctionNamespaceURI& operator=(const FunctionNamespaceURI&); bool operator==(const FunctionNamespaceURI&) const; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONNAMESPACEURI_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/FunctionStartsWith.hpp0000664000175000000640000000421611731656102021614 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONSTARTSWITH_HEADER_GUARD_1357924680) #define FUNCTIONSTARTSWITH_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file... #include XALAN_CPP_NAMESPACE_BEGIN /** * XPath implementation of "starts-with" function. */ class XALAN_XPATH_EXPORT FunctionStartsWith : public Function { public: typedef Function ParentType; FunctionStartsWith(); virtual ~FunctionStartsWith(); // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const XObjectPtr arg2, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionStartsWith* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: // Not implemented... FunctionStartsWith& operator=(const FunctionStartsWith&); bool operator==(const FunctionStartsWith&) const; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONSTARTSWITH_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XPathFactoryBlock.cpp0000664000175000000640000000310311731656102021306 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XPathFactoryBlock.hpp" #include XALAN_CPP_NAMESPACE_BEGIN XPathFactoryBlock::XPathFactoryBlock( MemoryManager& theManager, XalanSize_t theBlockSize) : XPathFactory(), m_allocator(theManager, theBlockSize) { } XPathFactoryBlock::~XPathFactoryBlock() { } void XPathFactoryBlock::reset() { m_allocator.reset(); } bool XPathFactoryBlock::doReturnObject( const XPath* theXPath, bool /* fInReset */) { // We never really delete anything, but return // false if our allocator didn't create the instance. return m_allocator.ownsObject(theXPath); } XPath* XPathFactoryBlock::create() { return m_allocator.create(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XalanQName.hpp0000664000175000000640000003241711731656102017763 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANQNAME_HEADER_GUARD_1357924680) #define XALANQNAME_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanElement; class XPathEnvSupport; /** * Class to represent a qualified name. The name of an internal XSLT object, * specifically a named template (see [7 Named Templates]), a mode (see [6.7 Modes]), * an attribute set (see [8.1.4 Named Attribute Sets]), a key (see [14.2 Keys]), * a locale (see [14.3 Number Formatting]), a variable or a parameter (see * [12 Variables and Parameters]) is specified as a QName. If it has a prefix, * then the prefix is expanded into a URI reference using the namespace declarations * in effect on the attribute in which the name occurs. The expanded name * consisting of the local part of the name and the possibly null URI reference * is used as the name of the object. The default namespace is not used for * unprefixed names. */ class XALAN_XPATH_EXPORT XalanQName { public: typedef XalanDeque > NamespaceVectorType; typedef XalanDeque > NamespacesStackType; /** * Construct an empty XalanQName. * */ explicit XalanQName() { } virtual ~XalanQName() { } XalanQName(const XalanQName&) { } /** * Retrieve the local part of qualified name. * * @return local part string */ virtual const XalanDOMString& getLocalPart() const = 0; /** * Retrieve the namespace of qualified name. * * @return namespace string */ virtual const XalanDOMString& getNamespace() const = 0; /** * Determine if the qualified name is valid. * * @return true if the instance is a valid QName, false if not. */ bool isValid() const { return isValidNCName(getLocalPart()); } /** * Whether the qualified name is empty. * * @return true if namespace and local part are both empty */ bool isEmpty() const { return getNamespace().empty() && getLocalPart().empty(); } /** * Override equals and agree that we're equal if the passed object is a * string and it matches the name of the arg. * * @param theRHS namespace to compare * @return true if namespace and local part are both empty */ bool equals(const XalanQName& theRHS) const { // Note that we do not use our member variables here. See // class QNameReference for details... return getLocalPart() == theRHS.getLocalPart() && getNamespace() == theRHS.getNamespace(); } /** * Format the QName using the notation "{namespace-uri}local-part" or * "local-part" if the namespace URI is empty. The result is appended * to the provided string. * * @param theString The string to format with the * @return A reference to the parameter. */ XalanDOMString& format(XalanDOMString& theString) const; size_t hash() const { return getLocalPart().hash() % (getNamespace().hash() + 1); } class XALAN_XPATH_EXPORT PrefixResolverProxy : public PrefixResolver { public: /** * Construct a PrefixResolver from a NamespacesStackType * instance. * * @param theStack The stack to use for prefix resolution * @param theURI The namespace URI of the resolver, if any. Only a reference is kept, so this cannot be a temporary * @return pointer to the string value if found, otherwise 0. */ PrefixResolverProxy( const NamespacesStackType& theStack, const XalanDOMString& theURI); virtual ~PrefixResolverProxy(); virtual const XalanDOMString* getNamespaceForPrefix(const XalanDOMString& prefix) const; virtual const XalanDOMString& getURI() const; private: const NamespacesStackType& m_stack; const XalanDOMString& m_uri; }; /** * Get the namespace for a prefix by searching a vector of namespaces. * * @param namespaces vector of namespaces to search * @param prefix namespace prefix to find * @return pointer to the string value if found, otherwise null. */ static const XalanDOMString* getNamespaceForPrefix( const NamespaceVectorType& namespaces, const XalanDOMString& prefix); /** * Get the namespace for a prefix by searching a stack of namespace * vectors. * * @param nsStack stack of namespace vectors to search * @param prefix namespace prefix to find * @return pointer to the string value if found, otherwise null. */ static const XalanDOMString* getNamespaceForPrefix( const NamespacesStackType& nsStack, const XalanDOMString& prefix); static const XalanDOMString* getNamespaceForPrefix( const NamespacesStackType& nsStack, const XalanDOMChar* prefix); /** * Get the namespace for a prefix by searching a range of iterators. * The search is done in reverse, from the end of the range to the * beginning. * * @param theBegin The beginning iterator for the range * @param theBegin The ending iterator for the range * @param prefix namespace prefix to find * @return pointer to the string value if found, otherwise null. */ static const XalanDOMString* getNamespaceForPrefix( NamespacesStackType::const_iterator theBegin, NamespacesStackType::const_iterator theEnd, const XalanDOMString& prefix); /** * Get the prefix for a namespace by searching a vector of namespaces. * * @param namespaces vector of namespaces to search * @param uri URI string for namespace to find * @param reverse true to search vector from last to first, default true * @return pointer to the string value if found, otherwise null. */ static const XalanDOMString* getPrefixForNamespace( const NamespaceVectorType& namespaces, const XalanDOMString& uri); static const XalanDOMString* getNamespaceForPrefix( const NamespaceVectorType& namespaces, const XalanDOMChar* prefix); /** * Get the prefix for a namespace by searching a stack of namespace * vectors. * * @param nsStack stack of namespace vectors to search * @param uri URI string for namespace to find * @return pointer to the string value if found, otherwise null. */ static const XalanDOMString* getPrefixForNamespace( const NamespacesStackType& nsStack, const XalanDOMString& uri); /** * Get the prefix for a namespace by searching a range of iterators. * The search is done in reverse, from the end of the range to the * beginning. * * @param theBegin The beginning iterator for the range to search * @param theBegin The ending iterator for the range to search * @param uri URI string for namespace to find * @return pointer to the string value if found, otherwise null. */ static const XalanDOMString* getPrefixForNamespace( NamespacesStackType::const_iterator theBegin, NamespacesStackType::const_iterator theEnd, const XalanDOMString& uri); static const XalanDOMString* getNamespaceForPrefix( NamespacesStackType::const_iterator theBegin, NamespacesStackType::const_iterator theEnd, const XalanDOMChar* prefix); /** * Determine if the string supplied satisfies the grammar for * an XML NCName. * * @param theNCName The string to check * @return bool true if the string is a valid NCName, false if not. */ static bool isValidNCName(const XalanDOMString& theNCName); /** * Determine if the string supplied satisfies the grammar for * an XML NCName. * * @param theNCName The string to check * @param theLength The length of the string * @return bool true if the string is a valid NCName, false if not */ static bool isValidNCName( const XalanDOMChar* theNCName, XalanDOMString::size_type theLength = XalanDOMString::npos); /** * Determine if the string supplied satisfies the grammar for * an XML QName. Note that this function does not determine * if any supplied prefix is bound to a namespace URI * * @param theQName The string to check * @return bool true if the string is a valid QName, false if not */ static bool isValidQName(const XalanDOMString& theQName); /** * Determine if the string supplied satisfies the grammar for * an XML QName. Note that this function does not determine * if any supplied prefix is bound to a namespace URI * * @param theQName The string to check * @param theLength The length of the string * @return bool true if the string is a valid QName, false if not */ static bool isValidQName( const XalanDOMChar* theQName, XalanDOMString::size_type theLength = XalanDOMString::npos); class InvalidQNameException : public XalanXPathException { public: /** * Constructor * * @param theQName The QName string that is not valid. * @param theQNameLength The length of the string. * @param theResult A temporary string for loading the error message. */ InvalidQNameException( const XalanDOMChar* theQName, XalanDOMString::size_type theQNameLength, XalanDOMString& theResult, const Locator* theLocator); /** * Constructor * * @param theMessage The message for the exception * @param theManager The MemoryManager instance to use when constructing the exception */ InvalidQNameException( const XalanDOMString& theMessage, MemoryManager& theManager, const Locator* theLocator); InvalidQNameException(const InvalidQNameException& other); virtual ~InvalidQNameException(); virtual const XalanDOMChar* getType() const; private: static const XalanDOMString& format( const XalanDOMChar* theQName, XalanDOMString::size_type theQNameLength, XalanDOMString& theResult); }; protected: static const XalanDOMString s_emptyString; }; inline bool operator==( const XalanQName& theLHS, const XalanQName& theRHS) { return theLHS.equals(theRHS); } inline bool operator!=( const XalanQName& theLHS, const XalanQName& theRHS) { return !(theLHS == theRHS); } inline bool operator<( const XalanQName& theLHS, const XalanQName& theRHS) { if (theLHS.getNamespace() < theRHS.getNamespace()) { return true; } else if (equals(theLHS.getNamespace(), theRHS.getNamespace())) { return theLHS.getLocalPart() < theRHS.getLocalPart(); } else { return false; } } template<> struct XalanMapKeyTraits { typedef XalanHashMemberReference Hasher; typedef XALAN_STD_QUALIFIER equal_to Comparator; }; template<> struct XalanMapKeyTraits { typedef XalanHashMemberPointer Hasher; typedef pointer_equal Comparator; }; XALAN_CPP_NAMESPACE_END #endif // XALANQNAME_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XObjectFactoryDefault.cpp0000664000175000000640000003022411731656102022156 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XObjectFactoryDefault.hpp" #include #include #include "XBoolean.hpp" #include "XNodeSet.hpp" #include "XNumber.hpp" #include "XString.hpp" #include "XStringAdapter.hpp" #include "XStringCached.hpp" #include "XStringReference.hpp" #include "XUnknown.hpp" XALAN_CPP_NAMESPACE_BEGIN XObjectFactoryDefault::XObjectFactoryDefault( MemoryManager& theManager, size_type theXStringBlockSize, size_type theXNumberBlockSize, size_type theXNodeSetBlockSize, size_type theXNodeSetNodeProxyBlockSize) : XObjectFactory(theManager), m_xstringAdapterAllocator(theManager, theXStringBlockSize), m_xstringAllocator(theManager, theXStringBlockSize), m_xstringCachedAllocator(theManager, theXStringBlockSize), m_xstringReferenceAllocator(theManager, theXStringBlockSize), m_xnumberAllocator(theManager, theXNumberBlockSize), m_xnodesetAllocator(theManager, theXNodeSetBlockSize), m_xnodesetNodeProxyAllocator(theManager, theXNodeSetNodeProxyBlockSize), m_xtokenNumberAdapterAllocator(theManager, theXNumberBlockSize), m_xtokenStringAdapterAllocator(theManager, theXStringBlockSize), m_xobjects(theManager), m_xnumberCache(theManager), m_xnodesetCache(theManager), m_xstringCache(theManager), m_xbooleanFalse(false, theManager), m_xbooleanTrue(true, theManager), m_references(theManager) { } XObjectFactoryDefault* XObjectFactoryDefault::create( MemoryManager& theManager, size_type theXStringBlockSize , size_type theXNumberBlockSize , size_type theXNodeSetBlockSize, size_type theXNodeSetNodeProxyBlockSize) { typedef XObjectFactoryDefault Type; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(Type))); Type* theResult = new (theGuard.get()) Type( theManager, theXStringBlockSize, theXNumberBlockSize, theXNodeSetBlockSize, theXNodeSetNodeProxyBlockSize); theGuard.release(); return theResult; } XObjectFactoryDefault::~XObjectFactoryDefault() { reset(); } bool XObjectFactoryDefault::doReturnObject( XObject* theXObject, bool fInReset) { assert(theXObject != 0); bool bStatus = false; const XObject::eObjectType theType = getRealType(*theXObject); switch(theType) { case XObject::eTypeBoolean: case XObject::eTypeNull: { bStatus = true; } case XObject::eTypeStringAdapter: { XStringAdapter* const theXStringAdapter = static_cast(theXObject); bStatus = m_xstringAdapterAllocator.destroy(theXStringAdapter); } break; case XObject::eTypeXTokenNumberAdapter: { XTokenNumberAdapter* const theAdapter = static_cast(theXObject); bStatus = m_xtokenNumberAdapterAllocator.destroy(theAdapter); } break; case XObject::eTypeXTokenStringAdapter: { XTokenStringAdapter* const theAdapter = static_cast(theXObject); bStatus = m_xtokenStringAdapterAllocator.destroy(theAdapter); } break; case XObject::eTypeString: { XString* const theXString = static_cast(theXObject); if (m_xstringCache.size() < eXStringCacheMax) { m_xstringCache.push_back(theXString); bStatus = true; } else { bStatus = m_xstringAllocator.destroy(theXString); } } break; case XObject::eTypeStringCached: { XStringCached* const theXStringCached = static_cast(theXObject); bStatus = m_xstringCachedAllocator.destroy(theXStringCached); } break; case XObject::eTypeStringReference: { XStringReference* const theXStringReference = static_cast(theXObject); bStatus = m_xstringReferenceAllocator.destroy(theXStringReference); } break; case XObject::eTypeNumber: { XNumber* const theXNumber = static_cast(theXObject); if (m_xnumberCache.size() < eXNumberCacheMax) { m_xnumberCache.push_back(theXNumber); bStatus = true; } else { bStatus = m_xnumberAllocator.destroy(theXNumber); } } break; case XObject::eTypeNodeSet: { XNodeSet* const theXNodeSet = static_cast(theXObject); if (m_xnodesetCache.size() < eXNodeSetCacheMax) { theXNodeSet->release(); m_xnodesetCache.push_back(theXNodeSet); bStatus = true; } else { bStatus = m_xnodesetAllocator.destroy(theXNodeSet); } } break; case XObject::eTypeNodeSetNodeProxy: { XNodeSetNodeProxy* const theXNodeSet = static_cast(theXObject); bStatus = m_xnodesetNodeProxyAllocator.destroy(theXNodeSet); } break; default: { XALAN_USING_STD(find) const XObjectCollectionType::iterator i = find(m_xobjects.begin(), m_xobjects.end(), theXObject); if (i != m_xobjects.end()) { if (fInReset == false) { m_xobjects.erase(i); } deleteObject(theXObject); bStatus = true; } } break; } return bStatus; } const XObjectPtr XObjectFactoryDefault::createBoolean(bool theValue) { if (theValue == true) { return XObjectPtr(&m_xbooleanTrue); } else { return XObjectPtr(&m_xbooleanFalse); } } const XObjectPtr XObjectFactoryDefault::createUnknown(const XalanDOMString& theValue) { XUnknown* const theXUnknown = XUnknown::create(theValue, getMemoryManager()); m_xobjects.push_back(theXUnknown); theXUnknown->setFactory(this); return XObjectPtr(theXUnknown); } const XObjectPtr XObjectFactoryDefault::createNumber(double theValue) { if (m_xnumberCache.empty() == false) { XNumber* const theXNumber = m_xnumberCache.back(); m_xnumberCache.pop_back(); theXNumber->set(theValue); return XObjectPtr(theXNumber); } else { m_xnumberCache.reserve(eXNumberCacheMax); XObject* const theXObject = m_xnumberAllocator.createNumber(theValue); theXObject->setFactory(this); return XObjectPtr(theXObject); } } const XObjectPtr XObjectFactoryDefault::createNumber(const XToken& theValue) { XObject* theXObject = m_xtokenNumberAdapterAllocator.create(theValue); theXObject->setFactory(this); return XObjectPtr(theXObject); } const XObjectPtr XObjectFactoryDefault::createNodeSet(BorrowReturnMutableNodeRefList& theValue) { if (m_xnodesetCache.empty() == false) { XNodeSet* const theXObject = m_xnodesetCache.back(); m_xnodesetCache.pop_back(); theXObject->set(theValue); return XObjectPtr(theXObject); } else { m_xnodesetCache.reserve(eXNodeSetCacheMax); XNodeSet* const theXObject = m_xnodesetAllocator.createNodeSet(theValue); theXObject->setFactory(this); return XObjectPtr(theXObject); } } const XObjectPtr XObjectFactoryDefault::createNodeSet(XalanNode* theValue) { XNodeSetNodeProxy* const theNodeSet = m_xnodesetNodeProxyAllocator.create(theValue); theNodeSet->setFactory(this); return XObjectPtr(theNodeSet); } const XObjectPtr XObjectFactoryDefault::createString(const XalanDOMString& theValue) { if (m_xstringCache.empty() == false) { XString* const theXString = m_xstringCache.back(); m_xstringCache.pop_back(); theXString->set(theValue); return XObjectPtr(theXString); } else { m_xstringCache.reserve(eXStringCacheMax); XString* const theXString = m_xstringAllocator.createString(theValue); theXString->setFactory(this); return XObjectPtr(theXString); } } const XObjectPtr XObjectFactoryDefault::createString(const XalanDOMChar* theValue) { XString* const theXString = m_xstringAllocator.createString(theValue); theXString->setFactory(this); return XObjectPtr(theXString); } const XObjectPtr XObjectFactoryDefault::createString( const XalanDOMChar* theValue, XalanSize_t theLength) { XString* const theXString = m_xstringAllocator.createString(theValue, theLength); theXString->setFactory(this); return XObjectPtr(theXString); } const XObjectPtr XObjectFactoryDefault::createString(const XToken& theValue) { XObject* theXObject = m_xtokenStringAdapterAllocator.create(theValue); theXObject->setFactory(this); return XObjectPtr(theXObject); } const XObjectPtr XObjectFactoryDefault::createStringReference(const XalanDOMString& theValue) { XStringReference* const theXStringReference = m_xstringReferenceAllocator.createString(theValue); theXStringReference->setFactory(this); return XObjectPtr(theXStringReference); } const XObjectPtr XObjectFactoryDefault::createStringAdapter( const XObjectPtr& theValue, XPathExecutionContext& theExecutionContext) { XStringAdapter* const theXStringAdapter = m_xstringAdapterAllocator.createString(theValue, theExecutionContext); theXStringAdapter->setFactory(this); return XObjectPtr(theXStringAdapter); } const XObjectPtr XObjectFactoryDefault::createString(GetCachedString& theValue) { XStringCached* const theXStringCached = m_xstringCachedAllocator.createString(theValue); theXStringCached->setFactory(this); return XObjectPtr(theXStringCached); } void XObjectFactoryDefault::holdReference(XObjectPtr theValue) { m_references.push_back(theValue); } void XObjectFactoryDefault::reset() { m_references.clear(); m_xstringAdapterAllocator.reset(); m_xstringAllocator.reset(); m_xstringCachedAllocator.reset(); m_xstringReferenceAllocator.reset(); m_xnumberAllocator.reset(); m_xnodesetAllocator.reset(); m_xnodesetNodeProxyAllocator.reset(); m_xtokenNumberAdapterAllocator.reset(); m_xtokenStringAdapterAllocator.reset(); #if !defined(XALAN_NO_STD_NAMESPACE) using std::for_each; #endif for_each(m_xobjects.begin(), m_xobjects.end(), DeleteXObjectFunctor(*this, true)); m_xobjects.clear(); m_xnumberCache.clear(); m_xnodesetCache.clear(); m_xstringCache.clear(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XalanXPathException.hpp0000664000175000000640000000461211731656102021661 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANXPATHEXCEPTION_HEADER_GUARD_1357924680) #define XALANXPATHEXCEPTION_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN class XalanNode; class XALAN_XPATH_EXPORT XalanXPathException : public XSLException { public: /** * Construct an XPath exeption object. * * @param theMessage The message explaining the problem. * @param theManager The MemoryManager instance to use. */ XalanXPathException( const XalanDOMString& theMessage, MemoryManager& theManager); /** * Construct an XPath exeption object. * * @param theMessage The message explaining the problem. * @param theManager The MemoryManager instance to use. * @param theLocator The locator instance for error reporting, if any. */ XalanXPathException( const XalanDOMString& theMessage, MemoryManager& theManager, const Locator* theLocator); XalanXPathException(const XalanXPathException& other); virtual ~XalanXPathException(); virtual const XalanDOMChar* getType() const; private: /** * Construct an XPath exeption object. * */ explicit XalanXPathException(MemoryManager& theManager); private: }; XALAN_CPP_NAMESPACE_END #endif // XALANXPATHEXCEPTION_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XStringAdapter.cpp0000664000175000000640000000515311731656102020665 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XStringAdapter.hpp" XALAN_CPP_NAMESPACE_BEGIN XStringAdapter::XStringAdapter( const XObjectPtr& val, MemoryManager& theManager, XPathExecutionContext& theExecutionContext) : XStringBase(theManager, theExecutionContext), m_value(val) { } XStringAdapter::XStringAdapter( const XStringAdapter& source, MemoryManager& theManager) : XStringBase(source, theManager), m_value(source.m_value) { } XStringAdapter::~XStringAdapter() { } const XalanDOMString& XStringAdapter::str(XPathExecutionContext& executionContext) const { return m_value->str(executionContext); } const XalanDOMString& XStringAdapter::str() const { return m_value->str(); } void XStringAdapter::str( XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const { m_value->str( executionContext, formatterListener, function); } void XStringAdapter::str( FormatterListener& formatterListener, MemberFunctionPtr function) const { m_value->str( formatterListener, function); } void XStringAdapter::str( XPathExecutionContext& executionContext, XalanDOMString& theBuffer) const { m_value->str( executionContext, theBuffer); } void XStringAdapter::str(XalanDOMString& theBuffer) const { m_value->str(theBuffer); } XStringAdapter::eObjectType XStringAdapter::getRealType() const { return eTypeStringAdapter; } double XStringAdapter::stringLength(XPathExecutionContext& executionContext) const { return m_value->stringLength(executionContext); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XTokenStringAdapterAllocator.cpp0000664000175000000640000000332111731656102023522 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XTokenStringAdapterAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XTokenStringAdapterAllocator::XTokenStringAdapterAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XTokenStringAdapterAllocator::~XTokenStringAdapterAllocator() { } XTokenStringAdapterAllocator::object_type* XTokenStringAdapterAllocator::create(const XToken& theXToken) { object_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); object_type* const theResult = new(theBlock) object_type(theXToken, m_allocator.getMemoryManager()); m_allocator.commitAllocation(theBlock); return theResult; } bool XTokenStringAdapterAllocator::destroy(object_type* theString) { return m_allocator.destroyObject(theString); } void XTokenStringAdapterAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XStringAdapterAllocator.hpp0000664000175000000640000000616311731656102022535 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XSTRINGADAPTERALLOCATOR_INCLUDE_GUARD_1357924680) #define XSTRINGADAPTERALLOCATOR_INCLUDE_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XStringAdapterAllocator { public: typedef XStringAdapter string_type; typedef ReusableArenaAllocator ArenaAllocatorType; typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XStringAdapterAllocator( MemoryManager& theManager, size_type theBlockCount); ~XStringAdapterAllocator(); /** * Create an XString object from a string. * * @param theXObject The source XObject * * @return a pointer to string */ string_type* createString( const XObjectPtr& theXObject, XPathExecutionContext& theExecutionContext); /** * Delete an XStringAdapter object from allocator. */ bool destroy(string_type* theString); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const string_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all XStringAdapter objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XStringAdapterAllocator(const XStringAdapterAllocator&); XStringAdapterAllocator& operator=(const XStringAdapterAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XSTRINGADAPTERALLOCATOR_INCLUDE_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XPathFunctionTable.hpp0000664000175000000640000003121211731656102021470 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XPATHFUNCTIONTABLE_HEADER_GUARD_1357924680) #define XPATHFUNCTIONTABLE_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN /** * Exception class thrown when an unknown function is encountered */ class XALAN_XPATH_EXPORT XPathExceptionFunctionNotAvailable : public XalanXPathException { public: typedef Function::LocatorType LocatorType; XPathExceptionFunctionNotAvailable( const XalanDOMString& theFunctionName, XalanDOMString& theResult, const Locator* theLocator); XPathExceptionFunctionNotAvailable(const XPathExceptionFunctionNotAvailable& other); ~XPathExceptionFunctionNotAvailable(); }; /** * Exception class thrown when an installFunction() is called with a * function name that is not supported. */ class XALAN_XPATH_EXPORT XPathExceptionFunctionNotSupported : public XalanXPathException { public: XPathExceptionFunctionNotSupported( const XalanDOMChar* theFunctionName, XalanDOMString& theResult, const Locator* theLocator); XPathExceptionFunctionNotSupported(const XPathExceptionFunctionNotSupported& other); ~XPathExceptionFunctionNotSupported(); }; /** * Class defines a table of functions that can be called in XPath expresions. */ class XALAN_XPATH_EXPORT XPathFunctionTable { public: enum { InvalidFunctionNumberID = -1, TableSize = 36 }; typedef size_t SizeType; typedef XalanDOMString::size_type StringSizeType; typedef DeleteFunctor DeleteFunctorType; /** * Constructor. * * @param fCreateTable If true, the internal table will be created. Otherwise, CreateTable() must be called. */ XPathFunctionTable(bool fCreateTable = true); ~XPathFunctionTable(); void setMemoryManager(MemoryManager& theManager) { m_memoryManager = &theManager; } /** * Set up the internal table. */ void CreateTable(); /** * Destroy the internal table. */ void DestroyTable(); /** * Retrieve the function object for a specified function name. If * the named Function is not found, an exception is thrown. * * @param theFunctionName The name of function * @param theLocator The Locator instance to use when reporting an error. * @return function named */ const Function& get( const XalanDOMString& theFunctionName, const Locator* theLocator) const { const int theFunctionID = getFunctionIndex(theFunctionName); if (theFunctionID != InvalidFunctionNumberID) { return *m_functionTable[theFunctionID]; } else { MemoryManager* const theManager = m_memoryManager; XalanDOMString theResult(*theManager); throw XPathExceptionFunctionNotAvailable( theFunctionName, theResult, theLocator); } } private: /** * Retrieve the function object for a specified function name. * * @deprecated This operator is deprecated. * @param theFunctionName name of function * @return function named */ const Function& operator[](const XalanDOMString& theFunctionName) const { const int theFunctionID = getFunctionIndex(theFunctionName); if (theFunctionID != InvalidFunctionNumberID) { return *m_functionTable[theFunctionID]; } else { MemoryManager* const theManager = m_memoryManager; XalanDOMString theResult(*theManager); throw XPathExceptionFunctionNotAvailable( theFunctionName, theResult, 0); } } public: /** * Retrieve the function object for a specified function ID number. * * @param theFunctionID ID number of the function * @return function named */ const Function& operator[](int theFunctionID) const { assert(theFunctionID >= 0 && theFunctionID < TableSize); assert(m_functionTable[theFunctionID] != 0); return *m_functionTable[theFunctionID]; } /** * Map a function ID to the corresponding name. * * @param theFunctionID The ID number of the function * @return The name of the function, or an empty string if the function doesn't exist. */ const XalanDOMString& idToName(int theFunctionID, XalanDOMString& theResult) const { if (theFunctionID >= 0 && theFunctionID < TableSize) { theResult.assign( s_functionNames[theFunctionID].m_name, s_functionNames[theFunctionID].m_size); } return theResult; } /** * Map a function name to the corresponding ID number. * * @param theName name of function * @return The ID number of function, or InvalidFunctionNumberID if the function doesn't exist. */ int nameToID(const XalanDOMString& theName) const { return getFunctionIndex(theName); } /** * Insert a named function into the function table. * * @param theFunctionName name of function * @param theFunction function object corresponding to name */ void InstallFunction( const XalanDOMString& theFunctionName, const Function& theFunction) { InstallFunction(theFunctionName.c_str(), theFunction); } /** * Remove a named function from the function table. * * @param theFunctionName name of function * @return true if the function was found and removed. */ bool UninstallFunction(const XalanDOMString& theFunctionName) { return UninstallFunction(theFunctionName.c_str()); } /** * Insert a named function into the function table. * * @param theFunctionName name of function * @param theFunction function object corresponding to name */ void InstallFunction( const XalanDOMChar* theFunctionName, const Function& theFunction); /** * Remove a named function from the function table. * * @param theFunctionName name of function * @return true if the function was found and removed. */ bool UninstallFunction(const XalanDOMChar* theFunctionName); /** * Whether a named function is in the function table. * * @param theFunctionName name of function * @return true if function is in table */ bool isInstalledFunction(const XalanDOMString& theFunctionName) const { return getFunctionIndex(theFunctionName) != InvalidFunctionNumberID ? true : false; } /** * Add a list of the names of installed functions to a vector of names. * * @param theIterator function table iterator to append names to */ template void getInstalledFunctionNames(OutputIteratorType theIterator) const { XalanDOMString theString(XalanMemMgrs::getDefaultXercesMemMgr()); for (int i = 0; i < TableSize; ++i) { if (m_functionTable[i] != 0) { theString.assign( s_functionNames[i].m_name, s_functionNames[i].m_size); *theIterator = theString; ++theIterator; } } } struct FunctionNameTableEntry { const XalanDOMChar* m_name; StringSizeType m_size; }; // These are static strings for the functions supported. // Note that the XSLT functions are also here, since it's // just easier to do it this way. // The string "id" static const XalanDOMChar s_id[]; // The string "key" static const XalanDOMChar s_key[]; // The string "not" static const XalanDOMChar s_not[]; // The string "sum" static const XalanDOMChar s_sum[]; // The string "lang" static const XalanDOMChar s_lang[]; // The string "last" static const XalanDOMChar s_last[]; // The string "name" static const XalanDOMChar s_name[]; // The string "true" static const XalanDOMChar s_true[]; // The string "count" static const XalanDOMChar s_count[]; // The string "false" static const XalanDOMChar s_false[]; // The string "floor" static const XalanDOMChar s_floor[]; // The string "round" static const XalanDOMChar s_round[]; // The string "concat" static const XalanDOMChar s_concat[]; // The string "number" static const XalanDOMChar s_number[]; // The string "string" static const XalanDOMChar s_string[]; // The string "boolean" static const XalanDOMChar s_boolean[]; // The string "ceiling" static const XalanDOMChar s_ceiling[]; // The string "current" static const XalanDOMChar s_current[]; // The string "contains" static const XalanDOMChar s_contains[]; // The string "document" static const XalanDOMChar s_document[]; // The string "position" static const XalanDOMChar s_position[]; // The string "substring" static const XalanDOMChar s_substring[]; // The string "translate" static const XalanDOMChar s_translate[]; // The string "local-name" static const XalanDOMChar s_localName[]; // The string "generate-id" static const XalanDOMChar s_generateId[]; // The string "starts-with" static const XalanDOMChar s_startsWith[]; // The string "format-number" static const XalanDOMChar s_formatNumber[]; // The string "namespace-uri" static const XalanDOMChar s_namespaceUri[]; // The string "string-length" static const XalanDOMChar s_stringLength[]; // The string "normalize-space" static const XalanDOMChar s_normalizeSpace[]; // The string "substring-after" static const XalanDOMChar s_substringAfter[]; // The string "system-property" static const XalanDOMChar s_systemProperty[]; // The string "substring-before" static const XalanDOMChar s_substringBefore[]; // The string "element-available" static const XalanDOMChar s_elementAvailable[]; // The string "function-available" static const XalanDOMChar s_functionAvailable[]; // The string "unparsed-entity-uri" static const XalanDOMChar s_unparsedEntityUri[]; // A table of function names. static const FunctionNameTableEntry s_functionNames[]; // The size of the table. static const SizeType s_functionNamesSize; private: static int getFunctionIndex(const XalanDOMString& theName) { return getFunctionIndex( theName.c_str(), theName.length()); } static int getFunctionIndex(const XalanDOMChar* theName) { return getFunctionIndex( theName, XalanDOMString::length(theName)); } static int getFunctionIndex( const XalanDOMChar* theName, StringSizeType theNameLength); MemoryManager* m_memoryManager; const Function* m_functionTable[TableSize]; const Function** const m_functionTableEnd; // The last one in the table of function names. static const FunctionNameTableEntry* const s_lastFunctionName; }; XALAN_CPP_NAMESPACE_END #endif // XPATHFUNCTIONTABLE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/FunctionSubstringBefore.cpp0000664000175000000640000000677411731656102022611 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionSubstringBefore.hpp" #include #include "XObjectFactory.hpp" XALAN_CPP_NAMESPACE_BEGIN FunctionSubstringBefore::FunctionSubstringBefore() { } FunctionSubstringBefore::~FunctionSubstringBefore() { } static const XalanDOMString theEmptyString(XalanMemMgrs::getDummyMemMgr()); inline XObjectPtr createEmptyString(XPathExecutionContext& executionContext) { return executionContext.getXObjectFactory().createStringReference(theEmptyString); } XObjectPtr FunctionSubstringBefore::execute( XPathExecutionContext& executionContext, XalanNode* /* context */, const XObjectPtr arg1, const XObjectPtr arg2, const Locator* const /* locator */) const { assert(arg1.null() == false && arg2.null() == false); const XalanDOMString& theFirstString = arg1->str(executionContext); const XalanDOMString::size_type theFirstStringLength = theFirstString.length(); if (theFirstStringLength == 0) { return createEmptyString(executionContext); } else { const XalanDOMString& theSecondString = arg2->str(executionContext); const XalanDOMString::size_type theSecondStringLength = theSecondString.length(); if (theSecondStringLength == 0) { return createEmptyString(executionContext); } else { const XalanDOMString::size_type theIndex = indexOf(theFirstString, theSecondString); if (theIndex == theFirstStringLength) { return createEmptyString(executionContext); } else { GetCachedString theResult(executionContext); XalanDOMString& theString = theResult.get(); theString.assign( theFirstString.c_str(), theIndex); // Create a string of the appropriate length... return executionContext.getXObjectFactory().createString(theResult); } } } } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionSubstringBefore* #endif FunctionSubstringBefore::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionSubstringBefore::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionTakesTwoArguments_1Param, "substring-before()"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XPathConstructionContextDefault.cpp0000664000175000000640000000756111731656102024304 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XPathConstructionContextDefault.hpp" #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include "xalanc/PlatformSupport/XalanOutputStreamPrintWriter.hpp" #include "xalanc/PlatformSupport/XalanStdOutputStream.hpp" #include "XPathParserException.hpp" XALAN_CPP_NAMESPACE_BEGIN XPathConstructionContextDefault::XPathConstructionContextDefault(MemoryManager& theManager) : XPathConstructionContext(theManager), m_stringPool(theManager), m_stringCache(theManager) { } XPathConstructionContextDefault* XPathConstructionContextDefault::create(MemoryManager& theManager) { typedef XPathConstructionContextDefault ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* theResult = new (theGuard.get()) ThisType(theManager); theGuard.release(); return theResult; } XPathConstructionContextDefault::~XPathConstructionContextDefault() { reset(); } void XPathConstructionContextDefault::reset() { m_stringCache.reset(); } const XalanDOMString& XPathConstructionContextDefault::getPooledString(const XalanDOMString& theString) { return m_stringPool.get(theString); } const XalanDOMString& XPathConstructionContextDefault::getPooledString( const XalanDOMChar* theString, XalanDOMString::size_type theLength) { return m_stringPool.get(theString, theLength); } XalanDOMString& XPathConstructionContextDefault::getCachedString() { return m_stringCache.get(); } bool XPathConstructionContextDefault::releaseCachedString(XalanDOMString& theString) { return m_stringCache.release(theString); } void XPathConstructionContextDefault::problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode) { MemoryManager& theManager = getMemoryManager(); XALAN_USING_STD(cerr) XalanStdOutputStream theStream(cerr, theManager); XalanOutputStreamPrintWriter thePrintWriter(theStream); defaultFormat( thePrintWriter, source, classification, msg, locator, sourceNode); if (classification == eError) { throw XPathParserException(msg, theManager, locator); } } void XPathConstructionContextDefault::problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode) { MemoryManager& theManager = getMemoryManager(); XALAN_USING_STD(cerr) XalanStdOutputStream theStream(cerr, theManager); XalanOutputStreamPrintWriter thePrintWriter(theStream); defaultFormat( thePrintWriter, source, classification, msg, sourceNode); if (classification == eError) { throw XPathParserException(msg, theManager); } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XObjectResultTreeFragProxy.cpp0000664000175000000640000000270311731656102023203 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XObjectResultTreeFragProxy.hpp" XALAN_CPP_NAMESPACE_BEGIN XObjectResultTreeFragProxy::XObjectResultTreeFragProxy( const XObject& theValue, MemoryManager& theManager, XPathExecutionContext* theExecutionContext) : XObjectResultTreeFragProxyBase(), m_proxy(theValue, theManager, theExecutionContext) { } XObjectResultTreeFragProxy::~XObjectResultTreeFragProxy() { } XalanNode* XObjectResultTreeFragProxy::getFirstChild() const { return &m_proxy; } XalanNode* XObjectResultTreeFragProxy::getLastChild() const { return &m_proxy; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XPathFactory.hpp0000664000175000000640000001227411731656102020351 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XPATHFACTORY_HEADER_GUARD_1357924680) #define XPATHFACTORY_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XPath; class XALAN_XPATH_EXPORT XPathFactory { public: explicit XPathFactory(); virtual ~XPathFactory(); /** * Return an XPath to the factory. * * @param theXPath The XPath to be returned * @return true if the object belongs to the factory, false if not. */ bool returnObject(const XPath* theXPath) { return doReturnObject(theXPath); } /** * Reset the instance. This invalidates all existing instances created * with this XPathFactory. */ virtual void reset() = 0; /** * Create an XPath. The XPath instance is owned by the factory, and should * not be deleted. The factory will manage the lifetime. * */ virtual XPath* create() = 0; /** * * A functor for use with stl algorithms. * */ #if defined(XALAN_NO_STD_NAMESPACE) struct DeleteXPathFunctor : public unary_function #else struct DeleteXPathFunctor : public std::unary_function #endif { public: DeleteXPathFunctor( XPathFactory& theFactoryInstance, bool fInReset = false) : m_factoryInstance(theFactoryInstance), m_fInReset(fInReset) { } result_type operator()(argument_type theXPath) const { if (m_fInReset == true) { return m_factoryInstance.doReturnObject(theXPath, true); } else { return m_factoryInstance.returnObject(theXPath); } } private: XPathFactory& m_factoryInstance; const bool m_fInReset; }; friend struct DeleteXPathFunctor; protected: virtual bool doReturnObject( const XPath* theXPath, bool fInReset = false) = 0; }; /** * Manages the lifetime of an XPath instance. */ class XPathGuard { public: /** * Construct an XPathGuard instance from a factory object and an XPath. * * @param theFactory object that manages lifetime of XPaths * @param theXPath pointer to XPath managed */ XPathGuard( XPathFactory& theFactory, const XPath* theXPath) : m_factory(&theFactory), m_object(theXPath) { } // Note that copy construction transfers ownership, just // as std::auto_ptr. XPathGuard(XPathGuard& theRHS) { // Release the current object... release(); // Copy the factory and object pointers... m_factory = theRHS.m_factory; m_object = theRHS.m_object; // The source object no longer points to // the object... theRHS.m_factory = 0; theRHS.m_object = 0; } ~XPathGuard() { reset(); } /** * Retrieve the object pointer (must not be null) * * @return pointer to XPath */ const XPath* operator->() const { assert(m_object != 0); return m_object; } /** * Retrieve the object pointer (may be null) * * @return pointer to XPath */ const XPath* get() const { return m_object; } /** * Return the referenced object to the factory and set pointers to null. */ void reset() { if (m_object != 0) { assert(m_factory != 0); m_factory->returnObject(m_object); m_object = 0; } m_factory = 0; } /** * Transfers ownership of XPath to caller * * @return pointer to XPath */ const XPath* release() { const XPath* const theTemp = m_object; m_object = 0; return theTemp; } private: XPathGuard& operator=(const XPathGuard&); bool operator==(const XPathGuard&) const; // Data members... XPathFactory* m_factory; const XPath* m_object; }; XALAN_CPP_NAMESPACE_END #endif // XPATHFACTORY_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/FunctionNormalizeSpace.cpp0000664000175000000640000001501511731656102022406 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionNormalizeSpace.hpp" #include "xalanc/XalanDOM/XalanDOMString.hpp" #include #include #include "XObjectFactory.hpp" XALAN_CPP_NAMESPACE_BEGIN FunctionNormalizeSpace::FunctionNormalizeSpace() : Function() { } FunctionNormalizeSpace::~FunctionNormalizeSpace() { } static const XalanDOMString s_emptyString(XalanMemMgrs::getDummyMemMgr()); XObjectPtr FunctionNormalizeSpace::execute( XPathExecutionContext& executionContext, XalanNode* context, const Locator* locator) const { if (context == 0) { const GetCachedString theGuard(executionContext); XalanDOMString& theResult = theGuard.get(); executionContext.problem( XPathExecutionContext::eXPath, XPathExecutionContext::eError, XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionRequiresNonNullContextNode_1Param, "normalize-space()"), locator, context); // Dummy return value... return XObjectPtr(0); } else { // The XPath standard says that if there are no arguments, // the default is to turn the context node into a string value. // DOMServices::getNodeData() will give us the data. // Get a cached string... const GetCachedString theData(executionContext); XalanDOMString& theString = theData.get(); DOMServices::getNodeData(*context, executionContext, theString); return normalize(executionContext, theString); } } XObjectPtr FunctionNormalizeSpace::execute( XPathExecutionContext& executionContext, XalanNode* /* context */, const XObjectPtr arg1, const Locator* const /* locator */) const { assert(arg1.null() == false); return normalize(executionContext, arg1); } XObjectPtr FunctionNormalizeSpace::normalize( XPathExecutionContext& executionContext, const XalanDOMString& theString, GetCachedString& theResult) const { const XalanDOMString::size_type theStringLength = theString.length(); XalanDOMString& theNewString = theResult.get(); assert(theNewString.length() == 0); // The result string can only be as large as the source string, so // just reserve the space now. theNewString.reserve(theStringLength); enum eLastCharState { eNonSpace, eSpace, eSpaceAppended }; eLastCharState theState = eSpace; // OK, strip out any multiple spaces... for (XalanDOMString::const_iterator i = theString.begin(); i != theString.end(); ++i) { const XalanDOMChar theCurrentChar = *i; if (isXMLWhitespace(theCurrentChar) == false) { theNewString.push_back(theCurrentChar); theState = eNonSpace; } else if (theState == eNonSpace) { theNewString.push_back(XalanDOMChar(XalanUnicode::charSpace)); theState = eSpaceAppended; } } if (theNewString.empty() == true) { return executionContext.getXObjectFactory().createStringReference(s_emptyString); } else { // We may have a space character at end, since we don't look ahead, // so removed it now... if (theState == eSpaceAppended) { theNewString.erase(theNewString.end() - 1); } return executionContext.getXObjectFactory().createString(theResult); } } XObjectPtr FunctionNormalizeSpace::normalize( XPathExecutionContext& executionContext, const XObjectPtr& theArg) const { const XalanDOMString& theString = theArg->str(executionContext); if (needsNormalization(theString) == false) { if (theArg->getType() == XObject::eTypeString) { return theArg; } else { return executionContext.getXObjectFactory().createStringAdapter(theArg, executionContext); } } else { return normalize(executionContext, theString); } } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionNormalizeSpace* #endif FunctionNormalizeSpace::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionNormalizeSpace::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionTakesZeroOrOneArg_1Param, "normalize-space()"); } bool FunctionNormalizeSpace::needsNormalization(const XalanDOMString& theString) const { const XalanDOMString::size_type theStringLength = theString.length(); bool fNormalize = false; bool fPreviousIsSpace = false; // OK, search for multiple spaces, or whitespace that is not the // space character... for (XalanDOMString::size_type i = 0; i < theStringLength && fNormalize == false; ++i) { const XalanDOMChar theCurrentChar = theString[i]; if (isXMLWhitespace(theCurrentChar) == false) { fPreviousIsSpace = false; } else { if (i == 0 || i == theStringLength - 1 || theCurrentChar != XalanDOMChar(XalanUnicode::charSpace) || fPreviousIsSpace == true) { fNormalize = true; } else { fPreviousIsSpace = true; } } } return fNormalize; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/FunctionConcat.hpp0000664000175000000640000000531311731656102020706 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONCONCAT_HEADER_GUARD_1357924680) #define FUNCTIONCONCAT_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file... #include XALAN_CPP_NAMESPACE_BEGIN /** * XPath implementation of "concat" function. */ class XALAN_XPATH_EXPORT FunctionConcat : public Function { public: typedef Function ParentType; FunctionConcat(); virtual ~FunctionConcat(); // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const XObjectPtr arg2, const Locator* locator) const; XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const XObjectPtr arg2, const XObjectPtr arg3, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionConcat* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: // Not implemented... FunctionConcat& operator=(const FunctionConcat&); bool operator==(const FunctionConcat&) const; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONCONCAT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XalanQNameByValue.hpp0000664000175000000640000002242211731656102021246 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANQNAMEBYVALUE_HEADER_GUARD_1357924680) #define XALANQNAMEBYVALUE_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file... #include XALAN_DECLARE_XERCES_CLASS(Locator) XALAN_CPP_NAMESPACE_BEGIN class DOMSupport; class ProblemListenerBase; class XALAN_XPATH_EXPORT XalanQNameByValue : public XalanQName { public: typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator LocatorType; /** * Construct an empty XalanQNameByValue. */ explicit XalanQNameByValue(MemoryManager& theManager); MemoryManager& getMemoryManager() { return m_namespace.getMemoryManager(); } /** * Copy constructor. * * @param theSource The source of the copy. */ XalanQNameByValue( const XalanQNameByValue& theSource, MemoryManager& theManager); /** * Construct an instance from another XalanQName. * * @param theSource The source of the copy. */ explicit XalanQNameByValue( const XalanQName& theSource, MemoryManager& theManager); /** * Construct a XalanQNameByValue, with the supplied namespace and local part. * * @param theNamespace namespace string * @param theLocalPart local part string */ XalanQNameByValue( const XalanDOMString& theNamespace, const XalanDOMString& theLocalPart, MemoryManager& theManager); static XalanQNameByValue* create( const XalanDOMString& theNamespace, const XalanDOMString& theLocalPart, MemoryManager& theManager); /** * Construct a XalanQNameByValue from a string, resolving the prefix using the given * namespace vector stack. * * @param qname QName string * @param namespaces namespace vector stack to use * @param locator The Locator instance for error reporting, if any * @param fUseDefault If true, then elements with no prefix will have the default namespace URI, if there is one. */ XalanQNameByValue( const XalanDOMString& qname, const NamespacesStackType& namespaces, MemoryManager& theManager, const Locator* locator = 0, bool fUseDefault = false); /** * Construct a XalanQNameByValue from a string, resolving the prefix using the given * namespace vector stack. * * @param qname QName string * @param namespaces namespace vector stack to use * @param locator The Locator instance for error reporting, if any * @param fUseDefault If true, then elements with no prefix will have the default namespace URI, if there is one. */ XalanQNameByValue( const XalanDOMChar* qname, const NamespacesStackType& namespaces, MemoryManager& theManager, const Locator* locator = 0, bool fUseDefault = false); /** * Construct a XalanQNameByValue from a string, resolving the prefix using the given * prefix resolver. The default namespace is not resolved. * * @param qname QName string * @param theResolver prefix resolver to use * @param locator The Locator instance for error reporting, if any */ XalanQNameByValue( const XalanDOMString& qname, MemoryManager& theManager, const PrefixResolver* theResolver = 0, const Locator* locator = 0); virtual ~XalanQNameByValue(); /** * Retrieve the local part of qualified name. * * @return local part string */ virtual const XalanDOMString& getLocalPart() const; /** * Set the local part of qualified name. * * @param theLocalPart local part string */ void setLocalPart(const XalanDOMString& theLocalPart) { m_localpart = theLocalPart; } /** * Retrieve the namespace of qualified name. * * @return namespace string */ virtual const XalanDOMString& getNamespace() const; /** * Set the Namespace URI of qualified name. * * @param theLocalPart local part string */ void setNamespace(const XalanDOMString& theNamespace) { m_namespace = theNamespace; } /** * Set the local part and namespace URI of a XalanQNameByValue from * a string, resolving the prefix using the given namespace vector * stack. * * @param qname QName string * @param namespaces namespace vector stack to use * @param locator The Locator instance for error reporting, if any * @param fUseDefault If true, then elements with no prefix will have the default namespace URI, if there is one. */ void set( const XalanDOMString& qname, const NamespacesStackType& namespaces, const Locator* locator = 0, bool fUseDefault = false); /** * Set the local part and namespace URI of a XalanQNameByValue from * a string, resolving the prefix using the given namespace vector * stack. * * @param qname QName string * @param namespaces namespace vector stack to use * @param locator The Locator instance for error reporting, if any * @param fUseDefault If true, then elements with no prefix will have the default namespace URI, if there is one. */ void set( const XalanDOMChar* qname, const NamespacesStackType& namespaces, const Locator* locator = 0, bool fUseDefault = false); /** * Set the local part and namespace URI of a XalanQNameByValue from * a string, resolving the prefix using the resolver provided. The * default namespace is not resolved. * * @param qname QName string * @param theResolver prefix resolver to use * @param locator The Locator instance for error reporting, if any */ void set( const XalanDOMString& qname, const PrefixResolver* theResolver = 0, const Locator* locator = 0); /** * Set the local part and namespace URI of a XalanQNameByValue from * a string, resolving the prefix using the resolver provided. The * default namespace is not resolved. * * @param qname QName string * @param theResolver prefix resolver to use * @param locator The Locator instance for error reporting, if any */ void set( const XalanDOMChar* qname, const PrefixResolver* theResolver = 0, const Locator* locator = 0); /** * Clear the instance. */ void clear() { m_namespace.clear(); m_localpart.clear(); } XalanQNameByValue& operator=(const XalanQNameByValue& theRHS) { m_namespace = theRHS.m_namespace; m_localpart = theRHS.m_localpart; return *this; } XalanQNameByValue& operator=(const XalanQName& theRHS) { m_namespace = theRHS.getNamespace(); m_localpart = theRHS.getLocalPart(); return *this; } private: // not implemented XalanQNameByValue(const XalanQNameByValue& theSource); void initialize( const XalanDOMChar* qname, XalanDOMString::size_type len, const NamespacesStackType& namespaces, const Locator* locator, bool fUseDefault); void resolvePrefix( const XalanDOMChar* qname, XalanDOMString::size_type theLength, const PrefixResolver* theResolver, const Locator* locator); void validate( const XalanDOMChar* qname, XalanDOMString::size_type theLength, const Locator* locator); // Data members... XalanDOMString m_namespace; XalanDOMString m_localpart; }; XALAN_USES_MEMORY_MANAGER(XalanQNameByValue) template<> struct XalanMapKeyTraits : public XalanMapKeyTraits { }; XALAN_CPP_NAMESPACE_END #endif // XALANQNAMEBYVALUE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XNumber.hpp0000664000175000000640000000552611731656102017357 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XNUMBER_HEADER_GUARD_1357924680) #define XNUMBER_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XNumber : public XNumberBase { public: /** * Create an XNumber from a number. * * @param val numeric value to use */ XNumber( double val, MemoryManager& theMemoryManager); XNumber( const XNumber& source, MemoryManager& theMemoryManager); virtual ~XNumber(); // These methods are inherited from XObject ... virtual double num(XPathExecutionContext& executionContext) const; virtual double num() const; virtual const XalanDOMString& str(XPathExecutionContext& executionContext) const; virtual const XalanDOMString& str() const; virtual void str( XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( XPathExecutionContext& executionContext, XalanDOMString& theBuffer) const; virtual void str(XalanDOMString& theBuffer) const; virtual double stringLength(XPathExecutionContext& executionContext) const; // These methods are new to XNumber... /** * Change the value of an XNumber * * @param theValue The new value. */ void set(double theValue); private: // not implemented XNumber(); XNumber(const XNumber&); // Value of the number being represented. double m_value; mutable XalanDOMString m_cachedStringValue; }; XALAN_CPP_NAMESPACE_END #endif // XNUMBER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XStringBase.cpp0000664000175000000640000000647611731656102020170 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XStringBase.hpp" #include #include #include #include "XObjectTypeCallback.hpp" #include "XPathExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN XStringBase::XStringBase(MemoryManager& theMemoryManager) : XObject(eTypeString, theMemoryManager), m_cachedNumberValue(0.0), m_resultTreeFrag(*this, theMemoryManager, 0) { } XStringBase::XStringBase( MemoryManager& theMemoryManager, XPathExecutionContext& theExecutionContext) : XObject(eTypeString, theMemoryManager), m_cachedNumberValue(0.0), m_resultTreeFrag(*this, theMemoryManager, &theExecutionContext) { } XStringBase::XStringBase( const XStringBase& source, MemoryManager& theMemoryManager) : XObject(source, theMemoryManager), m_cachedNumberValue(source.m_cachedNumberValue), m_resultTreeFrag( *this, theMemoryManager, source.m_resultTreeFrag.getExecutionContext()) { } XStringBase::~XStringBase() { } const XalanDOMString& XStringBase::getTypeString() const { return s_stringString; } double XStringBase::num(XPathExecutionContext& executionContext) const { if (m_cachedNumberValue == 0.0) { m_cachedNumberValue = DoubleSupport::toDouble( str(executionContext), getMemoryManager()); } return m_cachedNumberValue; } bool XStringBase::boolean(XPathExecutionContext& executionContext) const { return !str(executionContext).empty(); } const XalanDocumentFragment& XStringBase::rtree() const { return m_resultTreeFrag; } void XStringBase::ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject) { theCallbackObject.String( *this, str(theCallbackObject.getExecutionContext())); } void XStringBase::ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject) const { theCallbackObject.String( *this, str(theCallbackObject.getExecutionContext())); } const XalanDOMString& XStringBase::str() const { MemoryManager& theMemoryManager = XalanMemoryManager::getExceptionMemoryManager(getMemoryManager()); XalanDOMString theBuffer(theMemoryManager); throw XObjectInvalidConversionException( theMemoryManager, getTypeString(), s_numberString, theBuffer); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XNodeSetBase.hpp0000664000175000000640000000714511731656102020262 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XNODESETBASE_HEADER_GUARD_1357924680) #define XNODESETBASE_HEADER_GUARD_1357924680 // Base include file. Must be first. #include // Base class header file. #include #include #include XALAN_CPP_NAMESPACE_BEGIN /** * Class to hold XPath return types. */ class XALAN_XPATH_EXPORT XNodeSetBase : public XObject { public: typedef NodeRefListBase::size_type size_type; typedef XObject ParentType; virtual ~XNodeSetBase(); // These methods are inherited from XObject ... virtual const XalanDOMString& getTypeString() const; virtual double num(XPathExecutionContext& executionContext) const; using ParentType::num; virtual bool boolean(XPathExecutionContext& executionContext) const; virtual const XalanDOMString& str(XPathExecutionContext& executionContext) const; virtual const XalanDOMString& str() const; virtual void str( XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( XPathExecutionContext& executionContext, XalanDOMString& theBuffer) const; virtual void str(XalanDOMString& theBuffer) const; virtual double stringLength(XPathExecutionContext& executionContext) const; virtual const XalanDocumentFragment& rtree() const; virtual const NodeRefListBase& nodeset() const = 0; virtual void ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject); virtual void ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject) const; virtual XalanNode* item(size_type index) const = 0; virtual size_type getLength() const = 0; protected: /** * Create an XNodeSetBase */ XNodeSetBase(MemoryManager& theMemoryManager); /** * Create an XNodeSetBase from another. * * @param source object to copy */ XNodeSetBase( const XNodeSetBase& source, MemoryManager& theMemoryManager); void clearCachedValues(); private: // Not implemented... XNodeSetBase(); XNodeSetBase(const XNodeSetBase&); XNodeSetBase& operator=(const XNodeSetBase&); // Data members... XNodeSetResultTreeFragProxy m_proxy; mutable XalanDOMString m_cachedStringValue; mutable double m_cachedNumberValue; }; XALAN_CPP_NAMESPACE_END #endif // XNODESETBASE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XPathEnvSupport.cpp0000664000175000000640000000172011731656102021054 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XPathEnvSupport.hpp" XALAN_CPP_NAMESPACE_BEGIN XPathEnvSupport::XPathEnvSupport() { } XPathEnvSupport::~XPathEnvSupport() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XPathAllocator.hpp0000664000175000000640000000557711731656102020672 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XPATHALLOCATOR_INCLUDE_GUARD_135792455) #define XPATHALLOCATOR_INCLUDE_GUARD_135792455 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XPathAllocator { public: typedef XPath object_type; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XPathAllocator(MemoryManager& theManager, size_type theBlockCount); ~XPathAllocator(); /** * Create an XPath object using the allocator. * * @return a pointer to an XPath */ object_type* create(); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const object_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all XPath objects allocated. */ void reset(); /** * Get the number of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of blocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XPathAllocator(const XPathAllocator&); XPathAllocator& operator=(const XPathAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XNUMBERALLOCATOR_INCLUDE_GUARD_135792455 xalan-c-1.11/c/src/xalanc/XPath/XStringCached.hpp0000664000175000000640000000525011731656102020457 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XSTRINGCACHED_HEADER_GUARD_1357924680) #define XSTRINGCACHED_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file. #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XStringCached : public XStringBase { public: typedef XStringBase ParentType; /** * Create a string XObject from a cached string. * * @param theValue value used to create object */ XStringCached( GetCachedString& val, MemoryManager& theManager); XStringCached( const XStringCached& source, MemoryManager& theManager); virtual ~XStringCached(); // These methods are inherited from XObject ... virtual const XalanDOMString& str(XPathExecutionContext& executionContext) const; virtual const XalanDOMString& str() const; virtual void str( XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( XPathExecutionContext& executionContext, XalanDOMString& theBuffer) const; virtual void str(XalanDOMString& theBuffer) const; virtual double stringLength(XPathExecutionContext& executionContext) const; protected: virtual eObjectType getRealType() const; private: //Not implemented XStringCached(const XStringCached& source); XStringCached(); const GetCachedString m_value; }; XALAN_CPP_NAMESPACE_END #endif // XSTRINGCACHED_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/ElementPrefixResolverProxy.hpp0000664000175000000640000000556411731656102023334 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(ELEMENTPREFIXRESOLVERPROXY_HEADER_GUARD_1357924680) #define ELEMENTPREFIXRESOLVERPROXY_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include // Base class header file... #include XALAN_CPP_NAMESPACE_BEGIN class DOMSupport; class XPathEnvSupport; class XalanElement; class XALAN_XPATH_EXPORT ElementPrefixResolverProxy : public PrefixResolver { public: /** * Construct an instance of an element prefix resolver proxy. * * @param namespaceContext context object for namespace resolution * @param envSupport XPath environment support class instance * @param domSupport DOMSupport class instance * * @deprecated */ ElementPrefixResolverProxy( const XalanElement* namespaceContext, const XPathEnvSupport& envSupport, const DOMSupport& domSupport, MemoryManager& theManager XALAN_DEFAULT_MEMMGR); /** * Construct an instance of an element prefix resolver proxy. * * @param namespaceContext context object for namespace resolution * @param envSupport XPath environment support class instance * */ ElementPrefixResolverProxy( const XalanElement* namespaceContext, MemoryManager& theManager XALAN_DEFAULT_MEMMGR, const XPathEnvSupport* envSupport = 0); virtual ~ElementPrefixResolverProxy(); // These methods are inherited from PrefixResolver ... virtual const XalanDOMString* getNamespaceForPrefix(const XalanDOMString& prefix) const; virtual const XalanDOMString& getURI() const; private: //notimplemented ElementPrefixResolverProxy(const ElementPrefixResolverProxy&); const XalanElement* const m_namespaceContext; const XPathEnvSupport* const m_envSupport; mutable XalanDOMString m_uri; }; XALAN_CPP_NAMESPACE_END #endif // ELEMENTPREFIXRESOLVERPROXY_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XTokenStringAdapter.cpp0000664000175000000640000000537611731656102021675 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XTokenStringAdapter.hpp" #include "XToken.hpp" XALAN_CPP_NAMESPACE_BEGIN XTokenStringAdapter::XTokenStringAdapter( const XToken& theToken, MemoryManager& theManager) : XStringBase(theManager), m_value(theToken) { } XTokenStringAdapter::XTokenStringAdapter( const XTokenStringAdapter& source, MemoryManager& theManager) : XStringBase(source, theManager), m_value(source.m_value) { } XTokenStringAdapter::~XTokenStringAdapter() { } double XTokenStringAdapter::num(XPathExecutionContext& /* executionContext */) const { return m_value.num(); } double XTokenStringAdapter::num() const { return m_value.num(); } const XalanDOMString& XTokenStringAdapter::str(XPathExecutionContext& /* executionContext */) const { return m_value.str(); } const XalanDOMString& XTokenStringAdapter::str() const { return m_value.str(); } void XTokenStringAdapter::str( XPathExecutionContext& /* executionContext */, FormatterListener& formatterListener, MemberFunctionPtr function) const { m_value.str(formatterListener, function); } void XTokenStringAdapter::str( FormatterListener& formatterListener, MemberFunctionPtr function) const { m_value.str(formatterListener, function); } void XTokenStringAdapter::str( XPathExecutionContext& /* executionContext */, XalanDOMString& theBuffer) const { theBuffer.append(m_value.str()); } void XTokenStringAdapter::str(XalanDOMString& theBuffer) const { theBuffer.append(m_value.str()); } double XTokenStringAdapter::stringLength(XPathExecutionContext& /* executionContext */) const { return m_value.stringLength(); } XTokenStringAdapter::eObjectType XTokenStringAdapter::getRealType() const { return eTypeXTokenStringAdapter; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XNodeSetNodeProxy.cpp0000664000175000000640000000457111731656102021332 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XNodeSetNodeProxy.hpp" XALAN_CPP_NAMESPACE_BEGIN XNodeSetNodeProxy::Proxy::Proxy(XalanNode* theNode) : m_node(theNode) { } XNodeSetNodeProxy::Proxy::~Proxy() { } XalanNode* XNodeSetNodeProxy::Proxy::item(size_type index) const { if (m_node == 0 || index > 0) { return 0; } else { return m_node; } } XNodeSetNodeProxy::Proxy::size_type XNodeSetNodeProxy::Proxy::getLength() const { return m_node == 0 ? 0 : 1; } XNodeSetNodeProxy::Proxy::size_type XNodeSetNodeProxy::Proxy::indexOf(const XalanNode* theNode) const { if (m_node == 0 || theNode != m_node) { return npos; } else { return 0; } } XNodeSetNodeProxy::XNodeSetNodeProxy( MemoryManager& theMemoryManager, XalanNode* theNode) : XNodeSetBase(theMemoryManager), m_proxy(theNode) { } XNodeSetNodeProxy::XNodeSetNodeProxy( const XNodeSetNodeProxy& source, MemoryManager& theMemoryManager) : XNodeSetBase(source, theMemoryManager), m_proxy(source.m_proxy) { } XNodeSetNodeProxy::~XNodeSetNodeProxy() { } XNodeSetNodeProxy::eObjectType XNodeSetNodeProxy::getRealType() const { return eTypeNodeSetNodeProxy; } const NodeRefListBase& XNodeSetNodeProxy::nodeset() const { return m_proxy; } XalanNode* XNodeSetNodeProxy::item(size_type index) const { return m_proxy.item(index); } XNodeSetNodeProxy::size_type XNodeSetNodeProxy::getLength() const { return m_proxy.getLength(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/FunctionID.cpp0000664000175000000640000001422211731656102017765 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionID.hpp" #include #include #include "XObjectFactory.hpp" XALAN_CPP_NAMESPACE_BEGIN FunctionID::FunctionID() { } FunctionID::~FunctionID() { } XObjectPtr FunctionID::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const Locator* const /* locator */) const { assert(arg1.null() == false); assert(context != 0); const GetCachedString theGuard1(executionContext); XalanDOMString& theResultString = theGuard1.get(); // Do the callback to get the data. FunctionIDXObjectTypeCallback theCallback(executionContext, theResultString); theCallback.processCallback(*arg1); // Get the context document, so we can search for nodes. const XalanDocument* const theDocContext = context->getNodeType() == XalanNode::DOCUMENT_NODE ? static_cast(context) : context->getOwnerDocument(); assert(theDocContext != 0); if (theResultString.empty() == true) { return executionContext.getXObjectFactory().createNodeSet(0); } else { StringTokenizer theTokenizer(theResultString); const GetCachedString theGuard2(executionContext); XalanDOMString& theToken = theGuard2.get(); StringTokenizer::size_type theTokenCount = theTokenizer.countTokens(); if (theTokenCount == 1) { theTokenizer.nextToken(theToken); return executionContext.getXObjectFactory().createNodeSet(theDocContext->getElementById(theToken)); } else { assert(theTokenCount != 0); typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; // This list will hold the nodes we find. BorrowReturnMutableNodeRefList theNodeList(executionContext); // Parse the result string... while(theTokenCount-- > 0) { theTokenizer.nextToken(theToken); if (theToken.empty() == false) { XalanNode* const theNode = theDocContext->getElementById(theToken); if (theNode != 0) { theNodeList->addNodeInDocOrder(theNode, executionContext); } } } return executionContext.getXObjectFactory().createNodeSet(theNodeList); } } } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionID* #endif FunctionID::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionID::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionAcceptsOneArgument_1Param, "id()"); } FunctionID::FunctionIDXObjectTypeCallback::FunctionIDXObjectTypeCallback( XPathExecutionContext& theExecutionContext, XalanDOMString& theResultString) : XObjectTypeCallback(theExecutionContext), m_resultString(theResultString), m_executionContext(theExecutionContext) { } void FunctionID::FunctionIDXObjectTypeCallback::processCallback(const XObject& theXObject) { theXObject.ProcessXObjectTypeCallback(*this); } void FunctionID::FunctionIDXObjectTypeCallback::Number( const XObject& theXObject, double /* theValue */) { m_resultString = theXObject.str(m_executionContext); } void FunctionID::FunctionIDXObjectTypeCallback::Boolean( const XObject& theXObject, bool /* theValue */) { m_resultString = theXObject.str(m_executionContext); } void FunctionID::FunctionIDXObjectTypeCallback::String( const XObject& theXObject, const XalanDOMString& /* theValue */) { m_resultString = theXObject.str(m_executionContext); } void FunctionID::FunctionIDXObjectTypeCallback::ResultTreeFragment( const XObject& theXObject, const XalanDocumentFragment& /* theValue */) { m_resultString = theXObject.str(m_executionContext); } void FunctionID::FunctionIDXObjectTypeCallback::ResultTreeFragment( const XObject& theXObject, XalanDocumentFragment& /* theValue */) { m_resultString = theXObject.str(m_executionContext); } void FunctionID::FunctionIDXObjectTypeCallback::NodeSet( const XObject& /* theXObject */, const NodeRefListBase& theValue) { const NodeRefListBase::size_type theNodeCount = theValue.getLength(); for (NodeRefListBase::size_type i = 0 ; i < theNodeCount; i++) { DOMServices::getNodeData(*theValue.item(i), m_executionContext, m_resultString); m_resultString.append(1, XalanUnicode::charSpace); } } void FunctionID::FunctionIDXObjectTypeCallback::Unknown( const XObject& /* theObject */, const XalanDOMString& /* theName */) { } void FunctionID::FunctionIDXObjectTypeCallback::Null(const XObject& /* theObject */) { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XNodeSetNodeProxyAllocator.cpp0000664000175000000640000000327711731656102023175 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XNodeSetNodeProxyAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XNodeSetNodeProxyAllocator::XNodeSetNodeProxyAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XNodeSetNodeProxyAllocator::~XNodeSetNodeProxyAllocator() { } XNodeSetNodeProxyAllocator::nodeset_type* XNodeSetNodeProxyAllocator::create(XalanNode* value) { nodeset_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); nodeset_type* const theResult = new(theBlock) nodeset_type( m_allocator.getMemoryManager(), value); m_allocator.commitAllocation(theBlock); return theResult; } bool XNodeSetNodeProxyAllocator::destroy(nodeset_type* theNodeSet) { return m_allocator.destroyObject(theNodeSet); } void XNodeSetNodeProxyAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XStringAllocator.hpp0000664000175000000640000000703611731656102021234 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XSTRINGALLOCATOR_INCLUDE_GUARD_1357924680) #define XSTRINGALLOCATOR_INCLUDE_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XStringAllocator { public: typedef XString string_type; typedef ReusableArenaAllocator ArenaAllocatorType; typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XStringAllocator(MemoryManager& theManager, size_type theBlockCount); ~XStringAllocator(); /** * Create an XString object from a string. * * @param theString source string * * @return a pointer to string */ string_type* createString(const XalanDOMString& theString); /** * Create an XString object from a null-terminated array of characters. * * @param theString a pointer to the array * * @return a pointer to string */ string_type* createString(const XalanDOMChar* theString); /** * Create an XString object from an array of characters. * * @param theString a pointer to the array * @param theLength the length of the array. * * @return a pointer to string */ string_type* createString( const XalanDOMChar* theString, XalanSize_t theLength); /** * Delete an XString object from allocator. */ bool destroy(string_type* theString); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const string_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all XString objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XStringAllocator(const XStringAllocator&); XStringAllocator& operator=(const XStringAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XSTRINGALLOCATOR_INCLUDE_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XPathConstructionContext.cpp0000664000175000000640000000212011731656102022761 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XPathConstructionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN XPathConstructionContext::XPathConstructionContext(MemoryManager& theManager): m_memoryManager(theManager) { } XPathConstructionContext::~XPathConstructionContext() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XToken.cpp0000664000175000000640000001222311731656102017172 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XToken.hpp" #include #include "XObjectTypeCallback.hpp" XALAN_CPP_NAMESPACE_BEGIN static const XalanDOMString s_emptyString(XalanMemMgrs::getDummyMemMgr()); XToken::XToken(MemoryManager& theMemoryManager) : XObject(eTypeString, theMemoryManager), m_stringValue(&s_emptyString), m_numberValue(DoubleSupport::getNaN()), m_isString(true) { } XToken::XToken( const XalanDOMString& theString, double theNumber, MemoryManager& theMemoryManager) : XObject(eTypeString, theMemoryManager), m_stringValue(&theString), m_numberValue(theNumber), m_isString(true) { } XToken::XToken( double theNumber, const XalanDOMString& theString, MemoryManager& theMemoryManager) : XObject(eTypeString, theMemoryManager), m_stringValue(&theString), m_numberValue(theNumber), m_isString(false) { } XToken::XToken( const XToken& theSource, MemoryManager& theMemoryManager) : XObject(theSource, theMemoryManager), m_stringValue(theSource.m_stringValue), m_numberValue(theSource.m_numberValue), m_isString(theSource.m_isString) { assert(m_stringValue != 0); } XToken::XToken(const XToken& theSource) : XObject(theSource), m_stringValue(theSource.m_stringValue), m_numberValue(theSource.m_numberValue), m_isString(theSource.m_isString) { assert(m_stringValue != 0); } XToken::~XToken() { assert(m_stringValue != 0); } const XalanDOMString& XToken::getTypeString() const { assert(m_stringValue != 0); return s_stringString; } double XToken::num(XPathExecutionContext& /* executionContext */) const { assert(m_stringValue != 0); return m_numberValue; } bool XToken::boolean(XPathExecutionContext& /* executionContext */) const { assert(m_stringValue != 0); return m_isString == true ? XObject::boolean(*m_stringValue) : XObject::boolean(m_numberValue); } const XalanDOMString& XToken::str(XPathExecutionContext& /* executionContext */) const { return *m_stringValue; } const XalanDOMString& XToken::str() const { return *m_stringValue; } void XToken::str( XPathExecutionContext& /* executionContext */, FormatterListener& formatterListener, MemberFunctionPtr function) const { assert(m_stringValue != 0); string(*m_stringValue, formatterListener, function); } void XToken::str( FormatterListener& formatterListener, MemberFunctionPtr function) const { assert(m_stringValue != 0); string(*m_stringValue, formatterListener, function); } void XToken::str(XalanDOMString& theBuffer) const { assert(m_stringValue != 0); theBuffer.append(*m_stringValue); } void XToken::str( XPathExecutionContext& /* executionContext */, XalanDOMString& theBuffer) const { assert(m_stringValue != 0); theBuffer.append(*m_stringValue); } double XToken::stringLength(XPathExecutionContext& /* executionContext */) const { assert(m_stringValue != 0); return static_cast(m_stringValue->length()); } void XToken::ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject) { assert(m_stringValue != 0); if (m_isString == true) { theCallbackObject.String(*this, *m_stringValue); } else { theCallbackObject.Number(*this, m_numberValue); } } void XToken::ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject) const { assert(m_stringValue != 0); if (m_isString == true) { theCallbackObject.String(*this, *m_stringValue); } else { theCallbackObject.Number(*this, m_numberValue); } } void XToken::set( const XalanDOMString& theString, double theNumber) { m_stringValue = &theString; m_numberValue = theNumber; m_isString = true; } void XToken::set( double theNumber, const XalanDOMString& theString) { m_numberValue = theNumber; m_stringValue = &theString; m_isString = false; } void XToken::referenced() { } void XToken::dereferenced() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/FunctionTranslate.hpp0000664000175000000640000000425311731656102021436 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONTRANSLATE_HEADER_GUARD_1357924680) #define FUNCTIONTRANSLATE_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file... #include XALAN_CPP_NAMESPACE_BEGIN /** * XPath implementation of "translate" function. */ class XALAN_XPATH_EXPORT FunctionTranslate : public Function { public: typedef Function ParentType; FunctionTranslate(); virtual ~FunctionTranslate(); // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const XObjectPtr arg2, const XObjectPtr arg3, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionTranslate* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: // Not implemented... FunctionTranslate& operator=(const FunctionTranslate&); bool operator==(const FunctionTranslate&) const; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONTRANSLATE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XPathExpression.hpp0000664000175000000640000011444311731656102021102 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XPATHEXPRESSION_HEADER_GUARD_1357924680) #define XPATHEXPRESSION_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN XALAN_USING_XERCES(MemoryManager) class XALAN_XPATH_EXPORT XPathExpression { public: typedef XALAN_STD_QUALIFIER ostream OstreamType; typedef XalanVector OpCodeMapType; typedef XalanVector TokenQueueType; typedef OpCodeMapType::value_type OpCodeMapValueType; typedef OpCodeMapValueType OpCodeMapSizeType; typedef XalanVector OpCodeMapValueVectorType; typedef XalanVector NumberLiteralValueVectorType; #define XALAN_XPATH_EXPRESSION_USE_ITERATORS #if defined(XALAN_XPATH_EXPRESSION_USE_ITERATORS) typedef OpCodeMapType::const_iterator OpCodeMapPositionType; #else typedef OpCodeMapSizeType OpCodeMapPositionType; #endif typedef OpCodeMapType::difference_type OpCodeMapDifferenceType; typedef TokenQueueType::value_type TokenQueueValueType; typedef int TokenQueueSizeType; typedef TokenQueueSizeType TokenQueuePositionType; /** * List of operations codes. * * Code for the descriptions of the operations codes: * [UPPER CASE] indicates a literal value, * [lower case] is a description of a value, * ([length] always indicates the length of the operation, * including the operations code and the length integer.) * {UPPER CASE} indicates the given production, * {description} is the description of a new production, * (For instance, {boolean expression} means some expression * that should be resolved to a boolean.) * * means that it occurs zero or more times, * + means that it occurs one or more times, * ? means that it is optional. * * returns: indicates what the production should return. */ enum eOpCodes { /** * [ELEMWILDCARD] * Means ELEMWILDCARD ("*"), used instead * of string index in some places. */ eELEMWILDCARD = -3, /** * [EMPTY] * Empty slot to indicate NULL. */ eEMPTY = -2, /** * [ENDOP] * Some operators may like to have a terminator. */ eENDOP = -1, /** * [OP_XPATH] * [length] * {expression} * * returns: * XNodeSet * XNumber * XString * XBoolean * XRTree * XObject */ eOP_XPATH = 1, /** * [OP_OR] * [length] * {boolean expression} * {boolean expression} * * returns: * XBoolean */ eOP_OR = 2, /** * [OP_AND] * [length] * {boolean expression} * {boolean expression} * * returns: * XBoolean */ eOP_AND = 3, /** * [OP_NOTEQUALS] * [length] * {expression} * {expression} * * returns: * XBoolean */ eOP_NOTEQUALS = 4, /** * [OP_EQUALS] * [length] * {expression} * {expression} * * returns: * XBoolean */ eOP_EQUALS = 5, /** * [OP_LTE] (less-than-or-equals) * [length] * {number expression} * {number expression} * * returns: * XBoolean */ eOP_LTE = 6, /** * [OP_LT] (less-than) * [length] * {number expression} * {number expression} * * returns: * XBoolean */ eOP_LT = 7, /** * [OP_GTE] (greater-than-or-equals) * [length] * {number expression} * {number expression} * * returns: * XBoolean */ eOP_GTE = 8, /** * [OP_GT] (greater-than) * [length] * {number expression} * {number expression} * * returns: * XBoolean */ eOP_GT = 9, /** * [OP_PLUS] * [length] * {number expression} * {number expression} * * returns: * XNumber */ eOP_PLUS = 10, /** * [OP_MINUS] * [length] * {number expression} * {number expression} * * returns: * XNumber */ eOP_MINUS = 11, /** * [OP_MULT] * [length] * {number expression} * {number expression} * * returns: * XNumber */ eOP_MULT = 12, /** * [OP_DIV] * [length] * {number expression} * {number expression} * * returns: * XNumber */ eOP_DIV = 13, /** * [OP_MOD] * [length] * {number expression} * {number expression} * * returns: * XNumber */ eOP_MOD = 14, /** * [OP_NEG] * [length] * {number expression} * * returns: * XNumber */ eOP_NEG = 15, /** * [OP_BOOL] (cast operation) * [length] * {expression} * * returns: * XBoolean */ eOP_BOOL = 16, /** * [OP_UNION] * [length] * {PathExpr}+ * * returns: * XNodeSet */ eOP_UNION = 17, /** * [OP_LITERAL] * [3] * [index to token] * * returns: * XString */ eOP_LITERAL = 18, /** * [OP_VARIABLE] * [3] * [index to token] * * returns: * XString */ eOP_VARIABLE = 19, /** * [OP_GROUP] * [length] * {expression} * * returns: * XNodeSet * XNumber * XString * XBoolean * XRTree * XObject */ eOP_GROUP = 20, /** * [OP_NUMBERLIT] (Number literal.) * [3] * [index to token] * * returns: * XString */ eOP_NUMBERLIT = 21, /** * [OP_ARGUMENT] (Function argument.) * [length] * {expression} * * returns: * XNodeSet * XNumber * XString * XBoolean * XRTree * XObject */ eOP_ARGUMENT = 22, /** * [OP_EXTFUNCTION] (Extension function.) * [length] * [index to namespace token] * [index to function name token] * {OP_ARGUMENT}* * * returns: * XNodeSet * XNumber * XString * XBoolean * XRTree * XObject */ eOP_EXTFUNCTION = 23, /** * [OP_FUNCTION] * [length] * [FUNC_ID] * [arg count] * {OP_ARGUMENT}* * [ENDOP] * * returns: * XNodeSet * XNumber * XString * XBoolean * XRTree * XObject */ eOP_FUNCTION = 24, /** * [OP_LOCATIONPATH] * [length] * {FROM_stepType} * | {function}{predicate}* * [ENDOP] * * (Note that element and attribute namespaces and * names can be wildcarded '*'.) * * returns: * XNodeSet */ eOP_LOCATIONPATH = 25, /** * [OP_PREDICATE] * [length] * {expression} * [ENDOP] (For safety) * * returns: * XBoolean or XNumber */ eOP_PREDICATE = 26, /** * [NODETYPE_COMMENT] * No size or arguments. * * returns: * XBoolean */ eNODETYPE_COMMENT = 27, /** * [NODETYPE_TEXT] * No size or arguments. * * returns: * XBoolean */ eNODETYPE_TEXT = 28, /** * [NODETYPE_PI] * [index to token] * * returns: * XBoolean */ eNODETYPE_PI = 29, /** * [NODETYPE_NODE] * No size or arguments. * * returns: * XBoolean */ eNODETYPE_NODE = 30, /** * [NODENAME] * [index to ns token or EMPTY] * [index to name token] * * returns: * XBoolean */ eNODENAME = 31, /** * [NODETYPE_ROOT] * No size or arguments. * * returns: * XBoolean */ eNODETYPE_ROOT = 32, /** * [NODETYPE_ANY] * No size or arguments. * * returns: * XBoolean */ eNODETYPE_ANYELEMENT = 33, /** * [FROM_stepType] * [length, including predicates] * [length of just the step, without the predicates] * {node test} * {predicates}? * * returns: * XBoolean */ eFROM_ANCESTORS = 34, eFROM_ANCESTORS_OR_SELF = 35, eFROM_ATTRIBUTES = 36, eFROM_CHILDREN = 37, eFROM_DESCENDANTS = 38, eFROM_DESCENDANTS_OR_SELF = 39, eFROM_FOLLOWING = 40, eFROM_FOLLOWING_SIBLINGS = 41, eFROM_PARENT = 42, eFROM_PRECEDING = 43, eFROM_PRECEDING_SIBLINGS = 44, eFROM_SELF = 45, eFROM_NAMESPACE = 46, eFROM_ROOT = 47, /** * [OP_UNION] * [length] * {PathExpr}+ * * returns: * XNodeSet */ eOP_MATCHPATTERN = 48, /** * [OP_UNION] * [length] * {PathExpr}+ * * returns: * XNodeSet */ eOP_LOCATIONPATHPATTERN = 49, // For match patterns eMATCH_ATTRIBUTE = 50, eMATCH_ANY_ANCESTOR = 51, eMATCH_IMMEDIATE_ANCESTOR = 52, eMATCH_ANY_ANCESTOR_WITH_PREDICATE = 53, eMATCH_ANY_ANCESTOR_WITH_FUNCTION_CALL = 54, /** * [OP_PREDICATE_WITH_POSITION] * [length] * {expression} * [ENDOP] (For safety) * * returns: * XBoolean or XNumber */ eOP_PREDICATE_WITH_POSITION = 55, /** * These are values for intrinsic functions which * have been compiled directly into the op map. */ eOP_FUNCTION_POSITION = 56, eOP_FUNCTION_LAST = 57, eOP_FUNCTION_COUNT = 58, eOP_FUNCTION_NOT = 59, eOP_FUNCTION_TRUE = 60, eOP_FUNCTION_FALSE = 61, eOP_FUNCTION_BOOLEAN = 62, eOP_FUNCTION_NAME_0 = 63, eOP_FUNCTION_NAME_1 = 64, eOP_FUNCTION_LOCALNAME_0 = 65, eOP_FUNCTION_LOCALNAME_1 = 66, eOP_FUNCTION_FLOOR = 67, eOP_FUNCTION_CEILING = 68, eOP_FUNCTION_ROUND = 69, eOP_FUNCTION_NUMBER_0 = 70, eOP_FUNCTION_NUMBER_1 = 71, eOP_FUNCTION_STRING_0 = 72, eOP_FUNCTION_STRING_1 = 73, eOP_FUNCTION_STRINGLENGTH_0 = 74, eOP_FUNCTION_STRINGLENGTH_1 = 75, eOP_FUNCTION_NAMESPACEURI_0 = 76, eOP_FUNCTION_NAMESPACEURI_1 = 77, eOP_FUNCTION_SUM = 78, eOP_FUNCTION_CONCAT = 79, // Always add _before_ this one and update // s_opCodeLengthArray. eOpCodeNextAvailable }; // enum eOpCodes /** * Exception class thrown when an invalid XPath expression is encountered */ class XALAN_XPATH_EXPORT XPathExpressionException : public XalanXPathException { public: /** * Construct an XPathExpressionException object. * * @param theMessage string error message */ XPathExpressionException(const XalanDOMString& theMessage, MemoryManager& theManager); virtual~ XPathExpressionException(); }; /** * Exception class thrown when an invalid XPath operation code is encountered */ class XALAN_XPATH_EXPORT InvalidOpCodeException : public XPathExpressionException { public: /** * Construct an InvalidOpCodeException object. * * @param theOpCode operation code that caused the exception */ InvalidOpCodeException( OpCodeMapValueType theOpCode, XalanDOMString& theBuffer); virtual~ InvalidOpCodeException(); private: static XalanDOMString& FormatErrorMessage( OpCodeMapValueType theOpCode, XalanDOMString& theBuffer); }; /** * Exception class thrown when an invalid number of XPath arguments is * encountered */ class XALAN_XPATH_EXPORT InvalidArgumentCountException : public XPathExpressionException { public: /** * Construct an InvalidArgumentCountException object. * * @param theOpCode operation code that caused the exception * @param theExpectedCount the correct number of arguments for "opcode" * @param theSuppliedCount the number of arguments supplied */ InvalidArgumentCountException( OpCodeMapValueType theOpCode, OpCodeMapValueType theExpectedCount, OpCodeMapValueType theSuppliedCount, XalanDOMString& theBuffer); virtual~ InvalidArgumentCountException(); private: static XalanDOMString& FormatErrorMessage( OpCodeMapValueType theOpCode, OpCodeMapValueType theExpectedCount, OpCodeMapValueType theSuppliedCount, XalanDOMString& theBuffer); }; /** * Exception class thrown when an invalid XPath argument is encountered */ class XALAN_XPATH_EXPORT InvalidArgumentException : public XPathExpressionException { public: /** * Construct an InvalidArgumentException object. * * @param theOpCode operation code that caused the exception * @param theValue invalid argument value */ InvalidArgumentException( OpCodeMapValueType theOpCode, OpCodeMapValueType theValue, XalanDOMString& theBuffer); virtual~ InvalidArgumentException(); private: static XalanDOMString& FormatErrorMessage( OpCodeMapValueType theOpCode, OpCodeMapValueType theValue, XalanDOMString& theBuffer); }; /** * The length is always the opcode position + 1. Length is always expressed * as the opcode+length bytes, so it is always 2 or greater. This is the * offset from the op code where the length is stored. It will always * remain one. */ #if defined(XALAN_INLINE_INITIALIZATION) static const TokenQueueSizeType s_opCodeMapLengthIndex = 1; #else enum eDummy { s_opCodeMapLengthIndex = 1 }; #endif explicit XPathExpression(MemoryManager& theManager); ~XPathExpression(); MemoryManager& getMemoryManager() { return m_opMap.getMemoryManager(); } /** * Reset the expression. */ void reset(); /** * Shrink internal tables. */ void shrink(); /** * Retrieve number of elements in the operations code map. * * @return size of operations code map */ OpCodeMapSizeType opCodeMapSize() const { return OpCodeMapSizeType(m_opMap.size()); } /** * Retrieve length of the operations code map stored in the map. The length * of the entire map is stored after the first op code. That offset is * determined by this const static member. Note that as expressions are * defined recursively, this is really just the length of the first * expression in the map, which is the top of the parse tree. Any * subexpression will also have a length entry at the same offset from the * beginning of the subexpression. * * @return length of operations code map */ OpCodeMapValueType opCodeMapLength() const { const OpCodeMapSizeType theSize = opCodeMapSize(); if (theSize > s_opCodeMapLengthIndex) { assert(theSize == OpCodeMapSizeType(m_opMap[s_opCodeMapLengthIndex])); return m_opMap[s_opCodeMapLengthIndex]; } else { assert(theSize == OpCodeMapValueType(theSize)); return OpCodeMapValueType(theSize); } } OpCodeMapPositionType getInitialOpCodePosition() const { #if defined(XALAN_XPATH_EXPRESSION_USE_ITERATORS) return m_opMap.begin(); #else return 0; #endif } bool isValidOpCodePosition(OpCodeMapPositionType opPos) const { const OpCodeMapDifferenceType theDifference = OpCodeMapDifferenceType(opPos - getInitialOpCodePosition()); return theDifference >= 0 && theDifference < opCodeMapSize(); } #if defined(XALAN_XPATH_EXPRESSION_USE_ITERATORS) bool isValidOpCodePosition(OpCodeMapSizeType theIndex) const { return theIndex >= 0 && theIndex < opCodeMapSize(); } /** * Retrieve the value of an operation code at a specified index in the * op code map. * * @param theIndex The index in list * @return value of operation code */ OpCodeMapValueType getOpCodeMapValue(OpCodeMapSizeType theIndex) const { assert(theIndex < opCodeMapLength()); return m_opMap[theIndex]; } #endif /** * Retrieve the value of an operation code at a specified position in the * list. * * @param opPos position in list * @return value of operation code */ OpCodeMapValueType getOpCodeMapValue(OpCodeMapPositionType opPos) const { assert(opPos < getInitialOpCodePosition() + opCodeMapLength()); #if defined(XALAN_XPATH_EXPRESSION_USE_ITERATORS) return *opPos; #else return m_opMap[opPos]; #endif } /** * Set the value of an operation code at a specified index in the * OpCode map. * * @param theOpCodeMapIndex The index in the OpCode map * @param theValue value of operation code */ void setOpCodeMapValue( OpCodeMapSizeType theOpCodeMapIndex, const OpCodeMapValueType& theValue) { assert(theOpCodeMapIndex < opCodeMapLength()); m_opMap[theOpCodeMapIndex] = theValue; } OpCodeMapValueType getOpCodeArgumentLength(OpCodeMapPositionType opPos) const { return getOpCodeMapValue(opPos + XPathExpression::s_opCodeMapLengthIndex + 1) - 3; } /** * Retrieve the length of an operation code at a specified position in the * op map. * * @param opPos position in the op map * @return length of operation code */ OpCodeMapValueType getOpCodeLengthFromOpMap(OpCodeMapPositionType opPos, MemoryManager& theManager) const; #if defined(XALAN_XPATH_EXPRESSION_USE_ITERATORS) /** * Retrieve the length of an operation code at a specified index in the * op map. * * @param theIndex The index in the op map * @return length of operation code */ OpCodeMapValueType getOpCodeLengthFromOpMap(OpCodeMapSizeType theIndex, MemoryManager& theManager) const; #endif #if defined(XALAN_XPATH_EXPRESSION_USE_ITERATORS) /** * Retrieve the position of the next operation code at a specified position * in the list. * * @param opPos position in list * @return position of next operation code */ OpCodeMapPositionType getNextOpCodePosition(OpCodeMapPositionType opPos) const { assert(opPos < getInitialOpCodePosition() + opCodeMapLength()); return opPos + *(opPos + s_opCodeMapLengthIndex); } #endif /** * Retrieve the position of the next operation code at a specified index * in the list. * * @param theIndex theIndex in list * @return position of next operation code */ OpCodeMapSizeType #if defined(XALAN_XPATH_EXPRESSION_USE_ITERATORS) getNextOpCodePosition(OpCodeMapSizeType theIndex) const #else getNextOpCodePosition(OpCodeMapPositionType theIndex) const #endif { assert(theIndex < opCodeMapLength()); assert(theIndex + m_opMap[theIndex + s_opCodeMapLengthIndex] == OpCodeMapSizeType(theIndex + m_opMap[theIndex + s_opCodeMapLengthIndex])); return OpCodeMapSizeType(theIndex + m_opMap[theIndex + s_opCodeMapLengthIndex]); } /** * Set the arguments for an operation code at a specified index in the * list. * * @param opPos position in list * @param theOpCode operation code * @param theIndex index in list * @param theArgs vector or arguments to supply */ void setOpCodeArgs( eOpCodes theOpCode, OpCodeMapSizeType theIndex, const OpCodeMapValueVectorType& theArgs); /** * Add an operation code to the list. * * @param theOpCode operation code * @return the position of the op code */ OpCodeMapSizeType appendOpCode(eOpCodes theOpCode); /** * Add an operation code with supplied arguments to the list. * * @param theOpCode operation code * @param theArgs vector or arguments to supply */ OpCodeMapSizeType appendOpCode( eOpCodes theOpCode, const OpCodeMapValueVectorType& theArgs) { const OpCodeMapSizeType thePosition = appendOpCode(theOpCode); setOpCodeArgs(theOpCode, thePosition, theArgs); return thePosition; } /** * Replace an operation code with supplied code. * * @param theIndex The index of the old operation code * @param theOldOpCode The old operation code * @param theNewOpCode The new operation code */ void replaceOpCode( OpCodeMapSizeType theIndex, eOpCodes theOldOpCode, eOpCodes theNewOpCode); /** * Insert an operation code at a specified index in the list. * * @param theOpCode operation code * @param theIndex index in list */ OpCodeMapValueType insertOpCode( eOpCodes theOpCode, OpCodeMapSizeType theIndex); /** * Update the length of an operation code at a specified index in the list. * This presumes that the other opcodes have been appended to the * expression, and that the specified op code's length needs to be set. * The size includes the normal length of the opcode, plus the length of * its subexpressions. * * @param theIndex index in list */ void updateOpCodeLength(OpCodeMapSizeType theIndex) { assert(theIndex < opCodeMapSize()); updateOpCodeLength(m_opMap[theIndex], theIndex); } /** * Update the length of an operation code that has moved to a new index in * the list. * * @param theOpCode operation code * @param theOriginalIndex original index in list * @param theNewIndex new index in list */ void updateShiftedOpCodeLength( OpCodeMapValueType theOpCode, OpCodeMapSizeType theOriginalIndex, OpCodeMapSizeType theNewIndex); /** * Update the length of an operation code at a specified index in the list. * This presumes that the other opcodes have been appended to the * expression, and that the specified op code's length needs to be set. * The size includes the normal length of the opcode, plus the length of * its subexpressions. * * @param theOpCode operation code at specified index * @param theIndex index in list */ void updateOpCodeLength( OpCodeMapValueType theOpCode, OpCodeMapSizeType theIndex); /** * Whether the operation code is one of the node test types, for example, * "ancestor::" or "child::" * * @param theOpCode operation code * @return true if code represents a node test */ static bool isNodeTestOpCode(OpCodeMapValueType theOpCode); /** * Update the length of an operation code after a node test code. * * @param theIndex index in list */ void updateOpCodeLengthAfterNodeTest(OpCodeMapSizeType theIndex); /** * Whether there are any more tokens in the token queue. * * @return true if there are more tokens */ bool hasMoreTokens() const { return tokenQueueSize() > m_currentPosition ? true : false; } /** * Retrieve number of elements in the token queue. * * @return size of token queue */ TokenQueueSizeType tokenQueueSize() const { return TokenQueueSizeType(m_tokenQueue.size()); } bool isValidTokenQueuePosition(TokenQueueSizeType thePosition) const { return thePosition < tokenQueueSize(); } /** * Retrieve the current position in the token queue. * * @return position in queue */ TokenQueueSizeType getTokenPosition() const { return m_currentPosition; } /** * Set the current position in the token queue to zero. */ void resetTokenPosition() { m_currentPosition = 0; } /** * Retrieve a token at the specified position in the token queue. * * @param thePosition position in queue * @return pointer to XObject token */ const XToken* getToken(TokenQueuePositionType thePosition) const { assert(thePosition < tokenQueueSize()); return &m_tokenQueue[thePosition]; } /** * Retrieve the next token in the token queue. * * @return pointer to XObject token */ const XToken* getNextToken() { if (hasMoreTokens() == true) { return getToken(m_currentPosition++); } else { return 0; } } /** * Retrieve the previous token in the token queue. * * @return pointer to XObject token */ const XToken* getPreviousToken() { if (m_currentPosition > 0) { return getToken(--m_currentPosition); } else { return 0; } } enum eRelativeDirection { eRelativeBackward, eRelativeForward }; /** * Retrieve a token at the specified offset relative to the current * position in the token queue. * * @param theOffset offset from current position * @param theDirection the direction in which to move * @return pointer to XObject token */ const XToken* getRelativeToken( TokenQueuePositionType theOffset, eRelativeDirection theDirection) const { const TokenQueuePositionType thePosition = calculateRelativePosition(theOffset, theDirection); if (thePosition == tokenQueueSize()) { return 0; } else { return getToken(thePosition); } } /** * Push a token onto the token queue. * * @param theToken the string value to push */ void pushToken(const XalanDOMString& theToken) { m_tokenQueue.push_back( XToken( DoubleSupport::toDouble(theToken, getMemoryManager()), theToken, getMemoryManager())); } /** * Push a token onto the token queue. * * @param theNumber the number value to push * @param theString the string value to push */ void pushToken( double theNumber, const XalanDOMString& theString) { m_tokenQueue.push_back( XToken( theNumber, theString, getMemoryManager())); } /** * Insert a token onto the token queue at the * current position. * * @param theToken the string value to push */ void insertToken(const XalanDOMString& theToken) { m_tokenQueue.insert( m_tokenQueue.begin() + (m_currentPosition - 1), XToken( theToken, DoubleSupport::toDouble(theToken, getMemoryManager()), getMemoryManager())); } /** * Insert a token onto the token queue at the * current position. * * @param theNumber the number value to push * @param theString the string value to push */ void insertToken( double theNumber, const XalanDOMString& theString) { m_tokenQueue.insert( m_tokenQueue.begin() + (m_currentPosition - 1), XToken( theNumber, theString, getMemoryManager())); } /** * Replace a token in the token queue. * * @param theOffset the offset at which to replace the token. * @param theString The string data for the token. The instance will keep a pointer to this string, so it must be persistent. */ void replaceRelativeToken( TokenQueuePositionType theOffset, eRelativeDirection theDirection, const XalanDOMString& theString) { const TokenQueuePositionType thePosition = calculateRelativePosition(theOffset, theDirection); assert(thePosition < tokenQueueSize()); m_tokenQueue[thePosition].set( theString, DoubleSupport::toDouble(theString, getMemoryManager())); } /** * Diagnostic function to output the operation code map. * * @param thePrintWriter output device * @param theStartPosition starting position in map */ void dumpOpCodeMap( PrintWriter& thePrintWriter, OpCodeMapSizeType theStartPosition = 0) const; /** * Diagnostic function to output the operation code map. * * @param theStream output stream * @param theStartPosition starting position in map */ void dumpOpCodeMap( OstreamType& theStream, OpCodeMapSizeType theStartPosition = 0) const; /** * Diagnostic function to output the token queue. * * @param thePrintWriter output device * @param theStartPosition starting position in token queue */ void dumpTokenQueue( PrintWriter& thePrintWriter, TokenQueueSizeType theStartPosition = 0) const; /** * Diagnostic function to output the token queue. * * @param thePrintWriter output device * @param theStartPosition starting position in token queue */ void dumpTokenQueue( OstreamType& theStream, TokenQueueSizeType theStartPosition = 0) const; /** * Diagnostic function to output the remaining tokens in the token queue. * * @param thePrintWriter output device */ void dumpRemainingTokenQueue(PrintWriter& thePrintWriter) const; /** * Diagnostic function to output the remaining tokens in the token queue. * * @param theStream The output stream * @param theMemoryManager The MemoryManager instance. */ void dumpRemainingTokenQueue( OstreamType& theStream, MemoryManager& theMemoryManager) const; /** * Push a value onto the operations code * map. * * @param theToken string value of the token to push */ void pushValueOnOpCodeMap(const OpCodeMapType::value_type& theValue) { // Push the index onto the op map. m_opMap.push_back(theValue); // Update the op map length. ++m_opMap[s_opCodeMapLengthIndex]; } /** * Push a token onto the token queue and its index onto the operations code * map. * * @param theXToken the XToken to push */ void pushArgumentOnOpCodeMap(const XToken& theXToken); /** * Push a token onto the token queue and its index onto the operations code * map. * * @param theString The string data for the token. The instance will keep a pointer to this string, so it must be persistent. */ void pushArgumentOnOpCodeMap(const XalanDOMString& theString); /** * Push a token onto the token queue and its index onto the operations code * map. * * @param theNumber The numeric data for the token. This must be consistent with the lexical value in theString. * @param theString The string data for the token. The instance will keep a pointer to this string, so it must be persistent. */ void pushArgumentOnOpCodeMap( double theNumber, const XalanDOMString& theString); /** * Push a number literal onto the vector of number literals and its index onto * the operations code map. * * @param theToken number value of the token to push */ void pushNumberLiteralOnOpCodeMap(double theNumber); /** * Get a number literal from the vector of number literals. * * @param theIndex The index of the desired value. */ double getNumberLiteral(int theIndex) const { assert(theIndex >= 0 && NumberLiteralValueVectorType::size_type(theIndex) < m_numberLiteralValues.size()); return m_numberLiteralValues[NumberLiteralValueVectorType::size_type(theIndex)]; } /** * Push the current position in the token queue onto the operations code * map. */ void pushCurrentTokenOnOpCodeMap(); /** * Change the current pattern in the pattern map. * * @param thePattern match pattern to make current */ void setCurrentPattern(const XalanDOMString& thePattern) { m_currentPattern = &thePattern; } /** * Retrieve the current pattern in the pattern map. * * @return string for current match pattern */ const XalanDOMString& getCurrentPattern() const { assert(m_currentPattern != 0); return *m_currentPattern; } private: /** * Calculate the relative token position given the offset * and direction. Returns the size of the token queue * if the offset is not valid. * * @param theOffset offset from current position * @param theDirection the direction in which to move * @return thePosition */ TokenQueuePositionType calculateRelativePosition( TokenQueuePositionType theOffset, eRelativeDirection theDirection) const { if (theDirection == eRelativeBackward && theOffset <= m_currentPosition) { return m_currentPosition - theOffset; } else if (theDirection == eRelativeForward && m_currentPosition + theOffset < tokenQueueSize()) { return m_currentPosition + theOffset; } else { return tokenQueueSize(); } } /** * An operations map is used instead of a proper parse tree. It contains * operations codes and indexes into the m_tokenQueue. We use an array * instead of a full parse tree in order to cut down on the number of * objects created. */ OpCodeMapType m_opMap; /** * The index of the last opcode that was appended or inserted. * */ OpCodeMapSizeType m_lastOpCodeIndex; /** * The queue of used tokens. The current token is the token at the end of * the m_tokenQueue. The idea is that the queue can be marked and a * sequence of tokens can be reused. */ TokenQueueType m_tokenQueue; /** * The current position in the token queue. */ TokenQueueSizeType m_currentPosition; /** * The current pattern string, for diagnostics purposes. */ const XalanDOMString* m_currentPattern; // Default vector allocation sizes. enum { eDefaultOpMapSize = 100, eDefaultTokenQueueSize = 30 }; NumberLiteralValueVectorType m_numberLiteralValues; }; XALAN_CPP_NAMESPACE_END #endif // XPATHEXPRESSION_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XPathExecutionContext.cpp0000664000175000000640000000227411731656102022244 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XPathExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN XPathExecutionContext::XPathExecutionContext( MemoryManager& theMemoryManager, XObjectFactory* theXObjectFactory) : ExecutionContext(theMemoryManager), m_xobjectFactory(theXObjectFactory) { } XPathExecutionContext::~XPathExecutionContext() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XPathParserException.cpp0000664000175000000640000000450411731656102022045 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Base class header file. #include "XPathParserException.hpp" XALAN_CPP_NAMESPACE_BEGIN XPathParserException::XPathParserException( const XalanDOMString& theMessage, MemoryManager& theManager, const Locator* theLocator) : XalanXPathException( theMessage, theManager, theLocator) { } XPathParserException::XPathParserException( const XalanDOMString& theMessage, MemoryManager& theManager) : XalanXPathException( theMessage, theManager) { } XPathParserException::XPathParserException(const XPathParserException& other) : XalanXPathException(other) { } XPathParserException::~XPathParserException() { } static const XalanDOMChar s_type[] = { XalanUnicode::charLetter_X, XalanUnicode::charLetter_P, XalanUnicode::charLetter_a, XalanUnicode::charLetter_t, XalanUnicode::charLetter_h, XalanUnicode::charLetter_P, XalanUnicode::charLetter_a, XalanUnicode::charLetter_r, XalanUnicode::charLetter_s, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, XalanUnicode::charLetter_E, XalanUnicode::charLetter_x, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_p, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; const XalanDOMChar* XPathParserException::getType() const { return s_type; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XStringReference.hpp0000664000175000000640000000544311731656102021212 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XSTRINGREFERENCE_HEADER_GUARD_1357924680) #define XSTRINGREFERENCE_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XStringReference : public XStringBase { public: typedef XStringBase ParentType; /** * Construct an XStringReference object from a string. * The XStringReference will hold a reference to the * supplied string, so the string must be in scope for * the lifetime of the instance * * @param value source string */ XStringReference(const XalanDOMString& val, MemoryManager& theManager); XStringReference(const XStringReference& source, MemoryManager& theManager); virtual ~XStringReference(); // These methods are inherited from XObject ... virtual const XalanDOMString& str(XPathExecutionContext& executionContext) const; virtual const XalanDOMString& str() const; virtual void str( XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( XPathExecutionContext& executionContext, XalanDOMString& theBuffer) const; virtual void str(XalanDOMString& theBuffer) const; virtual double stringLength(XPathExecutionContext& executionContext) const; protected: virtual eObjectType getRealType() const; private: // Not implemented XStringReference(const XStringReference& source); XStringReference(); const XalanDOMString& m_value; }; XALAN_CPP_NAMESPACE_END #endif // XSTRINGREFERENCE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XObjectTypeCallback.hpp0000664000175000000640000001004211731656102021601 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XOBJECT_TYPE_CALLBACK_HEADER_GUARD_1357924680) #define XOBJECT_TYPE_CALLBACK_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // $$$ ToDo: This is necessarh while XalanDOMString is a typedef... #include XALAN_CPP_NAMESPACE_BEGIN class MutableNodeRefList; class NodeRefListBase; class XalanDocumentFragment; class XObject; class XPathExecutionContext; /** * The purpose of this class is to provide a way to get the "preferred" or * closest matching type for XObject-derived classes. The idea is to pass a * reference to an instance of this class to an XObject instance. It will * then call back to the member function that most closely matches its type. * This makes it possible to get preferred typing information without doing * RTTI or other such type introspections. */ class XALAN_XPATH_EXPORT XObjectTypeCallback { public: XObjectTypeCallback(XPathExecutionContext& theExecutionContext); virtual ~XObjectTypeCallback(); /** * Call back the XObject with a numeric value. * * @param theXObject * @param theValue */ virtual void Number(const XObject& theXObject, double theValue) = 0; /** * Call back the XObject with a boolean value. * * @param theXObject * @param theValue */ virtual void Boolean(const XObject& theXObject, bool theValue) = 0; /** * Call back the XObject with a string value. * * @param theXObject * @param theValue */ virtual void String(const XObject& theXObject, const XalanDOMString& theValue) = 0; /** * Call back the XObject with a result tree fragment value. * * @param theXObject * @param theValue */ virtual void ResultTreeFragment(const XObject& theXObject, const XalanDocumentFragment& theValue) = 0; /** * Call back the XObject with a result tree fragment value. * * @param theXObject * @param theValue */ virtual void ResultTreeFragment(const XObject& theXObject, XalanDocumentFragment& theValue) = 0; /** * Call back the XObject with a node set value. * * @param theXObject * @param theValue */ virtual void NodeSet(const XObject& theXObject, const NodeRefListBase& theValue) = 0; /** * Call back the XObject with an unknown value. * * @param theXObject * @param theValue */ virtual void Unknown(const XObject& theObject, const XalanDOMString& theName) = 0; /** * Call back the XObject with a null value. * * @param theXObject * @param theValue */ virtual void Null(const XObject& theObject) = 0; XPathExecutionContext& getExecutionContext() { return m_executionContext; } /* MemoryManager& getMemoryManager() { return m_memoryManager; } */ private: XPathExecutionContext& m_executionContext; }; XALAN_CPP_NAMESPACE_END #endif // XOBJECT_TYPE_CALLBACK_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/FunctionContains.cpp0000664000175000000640000000507111731656102021251 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionContains.hpp" #include #include "XObjectFactory.hpp" XALAN_CPP_NAMESPACE_BEGIN FunctionContains::FunctionContains() { } FunctionContains::~FunctionContains() { } XObjectPtr FunctionContains::execute( XPathExecutionContext& executionContext, XalanNode* /* context */, const XObjectPtr arg1, const XObjectPtr arg2, const Locator* const /* locator */) const { assert(arg1.null() == false && arg2.null() == false); const XalanDOMString& str1 = arg1->str(executionContext); const XalanDOMString& str2 = arg2->str(executionContext); bool fResult = true; // If str2 is empty, then don't bother to check anything. if (str2.empty() == false) { // Is str1 empty? if (str1.empty() == true) { fResult = false; } else { // OK, both strings have some data, so look for // the index... const XalanDOMString::size_type theIndex = indexOf(str1, str2); fResult = theIndex < str1.length() ? true : false; } } return executionContext.getXObjectFactory().createBoolean(fResult); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionContains* #endif FunctionContains::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionContains::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionTakesTwoArguments_1Param, "contains()"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XPathExecutionContextDefault.hpp0000664000175000000640000002734111731656102023560 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XPATHEXECUTIONCONTEXTDEFAULT_HEADER_GUARD_1357924680) #define XPATHEXECUTIONCONTEXTDEFAULT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include // Base class include file. #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class DOMSupport; class XPathEnvSupport; class XalanQName; /** * A basic implementation of the class XPathExecutionContext. */ class XALAN_XPATH_EXPORT XPathExecutionContextDefault : public XPathExecutionContext { public: typedef XalanVector CurrentNodeStackType; typedef XalanVector ContextNodeListStackType; /** * Construct an XPathExecutionContextDefault object * * @param theXPathEnvSupport XPathEnvSupport class instance * @param theDOMSupport DOMSupport class instance * @param theXobjectFactory factory class instance for XObjects * @param theCurrentNode current node in the source tree * @param theContextNodeList node list for current context * @param thePrefixResolver pointer to prefix resolver to use */ XPathExecutionContextDefault( XPathEnvSupport& theXPathEnvSupport, DOMSupport& theDOMSupport, XObjectFactory& theXObjectFactory, XalanNode* theCurrentNode = 0, const NodeRefListBase* theContextNodeList = 0, const PrefixResolver* thePrefixResolver = 0); /** * Construct an XPathExecutionContextDefault object * * @param theXPathEnvSupport XPathEnvSupport class instance * @param theXObjectFactory factory class instance for XObjects * @param theCurrentNode current node in the source tree * @param theContextNodeList node list for current context * @param thePrefixResolver pointer to prefix resolver to use */ explicit XPathExecutionContextDefault( MemoryManager& theManager, XalanNode* theCurrentNode = 0, const NodeRefListBase* theContextNodeList = 0, const PrefixResolver* thePrefixResolver = 0); static XPathExecutionContextDefault* create( MemoryManager& theManager, XalanNode* theCurrentNode = 0, const NodeRefListBase* theContextNodeList = 0, const PrefixResolver* thePrefixResolver = 0); virtual ~XPathExecutionContextDefault(); /** * Get the XPathEnvSupport instance. * * @return a pointer to the instance. */ XPathEnvSupport* getXPathEnvSupport() const { return m_xpathEnvSupport; } /** * Set the XPathEnvSupport instance. * * @param theSupport a reference to the instance to use. */ void setXPathEnvSupport(XPathEnvSupport* theSupport) { m_xpathEnvSupport = theSupport; } /** * Set the DOMSupport instance. * * @param theDOMSupport a reference to the instance to use. */ void setDOMSupport(DOMSupport* theDOMSupport) { m_domSupport = theDOMSupport; } /** * Set the XObjectFactory instance. * * @param theFactory a reference to the instance to use. */ void setXObjectFactory(XObjectFactory* theXObjectFactory) { m_xobjectFactory = theXObjectFactory; } /** * Get a reference to the scratch QNameByValue instance. * * @return A reference to a QNameByValue instance. */ XalanQNameByValue& getScratchQName() const { return m_scratchQName; } virtual void doFormatNumber( double number, const XalanDOMString& pattern, const XalanDecimalFormatSymbols* theDFS, XalanDOMString& theResult, const XalanNode* context = 0, const Locator* locator = 0); // These interfaces are inherited from XPathExecutionContext... virtual void reset(); virtual XalanNode* getCurrentNode() const; virtual void pushCurrentNode(XalanNode* theCurrentNode); virtual void popCurrentNode(); virtual bool isNodeAfter( const XalanNode& node1, const XalanNode& node2) const; virtual void pushContextNodeList(const NodeRefListBase& theList); virtual void popContextNodeList(); virtual const NodeRefListBase& getContextNodeList() const; virtual size_type getContextNodeListLength() const; virtual size_type getContextNodeListPosition(const XalanNode& contextNode) const; virtual bool elementAvailable(const XalanQName& theQName) const; virtual bool elementAvailable( const XalanDOMString& theName, const Locator* locator) const; virtual bool functionAvailable(const XalanQName& theQName) const; virtual bool functionAvailable( const XalanDOMString& theName, const Locator* locator) const; virtual const XObjectPtr extFunction( const XalanDOMString& theNamespace, const XalanDOMString& functionName, XalanNode* context, const XObjectArgVectorType& argVec, const Locator* locator); virtual XalanDocument* parseXML( MemoryManager& theManager, const XalanDOMString& urlString, const XalanDOMString& base, ErrorHandler* theErrorHandler = 0) const; virtual MutableNodeRefList* borrowMutableNodeRefList(); virtual bool returnMutableNodeRefList(MutableNodeRefList* theList); virtual MutableNodeRefList* createMutableNodeRefList(MemoryManager& theManager) const; virtual XalanDOMString& getCachedString(); virtual bool releaseCachedString(XalanDOMString& theString); virtual void getNodeSetByKey( XalanNode* context, const XalanQName& qname, const XalanDOMString& ref, const Locator* locator, MutableNodeRefList& nodelist); virtual void getNodeSetByKey( XalanNode* context, const XalanDOMString& name, const XalanDOMString& ref, const Locator* locator, MutableNodeRefList& nodelist); virtual const XObjectPtr getVariable( const XalanQName& name, const Locator* locator = 0); virtual const PrefixResolver* getPrefixResolver() const; virtual void setPrefixResolver(const PrefixResolver* thePrefixResolver); virtual const XalanDOMString* getNamespaceForPrefix(const XalanDOMString& prefix) const; virtual const XalanDOMString& findURIFromDoc(const XalanDocument* owner) const; virtual const XalanDOMString& getUnparsedEntityURI( const XalanDOMString& theName, const XalanDocument& theDocument) const; virtual XalanDocument* getSourceDocument(const XalanDOMString& theURI) const; virtual void setSourceDocument( const XalanDOMString& theURI, XalanDocument* theDocument); virtual void formatNumber( double number, const XalanDOMString& pattern, XalanDOMString& theResult, const XalanNode* context = 0, const Locator* locator = 0); virtual void formatNumber( double number, const XalanDOMString& pattern, const XalanDOMString& dfsName, XalanDOMString& theResult, const XalanNode* context = 0, const Locator* locator = 0); // These interfaces are inherited from ExecutionContext... virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode); virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode); virtual void error( const XalanDOMString& msg, const XalanNode* sourceNode = 0, const Locator* locator = 0) const; virtual void warn( const XalanDOMString& msg, const XalanNode* sourceNode = 0, const Locator* locator = 0) const; virtual void message( const XalanDOMString& msg, const XalanNode* sourceNode = 0, const Locator* locator = 0) const; virtual bool shouldStripSourceNode(const XalanText& node); protected: typedef XalanObjectCache< MutableNodeRefList, DefaultCacheCreateFunctorMemMgr, DeleteFunctor, ClearCacheResetFunctor > NodeListCacheType; enum { eNodeListCacheListSize = 50 }; struct ContextNodeListPositionCache { ContextNodeListPositionCache() : m_node(0), m_index(0) { } void clear() { if (m_node != 0) { m_node = 0; } } const XalanNode* m_node; size_type m_index; }; XPathEnvSupport* m_xpathEnvSupport; DOMSupport* m_domSupport; CurrentNodeStackType m_currentNodeStack; ContextNodeListStackType m_contextNodeListStack; const PrefixResolver* m_prefixResolver; XalanDOMString m_currentPattern; NodeListCacheType m_nodeListCache; XalanDOMStringCache m_stringCache; mutable ContextNodeListPositionCache m_cachedPosition; mutable XalanQNameByValue m_scratchQName; static const NodeRefList s_dummyList; }; XALAN_CPP_NAMESPACE_END #endif // XPATHEXECUTIONCONTEXTDEFAULT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XalanDocumentFragmentNodeRefListBaseProxy.hpp0000664000175000000640000000414711731656102026157 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANDOCUMENTFRAGMENTNODEREFLISTBASEPROXY_HEADER_GUARD_1357924680) #define XALANDOCUMENTFRAGMENTNODEREFLISTBASEPROXY_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN class XalanDocumentFragment; class XALAN_XPATH_EXPORT XalanDocumentFragmentNodeRefListBaseProxy : public NodeRefListBase { public: /** * Construct an instance from a document fragment * * @param value source document fragment. */ XalanDocumentFragmentNodeRefListBaseProxy(const XalanDocumentFragment& value); /** * Copy constructor * * @param source source instance */ XalanDocumentFragmentNodeRefListBaseProxy(const XalanDocumentFragmentNodeRefListBaseProxy& source); virtual ~XalanDocumentFragmentNodeRefListBaseProxy(); // These methods are inherited from NodeRefListBase... XalanNode* item(size_type index) const; size_type getLength() const; size_type indexOf(const XalanNode* theNode) const; private: // Data members... const XalanDocumentFragment& m_value; }; XALAN_CPP_NAMESPACE_END #endif // XALANDOCUMENTFRAGMENTNODEREFLISTBASEPROXY_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XPathProcessor.hpp0000664000175000000640000000770611731656102020725 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XPATHPROCESSOR_HEADER_GUARD_1357924680) #define XPATHPROCESSOR_HEADER_GUARD_1357924680 // Base include file. Must be first. #include // $$$ ToDo: This is necessary while XalanDOMString is still a typedef... #include XALAN_DECLARE_XERCES_CLASS(Locator) XALAN_CPP_NAMESPACE_BEGIN XALAN_USING_XERCES(Locator) class Function; class PrefixResolver; class XPath; class XPathConstructionContext; class XALAN_XPATH_EXPORT XPathProcessor { public: typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator LocatorType; explicit XPathProcessor(); virtual ~XPathProcessor(); /** * Given a string, make an XPath object, in order that a parse doesn't * have to be done each time the expression is executed. * * @param pathObj XPath object to be initialized * @param constructionContext The construction context * @param expression expression that will be evaluated * @param resolver prefix resolver to use * @param locator the Locator to use for error report. May be null * @param allowVariableReferences If true, variable references are allowed. * @param allowKeyFunction If true, calls to the key() function are allowed. */ virtual void initXPath( XPath& pathObj, XPathConstructionContext& constructionContext, const XalanDOMString& expression, const PrefixResolver& resolver, const Locator* locator = 0, bool allowVariableReferences = true, bool allowKeyFunction = true) = 0; /** * Given a string, create an XSLT Match Pattern object. * * @param pathObj XPath object to be initialized * @param constructionContext The construction context * @param expression expression that will be evaluated * @param resolver prefix resolver to use * @param locator the Locator to use for error report. May be null * @param allowVariableReferences If true, variable references are allowed. * @param allowKeyFunction If true, calls to the key() function are allowed. */ virtual void initMatchPattern( XPath& pathObj, XPathConstructionContext& constructionContext, const XalanDOMString& expression, const PrefixResolver& resolver, const Locator* locator = 0, bool allowVariableReferences = true, bool allowKeyFunction = true) = 0; /** * Given a string, and a reference to a function object, install the * function with the given name. * * @param theFunctionName name of function * @param theFunction function object corresponding to name */ static void installFunction( const XalanDOMString& theFunctionName, const Function& theFunction); }; XALAN_CPP_NAMESPACE_END #endif // XPATHPROCESSOR_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XObjectResultTreeFragProxyText.hpp0000664000175000000640000000724511731656102024063 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XOBJECTRESULTTREEFRAGPROXYTEXT_HEADER_GUARD_1357924680) #define XOBJECTRESULTTREEFRAGPROXYTEXT_HEADER_GUARD_1357924680 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XPathExecutionContext; class XObject; class XALAN_XPATH_EXPORT XObjectResultTreeFragProxyText : public XalanText { public: /** * Perform static initialization. See class XPathInit. */ static void initialize(MemoryManager& theManager); /** * Perform static shut down. See class XPathInit. */ static void terminate(); /** * Constructor. * * @param theXObject The XObject instance for which this is a proxy. * @param theManager The MemoryManager for this instance. * @param theExecutionContext An optional XPathExecutionContext instance. */ XObjectResultTreeFragProxyText( const XObject& theXObject, MemoryManager& theManager, XPathExecutionContext* theExecutionContext); virtual ~XObjectResultTreeFragProxyText(); MemoryManager& getMemoryManager() { return m_memoryManager; } XPathExecutionContext* getExecutionContext() { return m_executionContext; } // These interfaces are inherited from XalanText... virtual const XalanDOMString& getNodeName() const; virtual const XalanDOMString& getNodeValue() const; virtual NodeType getNodeType() const; virtual XalanNode* getParentNode() const; virtual const XalanNodeList* getChildNodes() const; virtual XalanNode* getFirstChild() const; virtual XalanNode* getLastChild() const; virtual XalanNode* getPreviousSibling() const; virtual XalanNode* getNextSibling() const; virtual const XalanNamedNodeMap* getAttributes() const; virtual XalanDocument* getOwnerDocument() const; virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; virtual bool isIndexed() const; virtual IndexType getIndex() const; virtual const XalanDOMString& getData() const; virtual bool isWhitespace() const; private: // Not implemented... XObjectResultTreeFragProxyText& operator=(const XObjectResultTreeFragProxyText& theSource); bool operator==(const XObjectResultTreeFragProxyText& theRHS) const; // Data members... const XObject& m_value; MemoryManager& m_memoryManager; XPathExecutionContext* m_executionContext; static const XalanDOMString& s_nameString; }; XALAN_CPP_NAMESPACE_END #endif // XOBJECTRESULTTREEFRAGPROXYTEXT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/FunctionSubstring.hpp0000664000175000000640000000512711731656102021462 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONSUBSTRING_HEADER_GUARD_1357924680) #define FUNCTIONSUBSTRING_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include // Base class header file... #include #include XALAN_CPP_NAMESPACE_BEGIN /** * XPath implementation of "substring" function. */ class XALAN_XPATH_EXPORT FunctionSubstring : public Function { public: typedef Function ParentType; FunctionSubstring(); virtual ~FunctionSubstring(); // These methods are inherited from Function ... using ParentType::execute; virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const XObjectPtr arg2, const Locator* locator) const; virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const XObjectPtr arg2, const XObjectPtr arg3, const Locator* locator) const; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionSubstring* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: // Not implemented... FunctionSubstring& operator=(const FunctionSubstring&); bool operator==(const FunctionSubstring&) const; static const XObjectPtr s_nullXObjectPtr; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONSUBSTRING_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XPathFactoryBlock.hpp0000664000175000000640000000355411731656102021325 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XPATHFACTORYBLOCK_HEADER_GUARD_1357924680) #define XPATHFACTORYBLOCK_HEADER_GUARD_1357924680 // Base include file. Must be first. #include // Base class header file... #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XPathFactoryBlock : public XPathFactory { public: enum { eDefaultBlockSize = 20u }; explicit XPathFactoryBlock( MemoryManager& theManager, XalanSize_t theBlockSize = eDefaultBlockSize); virtual ~XPathFactoryBlock(); // Inherited from XPathFactory... virtual void reset(); // Inherited from XPathFactory... virtual XPath* create(); protected: // Inherited from XPathFactory... virtual bool doReturnObject( const XPath* theXPath, bool fInReset = false); private: XPathAllocator m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XPATHFACTORYBLOCK_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XString.cpp0000664000175000000640000000522211731656102017361 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XString.hpp" XALAN_CPP_NAMESPACE_BEGIN XString::XString( const XalanDOMString& val, MemoryManager& theManager) : XStringBase(theManager), m_value(val,theManager) { } XString::XString( const XalanDOMChar* val, MemoryManager& theManager) : XStringBase(theManager), m_value(val, theManager) { } XString::XString( const XalanDOMChar* val, XalanSize_t len, MemoryManager& theManager) : XStringBase(theManager), m_value(val, theManager, len) { } XString::XString( const XString& source, MemoryManager& theManager) : XStringBase(source, theManager), m_value(source.m_value, theManager) { } XString::~XString() { } const XalanDOMString& XString::str(XPathExecutionContext& /* executionContext */) const { return m_value; } const XalanDOMString& XString::str() const { return m_value; } void XString::str( XPathExecutionContext& /* executionContext */, FormatterListener& formatterListener, MemberFunctionPtr function) const { string(m_value, formatterListener, function); } void XString::str( FormatterListener& formatterListener, MemberFunctionPtr function) const { string(m_value, formatterListener, function); } void XString::str( XPathExecutionContext& /* executionContext */, XalanDOMString& theBuffer) const { theBuffer.append(m_value); } void XString::str(XalanDOMString& theBuffer) const { theBuffer.append(m_value); } double XString::stringLength(XPathExecutionContext& /* executionContext */) const { return static_cast(m_value.length()); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XObject.cpp0000664000175000000640000011335311731656102017326 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XObject.hpp" #include #include #include #include #include #include "NodeRefList.hpp" #include "XObjectFactory.hpp" #include "XPathExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN static XalanDOMString s_localBooleanString(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_localFalseString(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_localNodesetString(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_localNumberString(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_localResultTreeFragmentString(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_localStringString(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_localTrueString(XalanMemMgrs::getDummyMemMgr()); const XalanDOMString& XObject::s_booleanString = s_localBooleanString; const XalanDOMString& XObject::s_falseString = s_localFalseString; const XalanDOMString& XObject::s_nodesetString = s_localNodesetString; const XalanDOMString& XObject::s_numberString = s_localNumberString; const XalanDOMString& XObject::s_resultTreeFragmentString = s_localResultTreeFragmentString; const XalanDOMString& XObject::s_stringString = s_localStringString; const XalanDOMString& XObject::s_trueString = s_localTrueString; const XalanDOMString XObject::s_emptyString(XalanMemMgrs::getDummyMemMgr()); static const XalanDOMChar s_boolean[] = { XalanUnicode::charLetter_b, XalanUnicode::charLetter_o, XalanUnicode::charLetter_o, XalanUnicode::charLetter_l, XalanUnicode::charLetter_e, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, 0 }; static const XalanDOMChar s_false[] = { XalanUnicode::charLetter_f, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_s, XalanUnicode::charLetter_e, 0 }; static const XalanDOMChar s_number[] = { XalanUnicode::charLetter_n, XalanUnicode::charLetter_u, XalanUnicode::charLetter_m, XalanUnicode::charLetter_b, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, 0 }; static const XalanDOMChar s_nodeset[] = { XalanUnicode::charLetter_n, XalanUnicode::charLetter_o, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_s, XalanUnicode::charLetter_e, XalanUnicode::charLetter_t, 0 }; static const XalanDOMChar s_resultTreeFragment[] = { XalanUnicode::charLetter_r, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charLetter_u, XalanUnicode::charLetter_l, XalanUnicode::charLetter_t, XalanUnicode::charSpace, XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_e, XalanUnicode::charLetter_e, XalanUnicode::charSpace, XalanUnicode::charLetter_f, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_g, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, 0 }; static const XalanDOMChar s_string[] = { XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, 0 }; static const XalanDOMChar s_true[] = { XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_u, XalanUnicode::charLetter_e, 0 }; void XObject::initialize(MemoryManager& theManager) { s_localBooleanString.reset(theManager, s_boolean); s_localFalseString.reset(theManager, s_false); s_localNodesetString.reset(theManager, s_nodeset); s_localNumberString.reset(theManager, s_number); s_localResultTreeFragmentString.reset(theManager, s_resultTreeFragment); s_localStringString.reset(theManager, s_string); s_localTrueString.reset(theManager, s_true); } void XObject::terminate() { releaseMemory(s_localBooleanString, XalanMemMgrs::getDummyMemMgr()); releaseMemory(s_localFalseString, XalanMemMgrs::getDummyMemMgr()); releaseMemory(s_localNodesetString, XalanMemMgrs::getDummyMemMgr()); releaseMemory(s_localNumberString, XalanMemMgrs::getDummyMemMgr()); releaseMemory(s_localResultTreeFragmentString, XalanMemMgrs::getDummyMemMgr()); releaseMemory(s_localStringString, XalanMemMgrs::getDummyMemMgr()); releaseMemory(s_localTrueString, XalanMemMgrs::getDummyMemMgr()); } XObject::XObject( eObjectType theObjectType, MemoryManager& theMemoryManager) : m_objectType(theObjectType), m_factory(0), m_memoryManager(&theMemoryManager) { } XObject::XObject( const XObject& source, MemoryManager& theMemoryManager) : m_objectType(source.m_objectType), m_factory(0), m_memoryManager(&theMemoryManager) { } XObject::XObject(const XObject& source) : m_objectType(source.m_objectType), m_factory(0), m_memoryManager(source.m_memoryManager) { } XObject::~XObject() { } XObject::eObjectType XObject::getRealType() const { return m_objectType; } void XObject::referenced() { } double XObject::number( XPathExecutionContext& executionContext, const XalanNode& theNode) { const GetCachedString theGuard(executionContext); XalanDOMString& theString = theGuard.get(); XObject::string(theNode, executionContext, theString); return XObject::number(theString, executionContext.getMemoryManager()); } double XObject::number( XPathExecutionContext& executionContext, const NodeRefListBase& theNodeList) { if (theNodeList.getLength() == 0) { return number(s_emptyString, executionContext.getMemoryManager()); } else { assert(theNodeList.item(0) != 0); return number(executionContext, *theNodeList.item(0)); } } void XObject::dereferenced() { if (m_factory != 0) { m_factory->returnObject(this); } } double XObject::num(XPathExecutionContext& executionContext) const { return DoubleSupport::toDouble(str(executionContext), *m_memoryManager); } double XObject::num() const { return DoubleSupport::toDouble(str(), *m_memoryManager); } static const XalanDocumentFragment* const s_dummyFragment = 0; const XalanDocumentFragment& XObject::rtree() const { throwInvalidConversionException(s_stringString); // This is only to satisfy the compiler. return *s_dummyFragment; } static const NodeRefList s_dummyList(XalanMemMgrs::getDummyMemMgr()); static const NodeRefListBase* const s_dummyNodeset= 0; const NodeRefListBase& XObject::nodeset() const { throwInvalidConversionException(s_stringString); // This is only to satisfy the compiler. return *s_dummyNodeset; } inline void getStringFromNode( const XalanNode& theNode, XPathExecutionContext& theContext, XalanDOMString& theString) { DOMServices::getNodeData(theNode, theContext, theString); } struct getStringFromNodeFunction { getStringFromNodeFunction(XPathExecutionContext& executionContext) : m_executionContext(executionContext) { } void operator()( const XalanNode& theNode, XalanDOMString& theString) const { getStringFromNode(theNode, m_executionContext, theString); } private: XPathExecutionContext& m_executionContext; }; typedef XObject::GetCachedString GetCachedString; struct getNumberFromNodeFunction { getNumberFromNodeFunction(XPathExecutionContext& executionContext) : m_executionContext(executionContext) { } double operator()(const XalanNode& theNode) const { return getNumberFromNode(theNode); } void operator()( const XalanNode& theNode, double& theNumber) const { getNumberFromNode(theNode, theNumber); } private: double getNumberFromNode(const XalanNode& theNode) const { const GetCachedString theString(m_executionContext); getStringFromNode(theNode, m_executionContext, theString.get()); return DoubleSupport::toDouble(theString.get(), m_executionContext.getMemoryManager()); } void getNumberFromNode( const XalanNode& theNode, double& theNumber) const { theNumber = getNumberFromNode(theNode); } XPathExecutionContext& m_executionContext; }; struct equalsDOMString { equalsDOMString(XPathExecutionContext& theExecutionContext) : m_executionContext(theExecutionContext) { } bool operator()( const XalanDOMString& theLHS, const XalanDOMString& theRHS) const { return DOMStringEqualsFunction()(theLHS, theRHS); } bool operator()( const XObject& theLHS, const XalanDOMString& theRHS) const { return DOMStringEqualsFunction()(theLHS.str(m_executionContext), theRHS); } bool operator()( const XalanDOMString& theLHS, const XObject& theRHS) const { return DOMStringEqualsFunction()(theLHS, theRHS.str(m_executionContext)); } private: XPathExecutionContext& m_executionContext; }; struct notEqualsDOMString { notEqualsDOMString(XPathExecutionContext& theExecutionContext) : m_executionContext(theExecutionContext) { } bool operator()( const XalanDOMString& theLHS, const XalanDOMString& theRHS) const { return DOMStringNotEqualsFunction()(theLHS, theRHS); } bool operator()( const XObject& theLHS, const XalanDOMString& theRHS) const { return DOMStringNotEqualsFunction()(theLHS.str(m_executionContext), theRHS); } bool operator()( const XalanDOMString& theLHS, const XObject& theRHS) const { return DOMStringNotEqualsFunction()(theLHS, theRHS.str(m_executionContext)); } private: XPathExecutionContext& m_executionContext; }; struct lessThanDOMString { lessThanDOMString(XPathExecutionContext& theExecutionContext) : m_executionContext(theExecutionContext) { } bool operator()( const XalanDOMString& theLHS, const XalanDOMString& theRHS) const { return DoubleSupport::lessThan( DOMStringToDouble(theLHS, m_executionContext.getMemoryManager()), DOMStringToDouble(theRHS, m_executionContext.getMemoryManager())); } bool operator()( const XObject& theLHS, const XalanDOMString& theRHS) const { return DoubleSupport::lessThan( theLHS.num(m_executionContext), DOMStringToDouble(theRHS, m_executionContext.getMemoryManager())); } bool operator()( const XalanDOMString& theLHS, const XObject& theRHS) const { return DoubleSupport::lessThan( DOMStringToDouble(theLHS, m_executionContext.getMemoryManager()), theRHS.num(m_executionContext)); } private: XPathExecutionContext& m_executionContext; }; struct lessThanOrEqualDOMString { lessThanOrEqualDOMString(XPathExecutionContext& theExecutionContext) : m_executionContext(theExecutionContext) { } bool operator()( const XalanDOMString& theLHS, const XalanDOMString& theRHS) const { return DoubleSupport::lessThanOrEqual( DOMStringToDouble(theLHS, m_executionContext.getMemoryManager()), DOMStringToDouble(theRHS, m_executionContext.getMemoryManager())); } bool operator()( const XObject& theLHS, const XalanDOMString& theRHS) const { return DoubleSupport::lessThanOrEqual( theLHS.num(m_executionContext), DOMStringToDouble(theRHS, m_executionContext.getMemoryManager())); } bool operator()( const XalanDOMString& theLHS, const XObject& theRHS) const { return DoubleSupport::lessThanOrEqual( DOMStringToDouble(theLHS, m_executionContext.getMemoryManager()), theRHS.num(m_executionContext)); } private: XPathExecutionContext& m_executionContext; }; struct greaterThanDOMString { greaterThanDOMString(XPathExecutionContext& theExecutionContext) : m_executionContext(theExecutionContext) { } bool operator()( const XalanDOMString& theLHS, const XalanDOMString& theRHS) const { return DoubleSupport::greaterThan( DOMStringToDouble(theLHS, m_executionContext.getMemoryManager()), DOMStringToDouble(theRHS, m_executionContext.getMemoryManager())); } bool operator()( const XObject& theLHS, const XalanDOMString& theRHS) const { return DoubleSupport::greaterThan( theLHS.num(m_executionContext), DOMStringToDouble(theRHS, m_executionContext.getMemoryManager())); } bool operator()( const XalanDOMString& theLHS, const XObject& theRHS) const { return DoubleSupport::greaterThan( DOMStringToDouble(theLHS, m_executionContext.getMemoryManager()), theRHS.num(m_executionContext)); } private: XPathExecutionContext& m_executionContext; }; struct greaterThanOrEqualDOMString { greaterThanOrEqualDOMString(XPathExecutionContext& theExecutionContext) : m_executionContext(theExecutionContext) { } bool operator()( const XalanDOMString& theLHS, const XalanDOMString& theRHS) const { return DoubleSupport::greaterThanOrEqual( DOMStringToDouble(theLHS, m_executionContext.getMemoryManager()), DOMStringToDouble(theRHS, m_executionContext.getMemoryManager())); } bool operator()( const XObject& theLHS, const XalanDOMString& theRHS) const { return DoubleSupport::greaterThanOrEqual( theLHS.num(m_executionContext), DOMStringToDouble(theRHS, m_executionContext.getMemoryManager())); } bool operator()( const XalanDOMString& theLHS, const XObject& theRHS) const { return DoubleSupport::greaterThanOrEqual( DOMStringToDouble(theLHS, m_executionContext.getMemoryManager()), theRHS.num(m_executionContext)); } private: XPathExecutionContext& m_executionContext; }; template inline bool doCompareNodeSets( const NodeRefListBase& theLHSNodeSet, const NodeRefListBase& theRHSNodeSet, const TypeFunction& theTypeFunction, const CompareFunction& theCompareFunction, XPathExecutionContext& executionContext) { // Excerpt from: // XML Path Language (XPath) Version 1.0 // W3C Recommendation 16 November 1999 // http://www.w3.org/TR/xpath#booleans // Editors: // James Clark // Steve DeRose (Inso Corp. and Brown University) // // If both objects to be compared are node-sets, then the comparison // will be true if and only if there is a node in the first node-set // and a node in the second node-set such that the result of performing // the comparison on the string-values of the two nodes is true. // Note this little gem from the draft: // NOTE: If $x is bound to a node-set, then $x="foo" // does not mean the same as not($x!="foo"): the former // is true if and only if some node in $x has the string-value // foo; the latter is true if and only if all nodes in $x have // the string-value foo. bool theResult = false; const NodeRefListBase::size_type len1 = theLHSNodeSet.getLength(); if (len1 > 0) { const NodeRefListBase::size_type len2 = theRHSNodeSet.getLength(); if (len2 > 0) { const GetCachedString s1(executionContext); const GetCachedString s2(executionContext); for(NodeRefListBase::size_type i = 0; i < len1 && theResult == false; i++) { const XalanNode* const theLHSNode = theLHSNodeSet.item(i); assert(theLHSNode != 0); theTypeFunction(*theLHSNode, s1.get()); for(NodeRefListBase::size_type k = 0; k < len2 && theResult == false; k++) { const XalanNode* const theRHSNode = theRHSNodeSet.item(k); assert(theRHSNode != 0); theTypeFunction(*theRHSNode, s2.get()); if(theCompareFunction(s1.get(), s2.get()) == true) { theResult = true; } s2.get().clear(); } s1.get().clear(); } } } return theResult; } template inline bool doCompareString( const NodeRefListBase& theLHSNodeSet, const StringFunction& theStringFunction, const XObject& theRHS, const CompareFunction& theCompareFunction, XPathExecutionContext& executionContext) { bool theResult = false; const NodeRefListBase::size_type len1 = theLHSNodeSet.getLength(); XPathExecutionContext::GetCachedString theGuard(executionContext); XalanDOMString& theLHS = theGuard.get(); for(NodeRefListBase::size_type i = 0; i < len1 && theResult == false; i++) { const XalanNode* const theLHSNode = theLHSNodeSet.item(i); assert(theLHSNode != 0); theStringFunction(*theLHSNode, theLHS); if (theCompareFunction(theLHS, theRHS) == true) { theResult = true; } theLHS.clear(); } return theResult; } template inline bool doCompareNumber( const NodeRefListBase& theLHSNodeSet, const NumberFunction& theNumberFunction, const double theRHS, const CompareFunction& theCompareFunction) { bool theResult = false; const NodeRefListBase::size_type len1 = theLHSNodeSet.getLength(); for(NodeRefListBase::size_type i = 0; i < len1 && theResult == false; i++) { const XalanNode* const theLHSNode = theLHSNodeSet.item(i); assert(theLHSNode != 0); const double theLHS = theNumberFunction(*theLHSNode); if (theCompareFunction(theLHS, theRHS) == true) { theResult = true; } } return theResult; } template inline bool compareNodeSets( const XObject& theLHS, const XObject& theRHS, XObject::eObjectType theRHSType, const StringCompareFunction& theStringCompareFunction, const NumberCompareFunction& theNumberCompareFunction, XPathExecutionContext& executionContext) { bool theResult = false; if(theRHSType == XObject::eTypeNodeSet) { // Compare as node sets... theResult = doCompareNodeSets( theLHS.nodeset(), theRHS.nodeset(), getStringFromNodeFunction(executionContext), theStringCompareFunction, executionContext); } else if(theRHSType == XObject::eTypeBoolean) { // Excerpt from: // XML Path Language (XPath) Version 1.0 // W3C Recommendation 16 November 1999 // http://www.w3.org/TR/xpath#booleans // Editors: // James Clark // Steve DeRose (Inso Corp. and Brown University) // // If one object to be compared is a node-set and the other is a boolean, // then the comparison will be true if and only if the result of // performing the comparison on the boolean and on the result of // converting the node-set to a boolean using the boolean function // is true. const double num1 = theLHS.boolean(executionContext) == true ? 1.0 : 0.0; theResult = theNumberCompareFunction(num1, theRHS.num(executionContext)); } else if(theRHSType == XObject::eTypeNumber) { // Excerpt from: // XML Path Language (XPath) Version 1.0 // W3C Recommendation 16 November 1999 // http://www.w3.org/TR/xpath#booleans // Editors: // James Clark // Steve DeRose (Inso Corp. and Brown University) // // If one object to be compared is a node-set and the other is a number, // then the comparison will be true if and only if there is a // node in the node-set such that the result of performing the // comparison on the number to be compared and on the result of // converting the string-value of that node to a number using // the number function is true. theResult = doCompareNumber( theLHS.nodeset(), getNumberFromNodeFunction(executionContext), theRHS.num(executionContext), theNumberCompareFunction); } else if(theRHSType == XObject::eTypeResultTreeFrag) { // hmmm... const double theRHSNumber = theRHS.num(executionContext); if(DoubleSupport::isNaN(theRHSNumber) == false) { // Compare as number... theResult = doCompareNumber( theLHS.nodeset(), getNumberFromNodeFunction(executionContext), theRHS.num(executionContext), theNumberCompareFunction); } else { // Compare as string... theResult = doCompareString( theLHS.nodeset(), getStringFromNodeFunction(executionContext), theRHS, theStringCompareFunction, executionContext); } } else if(theRHSType == XObject::eTypeString) { // Excerpt from: // XML Path Language (XPath) Version 1.0 // W3C Recommendation 16 November 1999 // http://www.w3.org/TR/xpath#booleans // Editors: // James Clark // Steve DeRose (Inso Corp. and Brown University) // // If one object to be compared is a node-set and the other is a // string, then the comparison will be true if and only if there // is a node in the node-set such that the result of performing // the comparison on the string-value of the node and the other // string is true. theResult = doCompareString( theLHS.nodeset(), getStringFromNodeFunction(executionContext), theRHS, theStringCompareFunction, executionContext); } else if (theRHSType != XObject::eTypeUnknown) { assert(false); } return theResult; } inline bool equalNodeSet( const XObject& theLHS, const XObject& theRHS, XObject::eObjectType theRHSType, XPathExecutionContext& executionContext) { return compareNodeSets( theLHS, theRHS, theRHSType, equalsDOMString(executionContext), DoubleSupport::equalFunction(), executionContext); } inline bool notEqualNodeSet( const XObject& theLHS, const XObject& theRHS, XObject::eObjectType theRHSType, XPathExecutionContext& executionContext) { return compareNodeSets( theLHS, theRHS, theRHSType, notEqualsDOMString(executionContext), DoubleSupport::notEqualFunction(), executionContext); } inline bool lessThanNodeSet( const XObject& theLHS, const XObject& theRHS, XObject::eObjectType theRHSType, XPathExecutionContext& executionContext) { return compareNodeSets( theLHS, theRHS, theRHSType, lessThanDOMString(executionContext), DoubleSupport::lessThanFunction(), executionContext); } inline bool lessThanOrEqualNodeSet( const XObject& theLHS, const XObject& theRHS, XObject::eObjectType theRHSType, XPathExecutionContext& executionContext) { return compareNodeSets( theLHS, theRHS, theRHSType, lessThanOrEqualDOMString(executionContext), DoubleSupport::lessThanOrEqualFunction(), executionContext); } inline bool greaterThanNodeSet( const XObject& theLHS, const XObject& theRHS, XObject::eObjectType theRHSType, XPathExecutionContext& executionContext) { return compareNodeSets( theLHS, theRHS, theRHSType, greaterThanDOMString(executionContext), DoubleSupport::greaterThanFunction(), executionContext); } inline bool greaterThanOrEqualNodeSet( const XObject& theLHS, const XObject& theRHS, XObject::eObjectType theRHSType, XPathExecutionContext& executionContext) { return compareNodeSets( theLHS, theRHS, theRHSType, greaterThanOrEqualDOMString(executionContext), DoubleSupport::greaterThanOrEqualFunction(), executionContext); } bool XObject::equals( const XObject& theRHS, XPathExecutionContext& executionContext) const { if (this == &theRHS) { return true; } else { const eObjectType theLHSType = getType(); if (theLHSType == eTypeUnknown) { return this == &theRHS ? true : false; } else if (theLHSType == eTypeNull) { return theRHS.getType() == eTypeNull ? true : false; } else if (theLHSType == eTypeNodeSet) { return equalNodeSet(*this, theRHS, theRHS.getType(), executionContext); } else { const eObjectType theRHSType = theRHS.getType(); if (theRHSType == eTypeNodeSet) { return equalNodeSet(theRHS, *this, theLHSType, executionContext); } else { if (theLHSType == eTypeBoolean || theRHSType == eTypeBoolean) { return boolean(executionContext) == theRHS.boolean(executionContext); } else if (theLHSType == eTypeNumber || theRHSType == eTypeNumber) { return DoubleSupport::equal(num(executionContext), theRHS.num(executionContext)); } else { return str(executionContext) == theRHS.str(executionContext); } } } } } bool XObject::notEquals( const XObject& theRHS, XPathExecutionContext& executionContext) const { if (this == &theRHS) { return false; } else { const eObjectType theLHSType = getType(); if (theLHSType == eTypeUnknown) { return this == &theRHS ? false : true; } else if (theLHSType == eTypeNull) { return theRHS.getType() == eTypeNull ? false : true; } else if (theLHSType == eTypeNodeSet) { return notEqualNodeSet(*this, theRHS, theRHS.getType(), executionContext); } else { const eObjectType theRHSType = theRHS.getType(); if (theRHSType == eTypeNodeSet) { return notEqualNodeSet(theRHS, *this, theLHSType, executionContext); } else { if (theLHSType == eTypeBoolean || theRHSType == eTypeBoolean) { return boolean(executionContext) != theRHS.boolean(executionContext); } else if (theLHSType == eTypeNumber || theRHSType == eTypeNumber) { return DoubleSupport::notEqual(num(executionContext), theRHS.num(executionContext)); } else { return str(executionContext) != theRHS.str(executionContext); } } } } } bool XObject::lessThan( const XObject& theRHS, XPathExecutionContext& executionContext) const { if (this == &theRHS) { return false; } else { const eObjectType theLHSType = getType(); if (theLHSType == eTypeNull || theLHSType == eTypeUnknown) { return false; } else if (theLHSType == eTypeNodeSet) { return lessThanNodeSet(*this, theRHS, theRHS.getType(), executionContext); } else if (theRHS.getType() == eTypeNodeSet) { return greaterThanNodeSet(theRHS, *this, theLHSType, executionContext); } else { return DoubleSupport::lessThan(num(executionContext), theRHS.num(executionContext)); } } } bool XObject::lessThanOrEquals( const XObject& theRHS, XPathExecutionContext& executionContext) const { if (this == &theRHS) { return false; } else { const eObjectType theLHSType = getType(); if (theLHSType == eTypeNull || theLHSType == eTypeUnknown) { return false; } else if (theLHSType == eTypeNodeSet) { return lessThanOrEqualNodeSet(*this, theRHS, theRHS.getType(), executionContext); } else if (theRHS.getType() == eTypeNodeSet) { return greaterThanOrEqualNodeSet(theRHS, *this, theLHSType, executionContext); } else { return DoubleSupport::lessThanOrEqual(num(executionContext), theRHS.num(executionContext)); } } } bool XObject::greaterThan( const XObject& theRHS, XPathExecutionContext& executionContext) const { if (this == &theRHS) { return false; } else { const eObjectType theLHSType = getType(); if (theLHSType == eTypeNull || theLHSType == eTypeUnknown) { return false; } else if (theLHSType == eTypeNodeSet) { return greaterThanNodeSet(*this, theRHS, theRHS.getType(), executionContext); } else if (theRHS.getType() == eTypeNodeSet) { return lessThanNodeSet(theRHS, *this, theLHSType, executionContext); } else { return DoubleSupport::greaterThan(num(executionContext), theRHS.num(executionContext)); } } } bool XObject::greaterThanOrEquals( const XObject& theRHS, XPathExecutionContext& executionContext) const { if (this == &theRHS) { return false; } else { const eObjectType theLHSType = getType(); if (theLHSType == eTypeNull || theLHSType == eTypeUnknown) { return false; } else if (theLHSType == eTypeNodeSet) { return greaterThanOrEqualNodeSet(*this, theRHS, theRHS.getType(), executionContext); } else if (theRHS.getType() == eTypeNodeSet) { return lessThanOrEqualNodeSet(theRHS, *this, theLHSType, executionContext); } else { return DoubleSupport::greaterThanOrEqual(num(executionContext), theRHS.num(executionContext)); } } } void XObject::throwInvalidConversionException(const XalanDOMString& theTargetType) const { assert(m_memoryManager != 0); MemoryManager& theMemoryManager = XalanMemoryManager::getExceptionMemoryManager(*m_memoryManager); XalanDOMString theBuffer(theMemoryManager); throw XObjectInvalidConversionException( theMemoryManager, getTypeString(), theTargetType, theBuffer); } const XalanDOMChar XObject::XObjectException::s_type[] = { XalanUnicode::charLetter_X, XalanUnicode::charLetter_O, XalanUnicode::charLetter_b, XalanUnicode::charLetter_j, XalanUnicode::charLetter_e, XalanUnicode::charLetter_c, XalanUnicode::charLetter_t, XalanUnicode::charLetter_E, XalanUnicode::charLetter_x, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_p, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; XObject::XObjectException::XObjectException( const XalanDOMString& theMessage, MemoryManager& theManager) : XalanXPathException( theMessage, theManager) { } XObject::XObjectException::XObjectException( const XalanDOMString& theMessage, MemoryManager& theManager, const Locator* theLocator) : XalanXPathException( theMessage, theManager, theLocator) { } XObject::XObjectException::XObjectException(const XObjectException& other): XalanXPathException(other) { } XObject::XObjectException::~XObjectException() { } const XalanDOMChar* XObject::XObjectException::getType() const { return s_type; } const XalanDOMChar XObject::XObjectInvalidConversionException::s_type[] = { XalanUnicode::charLetter_X, XalanUnicode::charLetter_O, XalanUnicode::charLetter_b, XalanUnicode::charLetter_j, XalanUnicode::charLetter_e, XalanUnicode::charLetter_c, XalanUnicode::charLetter_t, XalanUnicode::charLetter_I, XalanUnicode::charLetter_n, XalanUnicode::charLetter_v, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_i, XalanUnicode::charLetter_d, XalanUnicode::charLetter_C, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, XalanUnicode::charLetter_v, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, XalanUnicode::charLetter_E, XalanUnicode::charLetter_x, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_p, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; XObject::XObjectInvalidConversionException::XObjectInvalidConversionException( MemoryManager& memoryManager, const XalanDOMString& fromType, const XalanDOMString& toType, XalanDOMString& buffer) : XObjectException( formatErrorString( fromType, toType, buffer), memoryManager) { } XObject::XObjectInvalidConversionException::XObjectInvalidConversionException( const XObjectInvalidConversionException& other) : XObjectException(other) { } XObject::XObjectInvalidConversionException::~XObjectInvalidConversionException() { } const XalanDOMChar* XObject::XObjectInvalidConversionException::getType() const { return s_type; } const XalanDOMString& XObject::XObjectInvalidConversionException::formatErrorString( const XalanDOMString& fromType, const XalanDOMString& toType, XalanDOMString& theResult) { return XalanMessageLoader::getMessage( theResult, XalanMessages::CannotConvertTypetoType_2Param, fromType, toType); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XPathEnvSupportDefault.cpp0000664000175000000640000003062111731656102022363 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XPathEnvSupportDefault.hpp" #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include #include #include #include #include #include "XalanXPathException.hpp" #include "XObject.hpp" #include "XObjectFactory.hpp" #include "XPath.hpp" #include "XPathExecutionContext.hpp" XALAN_USING_STD(cerr) XALAN_USING_STD(endl) XALAN_CPP_NAMESPACE_BEGIN XPathEnvSupportDefault::NamespaceFunctionTablesType XPathEnvSupportDefault::s_externalFunctions(XalanMemMgrs::getDummyMemMgr()); const XalanDOMString XPathEnvSupportDefault::s_emptyString(XalanMemMgrs::getDummyMemMgr()); void XPathEnvSupportDefault::initialize(MemoryManager& theManager) { XPathEnvSupportDefault::NamespaceFunctionTablesType tmpMap(theManager); s_externalFunctions.swap(tmpMap); } void XPathEnvSupportDefault::terminate() { XALAN_USING_STD(for_each) // Clean up the extension namespaces vector for_each(s_externalFunctions.begin(), s_externalFunctions.end(), NamespaceFunctionTableDeleteFunctor(s_externalFunctions.getMemoryManager())); NamespaceFunctionTablesType temp(XalanMemMgrs::getDummyMemMgr()); temp.swap(s_externalFunctions); } XPathEnvSupportDefault::XPathEnvSupportDefault(MemoryManager& theManager) : XPathEnvSupport(), m_sourceDocs(theManager), m_externalFunctions(theManager), m_memoryManager(theManager), m_pw(0) { } XPathEnvSupportDefault::~XPathEnvSupportDefault() { XALAN_USING_STD(for_each) // Clean up the extension namespaces vector for_each(m_externalFunctions.begin(), m_externalFunctions.end(), NamespaceFunctionTableDeleteFunctor(m_externalFunctions.getMemoryManager())); NamespaceFunctionTablesType temp(XalanMemMgrs::getDummyMemMgr()); temp.swap(m_externalFunctions); } void XPathEnvSupportDefault::updateFunctionTable( NamespaceFunctionTablesType& theTable, const XalanDOMString& theNamespace, const XalanDOMString& functionName, const Function* function) { // See if there's a table for that namespace... const NamespaceFunctionTablesType::iterator i = theTable.find(theNamespace); if (i == theTable.end()) { // The namespace was not found. If function is not // 0, then add a clone of the function. if (function != 0) { theTable[theNamespace][functionName] = function->clone(theTable.getMemoryManager()); } } else { // There is already a table for the namespace, // so look for the function... const FunctionTableType::iterator j = (*i).second.find(functionName); if (j == (*i).second.end()) { // The function was not found. If function is not // 0, then add a clone of the function. if (function != 0) { (*i).second[functionName] = function->clone(theTable.getMemoryManager()); } } else { // Found it, so delete the function... const_cast((*j).second)->~Function(); MemoryManager& theManager = theTable.getMemoryManager(); theManager.deallocate((void*)(*j).second); // If function is not 0, then we update // the entry. Otherwise, we erase it... if (function != 0) { // Update it... (*j).second = function->clone(theTable.getMemoryManager()); } else { // Erase it... (*i).second.erase(j); } } } } void XPathEnvSupportDefault::installExternalFunctionGlobal( const XalanDOMString& theNamespace, const XalanDOMString& functionName, const Function& function) { updateFunctionTable(s_externalFunctions, theNamespace, functionName, &function); } void XPathEnvSupportDefault::uninstallExternalFunctionGlobal( const XalanDOMString& theNamespace, const XalanDOMString& functionName) { updateFunctionTable(s_externalFunctions, theNamespace, functionName, 0); } void XPathEnvSupportDefault::installExternalFunctionLocal( const XalanDOMString& theNamespace, const XalanDOMString& functionName, const Function& function) { updateFunctionTable(m_externalFunctions, theNamespace, functionName, &function); } void XPathEnvSupportDefault::uninstallExternalFunctionLocal( const XalanDOMString& theNamespace, const XalanDOMString& functionName) { updateFunctionTable(m_externalFunctions, theNamespace, functionName, 0); } void XPathEnvSupportDefault::reset() { m_sourceDocs.clear(); } XalanDocument* XPathEnvSupportDefault::parseXML( MemoryManager& /* theManager */, const XalanDOMString& /* urlString */, const XalanDOMString& /* base */, ErrorHandler* /* theErrorHandler */) { return 0; } XalanDocument* XPathEnvSupportDefault::getSourceDocument(const XalanDOMString& theURI) const { const SourceDocsTableType::const_iterator i = m_sourceDocs.find(theURI); if (i == m_sourceDocs.end()) { return 0; } else { return (*i).second; } } void XPathEnvSupportDefault::setSourceDocument( const XalanDOMString& theURI, XalanDocument* theDocument) { m_sourceDocs[theURI] = theDocument; } const XalanDOMString& XPathEnvSupportDefault::findURIFromDoc(const XalanDocument* owner) const { SourceDocsTableType::const_iterator i = m_sourceDocs.begin(); bool fFound = false; while(i != m_sourceDocs.end() && fFound == false) { if ((*i).second == owner) { fFound = true; } else { ++i; } } return fFound == false ? s_emptyString : (*i).first; } bool XPathEnvSupportDefault::elementAvailable( const XalanDOMString& /* theNamespace */, const XalanDOMString& /* elementName */) const { return false; } bool XPathEnvSupportDefault::functionAvailable( const XalanDOMString& theNamespace, const XalanDOMString& functionName) const { bool theResult = false; // Any function without a namespace prefix is considered // to be an intrinsic function. if (theNamespace.empty() == true) { theResult = XPath::isInstalledFunction(functionName); } else { const Function* const theFunction = findFunction( theNamespace, functionName); if (theFunction != 0) { theResult = true; } } return theResult; } const Function* XPathEnvSupportDefault::findFunction( const XalanDOMString& theNamespace, const XalanDOMString& functionName) const { // First, look locally... const Function* theFunction = findFunction( m_externalFunctions, theNamespace, functionName); if (theFunction == 0) { // Not found, so look in the global space... theFunction = findFunction( s_externalFunctions, theNamespace, functionName); } return theFunction; } const Function* XPathEnvSupportDefault::findFunction( const NamespaceFunctionTablesType& theTable, const XalanDOMString& theNamespace, const XalanDOMString& functionName) const { const Function* theFunction = 0; // See if there's a table for that namespace... const NamespaceFunctionTablesType::const_iterator i = theTable.find(theNamespace); if (i != theTable.end()) { // There is a table for the namespace, // so look for the function... const FunctionTableType::const_iterator j = (*i).second.find(functionName); if (j != (*i).second.end()) { // Found the function... assert((*j).second != 0); theFunction = (*j).second; } } return theFunction; } XObjectPtr XPathEnvSupportDefault::extFunction( XPathExecutionContext& executionContext, const XalanDOMString& theNamespace, const XalanDOMString& functionName, XalanNode* context, const XObjectArgVectorType& argVec, const Locator* locator) const { const Function* const theFunction = findFunction(theNamespace, functionName); if (theFunction != 0) { return theFunction->execute( executionContext, context, argVec, locator); } else { XalanDOMString theFunctionName(executionContext.getMemoryManager()); if(theNamespace.empty() == false) { theFunctionName += theNamespace; theFunctionName += DOMServices::s_XMLNamespaceSeparatorString; } theFunctionName += functionName; const XPathExecutionContext::GetCachedString theGuard(executionContext); throw XPathExceptionFunctionNotAvailable( theFunctionName, theGuard.get(), locator); // dummy return value... return XObjectPtr(); } } void XPathEnvSupportDefault::setPrintWriter(PrintWriter* pw) { m_pw = pw; } void XPathEnvSupportDefault::problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode) { if (m_pw != 0) { defaultFormat( *m_pw, source, classification, msg, locator, sourceNode); } if (classification == eError) { throw XalanXPathException( msg, getMemoryManager(), locator); } } void XPathEnvSupportDefault::problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode) { if (m_pw != 0) { defaultFormat( *m_pw, source, classification, msg, sourceNode); } if (classification == eError) { throw XalanXPathException( msg, getMemoryManager(), 0); } } XPathEnvSupportDefault::NamespaceFunctionTableDeleteFunctor::NamespaceFunctionTableDeleteFunctor(MemoryManager& theManager) : m_memoryManager(theManager) { } void XPathEnvSupportDefault::NamespaceFunctionTableDeleteFunctor::operator()(const NamespaceFunctionTablesInnerType::value_type& thePair) const { FunctionTableInnerType::const_iterator i = thePair.second.begin(); while (i != thePair.second.end()) { XalanDestroy( m_memoryManager, const_cast((*i).second)); ++i; } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XObjectFactoryDefault.hpp0000664000175000000640000001454711731656102022175 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XOBJECTFACTORYDEFAULT_HEADER_GUARD_1357924680) #define XOBJECTFACTORYDEFAULT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include // Base class header file... #include #include #include #include #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN /** * This class handles the creation of XObjects and manages their lifetime. */ class XALAN_XPATH_EXPORT XObjectFactoryDefault : public XObjectFactory { public: // Default block size for strings. enum { eDefaultXStringBlockSize = 10, eDefaultXNumberBlockSize = 10, eDefaultXNodeSetBlockSize = 10, eDefaultXNodeSetNodeProxyBlockSize = 5, eXNumberCacheMax = 40, eXNodeSetCacheMax = 40, eXStringCacheMax = 40, eXResultTreeFragCacheMax = 40 }; typedef XNodeSetAllocator::size_type size_type; /** * Construct a factory for creating XObjects. * * @param theXStringBlockSize allocation block size * @param theXNumberBlockSize allocation block size * @param theXNodeSetBlockSize allocation block size */ explicit XObjectFactoryDefault( MemoryManager& theManager XALAN_DEFAULT_MEMMGR, size_type theXStringBlockSize = eDefaultXStringBlockSize, size_type theXNumberBlockSize = eDefaultXNumberBlockSize, size_type theXNodeSetBlockSize = eDefaultXNodeSetBlockSize, size_type theXNodeSetNodeProxyBlockSize = eDefaultXNodeSetNodeProxyBlockSize); static XObjectFactoryDefault* create( MemoryManager& theManager, size_type theXStringBlockSize = eDefaultXStringBlockSize, size_type theXNumberBlockSize = eDefaultXNumberBlockSize, size_type theXNodeSetBlockSize = eDefaultXNodeSetBlockSize, size_type theXNodeSetNodeProxyBlockSize = eDefaultXNodeSetNodeProxyBlockSize); virtual ~XObjectFactoryDefault(); MemoryManager& getMemoryManager() { return m_xobjects.getMemoryManager(); } // These methods are inherited from XObjectFactory ... virtual void reset(); virtual const XObjectPtr createBoolean(bool theValue); virtual const XObjectPtr createNodeSet(BorrowReturnMutableNodeRefList& theValue); virtual const XObjectPtr createNodeSet(XalanNode* theValue); virtual const XObjectPtr createNumber(double theValue); virtual const XObjectPtr createNumber(const XToken& theValue); virtual const XObjectPtr createString(const XalanDOMString& theValue); virtual const XObjectPtr createString(const XalanDOMChar* theValue); virtual const XObjectPtr createString( const XalanDOMChar* theValue, XalanSize_t theLength); virtual const XObjectPtr createString(const XToken& theValue); virtual const XObjectPtr createStringReference(const XalanDOMString& theValue); virtual const XObjectPtr createStringAdapter( const XObjectPtr& theValue, XPathExecutionContext& theExecutionContext); virtual const XObjectPtr createString(GetCachedString& theValue); virtual const XObjectPtr createUnknown(const XalanDOMString& theValue); virtual void holdReference(XObjectPtr theValue); typedef XalanVector XObjectCollectionType; typedef XalanVector XNumberCacheType; typedef XalanVector XNodeSetCacheType; typedef XalanVector XStringCacheType; protected: virtual bool doReturnObject( XObject* theXObject, bool fInReset = false); private: // Not implemented... XObjectFactoryDefault(const XObjectFactoryDefault&); XObjectFactoryDefault& operator=(const XObjectFactoryDefault&); bool operator==(const XObjectFactoryDefault&) const; // Data members... // This one's first, since it may be be holding references // to objects in other allocators. XStringAdapterAllocator m_xstringAdapterAllocator; XStringAllocator m_xstringAllocator; XStringCachedAllocator m_xstringCachedAllocator; XStringReferenceAllocator m_xstringReferenceAllocator; XNumberAllocator m_xnumberAllocator; XNodeSetAllocator m_xnodesetAllocator; XNodeSetNodeProxyAllocator m_xnodesetNodeProxyAllocator; XTokenNumberAdapterAllocator m_xtokenNumberAdapterAllocator; XTokenStringAdapterAllocator m_xtokenStringAdapterAllocator; XObjectCollectionType m_xobjects; XNumberCacheType m_xnumberCache; XNodeSetCacheType m_xnodesetCache; XStringCacheType m_xstringCache; XBoolean m_xbooleanFalse; XBoolean m_xbooleanTrue; XalanVector m_references; }; XALAN_CPP_NAMESPACE_END #endif // XOBJECTFACTORYDEFAULT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XStringAdapter.hpp0000664000175000000640000000564311731656102020676 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XSTRINGADAPTER_HEADER_GUARD_1357924680) #define XSTRINGADAPTER_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XStringAdapter : public XStringBase { public: typedef XStringBase ParentType; /** * Create a string XObject that will adapt another XObject to * behave like a string. The XObject holds a reference to the * other XObject. * * @param theValue value used to create object * @param theManager The MemoryManager instance to use * @param theExecutionContext The current XPathExecutionContext */ XStringAdapter( const XObjectPtr& val, MemoryManager& theManager, XPathExecutionContext& theExecutionContext); XStringAdapter( const XStringAdapter& source, MemoryManager& theManager); virtual ~XStringAdapter(); // These methods are inherited from XObject ... virtual const XalanDOMString& str(XPathExecutionContext& executionContext) const; virtual const XalanDOMString& str() const; virtual void str( XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( XPathExecutionContext& executionContext, XalanDOMString& theBuffer) const; virtual void str(XalanDOMString& theBuffer) const; virtual double stringLength(XPathExecutionContext& executionContext) const; protected: virtual eObjectType getRealType() const; private: // Not implemented XStringAdapter(const XStringAdapter& source); XStringAdapter(); const XObjectPtr m_value; }; XALAN_CPP_NAMESPACE_END #endif // XSTRINGADAPTER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XTokenStringAdapterAllocator.hpp0000664000175000000640000000613311731656102023533 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XTOKENSTRINGADAPTERALLOCATOR_INCLUDE_GUARD_1357924680) #define XTOKENSTRINGADAPTERALLOCATOR_INCLUDE_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XTokenStringAdapterAllocator { public: typedef XTokenStringAdapter object_type; typedef ReusableArenaAllocator ArenaAllocatorType; typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XTokenStringAdapterAllocator(MemoryManager& theManager, size_type theBlockCount); ~XTokenStringAdapterAllocator(); /** * Create an XTokenStringAdapter object from an XToken. * * @param theXToken The source XToken * * @return a pointer to string */ object_type* create(const XToken& theXToken); /** * Delete an XStringAdapter object from allocator. */ bool destroy(object_type* theString); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const object_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all XStringAdapter objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XTokenStringAdapterAllocator(const XTokenStringAdapterAllocator&); XTokenStringAdapterAllocator& operator=(const XTokenStringAdapterAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XTOKENSTRINGADAPTERALLOCATOR_INCLUDE_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XalanQNameByValueAllocator.cpp0000664000175000000640000000721211731656102023102 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanQNameByValueAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanQNameByValueAllocator::XalanQNameByValueAllocator( MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanQNameByValueAllocator::~XalanQNameByValueAllocator() { } XalanQNameByValueAllocator::data_type* XalanQNameByValueAllocator::create(const XalanQNameByValue& theSource) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type(theSource, m_allocator.getMemoryManager()); m_allocator.commitAllocation(theBlock); return theResult; } XalanQNameByValueAllocator::data_type* XalanQNameByValueAllocator::create( const XalanDOMString& theNamespaceURI, const XalanDOMString& theLocalPart) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type(theNamespaceURI, theLocalPart,m_allocator.getMemoryManager()); m_allocator.commitAllocation(theBlock); return theResult; } XalanQNameByValueAllocator::data_type* XalanQNameByValueAllocator::create( const XalanDOMString& qname, const NamespacesStackType& namespaces, const Locator* locator, bool fUseDefault) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type(qname, namespaces, m_allocator.getMemoryManager(),locator, fUseDefault); m_allocator.commitAllocation(theBlock); return theResult; } XalanQNameByValueAllocator::data_type* XalanQNameByValueAllocator::create( const XalanDOMChar* qname, const NamespacesStackType& namespaces, const Locator* locator, bool fUseDefault) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type(qname, namespaces, m_allocator.getMemoryManager(),locator, fUseDefault); m_allocator.commitAllocation(theBlock); return theResult; } XalanQNameByValueAllocator::data_type* XalanQNameByValueAllocator::create( const XalanDOMString& qname, const PrefixResolver* theResolver, const Locator* locator) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type(qname,m_allocator.getMemoryManager(), theResolver, locator); m_allocator.commitAllocation(theBlock); return theResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/FunctionSubstringBefore.hpp0000664000175000000640000000430411731656102022601 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONSUBSTRINGBEFORE_HEADER_GUARD_1357924680) #define FUNCTIONSUBSTRINGBEFORE_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file... #include XALAN_CPP_NAMESPACE_BEGIN /** * XPath implementation of "substring-before" function. */ class XALAN_XPATH_EXPORT FunctionSubstringBefore : public Function { public: typedef Function ParentType; FunctionSubstringBefore(); virtual ~FunctionSubstringBefore(); // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const XObjectPtr arg2, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionSubstringBefore* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: // Not implemented... FunctionSubstringBefore& operator=(const FunctionSubstringBefore&); bool operator==(const FunctionSubstringBefore&) const; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONSUBSTRINGBEFORE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XPathConstructionContextDefault.hpp0000664000175000000640000000561511731656102024307 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XPATHCONSTRUCTIONCONTEXTDEFAULT_HEADER_GUARD_1357924680) #define XPATHCONSTRUCTIONCONTEXTDEFAULT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include // Base class header file... #include XALAN_CPP_NAMESPACE_BEGIN /** * * An default implementation of an abtract class which provides support for * constructing the internal representation of an XPath. * */ class XALAN_XPATH_EXPORT XPathConstructionContextDefault : public XPathConstructionContext { public: /* * Construct an instance. */ XPathConstructionContextDefault(MemoryManager& theManager XALAN_DEFAULT_MEMMGR); static XPathConstructionContextDefault* create(MemoryManager& theManager); virtual ~XPathConstructionContextDefault(); // These interfaces are inherited from XPathConstructionContext... virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode); virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode); virtual void reset(); virtual const XalanDOMString& getPooledString(const XalanDOMString& theString); virtual const XalanDOMString& getPooledString( const XalanDOMChar* theString, XalanDOMString::size_type theLength = XalanDOMString::npos); virtual XalanDOMString& getCachedString(); virtual bool releaseCachedString(XalanDOMString& theString); private: XalanDOMStringPool m_stringPool; XalanDOMStringCache m_stringCache; }; XALAN_CPP_NAMESPACE_END #endif // XPATHCONSTRUCTIONCONTEXTDEFAULT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XObjectResultTreeFragProxy.hpp0000664000175000000640000000502011731656102023203 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XOBJECTRESULTTREEFRAGPROXY_HEADER_GUARD_1357924680) #define XOBJECTRESULTTREEFRAGPROXY_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XPathExecutionContext; class XALAN_XPATH_EXPORT XObjectResultTreeFragProxy : public XObjectResultTreeFragProxyBase { public: /** * Constructor. * * @param theXObject The XObject instance for which this is a proxy. * @param theManager The MemoryManager for this instance. * @param theExecutionContext An optional XPathExecutionContext instance. */ XObjectResultTreeFragProxy( const XObject& value, MemoryManager& theManager, XPathExecutionContext* theExecutionContext); virtual ~XObjectResultTreeFragProxy(); XPathExecutionContext* getExecutionContext() { return m_proxy.getExecutionContext(); } // These interfaces are inherited from XalanDocumentFragment... virtual XalanNode* getFirstChild() const; virtual XalanNode* getLastChild() const; private: // Not implemented... XObjectResultTreeFragProxy(const XObjectResultTreeFragProxy& theSource); XObjectResultTreeFragProxy& operator=(const XObjectResultTreeFragProxy& theRHS); bool operator==(const XObjectResultTreeFragProxy& theRHS); // Data members... mutable XObjectResultTreeFragProxyText m_proxy; }; XALAN_CPP_NAMESPACE_END #endif // XOBJECTRESULTTREEFRAGPROXY_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XObjectFactory.cpp0000664000175000000640000000204011731656102020644 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XObjectFactory.hpp" XALAN_CPP_NAMESPACE_BEGIN XObjectFactory::XObjectFactory(MemoryManager& theManager) : m_memoryManager(theManager) { } XObjectFactory::~XObjectFactory() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/FunctionNormalizeSpace.hpp0000664000175000000640000000606011731656102022413 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONNORMALIZE_HEADER_GUARD_1357924680) #define FUNCTIONNORMALIZE_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file... #include #include XALAN_CPP_NAMESPACE_BEGIN /** * XPath implementation of "normalize-space" function. */ class XALAN_XPATH_EXPORT FunctionNormalizeSpace : public Function { public: typedef Function ParentType; FunctionNormalizeSpace(); virtual ~FunctionNormalizeSpace(); // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const Locator* locator) const; virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionNormalizeSpace* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: bool needsNormalization(const XalanDOMString& theString) const; XObjectPtr normalize( XPathExecutionContext& executionContext, const XalanDOMString& theString) const { // A string contain the result... GetCachedString theResult(executionContext); return normalize(executionContext, theString, theResult); } XObjectPtr normalize( XPathExecutionContext& executionContext, const XObjectPtr& theArg) const; XObjectPtr normalize( XPathExecutionContext& executionContext, const XalanDOMString& theString, GetCachedString& theResult) const; // Not implemented... FunctionNormalizeSpace& operator=(const FunctionNormalizeSpace&); bool operator==(const FunctionNormalizeSpace&) const; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONNORMALIZE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/MutableNodeRefList.cpp0000664000175000000640000004301611731656102021456 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "MutableNodeRefList.hpp" #include #include #include #include #include #include #include #include #include "XPathExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN MutableNodeRefList::MutableNodeRefList(MemoryManager& theManager) : NodeRefList(theManager), m_order(eUnknownOrder) { } MutableNodeRefList* MutableNodeRefList::create(MemoryManager& theManager) { MutableNodeRefList* theInstance = 0; return XalanConstruct( theManager, theInstance, theManager); } MutableNodeRefList::MutableNodeRefList( const MutableNodeRefList& theSource, MemoryManager& theManager) : NodeRefList(theSource, theManager), m_order(theSource.m_order) { } MutableNodeRefList::MutableNodeRefList( const NodeRefListBase& theSource, MemoryManager& theManager) : NodeRefList(theSource, theManager), m_order(eUnknownOrder) { } MutableNodeRefList::~MutableNodeRefList() { } MutableNodeRefList& MutableNodeRefList::operator=(const MutableNodeRefList& theRHS) { if (this != &theRHS) { // Chain up... NodeRefList::operator=(theRHS); m_order = theRHS.m_order; } return *this; } MutableNodeRefList& MutableNodeRefList::operator=(const NodeRefList& theRHS) { if (this != &theRHS) { // Chain up... NodeRefList::operator=(theRHS); m_order = eUnknownOrder; } return *this; } MutableNodeRefList& MutableNodeRefList::operator=(const NodeRefListBase& theRHS) { if (this != &theRHS) { // Chain up... NodeRefList::operator=(theRHS); m_order = eUnknownOrder; } return *this; } MutableNodeRefList& MutableNodeRefList::operator=(const XalanNodeList* theRHS) { clear(); if (theRHS != 0) { addNodes(*theRHS); } return *this; } void MutableNodeRefList::addNode(XalanNode* n) { if (n != 0) { m_nodeList.push_back(n); } } void MutableNodeRefList::insertNode( XalanNode* n, size_type pos) { assert(m_nodeList.size() >= pos); if (n != 0) { m_nodeList.insert(m_nodeList.begin() + pos, n); } } void MutableNodeRefList::removeNode(const XalanNode* n) { XALAN_USING_STD(find) NodeListVectorType::iterator i = find(m_nodeList.begin(), m_nodeList.end(), n); if (i != m_nodeList.end()) { m_nodeList.erase(i); } } void MutableNodeRefList::removeNode(size_type pos) { assert(pos < m_nodeList.size()); m_nodeList.erase(m_nodeList.begin() + pos); } void MutableNodeRefList::clear() { m_nodeList.clear(); m_order = eUnknownOrder; } void MutableNodeRefList::setNode( size_type pos, XalanNode* theNode) { assert(pos < m_nodeList.size()); m_nodeList[pos] = theNode; } void MutableNodeRefList::addNodes(const XalanNodeList& nodelist) { const XalanSize_t theLength = nodelist.getLength(); for (XalanSize_t i = 0; i < theLength; i++) { XalanNode* const theNode = nodelist.item(i); if (theNode != 0) { m_nodeList.push_back(theNode); } } } void MutableNodeRefList::addNodes(const NodeRefListBase& nodelist) { const size_type theLength = nodelist.getLength(); for (size_type i = 0; i < theLength; i++) { XalanNode* const theNode = nodelist.item(i); if (theNode != 0) { m_nodeList.push_back(theNode); } } } void MutableNodeRefList::addNodesInDocOrder( const XalanNodeList& nodelist, XPathExecutionContext& executionContext) { const XalanSize_t theOtherLength = nodelist.getLength(); for(XalanSize_t i = 0; i < theOtherLength; i++) { addNodeInDocOrder(nodelist.item(i), executionContext); } } void MutableNodeRefList::addNodesInDocOrder( const NodeRefListBase& nodelist, XPathExecutionContext& executionContext) { const XalanSize_t theOtherLength = nodelist.getLength(); for(XalanSize_t i = 0; i < theOtherLength; i++) { addNodeInDocOrder(nodelist.item(i), executionContext); } } void MutableNodeRefList::addNodesInDocOrder( const MutableNodeRefList& nodelist, XPathExecutionContext& executionContext) { XALAN_USING_STD(back_inserter); XALAN_USING_STD(copy); XALAN_USING_STD(for_each); const eOrder theOtherOrder = nodelist.m_order; if (theOtherOrder == eUnknownOrder) { for_each( nodelist.m_nodeList.begin(), nodelist.m_nodeList.end(), addNodeInDocOrderFunctor(*this, executionContext)); } else if (theOtherOrder == eDocumentOrder) { if (m_nodeList.empty() == true) { m_nodeList = nodelist.m_nodeList; } else { for_each( nodelist.m_nodeList.begin(), nodelist.m_nodeList.end(), addNodeInDocOrderFunctor(*this, executionContext)); } } else { assert(theOtherOrder == eReverseDocumentOrder); if (m_nodeList.empty() == true) { copy( nodelist.m_nodeList.rbegin(), nodelist.m_nodeList.rend(), back_inserter(m_nodeList)); } else { for_each( nodelist.m_nodeList.rbegin(), nodelist.m_nodeList.rend(), addNodeInDocOrderFunctor(*this, executionContext)); } } } static bool findInsertionPointBinarySearch( XalanNode* node, MutableNodeRefList::NodeListIteratorType begin, MutableNodeRefList::NodeListIteratorType end, MutableNodeRefList::NodeListIteratorType& insertionPoint) { assert(node != 0); assert( node->getNodeType() == XalanNode::DOCUMENT_NODE || node->getNodeType() == XalanNode::DOCUMENT_FRAGMENT_NODE || (node->getOwnerDocument() != 0 && node->getOwnerDocument()->isIndexed() == true)); bool fInsert = true; // At this point, we are guaranteed that the range is only for this // document, and that the range is indexed... const XalanNode::IndexType theIndex = node->getIndex(); typedef MutableNodeRefList::NodeListIteratorType NodeListIteratorType; // End points to one past the last valid point, // so subtract 1. NodeListIteratorType last(end - 1); assert(*last != 0); // Do a quick check to see if we just need to append... if ((*last)->getIndex() < theIndex) { insertionPoint = end; } else { // Do a binary search for the insertion point... NodeListIteratorType first(begin); NodeListIteratorType current(end); XalanNode::IndexType theCurrentIndex = 0; while (first <= last) { current = first + (last - first) / 2; assert(*current != 0); theCurrentIndex = (*current)->getIndex(); if (theIndex < theCurrentIndex) { if (current == begin) { break; } else { last = current - 1; } } else if (theIndex > theCurrentIndex) { first = current + 1; } else if (theIndex == theCurrentIndex) { // Duplicate, don't insert... fInsert = false; break; } } if (theIndex != theCurrentIndex) { if (current == end || first == end) { // We either didn't search, or we're // at the end... insertionPoint = end; } else if (theCurrentIndex < theIndex) { // We're inserting after the current position... assert((*current)->getIndex() < theIndex && (current + 1 == end || (*(current + 1))->getIndex() > theIndex)); insertionPoint = current + 1; } else { // We're inserting before the current position... assert(theCurrentIndex > theIndex); assert((*current)->getIndex() > theIndex && (current == begin || (*(current))->getIndex() > theIndex)); insertionPoint = current; } } } return fInsert; } template inline bool findInsertionPointLinearSearch( XalanNode* node, MutableNodeRefList::NodeListIteratorType begin, MutableNodeRefList::NodeListIteratorType end, MutableNodeRefList::NodeListIteratorType& insertionPoint, const PredicateType isNodeAfterPredicate) { assert(node != 0); bool fInsert = true; typedef MutableNodeRefList::NodeListIteratorType NodeListIteratorType; NodeListIteratorType current(begin); // Loop, looking for the node, or for a // node that's before the one we're adding... while(current != end) { const XalanNode* child = *current; assert(child != 0); if(child == node) { // Duplicate, don't insert... fInsert = false; break; } else if (isNodeAfterPredicate(*node, *child) == false) { // We found the insertion point... break; } else { ++current; } } insertionPoint = current; return fInsert; } struct DocumentPredicate { bool operator()( const XalanNode& node1, const XalanNode& node2) const { // Always order a document node, or a node from another // document after another node... const XalanNode::NodeType node1Type = node1.getNodeType(); const XalanNode::NodeType node2Type = node2.getNodeType(); if ((node1Type == XalanNode::DOCUMENT_NODE || node1Type == XalanNode::DOCUMENT_FRAGMENT_NODE) && (node2Type == XalanNode::DOCUMENT_NODE || node2Type == XalanNode::DOCUMENT_FRAGMENT_NODE)) { return true; } else { return node1.getOwnerDocument() != node2.getOwnerDocument(); } } }; struct IndexPredicate { bool operator()( const XalanNode& node1, const XalanNode& node2) const { assert(node1.getOwnerDocument() == node2.getOwnerDocument()); return m_documentPredicate(node1, node2) == true ? true : node1.getIndex() > node2.getIndex() ? true : false; } DocumentPredicate m_documentPredicate; }; struct ExecutionContextPredicate { ExecutionContextPredicate(XPathExecutionContext& executionContext) : m_executionContext(executionContext) { } bool operator()( const XalanNode& node1, const XalanNode& node2) const { if (m_documentPredicate(node1, node2) == true) { return true; } else { assert(node1.getOwnerDocument() == node2.getOwnerDocument()); assert( node1.getNodeType() != XalanNode::DOCUMENT_NODE && node1.getNodeType() != XalanNode::DOCUMENT_FRAGMENT_NODE && node2.getNodeType() != XalanNode::DOCUMENT_NODE && node2.getNodeType() != XalanNode::DOCUMENT_FRAGMENT_NODE); return m_executionContext.isNodeAfter(node1, node2); } } XPathExecutionContext& m_executionContext; DocumentPredicate m_documentPredicate; }; void MutableNodeRefList::addNodeInDocOrder( XalanNode* node, XPathExecutionContext& executionContext) { if (node != 0) { if (m_nodeList.size() == 0) { addNode(node); } else { assert(m_nodeList[0] != 0); // Do some quick optimizations, since we tend to append // the same node a lot. const XalanNode* const theLastNode = m_nodeList.back(); assert(theLastNode != 0); // Is it a duplicate? if (theLastNode != node) { bool fInsert = false; NodeListIteratorType insertionPoint; const XalanNode* const theFirstNode = m_nodeList.front(); assert(theFirstNode != 0); // Normalize so that if we have a document node, it owns // itself, which is not how DOM works... const XalanNode::NodeType theFirstNodeType = theFirstNode->getNodeType(); const XalanNode* const theFirstNodeOwner = theFirstNodeType == XalanNode::DOCUMENT_NODE || theFirstNodeType == XalanNode::DOCUMENT_FRAGMENT_NODE ? theFirstNode : theFirstNode->getOwnerDocument(); assert(theFirstNodeOwner != 0); if (node->isIndexed() == true && node->getOwnerDocument() == theFirstNodeOwner) { // If it's indexed, then see if the entire list consists of // nodes from the same document. // Normalize so that if we have a document node, it owns // itself, which is not how DOM works... const XalanNode::NodeType theLastNodeType = theLastNode->getNodeType(); const XalanNode* const theLastNodeOwner = theLastNodeType == XalanNode::DOCUMENT_NODE || theLastNodeType == XalanNode::DOCUMENT_FRAGMENT_NODE ? theLastNode : theLastNode->getOwnerDocument(); assert(theLastNodeOwner != 0); // If the owner document is 0, then it's a document node, so there's not // much we can do except a linear search... if (theFirstNodeOwner == theLastNodeOwner) { fInsert = findInsertionPointBinarySearch( node, m_nodeList.begin(), m_nodeList.end(), insertionPoint); } else { fInsert = findInsertionPointLinearSearch( node, m_nodeList.begin(), m_nodeList.end(), insertionPoint, IndexPredicate()); } } else { fInsert = findInsertionPointLinearSearch( node, m_nodeList.begin(), m_nodeList.end(), insertionPoint, ExecutionContextPredicate(executionContext)); } if (fInsert == true) { m_nodeList.insert(insertionPoint, node); } } } } } void MutableNodeRefList::clearNulls() { XALAN_USING_STD(remove); m_nodeList.erase( remove( m_nodeList.begin(), m_nodeList.end(), NodeListVectorType::value_type(0)), m_nodeList.end()); if (m_nodeList.empty() == true) { m_order = eUnknownOrder; } assert(checkForDuplicates(getMemoryManager()) == false); } void MutableNodeRefList::reverse() { #if defined(XALAN_NO_STD_NAMESPACE) ::reverse( #else std::reverse( #endif m_nodeList.begin(), m_nodeList.end()); if (m_order == eDocumentOrder) { m_order = eReverseDocumentOrder; } else if (m_order == eReverseDocumentOrder) { m_order = eDocumentOrder; } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/FormatterStringLengthCounter.cpp0000664000175000000640000000500211731656102023613 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file #include "FormatterStringLengthCounter.hpp" XALAN_CPP_NAMESPACE_BEGIN FormatterStringLengthCounter::FormatterStringLengthCounter() : FormatterListener(OUTPUT_METHOD_NONE), m_count(0) { } FormatterStringLengthCounter::~FormatterStringLengthCounter() { } void FormatterStringLengthCounter::setDocumentLocator(const Locator* const /* locator */) { } void FormatterStringLengthCounter::startDocument() { } void FormatterStringLengthCounter::endDocument() { } void FormatterStringLengthCounter::startElement( const XMLCh* const /* name */, AttributeListType& /* attrs */) { } void FormatterStringLengthCounter::endElement( const XMLCh* const /* name */) { } void FormatterStringLengthCounter::characters( const XMLCh* const /* chars */, const size_type length) { m_count += length; } void FormatterStringLengthCounter::charactersRaw( const XMLCh* const /* chars */, const size_type /*length */) { } void FormatterStringLengthCounter::entityReference(const XMLCh* const /* name */) { } void FormatterStringLengthCounter::ignorableWhitespace( const XMLCh* const /* chars */, const size_type /* length */) { } void FormatterStringLengthCounter::processingInstruction( const XMLCh* const /* target */, const XMLCh* const /* data */) { } void FormatterStringLengthCounter::resetDocument() { } void FormatterStringLengthCounter::comment(const XMLCh* const /* data */) { } void FormatterStringLengthCounter::cdata( const XMLCh* const /* ch */, const size_type /* length */) { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XStringBase.hpp0000664000175000000640000000734311731656102020167 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XSTRINGBASE_HEADER_GUARD_1357924680) #define XSTRINGBASE_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file. #include #include XALAN_CPP_NAMESPACE_BEGIN class XPathEnvSupport; class XALAN_XPATH_EXPORT XStringBase : public XObject { public: typedef XObject ParentType; /** * Construct an XStringBase object. * * @param theMemoryManager The MemoryManager instance. */ XStringBase(MemoryManager& theMemoryManager); /** * Construct an XStringBase object. * * @param theMemoryManager The MemoryManager instance. * @param theExecutionContext The current XPathExecutionContext. */ XStringBase( MemoryManager& theMemoryManager, XPathExecutionContext& theExecutionContext); /** * Construct an XStringBase object from another. * * @param source The source XStringBase instance. * @param theMemoryManager The MemoryManager instance. */ XStringBase( const XStringBase& source, MemoryManager& theMemoryManager); virtual ~XStringBase(); // These methods are inherited from XObject ... virtual const XalanDOMString& getTypeString() const; virtual double num(XPathExecutionContext& executionContext) const; using ParentType::num; virtual bool boolean(XPathExecutionContext& executionContext) const; using ParentType::str; virtual const XalanDOMString& str(XPathExecutionContext& executionContext) const = 0; virtual const XalanDOMString& str() const = 0; virtual void str( XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const = 0; virtual void str( FormatterListener& formatterListener, MemberFunctionPtr function) const = 0; virtual void str( XPathExecutionContext& executionContext, XalanDOMString& theBuffer) const = 0; virtual void str(XalanDOMString& theBuffer) const = 0; virtual double stringLength(XPathExecutionContext& executionContext) const = 0; virtual const XalanDocumentFragment& rtree() const; virtual void ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject); virtual void ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject) const; private: friend class XObjectResultTreeFragProxyText; // Not implemented XStringBase(const XStringBase& source); XStringBase(); mutable double m_cachedNumberValue; mutable XObjectResultTreeFragProxy m_resultTreeFrag; }; XALAN_CPP_NAMESPACE_END #endif // XSTRINGBASE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XPathEnvSupport.hpp0000664000175000000640000001301111731656102021055 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XPATHENVSUPPORT_HEADER_GUARD_1357924680) #define XPATHENVSUPPORT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include "xalanc/PlatformSupport/ProblemListenerBase.hpp" #include XALAN_DECLARE_XERCES_CLASS(Locator) XALAN_CPP_NAMESPACE_BEGIN class NodeRefListBase; class PrefixResolver; class XObject; class XPathExecutionContext; class XObjectFactory; class XalanDocument; class XalanDOMString; class XalanElement; class XalanNode; class XalanQName; class XALAN_XPATH_EXPORT XPathEnvSupport : public ProblemListenerBase { public: typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator LocatorType; typedef Function::XObjectArgVectorType XObjectArgVectorType; XPathEnvSupport(); virtual ~XPathEnvSupport(); // These methods are inherited from ProblemListener ... virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode) = 0; virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode) = 0; // These interfaces are new to XPathEnvSupport /** * Provides support for XML parsing service. * * @param theManager The MemoryManager instance to use. * @param urlString location of the XML * @param base base location for URI * @param theErrorHandler An optional ErrorHandler instance for error reporting. * @return parsed document */ virtual XalanDocument* parseXML( MemoryManager& theManager, const XalanDOMString& urlString, const XalanDOMString& base, ErrorHandler* theErrorHandler = 0) = 0; /** * Get the source document for the given URI. * * @param theURI document URI * @return source document */ virtual XalanDocument* getSourceDocument(const XalanDOMString& theURI) const = 0; /** * Associate a document with a given URI. * * @param theURI document URI * @param theDocument source document */ virtual void setSourceDocument( const XalanDOMString& theURI, XalanDocument* theDocument) = 0; /** * Given a DOM Document, tell what URI was used to parse it. Needed for * relative resolution. * * @param owner source document * @return document URI */ virtual const XalanDOMString& findURIFromDoc(const XalanDocument* owner) const = 0; /** * Determine if an external element is available. * * @param theNamespace namespace for the element * @param elementName name of extension element * @return whether the element is available or not */ virtual bool elementAvailable( const XalanDOMString& theNamespace, const XalanDOMString& elementName) const = 0; /** * Determine if a function is available. For standard * function availability, theNamespace should be an * empty string. * * @param theNamespace namespace for the function * @param functionName name of the function * @return whether the function is available or not */ virtual bool functionAvailable( const XalanDOMString& theNamespace, const XalanDOMString& functionName) const = 0; /** * Handle an extension function. * * @param executionContext current execution context * @param theNamespace namespace of function * @param functionName extension function name * @param argVec vector of arguments to function * @param locator A Locator instance for error reporting. * @return pointer to XObject result */ virtual XObjectPtr extFunction( XPathExecutionContext& executionContext, const XalanDOMString& theNamespace, const XalanDOMString& functionName, XalanNode* context, const XObjectArgVectorType& argVec, const Locator* locator) const = 0; /** * Reset the instance. */ virtual void reset() = 0; private: // These are not implemented... XPathEnvSupport(const XPathEnvSupport&); XPathEnvSupport& operator=(const XPathEnvSupport&); bool operator==(const XPathEnvSupport&) const; }; XALAN_CPP_NAMESPACE_END #endif // XPATHENVSUPPORT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/NameSpace.hpp0000664000175000000640000001066711731656102017635 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(NAMESPACE_HEADER_GUARD_1357924680) #define NAMESPACE_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN /** * A representation of a namespace. One of these will be pushed on the * namespace stack for each element. */ class XALAN_XPATH_EXPORT NameSpace { public: explicit NameSpace(MemoryManager& theManager) : m_prefix(theManager), m_uri(theManager) { } /** * Construct a namespace for placement on the * result tree namespace stack. * * @param prefix namespace prefix * @param uri URI of namespace */ NameSpace( const XalanDOMString& prefix, const XalanDOMString& uri, MemoryManager& theManager) : m_prefix(prefix, theManager), m_uri(uri, theManager) { } static NameSpace* create( const XalanDOMString& prefix, const XalanDOMString& uri, MemoryManager& theManager) { typedef NameSpace ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( prefix, uri, theManager); theGuard.release(); return theResult; } NameSpace( const NameSpace& other, MemoryManager& theManager) : m_prefix(other.m_prefix, theManager), m_uri(other.m_uri, theManager) { } ~NameSpace() { } /** * Retrieve the prefix for namespace * * @return prefix string */ const XalanDOMString& getPrefix() const { return m_prefix; } /** * Set the prefix for namespace * * @param prefix The new prefix value */ void setPrefix(const XalanDOMString& prefix) { m_prefix = prefix; } /** * Retrieve the URI for namespace * * @return URI string */ const XalanDOMString& getURI() const { return m_uri; } /** * Set the URI for namespace * * @param uri The new uri value */ void setURI(const XalanDOMString& uri) { m_uri = uri; } /** * Set the URI for namespace * * @param uri The new uri value */ void setURI(const XalanDOMChar* uri) { assert(uri != 0); m_uri = uri; } /** * Set the URI for namespace * * @param uri The new uri value * @param len The length of the uri */ void setURI( const XalanDOMChar* uri, XalanDOMString::size_type len) { assert(uri != 0); m_uri.assign(uri, len); } bool empty() const { return m_prefix.empty() && m_uri.empty(); } void clear() { m_prefix.clear(); m_uri.clear(); } /** * Equality operator * * @param theRHS namespace to compare */ bool operator==(const NameSpace& theRHS) const { return equals(m_prefix, theRHS.m_prefix) && equals(m_uri, theRHS.m_uri); } private: NameSpace(const NameSpace&); XalanDOMString m_prefix; XalanDOMString m_uri; }; XALAN_USES_MEMORY_MANAGER(NameSpace) XALAN_CPP_NAMESPACE_END #endif // NAMESPACE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XTokenStringAdapter.hpp0000664000175000000640000000556711731656102021704 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XTOKENSTRINGADAPTER_HEADER_GUARD_1357924680) #define XTOKENSTRINGADAPTER_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN class XToken; class XALAN_XPATH_EXPORT XTokenStringAdapter : public XStringBase { public: /** * Create an XTokenStringAdapter from an XToken. * * @param theXToken The XToken instance to adapt */ XTokenStringAdapter( const XToken& theToken, MemoryManager& theManager); XTokenStringAdapter( const XTokenStringAdapter& source, MemoryManager& theManager); virtual ~XTokenStringAdapter(); // These methods are inherited from XObject ... virtual double num(XPathExecutionContext& executionContext) const; virtual double num() const; virtual const XalanDOMString& str(XPathExecutionContext& executionContext) const; virtual const XalanDOMString& str() const; virtual void str( XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( XPathExecutionContext& executionContext, XalanDOMString& theBuffer) const; virtual void str(XalanDOMString& theBuffer) const; virtual double stringLength(XPathExecutionContext& executionContext) const; protected: virtual eObjectType getRealType() const; private: // Not implemented XTokenStringAdapter(const XTokenStringAdapter& source); XTokenStringAdapter(); // XToken instance that we're adapting... const XToken& m_value; }; XALAN_CPP_NAMESPACE_END #endif // XTOKENSTRINGADAPTER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XNodeSetNodeProxy.hpp0000664000175000000640000000507311731656102021335 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XNODESETNODEPROXY_HEADER_GUARD_1357924680) #define XNODESETNODEPROXY_HEADER_GUARD_1357924680 // Base include file. Must be first. #include // Base class header file. #include #include XALAN_CPP_NAMESPACE_BEGIN /** * Class to hold XPath return types. */ class XALAN_XPATH_EXPORT XNodeSetNodeProxy : public XNodeSetBase { public: /** * Create an XNodeSetNodeProxy */ XNodeSetNodeProxy(MemoryManager& theManager, XalanNode* theNode); /** * Create an XNodeSetNodeProxy from another. * * @param source object to copy */ XNodeSetNodeProxy(const XNodeSetNodeProxy& source, MemoryManager& theManager); virtual ~XNodeSetNodeProxy(); // These methods are inherited from XObject ... virtual const NodeRefListBase& nodeset() const; virtual XalanNode* item(size_type index) const; virtual size_type getLength() const; // A proxy class to implement NodeRefListBase... class Proxy : public NodeRefListBase { public: Proxy(XalanNode* theNode); virtual ~Proxy(); virtual XalanNode* item(size_type index) const; virtual size_type getLength() const; virtual size_type indexOf(const XalanNode* theNode) const; XalanNode* m_node; }; protected: virtual eObjectType getRealType() const; private: // Not implemented... XNodeSetNodeProxy& operator=(const XNodeSetNodeProxy&); XNodeSetNodeProxy(const XNodeSetNodeProxy& source); // Data members... const Proxy m_proxy; }; XALAN_CPP_NAMESPACE_END #endif // XNODESETNODEPROXY_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XNodeSetNodeProxyAllocator.hpp0000664000175000000640000000635711731656102023204 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XNODESETNODEPROXYALLOCATOR_INCLUDE_GUARD_12455133) #define XNODESETNODEPROXYALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XNodeSetNodeProxyAllocator { public: typedef XNodeSetNodeProxy nodeset_type; typedef ReusableArenaAllocator ArenaAllocatorType; typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XNodeSetNodeProxyAllocator(MemoryManager& theManager, size_type theBlockCount); ~XNodeSetNodeProxyAllocator(); /** * Create an object using the allocator. * * @param value source node * * @return pointer to instance */ nodeset_type* create(XalanNode* value); /** * Clone an XNodeSet object. * * @param value source instance * * @return pointer to a new instance */ nodeset_type* clone(const XNodeSetNodeProxy& value); /** * Delete an XNodeSet object from allocator. */ bool destroy(nodeset_type* theNodeSet); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const nodeset_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all XNodeSet objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XNodeSetNodeProxyAllocator(const XNodeSetNodeProxyAllocator&); XNodeSetNodeProxyAllocator& operator=(const XNodeSetNodeProxyAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XNODESETNODEPROXYALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XPath/FunctionID.hpp0000664000175000000640000000764611731656102020006 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONID_HEADER_GUARD_1357924680) #define FUNCTIONID_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include #include #include // Base class header files... #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN /** * XPath implementation of "id" function. */ class XALAN_XPATH_EXPORT FunctionID : public Function { public: typedef Function ParentType; FunctionID(); virtual ~FunctionID(); // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionID* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: class FunctionIDXObjectTypeCallback : public XObjectTypeCallback { public: FunctionIDXObjectTypeCallback( XPathExecutionContext& theExecutionContext, XalanDOMString& theString); void processCallback(const XObject& theXObject); // These methods are inherited from XObjectTypeCallback ... virtual void Number( const XObject& theXObject, double /* theValue */); virtual void Boolean( const XObject& theXObject, bool /* theValue */); virtual void String( const XObject& theXObject, const XalanDOMString& /* theValue */); virtual void ResultTreeFragment( const XObject& theXObject, const XalanDocumentFragment& /* theValue */); virtual void ResultTreeFragment( const XObject& theXObject, XalanDocumentFragment& /* theValue */); virtual void NodeSet( const XObject& /* theXObject */, const NodeRefListBase& theValue); virtual void Unknown( const XObject& /* theObject */, const XalanDOMString& /* theName */); virtual void Null(const XObject& /* theObject */); private: XalanDOMString& m_resultString; XPathExecutionContext& m_executionContext; }; // Not implemented... FunctionID& operator=(const FunctionID&); bool operator==(const FunctionID&) const; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONID_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/NodeRefListBase.cpp0000664000175000000640000000232411731656102020734 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "NodeRefListBase.hpp" XALAN_CPP_NAMESPACE_BEGIN #if !defined(XALAN_INLINE_INITIALIZATION) const NodeRefListBase::size_type NodeRefListBase::npos = ~0u; #elif !defined(XALAN_INLINE_INITIALIZATION_IS_DEFINITION_BUG) const NodeRefListBase::size_type NodeRefListBase::npos; #endif NodeRefListBase::NodeRefListBase() { } NodeRefListBase::~NodeRefListBase() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XPathConstructionContext.hpp0000664000175000000640000001211411731656102022772 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XPATHCONSTRUCTIONCONTEXT_HEADER_GUARD_1357924680) #define XPATHCONSTRUCTIONCONTEXT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include "xalanc/PlatformSupport/ProblemListenerBase.hpp" XALAN_DECLARE_XERCES_CLASS(Locator) XALAN_CPP_NAMESPACE_BEGIN typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator LocatorType; XALAN_USING_XERCES(Locator) class XalanNode; // // An abstract class which provides support for constructing the internal // representation of a stylesheet. // class XALAN_XPATH_EXPORT XPathConstructionContext : public ProblemListenerBase { public: XPathConstructionContext(MemoryManager& theManager); virtual ~XPathConstructionContext(); // These interfaces are inherited from ProblemListenerBase... virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode) = 0; virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode) = 0; // These interfaces are new... /** * Reset the instance. Any existing objects * created by the instance will be destroyed. */ virtual void reset() = 0; /** * Get a pooled string given the source string. If * the string already exists in the pool, no copy * will be made. If not, a copy will be made and * kept for later use. * * @param theString The source string * @return a const reference to a pooled string. */ virtual const XalanDOMString& getPooledString(const XalanDOMString& theString) = 0; /** * Get a pooled string given the source character * array. If the string already exists in the pool, * no copy will be made. If not, a copy will be made * and kept for later use. * * @param theString The source character array * @param theLength The length of the character array * @return a const reference to a pooled string. */ virtual const XalanDOMString& getPooledString( const XalanDOMChar* theString, XalanDOMString::size_type theLength = XalanDOMString::npos) = 0; /** * Get a cached string for temporary use. * * @return A reference to the string */ virtual XalanDOMString& getCachedString() = 0; /** * Return a cached string. * * @param theString The string to release. * * @return true if the string was released successfully. */ virtual bool releaseCachedString(XalanDOMString& theString) = 0; class GetCachedString { public: GetCachedString(XPathConstructionContext& theConstructionContext) : m_constructionContext(&theConstructionContext), m_string(&theConstructionContext.getCachedString()) { } ~GetCachedString() { assert(m_string != 0); m_constructionContext->releaseCachedString(*m_string); } XalanDOMString& get() const { assert(m_string != 0); return *m_string; } XPathConstructionContext& getConstructionContext() const { assert(m_constructionContext != 0); return *m_constructionContext; } private: // Not implemented... GetCachedString(); GetCachedString(const GetCachedString&); GetCachedString& operator=(const GetCachedString&); // Data members... XPathConstructionContext* m_constructionContext; XalanDOMString* m_string; }; typedef GetCachedString GetAndReleaseCachedString; MemoryManager& getMemoryManager() const { return m_memoryManager; } MemoryManager& getMemoryManager() { return m_memoryManager; } private: MemoryManager& m_memoryManager; }; XALAN_CPP_NAMESPACE_END #endif // XPATHCONSTRUCTIONCONTEXT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XNodeSetResultTreeFragProxy.cpp0000664000175000000640000000307411731656102023340 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XNodeSetResultTreeFragProxy.hpp" #include #include "NodeRefListBase.hpp" #include "XNodeSetBase.hpp" XALAN_CPP_NAMESPACE_BEGIN XNodeSetResultTreeFragProxy::XNodeSetResultTreeFragProxy(const XNodeSetBase& theValue) : XObjectResultTreeFragProxyBase(), m_value(theValue) { } XNodeSetResultTreeFragProxy::~XNodeSetResultTreeFragProxy() { } XalanNode* XNodeSetResultTreeFragProxy::getFirstChild() const { return m_value.getLength() == 0 ? 0 : m_value.item(0); } XalanNode* XNodeSetResultTreeFragProxy::getLastChild() const { const XNodeSetBase::size_type theLength = m_value.getLength(); return theLength == 0 ? 0 : m_value.item(theLength - 1); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XObjectResultTreeFragProxyBase.cpp0000664000175000000640000000556711731656102024011 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XObjectResultTreeFragProxyBase.hpp" #include #include "NodeRefListBase.hpp" #include "XNodeSetBase.hpp" XALAN_CPP_NAMESPACE_BEGIN const XalanDOMString XObjectResultTreeFragProxyBase::s_emptyString(XalanMemMgrs::getDummyMemMgr()); XObjectResultTreeFragProxyBase::XObjectResultTreeFragProxyBase() : XalanDocumentFragment() { } XObjectResultTreeFragProxyBase::XObjectResultTreeFragProxyBase(const XObjectResultTreeFragProxyBase& /* theRHS */) { } XObjectResultTreeFragProxyBase::~XObjectResultTreeFragProxyBase() { } const XalanDOMString& XObjectResultTreeFragProxyBase::getNodeName() const { return s_emptyString; } const XalanDOMString& XObjectResultTreeFragProxyBase::getNodeValue() const { return s_emptyString; } XObjectResultTreeFragProxyBase::NodeType XObjectResultTreeFragProxyBase::getNodeType() const { return DOCUMENT_FRAGMENT_NODE; } XalanNode* XObjectResultTreeFragProxyBase::getParentNode() const { return 0; } const XalanNodeList* XObjectResultTreeFragProxyBase::getChildNodes() const { throw XalanDOMException(XalanDOMException::NOT_SUPPORTED_ERR); return 0; } XalanNode* XObjectResultTreeFragProxyBase::getPreviousSibling() const { return 0; } XalanNode* XObjectResultTreeFragProxyBase::getNextSibling() const { return 0; } const XalanNamedNodeMap* XObjectResultTreeFragProxyBase::getAttributes() const { return 0; } XalanDocument* XObjectResultTreeFragProxyBase::getOwnerDocument() const { return 0; } const XalanDOMString& XObjectResultTreeFragProxyBase::getNamespaceURI() const { return s_emptyString; } const XalanDOMString& XObjectResultTreeFragProxyBase::getPrefix() const { return s_emptyString; } const XalanDOMString& XObjectResultTreeFragProxyBase::getLocalName() const { return s_emptyString; } bool XObjectResultTreeFragProxyBase::isIndexed() const { return false; } XObjectResultTreeFragProxyBase::IndexType XObjectResultTreeFragProxyBase::getIndex() const { return 0; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XToken.hpp0000664000175000000640000001372711731656102017211 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XTOKEN_HEADER_GUARD_1357924680) #define XTOKEN_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class... #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XToken : public XObject { public: /** * Create an XToken. * * @param theMemoryManager The MemoryManager instance. */ XToken(MemoryManager& theMemoryManager); /** * Create an XToken for string in the token queue. * * @param theString The string data for the token. The instance will keep a point to this string, so it must be persistent. * @param theNumber The numeric data for the token. This must be consistent with the lexical value in theString. * @param theMemoryManager The MemoryManager instance. */ XToken( const XalanDOMString& theString, double theNumber, MemoryManager& theMemoryManager); /** * Create an XToken for number in the token queue. * * @param theNumber The numeric data for the token. This must be consistent with the lexical value in theString. * @param theString The string data for the token. The instance will keep a point to this string, so it must be persistent. * @param theMemoryManager The MemoryManager instance. */ XToken( double theNumber, const XalanDOMString& theString, MemoryManager& theMemoryManager); /** * Create an XToken from another one. * * In most cases, the following copy constructor, * which accepts an explicit MemoryManager instance, * is recommended. * * @param theSource The source XToken instance. */ XToken(const XToken& theSource); /** * Create an XToken from another one. * * @param theSource The source XToken instance. * @param theMemoryManager The MemoryManager instance. */ XToken( const XToken& theSource, MemoryManager& theMemoryManager); virtual ~XToken(); virtual const XalanDOMString& getTypeString() const; virtual double num(XPathExecutionContext& executionContext) const; virtual bool boolean(XPathExecutionContext& executionContext) const; virtual const XalanDOMString& str(XPathExecutionContext& executionContext) const; virtual const XalanDOMString& str() const; virtual void str( XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( XPathExecutionContext& executionContext, XalanDOMString& theBuffer) const; virtual void str(XalanDOMString& theBuffer) const; virtual double stringLength(XPathExecutionContext& executionContext) const; virtual void ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject); virtual void ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject) const; XToken& operator=(const XToken& theRHS) { m_stringValue = theRHS.m_stringValue; m_numberValue = theRHS.m_numberValue; return *this; } bool boolean() const { assert(m_stringValue != 0); return m_isString == true ? XObject::boolean(*m_stringValue) : XObject::boolean(m_numberValue); } double num() const { assert(m_stringValue != 0); return m_numberValue; } double stringLength() const { assert(m_stringValue != 0); return static_cast(m_stringValue->length()); } /** * Set the instance as a string in the token queue. * * @param theString The string data for the token. XToken will keep a point to this string, so it must be persistent. * @param theNumber The numeric data for the token. This must be consistent with the lexical value in theString. */ void set( const XalanDOMString& theString, double theNumber); /** * Set the instance as a number in the token queue. * * @param theNumber The numeric data for the token. This must be consistent with the lexical value in theString. * @param theString The string data for the token. XToken will keep a point to this string, so it must be persistent. */ void set( double theNumber, const XalanDOMString& theString); protected: virtual void referenced(); virtual void dereferenced(); private: // Not defined... bool operator==(const XToken&) const; // Data members... const XalanDOMString* m_stringValue; double m_numberValue; bool m_isString; }; XALAN_USES_MEMORY_MANAGER(XToken) XALAN_CPP_NAMESPACE_END #endif // XTOKEN_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XStringReferenceAllocator.cpp0000664000175000000640000000334011731656102023040 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XStringReferenceAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XStringReferenceAllocator::XStringReferenceAllocator( MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XStringReferenceAllocator::~XStringReferenceAllocator() { } XStringReferenceAllocator::string_type* XStringReferenceAllocator::createString(const XalanDOMString& theString) { string_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); string_type* const theResult = new(theBlock) string_type(theString, m_allocator.getMemoryManager()); m_allocator.commitAllocation(theBlock); return theResult; } bool XStringReferenceAllocator::destroy(string_type* theString) { return m_allocator.destroyObject(theString); } void XStringReferenceAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XTokenNumberAdapter.cpp0000664000175000000640000000541511731656102021651 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XTokenNumberAdapter.hpp" #include "XToken.hpp" XALAN_CPP_NAMESPACE_BEGIN XTokenNumberAdapter::XTokenNumberAdapter( const XToken& theToken, MemoryManager& theMemoryManager) : XNumberBase(theMemoryManager), m_value(theToken) { } XTokenNumberAdapter::XTokenNumberAdapter( const XTokenNumberAdapter& source, MemoryManager& theMemoryManager) : XNumberBase(source, theMemoryManager), m_value(source.m_value) { } XTokenNumberAdapter::~XTokenNumberAdapter() { } double XTokenNumberAdapter::num(XPathExecutionContext& /* executionContext */) const { return m_value.num(); } double XTokenNumberAdapter::num() const { return m_value.num(); } const XalanDOMString& XTokenNumberAdapter::str(XPathExecutionContext& /* executionContext */) const { return m_value.str(); } const XalanDOMString& XTokenNumberAdapter::str() const { return m_value.str(); } void XTokenNumberAdapter::str( XPathExecutionContext& /* executionContext */, FormatterListener& formatterListener, MemberFunctionPtr function) const { m_value.str(formatterListener, function); } void XTokenNumberAdapter::str( FormatterListener& formatterListener, MemberFunctionPtr function) const { m_value.str(formatterListener, function); } void XTokenNumberAdapter::str( XPathExecutionContext& /* executionContext */, XalanDOMString& theBuffer) const { theBuffer.append(m_value.str()); } void XTokenNumberAdapter::str(XalanDOMString& theBuffer) const { theBuffer.append(m_value.str()); } double XTokenNumberAdapter::stringLength(XPathExecutionContext& /* executionContext */) const { return m_value.stringLength(); } XTokenNumberAdapter::eObjectType XTokenNumberAdapter::getRealType() const { return eTypeXTokenNumberAdapter; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XPathExecutionContext.hpp0000664000175000000640000004761311731656102022257 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XPATHEXECUTIONCONTEXT_HEADER_GUARD_1357924680) #define XPATHEXECUTIONCONTEXT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include // Base class header file... #include #include XALAN_DECLARE_XERCES_CLASS(ErrorHandler) XALAN_CPP_NAMESPACE_BEGIN class XalanDecimalFormatSymbols; class PrefixResolver; class XalanQName; class XObject; class XObjectPtr; class XObjectFactory; class XalanDocument; class XalanElement; class XalanNode; class XalanText; XALAN_USING_XERCES(ErrorHandler) // // An abstract class which provides support for executing XPath functions // and extension functions. // class XALAN_XPATH_EXPORT XPathExecutionContext : public ExecutionContext { public: typedef XalanVector XObjectArgVectorType; typedef NodeRefListBase::size_type size_type; explicit XPathExecutionContext( MemoryManager& theMemoryManager, XObjectFactory* theXObjectFactory = 0); virtual ~XPathExecutionContext(); /** * Reset the instance. This must be called before another * execution is attempted. */ virtual void reset() = 0; /** * Retrieve the node currently being executed. * * @return current node */ virtual XalanNode* getCurrentNode() const = 0; /** * Change the node currently being executed. * * @param theCurrentNode new current node */ virtual void pushCurrentNode(XalanNode* theCurrentNode) = 0; /** * Reset the node currently being executed. */ virtual void popCurrentNode() = 0; class CurrentNodePushAndPop { public: CurrentNodePushAndPop( XPathExecutionContext& theExecutionContext, XalanNode* theNewNode) : m_executionContext(theExecutionContext) { theExecutionContext.pushCurrentNode(theNewNode); } ~CurrentNodePushAndPop() { m_executionContext.popCurrentNode(); } private: XPathExecutionContext& m_executionContext; }; /** * Retrieve the factory object for creating XObjects. * * @return factory object instance */ XObjectFactory& getXObjectFactory() const { assert(m_xobjectFactory != 0); return *m_xobjectFactory; } /** * Determine if a node is after another node, in document order. * * @param node1 The first node * @param node2 The second node * @return true if node1 one is after node2, or false if it is not. */ virtual bool isNodeAfter( const XalanNode& node1, const XalanNode& node2) const = 0; /** * Push the node list for current context. * * @param theList new node list */ virtual void pushContextNodeList(const NodeRefListBase& theList) = 0; /** * Pop the node list for current context. */ virtual void popContextNodeList() = 0; class ContextNodeListPushAndPop { public: ContextNodeListPushAndPop( XPathExecutionContext& theExecutionContext, const NodeRefListBase& theNodeList) : m_executionContext(theExecutionContext) { m_executionContext.pushContextNodeList(theNodeList); } ~ContextNodeListPushAndPop() { m_executionContext.popContextNodeList(); } private: XPathExecutionContext& m_executionContext; }; /** * Get the node list for current context. * * @return node list */ virtual const NodeRefListBase& getContextNodeList() const = 0; /* * Get the count of nodes in the current context node list. * * @return length of list */ virtual size_type getContextNodeListLength() const = 0; /* * Get the position of the node in the current context node list. * Note that this is 1-based indexing (XPath/XSLT-style), not 0-based. * Thus, 0 will be returned if the node was not found. * * @return position in list */ virtual size_type getContextNodeListPosition(const XalanNode& contextNode) const = 0; /** * Determine if an external element is available. * * @param theQName The QName of the element * * @return whether the given element is available or not */ virtual bool elementAvailable(const XalanQName& theQName) const = 0; /** * Determine if an external element is available by resolving * a string to a QName. * * @param theName The name of the element * @param locator A Locator instance for error reporting * * @return whether the given element is available or not */ virtual bool elementAvailable( const XalanDOMString& theName, const Locator* locator) const = 0; /** * Determine if a function is available. * * @param theQName The QName of the function * * @return whether the function is available or not */ virtual bool functionAvailable(const XalanQName& theQName) const = 0; /** * Determine if a function is available. * * @param theName The name of the function * @param locator A Locator instance for error reporting * * @return whether the function is available or not */ virtual bool functionAvailable( const XalanDOMString& theName, const Locator* locator) const = 0; /** * Handle an extension function. * * @param theNamespace namespace of function * @param functionName extension function name * @param context The context node * @param argVec vector of arguments to function * @param locator A Locator instance for error reporting * @return pointer to XObject result */ virtual const XObjectPtr extFunction( const XalanDOMString& theNamespace, const XalanDOMString& functionName, XalanNode* context, const XObjectArgVectorType& argVec, const Locator* locator) = 0; /** * Provides support for XML parsing service. * * @param theManager The MemoryManager instance to use. * @param urlString location of the XML * @param base base location for URI * @param theErrorHandler An optional ErrorHandler instance for error reporting. * @return parsed document */ virtual XalanDocument* parseXML( MemoryManager& theManager, const XalanDOMString& urlString, const XalanDOMString& base, ErrorHandler* theErrorHandler = 0) const = 0; /** * Borrow a cached MutableNodeRefList instance. * * @return A pointer to the instance. */ virtual MutableNodeRefList* borrowMutableNodeRefList() = 0; /** * Return a previously borrowed MutableNodeRefList instance. * * @param theList A pointer the to previously borrowed instance. * @return true if the list was borrowed (at therefore, destroyed), false if not. */ virtual bool returnMutableNodeRefList(MutableNodeRefList* theList) = 0; class GetCachedNodeList { public: GetCachedNodeList(XPathExecutionContext& executionContext) : m_xpathExecutionContext(&executionContext), m_mutableNodeRefList(executionContext.borrowMutableNodeRefList()) { assert(m_mutableNodeRefList != 0); } // N.B. Non-const copy constructor semantics (like std::auto_ptr) GetCachedNodeList(const GetCachedNodeList& theSource) : m_xpathExecutionContext(theSource.m_xpathExecutionContext), m_mutableNodeRefList(theSource.m_mutableNodeRefList) { assert(m_mutableNodeRefList != 0); ((BorrowReturnMutableNodeRefList&)theSource).m_mutableNodeRefList = 0; } ~GetCachedNodeList() { release(); } MutableNodeRefList& operator*() const { assert(m_mutableNodeRefList != 0); return *m_mutableNodeRefList; } MutableNodeRefList* get() const { return m_mutableNodeRefList; } MutableNodeRefList* operator->() const { return get(); } void release() { assert(m_xpathExecutionContext != 0); if (m_mutableNodeRefList != 0) { m_xpathExecutionContext->returnMutableNodeRefList(m_mutableNodeRefList); m_mutableNodeRefList = 0; } } GetCachedNodeList clone() const { assert(m_xpathExecutionContext != 0); GetCachedNodeList theResult(*m_xpathExecutionContext); *theResult = *m_mutableNodeRefList; return theResult; } // N.B. Non-const assignment operator semantics. GetCachedNodeList& operator=(GetCachedNodeList& theRHS) { release(); m_xpathExecutionContext = theRHS.m_xpathExecutionContext; m_mutableNodeRefList = theRHS.m_mutableNodeRefList; theRHS.m_mutableNodeRefList = 0; return *this; } private: XPathExecutionContext* m_xpathExecutionContext; MutableNodeRefList* m_mutableNodeRefList; }; typedef GetCachedNodeList BorrowReturnMutableNodeRefList; /** * Get a cached string for temporary use. * * @return A reference to the string */ virtual XalanDOMString& getCachedString() = 0; /** * Return a cached string. * * @param theString The string to release. * * @return true if the string was released successfully. */ virtual bool releaseCachedString(XalanDOMString& theString) = 0; class GetCachedString { public: GetCachedString(XPathExecutionContext& theExecutionContext) : m_executionContext(&theExecutionContext), m_string(&theExecutionContext.getCachedString()) { } // Note non-const copy semantics... GetCachedString(GetCachedString& theSource) : m_executionContext(theSource.m_executionContext), m_string(theSource.m_string) { theSource.m_string = 0; } ~GetCachedString() { if (m_string != 0) { m_executionContext->releaseCachedString(*m_string); } } XalanDOMString& get() const { assert(m_string != 0); return *m_string; } XPathExecutionContext& getExecutionContext() const { return *m_executionContext; } private: // Not implemented... GetCachedString(); GetCachedString(const GetCachedString&); GetCachedString& operator=(const GetCachedString&); // Data members... XPathExecutionContext* m_executionContext; XalanDOMString* m_string; }; typedef GetCachedString GetAndReleaseCachedString; /** * Create a MutableNodeRefList with the appropriate context. * * @return pointer to node list created */ virtual MutableNodeRefList* createMutableNodeRefList(MemoryManager& theManager) const = 0; /** * Given a valid element key, return the corresponding node list. * * @param context context node * @param name qname of the key, which must match the 'name' * attribute on xsl:key * @param ref value that must match the value found by the * 'match' attribute on xsl:key * @param locator The Locator to use for error reporting. Can be 0. * @param nodelist A node list to contain the nodes found */ virtual void getNodeSetByKey( XalanNode* context, const XalanQName& qname, const XalanDOMString& ref, const Locator* locator, MutableNodeRefList& nodelist) = 0; /** * Given a valid element key, return the corresponding node list. * * @param context context node * @param name name of the key, which must match the 'name' * attribute on xsl:key. Will be resolved to a * qname using the provided resolver. * @param ref value that must match the value found by the * 'match' attribute on xsl:key * @param locator The Locator to use for error reporting. Can be 0. * @param nodelist A node list to contain the nodes found */ virtual void getNodeSetByKey( XalanNode* context, const XalanDOMString& name, const XalanDOMString& ref, const Locator* locator, MutableNodeRefList& nodelist) = 0; /** * Given a name, locate a variable in the current context, and return * a pointer to the object. * * @param theName name of variable * @return An XObjectPtr instance. If the variable is not found, an exception * is thrown, or the routine returns an instance of XUnknown. */ virtual const XObjectPtr getVariable( const XalanQName& name, const Locator* locator = 0) = 0; /** * Retrieve the resolver for namespaces. * * @return object for namespace resolution */ virtual const PrefixResolver* getPrefixResolver() const = 0; /** * Change the resolver for namespaces. * * @param thePrefixResolver new object for namespace resolution */ virtual void setPrefixResolver(const PrefixResolver* thePrefixResolver) = 0; class PrefixResolverSetAndRestore { public: PrefixResolverSetAndRestore( XPathExecutionContext& theExecutionContext, const PrefixResolver* theResolver) : m_executionContext(theExecutionContext), m_savedResolver(theExecutionContext.getPrefixResolver()) { m_executionContext.setPrefixResolver(theResolver); } PrefixResolverSetAndRestore( XPathExecutionContext& theExecutionContext, const PrefixResolver* theOldResolver, const PrefixResolver* theNewResolver) : m_executionContext(theExecutionContext), m_savedResolver(theOldResolver) { m_executionContext.setPrefixResolver(theNewResolver); } ~PrefixResolverSetAndRestore() { m_executionContext.setPrefixResolver(m_savedResolver); } private: XPathExecutionContext& m_executionContext; const PrefixResolver* const m_savedResolver; }; /** * Retrieve the URI corresponding to a namespace prefix * * @param prefix prefix for a namespace * @return URI corresponding to namespace */ virtual const XalanDOMString* getNamespaceForPrefix(const XalanDOMString& prefix) const = 0; /** * Given a DOM Document, tell what URI was used to parse it. Needed for * relative resolution. * * @param owner source document * @return document URI */ virtual const XalanDOMString& findURIFromDoc(const XalanDocument* owner) const = 0; /** * The getUnparsedEntityURI function returns the URI of the unparsed * entity with the specified name in the same document as the context * node (see [3.3 Unparsed Entities]). It returns the empty string if * there is no such entity. * * @param theName name of entity * @param theDocument document containing entity * @return URI for the entity */ virtual const XalanDOMString& getUnparsedEntityURI( const XalanDOMString& theName, const XalanDocument& theDocument) const = 0; /** * Get the document associated with the given URI. * * @param theURI document URI * @return a pointer to the document instance, if any. */ virtual XalanDocument* getSourceDocument(const XalanDOMString& theURI) const = 0; /** * Associate a document with a given URI. * * @param theURI document URI * @param theDocument source document */ virtual void setSourceDocument( const XalanDOMString& theURI, XalanDocument* theDocument) = 0; /** * Formats a number according to the specified pattern. * * @param number the number to be formatted * @param pattern the format pattern * @param theResult the formatted number * @param context the source node * @param locator the locator */ virtual void formatNumber( double number, const XalanDOMString& pattern, XalanDOMString& theResult, const XalanNode* context = 0, const Locator* locator = 0) = 0; /** * Formats a number according to the specified pattern. * * @param number the number to be formatted * @param pattern the format pattern * @param dfsName the name of decimal format to use * @param theResult the formatted number * @param context the source node * @param locator the locator * @return a pointer to the functor, 0 if none was found */ virtual void formatNumber( double number, const XalanDOMString& pattern, const XalanDOMString& dfsName, XalanDOMString& theResult, const XalanNode* context = 0, const Locator* locator = 0) = 0; // These interfaces are inherited from ExecutionContext... virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode) = 0; virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode) = 0; virtual bool shouldStripSourceNode(const XalanText& node) = 0; protected: XObjectFactory* m_xobjectFactory; }; XALAN_CPP_NAMESPACE_END #endif // XPATHEXECUTIONCONTEXT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XPath.cpp0000664000175000000640000046620011731656102017016 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XPath.hpp" #include #include #include #include #include #include #include #include #include "FormatterStringLengthCounter.hpp" #include "MutableNodeRefList.hpp" #include "XalanQNameByReference.hpp" #include "XObject.hpp" #include "XObjectFactory.hpp" #include "XPathConstructionContext.hpp" #include "XPathEnvSupport.hpp" XALAN_CPP_NAMESPACE_BEGIN const XalanDOMString XPath::s_emptyString(XalanMemMgrs::getDummyMemMgr()); XPath::XPath( MemoryManager& theManager, const Locator* theLocator) : m_expression(theManager), m_locator(theLocator), m_inStylesheet(false) { } XPath* XPath::create( MemoryManager& theManager, const Locator* theLocator) { typedef XPath ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( theManager, theLocator); theGuard.release(); return theResult; } XPath::~XPath() { } void XPath::unknownOpCodeError( XalanNode* context, XPathExecutionContext& executionContext, OpCodeMapPositionType opPos) const { const GetCachedString theGuard1(executionContext); XalanDOMString& theOpCode = theGuard1.get(); NumberToDOMString( m_expression.getOpCodeMapValue(opPos), theOpCode); const GetCachedString theGuard2(executionContext); executionContext.problem( XPathExecutionContext::eXPath, XPathExecutionContext::eError, XalanMessageLoader::getMessage( theGuard2.get(), XalanMessages::InvalidOpcodeWasDetected_1Param, theOpCode), m_locator, context); } void XPath::notNodeSetError( XalanNode* context, XPathExecutionContext& executionContext) const { GetCachedString theGuard(executionContext); XalanDOMString& theBuffer = theGuard.get(); executionContext.problem( XPathExecutionContext::eXPath, XPathExecutionContext::eError, XalanMessageLoader::getMessage( theBuffer, XalanMessages::ExpressionDoesNotEvaluateToNodeSet), m_locator, context); } const XObjectPtr XPath::execute( XalanNode* context, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext) const { // Push and pop the PrefixResolver... const PrefixResolverSetAndRestore theResolverSetAndRestore( executionContext, &prefixResolver); // Push and pop the current node... const CurrentNodePushAndPop theNodePushAndPop( executionContext, context); return executeMore( context, getInitialOpCodePosition(), executionContext); } void XPath::execute( XalanNode* context, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext, bool& result) const { assert(context != 0); // Push and pop the PrefixResolver... const PrefixResolverSetAndRestore theResolverSetAndRestore( executionContext, &prefixResolver); // Push and pop the current node... const CurrentNodePushAndPop theNodePushAndPop( executionContext, context); executeMore( context, getInitialOpCodePosition(), executionContext, result); } void XPath::execute( XalanNode* context, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext, double& result) const { assert(context != 0); // Push and pop the PrefixResolver... const PrefixResolverSetAndRestore theResolverSetAndRestore( executionContext, &prefixResolver); // Push and pop the current node... const CurrentNodePushAndPop theNodePushAndPop( executionContext, context); executeMore( context, getInitialOpCodePosition(), executionContext, result); } void XPath::execute( XalanNode* context, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext, XalanDOMString& result) const { assert(context != 0); // Push and pop the PrefixResolver... const PrefixResolverSetAndRestore theResolverSetAndRestore( executionContext, &prefixResolver); // Push and pop the current node... const CurrentNodePushAndPop theNodePushAndPop( executionContext, context); executeMore( context, getInitialOpCodePosition(), executionContext, result); } void XPath::execute( XalanNode* context, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const { assert(context != 0); // Push and pop the PrefixResolver... const PrefixResolverSetAndRestore theResolverSetAndRestore( executionContext, &prefixResolver); // Push and pop the current node... const CurrentNodePushAndPop theNodePushAndPop( executionContext, context); executeMore( context, getInitialOpCodePosition(), executionContext, formatterListener, function); } const XObjectPtr XPath::execute( XalanNode* context, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext, MutableNodeRefList& result) const { assert(context != 0); assert(result.empty() == true); // Push and pop the PrefixResolver... const PrefixResolverSetAndRestore theResolverSetAndRestore( executionContext, &prefixResolver); // Push and pop the current node... const CurrentNodePushAndPop theNodePushAndPop( executionContext, context); return executeMore( context, getInitialOpCodePosition(), executionContext, result); } const XObjectPtr XPath::executeMore( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { switch(m_expression.getOpCodeMapValue(opPos)) { case XPathExpression::eOP_OR: return executionContext.getXObjectFactory().createBoolean(Or(context, opPos, executionContext)); break; case XPathExpression::eOP_AND: return executionContext.getXObjectFactory().createBoolean(And(context, opPos, executionContext)); break; case XPathExpression::eOP_NOTEQUALS: return executionContext.getXObjectFactory().createBoolean(notequals(context, opPos, executionContext)); break; case XPathExpression::eOP_EQUALS: return executionContext.getXObjectFactory().createBoolean(equals(context, opPos, executionContext)); break; case XPathExpression::eOP_LTE: return executionContext.getXObjectFactory().createBoolean(lte(context, opPos, executionContext)); break; case XPathExpression::eOP_LT: return executionContext.getXObjectFactory().createBoolean(lt(context, opPos, executionContext)); break; case XPathExpression::eOP_GTE: return executionContext.getXObjectFactory().createBoolean(gte(context, opPos, executionContext)); break; case XPathExpression::eOP_GT: return executionContext.getXObjectFactory().createBoolean(gt(context, opPos, executionContext)); break; case XPathExpression::eOP_PLUS: return executionContext.getXObjectFactory().createNumber(plus(context, opPos, executionContext)); break; case XPathExpression::eOP_MINUS: return executionContext.getXObjectFactory().createNumber(minus(context, opPos, executionContext)); break; case XPathExpression::eOP_MULT: return executionContext.getXObjectFactory().createNumber(mult(context, opPos, executionContext)); break; case XPathExpression::eOP_DIV: return executionContext.getXObjectFactory().createNumber(div(context, opPos, executionContext)); break; case XPathExpression::eOP_MOD: return executionContext.getXObjectFactory().createNumber(mod(context, opPos, executionContext)); break; case XPathExpression::eOP_NEG: return executionContext.getXObjectFactory().createNumber(neg(context, opPos, executionContext)); break; case XPathExpression::eOP_UNION: return Union(context, opPos, executionContext); break; case XPathExpression::eOP_LITERAL: return literal(opPos, executionContext); break; case XPathExpression::eOP_VARIABLE: return variable(opPos, executionContext); break; case XPathExpression::eOP_GROUP: return group(context, opPos, executionContext); break; case XPathExpression::eOP_NUMBERLIT: return numberlit(opPos, executionContext); break; case XPathExpression::eOP_EXTFUNCTION: return runExtFunction(context, opPos, executionContext); break; case XPathExpression::eOP_FUNCTION: return runFunction(context, opPos, executionContext); break; case XPathExpression::eOP_LOCATIONPATH: return locationPath(context, opPos, executionContext); break; case XPathExpression::eOP_FUNCTION_POSITION: return executionContext.getXObjectFactory().createNumber(functionPosition(context, executionContext)); break; case XPathExpression::eOP_FUNCTION_LAST: return executionContext.getXObjectFactory().createNumber(functionLast(executionContext)); break; case XPathExpression::eOP_FUNCTION_COUNT: return executionContext.getXObjectFactory().createNumber(functionCount(context, opPos, executionContext)); break; case XPathExpression::eOP_FUNCTION_NOT: return executionContext.getXObjectFactory().createBoolean(functionNot(context, opPos, executionContext)); break; case XPathExpression::eOP_FUNCTION_TRUE: return executionContext.getXObjectFactory().createBoolean(true); break; case XPathExpression::eOP_FUNCTION_FALSE: return executionContext.getXObjectFactory().createBoolean(false); break; case XPathExpression::eOP_FUNCTION_BOOLEAN: return executionContext.getXObjectFactory().createBoolean(functionBoolean(context, opPos, executionContext)); break; case XPathExpression::eOP_FUNCTION_NAME_0: return executionContext.getXObjectFactory().createStringReference(functionName(context)); break; case XPathExpression::eOP_FUNCTION_NAME_1: return executionContext.getXObjectFactory().createStringReference(functionName(context, opPos, executionContext)); break; case XPathExpression::eOP_FUNCTION_LOCALNAME_0: return executionContext.getXObjectFactory().createStringReference(functionLocalName(context)); break; case XPathExpression::eOP_FUNCTION_LOCALNAME_1: return executionContext.getXObjectFactory().createStringReference(functionLocalName(context, opPos, executionContext)); break; case XPathExpression::eOP_FUNCTION_FLOOR: return executionContext.getXObjectFactory().createNumber(functionFloor(context, opPos, executionContext)); break; case XPathExpression::eOP_FUNCTION_CEILING: return executionContext.getXObjectFactory().createNumber(functionCeiling(context, opPos, executionContext)); break; case XPathExpression::eOP_FUNCTION_ROUND: return executionContext.getXObjectFactory().createNumber(functionRound(context, opPos, executionContext)); break; case XPathExpression::eOP_FUNCTION_NUMBER_0: return executionContext.getXObjectFactory().createNumber(functionNumber(context, executionContext)); break; case XPathExpression::eOP_FUNCTION_NUMBER_1: return executionContext.getXObjectFactory().createNumber(functionNumber(context, opPos, executionContext)); break; // case XPathExpression::eOP_FUNCTION_STRING_0: // return functionString(context); // break; // case XPathExpression::eOP_FUNCTION_STRING_1: // return functionString(context, opPos, executionContext); // break; case XPathExpression::eOP_FUNCTION_STRINGLENGTH_0: return executionContext.getXObjectFactory().createNumber(functionStringLength(context, executionContext)); break; case XPathExpression::eOP_FUNCTION_STRINGLENGTH_1: return executionContext.getXObjectFactory().createNumber(functionStringLength(context, opPos, executionContext)); break; case XPathExpression::eOP_FUNCTION_SUM: return executionContext.getXObjectFactory().createNumber(functionSum(context, opPos, executionContext)); break; default: unknownOpCodeError(context, executionContext, opPos); break; } return XObjectPtr(); } void XPath::executeMore( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, bool& result) const { switch(m_expression.getOpCodeMapValue(opPos)) { case XPathExpression::eOP_OR: result = Or(context, opPos, executionContext); break; case XPathExpression::eOP_AND: result = And(context, opPos, executionContext); break; case XPathExpression::eOP_NOTEQUALS: result = notequals(context, opPos, executionContext); break; case XPathExpression::eOP_EQUALS: result = equals(context, opPos, executionContext); break; case XPathExpression::eOP_LTE: result = lte(context, opPos, executionContext); break; case XPathExpression::eOP_LT: result = lt(context, opPos, executionContext); break; case XPathExpression::eOP_GTE: result = gte(context, opPos, executionContext); break; case XPathExpression::eOP_GT: result = gt(context, opPos, executionContext); break; case XPathExpression::eOP_PLUS: result = XObject::boolean(plus(context, opPos, executionContext)); break; case XPathExpression::eOP_MINUS: result = XObject::boolean(minus(context, opPos, executionContext)); break; case XPathExpression::eOP_MULT: result = XObject::boolean(mult(context, opPos, executionContext)); break; case XPathExpression::eOP_DIV: result = XObject::boolean(div(context, opPos, executionContext)); break; case XPathExpression::eOP_MOD: result = XObject::boolean(mod(context, opPos, executionContext)); break; case XPathExpression::eOP_NEG: result = XObject::boolean(neg(context, opPos, executionContext)); break; case XPathExpression::eOP_UNION: Union(context, opPos, executionContext, result); break; case XPathExpression::eOP_LITERAL: literal(opPos, result); break; case XPathExpression::eOP_VARIABLE: result = variable(opPos, executionContext)->boolean(executionContext); break; case XPathExpression::eOP_GROUP: group(context, opPos, executionContext, result); break; case XPathExpression::eOP_NUMBERLIT: numberlit(opPos, result); break; case XPathExpression::eOP_EXTFUNCTION: result = runExtFunction(context, opPos, executionContext)->boolean(executionContext); break; case XPathExpression::eOP_FUNCTION: result = runFunction(context, opPos, executionContext)->boolean(executionContext); break; case XPathExpression::eOP_LOCATIONPATH: locationPath(context, opPos, executionContext, result); break; case XPathExpression::eOP_FUNCTION_POSITION: result = XObject::boolean(functionPosition(context, executionContext)); break; case XPathExpression::eOP_FUNCTION_LAST: result = XObject::boolean(functionLast(executionContext)); break; case XPathExpression::eOP_FUNCTION_COUNT: result = XObject::boolean(functionCount(context, opPos, executionContext)); break; case XPathExpression::eOP_FUNCTION_NOT: result = functionNot(context, opPos, executionContext); break; case XPathExpression::eOP_FUNCTION_TRUE: result = true; break; case XPathExpression::eOP_FUNCTION_FALSE: result = false; break; case XPathExpression::eOP_FUNCTION_BOOLEAN: result = functionBoolean(context, opPos, executionContext); break; case XPathExpression::eOP_FUNCTION_NAME_0: result = XObject::boolean(functionName(context)); break; case XPathExpression::eOP_FUNCTION_NAME_1: result = XObject::boolean(functionName(context, opPos, executionContext)); break; case XPathExpression::eOP_FUNCTION_LOCALNAME_0: result = XObject::boolean(functionLocalName(context)); break; case XPathExpression::eOP_FUNCTION_LOCALNAME_1: result = XObject::boolean(functionLocalName(context, opPos, executionContext)); break; case XPathExpression::eOP_FUNCTION_FLOOR: result = XObject::boolean(functionFloor(context, opPos, executionContext)); break; case XPathExpression::eOP_FUNCTION_CEILING: result = XObject::boolean(functionCeiling(context, opPos, executionContext)); break; case XPathExpression::eOP_FUNCTION_ROUND: result = XObject::boolean(functionRound(context, opPos, executionContext)); break; case XPathExpression::eOP_FUNCTION_NUMBER_0: result = XObject::boolean(functionNumber(context, executionContext)); break; case XPathExpression::eOP_FUNCTION_NUMBER_1: result = XObject::boolean(functionNumber(context, opPos, executionContext)); break; case XPathExpression::eOP_FUNCTION_STRINGLENGTH_0: result = XObject::boolean(functionStringLength(context, executionContext)); break; case XPathExpression::eOP_FUNCTION_STRINGLENGTH_1: result = XObject::boolean(functionStringLength(context, opPos, executionContext)); break; case XPathExpression::eOP_FUNCTION_SUM: result = XObject::boolean(functionSum(context, opPos, executionContext)); break; default: unknownOpCodeError(context, executionContext, opPos); break; } } void XPath::executeMore( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, double& result) const { switch(m_expression.getOpCodeMapValue(opPos)) { case XPathExpression::eOP_OR: result = XObject::number(Or(context, opPos, executionContext)); break; case XPathExpression::eOP_AND: result = XObject::number(And(context, opPos, executionContext)); break; case XPathExpression::eOP_NOTEQUALS: result = XObject::number(notequals(context, opPos, executionContext)); break; case XPathExpression::eOP_EQUALS: result = XObject::number(equals(context, opPos, executionContext)); break; case XPathExpression::eOP_LTE: result = XObject::number(lte(context, opPos, executionContext)); break; case XPathExpression::eOP_LT: result = XObject::number(lt(context, opPos, executionContext)); break; case XPathExpression::eOP_GTE: result = XObject::number(gte(context, opPos, executionContext)); break; case XPathExpression::eOP_GT: result = XObject::number(gt(context, opPos, executionContext)); break; case XPathExpression::eOP_PLUS: result = plus(context, opPos, executionContext); break; case XPathExpression::eOP_MINUS: result = minus(context, opPos, executionContext); break; case XPathExpression::eOP_MULT: result = mult(context, opPos, executionContext); break; case XPathExpression::eOP_DIV: result = div(context, opPos, executionContext); break; case XPathExpression::eOP_MOD: result = mod(context, opPos, executionContext); break; case XPathExpression::eOP_NEG: result = neg(context, opPos, executionContext); break; case XPathExpression::eOP_UNION: Union(context, opPos, executionContext, result); break; case XPathExpression::eOP_LITERAL: literal(opPos, result); break; case XPathExpression::eOP_VARIABLE: result = variable(opPos, executionContext)->num(executionContext); break; case XPathExpression::eOP_GROUP: group(context, opPos, executionContext, result); break; case XPathExpression::eOP_NUMBERLIT: result = numberlit(opPos); break; case XPathExpression::eOP_EXTFUNCTION: result = runExtFunction(context, opPos, executionContext)->num(executionContext); break; case XPathExpression::eOP_FUNCTION: result = runFunction(context, opPos, executionContext)->num(executionContext); break; case XPathExpression::eOP_LOCATIONPATH: locationPath(context, opPos, executionContext, result); break; case XPathExpression::eOP_FUNCTION_POSITION: result = functionPosition(context, executionContext); break; case XPathExpression::eOP_FUNCTION_LAST: result = functionLast(executionContext); break; case XPathExpression::eOP_FUNCTION_COUNT: result = functionCount(context, opPos, executionContext); break; case XPathExpression::eOP_FUNCTION_NOT: result = XObject::number(functionNot(context, opPos, executionContext)); break; case XPathExpression::eOP_FUNCTION_TRUE: result = XObject::number(true); break; case XPathExpression::eOP_FUNCTION_FALSE: result = XObject::number(false); break; case XPathExpression::eOP_FUNCTION_BOOLEAN: result = XObject::number(functionBoolean(context, opPos, executionContext)); break; case XPathExpression::eOP_FUNCTION_NAME_0: result = XObject::number(functionName(context),executionContext.getMemoryManager()); break; case XPathExpression::eOP_FUNCTION_NAME_1: result = XObject::number(functionName(context, opPos, executionContext),executionContext.getMemoryManager()); break; case XPathExpression::eOP_FUNCTION_LOCALNAME_0: result = XObject::number(functionLocalName(context),executionContext.getMemoryManager()); break; case XPathExpression::eOP_FUNCTION_LOCALNAME_1: result = XObject::number(functionLocalName(context, opPos, executionContext),executionContext.getMemoryManager()); break; case XPathExpression::eOP_FUNCTION_FLOOR: result = functionFloor(context, opPos, executionContext); break; case XPathExpression::eOP_FUNCTION_CEILING: result = functionCeiling(context, opPos, executionContext); break; case XPathExpression::eOP_FUNCTION_ROUND: result = functionRound(context, opPos, executionContext); break; case XPathExpression::eOP_FUNCTION_NUMBER_0: result = functionNumber(context, executionContext); break; case XPathExpression::eOP_FUNCTION_NUMBER_1: result = functionNumber(context, opPos, executionContext); break; case XPathExpression::eOP_FUNCTION_STRINGLENGTH_0: result = functionStringLength(context, executionContext); break; case XPathExpression::eOP_FUNCTION_STRINGLENGTH_1: result = functionStringLength(context, opPos, executionContext); break; case XPathExpression::eOP_FUNCTION_SUM: result = functionSum(context, opPos, executionContext); break; default: unknownOpCodeError(context, executionContext, opPos); break; } } void XPath::executeMore( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, XalanDOMString& result) const { switch(m_expression.getOpCodeMapValue(opPos)) { case XPathExpression::eOP_OR: XObject::string(Or(context, opPos, executionContext), result); break; case XPathExpression::eOP_AND: XObject::string(And(context, opPos, executionContext), result); break; case XPathExpression::eOP_NOTEQUALS: XObject::string(notequals(context, opPos, executionContext), result); break; case XPathExpression::eOP_EQUALS: XObject::string(equals(context, opPos, executionContext), result); break; case XPathExpression::eOP_LTE: XObject::string(lte(context, opPos, executionContext), result); break; case XPathExpression::eOP_LT: XObject::string(lt(context, opPos, executionContext), result); break; case XPathExpression::eOP_GTE: XObject::string(gte(context, opPos, executionContext), result); break; case XPathExpression::eOP_GT: XObject::string(gt(context, opPos, executionContext), result); break; case XPathExpression::eOP_PLUS: XObject::string(plus(context, opPos, executionContext), result); break; case XPathExpression::eOP_MINUS: XObject::string(minus(context, opPos, executionContext), result); break; case XPathExpression::eOP_MULT: XObject::string(mult(context, opPos, executionContext), result); break; case XPathExpression::eOP_DIV: XObject::string(div(context, opPos, executionContext), result); break; case XPathExpression::eOP_MOD: XObject::string(mod(context, opPos, executionContext), result); break; case XPathExpression::eOP_NEG: XObject::string(neg(context, opPos, executionContext), result); break; case XPathExpression::eOP_UNION: Union(context, opPos, executionContext, result); break; case XPathExpression::eOP_LITERAL: literal(opPos, result); break; case XPathExpression::eOP_VARIABLE: variable(opPos, executionContext)->str(executionContext, result); break; case XPathExpression::eOP_GROUP: group(context, opPos, executionContext, result); break; case XPathExpression::eOP_NUMBERLIT: numberlit(opPos, result); break; case XPathExpression::eOP_EXTFUNCTION: runExtFunction(context, opPos, executionContext)->str(executionContext, result); break; case XPathExpression::eOP_FUNCTION: runFunction(context, opPos, executionContext)->str(executionContext, result); break; case XPathExpression::eOP_LOCATIONPATH: locationPath(context, opPos, executionContext, result); break; case XPathExpression::eOP_FUNCTION_POSITION: XObject::string(functionPosition(context, executionContext), result); break; case XPathExpression::eOP_FUNCTION_LAST: XObject::string(functionLast(executionContext), result); break; case XPathExpression::eOP_FUNCTION_COUNT: XObject::string(functionCount(context, opPos, executionContext), result); break; case XPathExpression::eOP_FUNCTION_NOT: XObject::string(functionNot(context, opPos, executionContext), result); break; case XPathExpression::eOP_FUNCTION_TRUE: XObject::string(true, result); break; case XPathExpression::eOP_FUNCTION_FALSE: XObject::string(false, result); break; case XPathExpression::eOP_FUNCTION_BOOLEAN: XObject::string(functionBoolean(context, opPos, executionContext), result); break; case XPathExpression::eOP_FUNCTION_NAME_0: result.append(functionName(context)); break; case XPathExpression::eOP_FUNCTION_NAME_1: result.append(functionName(context, opPos, executionContext)); break; case XPathExpression::eOP_FUNCTION_LOCALNAME_0: result.append(functionLocalName(context)); break; case XPathExpression::eOP_FUNCTION_LOCALNAME_1: result.append(functionLocalName(context, opPos, executionContext)); break; case XPathExpression::eOP_FUNCTION_FLOOR: XObject::string(functionFloor(context, opPos, executionContext), result); break; case XPathExpression::eOP_FUNCTION_CEILING: XObject::string(functionCeiling(context, opPos, executionContext), result); break; case XPathExpression::eOP_FUNCTION_ROUND: XObject::string(functionRound(context, opPos, executionContext), result); break; case XPathExpression::eOP_FUNCTION_NUMBER_0: XObject::string(functionNumber(context, executionContext), result); break; case XPathExpression::eOP_FUNCTION_NUMBER_1: XObject::string(functionNumber(context, opPos, executionContext), result); break; case XPathExpression::eOP_FUNCTION_STRINGLENGTH_0: XObject::string(functionStringLength(context, executionContext), result); break; case XPathExpression::eOP_FUNCTION_STRINGLENGTH_1: XObject::string(functionStringLength(context, opPos, executionContext), result); break; case XPathExpression::eOP_FUNCTION_SUM: XObject::string(functionSum(context, opPos, executionContext), result); break; default: unknownOpCodeError(context, executionContext, opPos); break; } } inline void stringToCharacters( const XalanDOMString& str, FormatterListener& formatterListener, XPath::MemberFunctionPtr function) { const XalanDOMString::size_type theLength = str.length(); if (theLength != 0) { assert(theLength == FormatterListener::size_type(theLength)); (formatterListener.*function)( str.c_str(), FormatterListener::size_type(theLength)); } } void XPath::executeMore( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const { switch(m_expression.getOpCodeMapValue(opPos)) { case XPathExpression::eOP_OR: XObject::string( Or(context, opPos, executionContext), formatterListener, function); break; case XPathExpression::eOP_AND: XObject::string( And(context, opPos, executionContext), formatterListener, function); break; case XPathExpression::eOP_NOTEQUALS: XObject::string( notequals(context, opPos, executionContext), formatterListener, function); break; case XPathExpression::eOP_EQUALS: XObject::string( equals(context, opPos, executionContext), formatterListener, function); break; case XPathExpression::eOP_LTE: XObject::string( lte(context, opPos, executionContext), formatterListener, function); break; case XPathExpression::eOP_LT: XObject::string( lt(context, opPos, executionContext), formatterListener, function); break; case XPathExpression::eOP_GTE: XObject::string( gte(context, opPos, executionContext), formatterListener, function); break; case XPathExpression::eOP_GT: XObject::string( gt(context, opPos, executionContext), formatterListener, function); break; case XPathExpression::eOP_PLUS: plus(context, opPos, executionContext, formatterListener, function); break; case XPathExpression::eOP_MINUS: minus(context, opPos, executionContext, formatterListener, function); break; case XPathExpression::eOP_MULT: mult(context, opPos, executionContext, formatterListener, function); break; case XPathExpression::eOP_DIV: div(context, opPos, executionContext, formatterListener, function); break; case XPathExpression::eOP_MOD: mod(context, opPos, executionContext, formatterListener, function); break; case XPathExpression::eOP_NEG: neg(context, opPos, executionContext, formatterListener, function); break; case XPathExpression::eOP_UNION: Union(context, opPos, executionContext, formatterListener, function); break; case XPathExpression::eOP_LITERAL: literal(opPos, formatterListener, function); break; case XPathExpression::eOP_VARIABLE: variable(opPos, executionContext)->str(executionContext, formatterListener, function); break; case XPathExpression::eOP_GROUP: group(context, opPos, executionContext, formatterListener, function); break; case XPathExpression::eOP_NUMBERLIT: numberlit(opPos, formatterListener, function); break; case XPathExpression::eOP_EXTFUNCTION: runExtFunction(context, opPos, executionContext)->str(executionContext, formatterListener, function); break; case XPathExpression::eOP_FUNCTION: runFunction(context, opPos, executionContext)->str(executionContext, formatterListener, function); break; case XPathExpression::eOP_LOCATIONPATH: locationPath(context, opPos, executionContext, formatterListener, function); break; case XPathExpression::eOP_FUNCTION_POSITION: XObject::string(functionPosition(context, executionContext), formatterListener, function); break; case XPathExpression::eOP_FUNCTION_LAST: XObject::string(functionLast(executionContext), formatterListener, function); break; case XPathExpression::eOP_FUNCTION_COUNT: XObject::string(functionCount(context, opPos, executionContext), formatterListener, function); break; case XPathExpression::eOP_FUNCTION_NOT: XObject::string(functionNot(context, opPos, executionContext), formatterListener, function); break; case XPathExpression::eOP_FUNCTION_TRUE: XObject::string(true, formatterListener, function); break; case XPathExpression::eOP_FUNCTION_FALSE: XObject::string(false, formatterListener, function); break; case XPathExpression::eOP_FUNCTION_BOOLEAN: XObject::string(functionBoolean(context, opPos, executionContext), formatterListener, function); break; case XPathExpression::eOP_FUNCTION_NAME_0: stringToCharacters(functionName(context), formatterListener, function); break; case XPathExpression::eOP_FUNCTION_NAME_1: stringToCharacters(functionName(context, opPos, executionContext), formatterListener, function); break; case XPathExpression::eOP_FUNCTION_LOCALNAME_0: stringToCharacters(functionLocalName(context), formatterListener, function); break; case XPathExpression::eOP_FUNCTION_LOCALNAME_1: stringToCharacters(functionLocalName(context, opPos, executionContext), formatterListener, function); break; case XPathExpression::eOP_FUNCTION_FLOOR: XObject::string(functionFloor(context, opPos, executionContext), formatterListener, function); break; case XPathExpression::eOP_FUNCTION_CEILING: XObject::string(functionCeiling(context, opPos, executionContext), formatterListener, function); break; case XPathExpression::eOP_FUNCTION_ROUND: XObject::string(functionRound(context, opPos, executionContext), formatterListener, function); break; case XPathExpression::eOP_FUNCTION_NUMBER_0: XObject::string(functionNumber(context, executionContext), formatterListener, function); break; case XPathExpression::eOP_FUNCTION_NUMBER_1: XObject::string(functionNumber(context, opPos, executionContext), formatterListener, function); break; case XPathExpression::eOP_FUNCTION_STRINGLENGTH_0: XObject::string(functionStringLength(context, executionContext), formatterListener, function); break; case XPathExpression::eOP_FUNCTION_STRINGLENGTH_1: XObject::string(functionStringLength(context, opPos, executionContext), formatterListener, function); break; case XPathExpression::eOP_FUNCTION_SUM: XObject::string(functionSum(context, opPos, executionContext), formatterListener, function); break; default: unknownOpCodeError(context, executionContext, opPos); break; } } const XObjectPtr XPath::executeMore( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, MutableNodeRefList& result) const { XObjectPtr theXObject; switch(m_expression.getOpCodeMapValue(opPos)) { case XPathExpression::eOP_XPATH: theXObject = executeMore(context, opPos + 2, executionContext, result); break; case XPathExpression::eOP_OR: case XPathExpression::eOP_AND: case XPathExpression::eOP_NOTEQUALS: case XPathExpression::eOP_EQUALS: case XPathExpression::eOP_LTE: case XPathExpression::eOP_LT: case XPathExpression::eOP_GTE: case XPathExpression::eOP_GT: case XPathExpression::eOP_PLUS: case XPathExpression::eOP_MINUS: case XPathExpression::eOP_MULT: case XPathExpression::eOP_DIV: case XPathExpression::eOP_MOD: case XPathExpression::eOP_NEG: case XPathExpression::eOP_LITERAL: case XPathExpression::eOP_NUMBERLIT: case XPathExpression::eOP_FUNCTION_POSITION: case XPathExpression::eOP_FUNCTION_LAST: case XPathExpression::eOP_FUNCTION_COUNT: case XPathExpression::eOP_FUNCTION_NOT: case XPathExpression::eOP_FUNCTION_TRUE: case XPathExpression::eOP_FUNCTION_FALSE: case XPathExpression::eOP_FUNCTION_BOOLEAN: case XPathExpression::eOP_FUNCTION_NAME_0: case XPathExpression::eOP_FUNCTION_NAME_1: case XPathExpression::eOP_FUNCTION_LOCALNAME_0: case XPathExpression::eOP_FUNCTION_LOCALNAME_1: case XPathExpression::eOP_FUNCTION_FLOOR: case XPathExpression::eOP_FUNCTION_CEILING: case XPathExpression::eOP_FUNCTION_ROUND: case XPathExpression::eOP_FUNCTION_NUMBER_0: case XPathExpression::eOP_FUNCTION_NUMBER_1: case XPathExpression::eOP_FUNCTION_STRING_0: case XPathExpression::eOP_FUNCTION_STRING_1: case XPathExpression::eOP_FUNCTION_STRINGLENGTH_0: case XPathExpression::eOP_FUNCTION_STRINGLENGTH_1: case XPathExpression::eOP_FUNCTION_NAMESPACEURI_0: case XPathExpression::eOP_FUNCTION_NAMESPACEURI_1: case XPathExpression::eOP_FUNCTION_SUM: notNodeSetError(context, executionContext); break; case XPathExpression::eOP_UNION: Union(context, opPos, executionContext, result); break; case XPathExpression::eOP_VARIABLE: theXObject = variable(opPos, executionContext); break; case XPathExpression::eOP_GROUP: group(context, opPos, executionContext, result); break; case XPathExpression::eOP_EXTFUNCTION: theXObject = runExtFunction(context, opPos, executionContext); break; case XPathExpression::eOP_FUNCTION: theXObject = runFunction(context, opPos, executionContext); break; case XPathExpression::eOP_LOCATIONPATH: locationPath(context, opPos, executionContext, result); break; default: unknownOpCodeError(context, executionContext, opPos); break; } if (theXObject.null() == false && theXObject->getType() != XObject::eTypeNodeSet) { notNodeSetError(context, executionContext); } return theXObject; } inline void XPath::doGetMatchScore( XalanNode* context, XPathExecutionContext& executionContext, eMatchScore& score) const { assert(context != 0); OpCodeMapPositionType opPos = m_expression.getInitialOpCodePosition() + 2; while(m_expression.getOpCodeMapValue(opPos) == XPathExpression::eOP_LOCATIONPATHPATTERN) { const OpCodeMapPositionType nextOpPos = m_expression.getNextOpCodePosition(opPos); score = locationPathPattern(executionContext, *context, opPos); if(score == eMatchScoreNone) { opPos = nextOpPos; } else { break; } } } XPath::eMatchScore XPath::getMatchScore( XalanNode* node, XPathExecutionContext& executionContext) const { eMatchScore score = eMatchScoreNone; if(m_expression.getOpCodeMapValue(0) != XPathExpression::eOP_MATCHPATTERN) { GetCachedString theGuard(executionContext); XalanDOMString& theBuffer = theGuard.get(); executionContext.problem( XPathExecutionContext::eXPath, XPathExecutionContext::eError, XalanMessageLoader::getMessage( theBuffer, XalanMessages::CannotEvaluateXPathExpressionAsMatchPattern), m_locator, node); } else { assert(node != 0); doGetMatchScore(node, executionContext, score); } return score; } XPath::eMatchScore XPath::getMatchScore( XalanNode* node, const PrefixResolver& resolver, XPathExecutionContext& executionContext) const { const PrefixResolver* const theCurrentResolver = executionContext.getPrefixResolver(); if (theCurrentResolver == &resolver) { return getMatchScore(node, executionContext); } else { // Push and pop the PrefixResolver... const PrefixResolverSetAndRestore theSetAndRestore( executionContext, theCurrentResolver, &resolver); return getMatchScore(node, executionContext); } } inline const XalanDOMString* getStringFromTokenQueue( const XPathExpression& expression, XPath::OpCodeMapPositionType opPos) { const XPath::OpCodeMapValueType tokenPosition = expression.getOpCodeMapValue(opPos); if (tokenPosition == XPathExpression::eEMPTY || tokenPosition == XPathExpression::eELEMWILDCARD) { return 0; } else { assert(tokenPosition != XPathExpression::eENDOP); const XToken* const token = expression.getToken(tokenPosition); assert(token != 0); return &token->str(); } } void XPath::getTargetData(TargetDataVectorType& targetData) const { OpCodeMapPositionType opPos = m_expression.getInitialOpCodePosition() + 2; targetData.reserve(eDefaultTargetDataSize); while(m_expression.getOpCodeMapValue(opPos) == XPathExpression::eOP_LOCATIONPATHPATTERN) { const OpCodeMapPositionType nextOpPos = m_expression.getNextOpCodePosition(opPos); opPos += 2; unsigned long stepCount = 0; while(m_expression.getOpCodeMapValue(opPos) != XPathExpression::eENDOP) { ++stepCount; const OpCodeMapPositionType nextStepPos = m_expression.getNextOpCodePosition(opPos); const OpCodeMapValueType nextOp = m_expression.getOpCodeMapValue(nextStepPos); if(nextOp == XPathExpression::eENDOP) { eMatchScore score = eMatchScoreNone; const XalanDOMChar* targetLocalName = 0; TargetData::eTargetType targetType = TargetData::eOther; bool fIsAttribute = false; const OpCodeMapValueType stepType = m_expression.getOpCodeMapValue(opPos); opPos += 3; switch(stepType) { case XPathExpression::eOP_FUNCTION: targetLocalName = PSEUDONAME_ANY; score = eMatchScoreOther; targetType = TargetData::eAny; break; case XPathExpression::eFROM_ROOT: targetLocalName = PSEUDONAME_ROOT; score = eMatchScoreOther; break; case XPathExpression::eMATCH_ATTRIBUTE: fIsAttribute = true; // fall through on purpose... case XPathExpression::eMATCH_ANY_ANCESTOR: case XPathExpression::eMATCH_IMMEDIATE_ANCESTOR: { const OpCodeMapValueType tok = m_expression.getOpCodeMapValue(opPos); switch(tok) { case XPathExpression::eNODETYPE_COMMENT: targetLocalName = PSEUDONAME_COMMENT; score = eMatchScoreNodeTest; break; case XPathExpression::eNODETYPE_TEXT: targetLocalName = PSEUDONAME_TEXT; score = eMatchScoreNodeTest; break; case XPathExpression::eNODETYPE_NODE: targetLocalName = PSEUDONAME_NODE; score = eMatchScoreNodeTest; break; case XPathExpression::eNODETYPE_ROOT: targetLocalName = PSEUDONAME_ROOT; score = eMatchScoreNodeTest; break; case XPathExpression::eNODETYPE_ANYELEMENT: targetLocalName = PSEUDONAME_ANY; score = eMatchScoreNodeTest; targetType = TargetData::eElement; break; case XPathExpression::eNODETYPE_PI: { const OpCodeMapValueType argLen = m_expression.getOpCodeArgumentLength(opPos - 3); targetLocalName = PSEUDONAME_PI; if (argLen == 1) { score = eMatchScoreNodeTest; } else if (argLen == 2) { score = eMatchScoreQName; } } break; case XPathExpression::eNODENAME: { const XalanDOMString* const targetNamespace = getStringFromTokenQueue(m_expression, opPos + 1); const XalanDOMString* const targetLocal = getStringFromTokenQueue(m_expression, opPos + 2); if (targetLocal == 0) { targetLocalName = 0; } else { targetLocalName = targetLocal->c_str(); } targetType = fIsAttribute ? TargetData::eAttribute : TargetData::eElement; if(targetLocalName != 0) { if(targetLocalName == PSEUDONAME_ANY) { targetLocalName = PSEUDONAME_ANY; if (targetNamespace == 0 || *targetNamespace == PSEUDONAME_ANY) { score = eMatchScoreNodeTest; } else { score = eMatchScoreNSWild; } } else { score = eMatchScoreQName; } } else { targetLocalName = PSEUDONAME_ANY; if (targetNamespace == 0 || *targetNamespace == PSEUDONAME_ANY) { score = eMatchScoreNodeTest; } else { score = eMatchScoreNSWild; } } } break; default: targetLocalName = PSEUDONAME_ANY; score = eMatchScoreNodeTest; break; } } break; } assert(targetLocalName != 0); // If there are multiple steps, or a predicate, // the priority is always eMatchScoreOther. if (stepCount > 1 || opPos + 3 < nextStepPos) { score = eMatchScoreOther; } targetData.push_back(TargetData(targetLocalName, score, targetType)); } opPos = nextStepPos; } opPos = nextOpPos; } } bool XPath::Or( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { opPos += 2; bool theResult; executeMore(context, opPos, executionContext, theResult); if(theResult == false) { opPos = m_expression.getNextOpCodePosition(opPos); executeMore(context, opPos, executionContext, theResult); } return theResult; } bool XPath::And( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { opPos += 2; bool fResult; executeMore(context, opPos, executionContext, fResult); if (fResult == true) { opPos = m_expression.getNextOpCodePosition(opPos); executeMore(context, opPos, executionContext, fResult); } return fResult; } bool XPath::notequals( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { opPos += 2; const XObjectPtr expr1(executeMore(context, opPos, executionContext)); assert(expr1.get() != 0); opPos = m_expression.getNextOpCodePosition(opPos); return expr1->notEquals( *executeMore(context, opPos, executionContext).get(), executionContext); } bool XPath::equals( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { opPos += 2; const XObjectPtr expr1(executeMore(context, opPos, executionContext)); assert(expr1.get() != 0); opPos = m_expression.getNextOpCodePosition(opPos); return expr1->equals( *executeMore(context, opPos, executionContext).get(), executionContext); } bool XPath::lte( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { opPos += 2; const XObjectPtr expr1(executeMore(context, opPos, executionContext)); assert(expr1.get() != 0); opPos = m_expression.getNextOpCodePosition(opPos); return expr1->lessThanOrEquals( *executeMore(context, opPos, executionContext).get(), executionContext); } bool XPath::lt( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { opPos += 2; const XObjectPtr expr1(executeMore(context, opPos, executionContext)); assert(expr1.get() != 0); opPos = m_expression.getNextOpCodePosition(opPos); return expr1->lessThan( *executeMore(context, opPos, executionContext).get(), executionContext); } bool XPath::gte( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { opPos += 2; const XObjectPtr expr1(executeMore(context, opPos, executionContext)); assert(expr1.get() != 0); opPos = m_expression.getNextOpCodePosition(opPos); return expr1->greaterThanOrEquals( *executeMore(context, opPos, executionContext).get(), executionContext); } bool XPath::gt( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { opPos += 2; const XObjectPtr expr1(executeMore(context, opPos, executionContext)); assert(expr1.get() != 0); opPos = m_expression.getNextOpCodePosition(opPos); return expr1->greaterThan( *executeMore(context, opPos, executionContext).get(), executionContext); } double XPath::getNumericOperand( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { if (m_expression.getOpCodeMapValue(opPos) == XPathExpression::eOP_NUMBERLIT) { assert(m_expression.tokenQueueSize() > m_expression.getOpCodeMapValue(opPos + 3)); return m_expression.getNumberLiteral(m_expression.getOpCodeMapValue(opPos + 2)); } else { double theResult; executeMore(context, opPos, executionContext, theResult); return theResult; } } double XPath::plus( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { opPos += 2; const double expr1 = getNumericOperand(context, opPos, executionContext); opPos = m_expression.getNextOpCodePosition(opPos); const double expr2 = getNumericOperand(context, opPos, executionContext); return DoubleSupport::add(expr1, expr2); } void XPath::plus( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const { const double theResult = plus(context, opPos, executionContext); XObject::string(theResult, formatterListener, function); } double XPath::minus( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { opPos += 2; const double expr1 = getNumericOperand(context, opPos, executionContext); opPos = m_expression.getNextOpCodePosition(opPos); const double expr2 = getNumericOperand(context, opPos, executionContext); return DoubleSupport::subtract(expr1, expr2); } void XPath::minus( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const { const double theResult = minus(context, opPos, executionContext); XObject::string(theResult, formatterListener, function); } double XPath::mult( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { opPos += 2; const double expr1 = getNumericOperand(context, opPos, executionContext); opPos = m_expression.getNextOpCodePosition(opPos); const double expr2 = getNumericOperand(context, opPos, executionContext); return DoubleSupport::multiply(expr1, expr2); } void XPath::mult( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const { const double theResult = mult(context, opPos, executionContext); XObject::string(theResult, formatterListener, function); } double XPath::div( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { opPos += 2; const double expr1 = getNumericOperand(context, opPos, executionContext); opPos = m_expression.getNextOpCodePosition(opPos); const double expr2 = getNumericOperand(context, opPos, executionContext); return DoubleSupport::divide(expr1, expr2); } void XPath::div( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const { const double theResult = div(context, opPos, executionContext); XObject::string(theResult, formatterListener, function); } double XPath::mod( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { opPos += 2; const double expr1 = getNumericOperand(context, opPos, executionContext); opPos = m_expression.getNextOpCodePosition(opPos); const double expr2 = getNumericOperand(context, opPos, executionContext); return DoubleSupport::modulus(expr1, expr2); } void XPath::mod( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const { const double theResult = mod(context, opPos, executionContext); XObject::string(theResult, formatterListener, function); } double XPath::neg( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { return DoubleSupport::negative(getNumericOperand(context, opPos + 2, executionContext)); } void XPath::neg( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const { const double theResult = neg(context, opPos, executionContext); XObject::string(theResult, formatterListener, function); } const XObjectPtr XPath::Union( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList resultNodeList(executionContext); Union(context, opPos, executionContext, *resultNodeList); return executionContext.getXObjectFactory().createNodeSet(resultNodeList); } void XPath::Union( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, bool& result) const { typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList resultNodeList(executionContext); Union(context, opPos, executionContext, *resultNodeList); result = XObject::boolean(*resultNodeList); } void XPath::Union( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, double& result) const { typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList resultNodeList(executionContext); Union(context, opPos, executionContext, *resultNodeList); result = XObject::number(executionContext, *resultNodeList); } void XPath::Union( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, XalanDOMString& result) const { typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList resultNodeList(executionContext); Union(context, opPos, executionContext, *resultNodeList); XObject::string(*resultNodeList, executionContext, result); } void XPath::Union( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const { typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList resultNodeList(executionContext); Union(context, opPos, executionContext, *resultNodeList); XObject::string(*resultNodeList, executionContext, formatterListener, function); } void XPath::Union( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, MutableNodeRefList& result) const { assert(result.empty() == true); opPos += 2; typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList theGuard(executionContext); MutableNodeRefList& tempNodeList = *theGuard; while(m_expression.getOpCodeMapValue(opPos) != XPathExpression::eENDOP) { const XObjectPtr nodesetResult(executeMore(context, opPos, executionContext, tempNodeList)); if (nodesetResult.null() == false) { result.addNodesInDocOrder(nodesetResult->nodeset(), executionContext); } else { result.addNodesInDocOrder(tempNodeList, executionContext); tempNodeList.clear(); } opPos = m_expression.getNextOpCodePosition(opPos); } result.setDocumentOrder(); } const XObjectPtr XPath::literal( OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { assert(m_expression.isValidOpCodePosition(opPos + 2)); assert(m_expression.isValidTokenQueuePosition(m_expression.getOpCodeMapValue(opPos + 2))); const XToken* const theLiteral = m_expression.getToken(m_expression.getOpCodeMapValue(opPos + 2)); assert(theLiteral != 0); if (m_inStylesheet == true) { return executionContext.getXObjectFactory().createString(*theLiteral); } else { return executionContext.getXObjectFactory().createString(theLiteral->str()); } } void XPath::literal( OpCodeMapPositionType opPos, bool& theResult) const { assert(m_expression.isValidOpCodePosition(opPos + 2)); assert(m_expression.isValidTokenQueuePosition(m_expression.getOpCodeMapValue(opPos + 2))); const XToken* const theLiteral = m_expression.getToken(m_expression.getOpCodeMapValue(opPos + 2)); assert(theLiteral != 0); theResult = theLiteral->boolean(); } void XPath::literal( OpCodeMapPositionType opPos, double& theResult) const { assert(m_expression.isValidOpCodePosition(opPos + 2)); assert(m_expression.isValidTokenQueuePosition(m_expression.getOpCodeMapValue(opPos + 2))); const XToken* const theLiteral = m_expression.getToken(m_expression.getOpCodeMapValue(opPos + 2)); assert(theLiteral != 0); theResult = theLiteral->num(); } void XPath::literal( OpCodeMapPositionType opPos, XalanDOMString& theString) const { assert(m_expression.isValidOpCodePosition(opPos + 2)); assert(m_expression.isValidTokenQueuePosition(m_expression.getOpCodeMapValue(opPos + 2))); const XToken* const theLiteral = m_expression.getToken(m_expression.getOpCodeMapValue(opPos + 2)); assert(theLiteral != 0); theString = theLiteral->str(); } void XPath::literal( OpCodeMapPositionType opPos, FormatterListener& formatterListener, MemberFunctionPtr function) const { assert(m_expression.isValidOpCodePosition(opPos + 2)); assert(m_expression.isValidTokenQueuePosition(m_expression.getOpCodeMapValue(opPos + 2))); const XToken* const theLiteral = m_expression.getToken(m_expression.getOpCodeMapValue(opPos + 2)); assert(theLiteral != 0); theLiteral->str(formatterListener, function); } const XObjectPtr XPath::variable( OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { assert(m_expression.isValidOpCodePosition(opPos + 3)); assert(m_expression.isValidTokenQueuePosition(m_expression.getOpCodeMapValue(opPos + 3))); const XToken* const ns = m_expression.getToken(m_expression.getOpCodeMapValue(opPos + 2)); assert(ns != 0); const XToken* const varName = m_expression.getToken(m_expression.getOpCodeMapValue(opPos + 3)); assert(varName != 0); return executionContext.getVariable(XalanQNameByReference(ns->str(), varName->str()), m_locator); } const XObjectPtr XPath::numberlit( OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { assert(m_expression.isValidOpCodePosition(opPos + 3)); assert(m_expression.isValidTokenQueuePosition(m_expression.getOpCodeMapValue(opPos + 3))); const XToken* const theLiteral = m_expression.getToken(m_expression.getOpCodeMapValue(opPos + 3)); assert(theLiteral != 0); if (m_inStylesheet == true) { return executionContext.getXObjectFactory().createNumber(*theLiteral); } else { return executionContext.getXObjectFactory().createNumber(theLiteral->num()); } } double XPath::numberlit(OpCodeMapPositionType opPos) const { assert(m_expression.isValidOpCodePosition(opPos + 3)); assert(m_expression.isValidTokenQueuePosition(m_expression.getOpCodeMapValue(opPos + 3))); const XToken* const theLiteral = m_expression.getToken(m_expression.getOpCodeMapValue(opPos + 3)); assert(theLiteral != 0); return theLiteral->num(); } void XPath::numberlit( OpCodeMapPositionType opPos, bool& theResult) const { assert(m_expression.isValidOpCodePosition(opPos + 3)); assert(m_expression.isValidTokenQueuePosition(m_expression.getOpCodeMapValue(opPos + 3))); const XToken* const theLiteral = m_expression.getToken(m_expression.getOpCodeMapValue(opPos + 3)); assert(theLiteral != 0); theResult = theLiteral->boolean(); } void XPath::numberlit( OpCodeMapPositionType opPos, XalanDOMString& theString) const { assert(m_expression.isValidOpCodePosition(opPos + 3)); assert(m_expression.isValidTokenQueuePosition(m_expression.getOpCodeMapValue(opPos + 3))); const XToken* const theLiteral = m_expression.getToken(m_expression.getOpCodeMapValue(opPos + 3)); assert(theLiteral != 0); theString = theLiteral->str(); } void XPath::numberlit( OpCodeMapPositionType opPos, FormatterListener& formatterListener, MemberFunctionPtr function) const { assert(m_expression.isValidOpCodePosition(opPos + 3)); assert(m_expression.isValidTokenQueuePosition(m_expression.getOpCodeMapValue(opPos + 3))); const XToken* const theLiteral = m_expression.getToken(m_expression.getOpCodeMapValue(opPos + 3)); assert(theLiteral != 0); theLiteral->str( formatterListener, function); } const XObjectPtr XPath::locationPath( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { assert(context != 0); typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList mnl(executionContext); locationPath(context, opPos, executionContext, *mnl.get()); return executionContext.getXObjectFactory().createNodeSet(mnl); } void XPath::locationPath( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, bool& theResult) const { assert(context != 0); typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList mnl(executionContext); locationPath(context, opPos, executionContext, *mnl.get()); theResult = XObject::boolean(*mnl.get()); } void XPath::locationPath( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, double& theResult) const { assert(context != 0); typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList mnl(executionContext); locationPath(context, opPos, executionContext, *mnl.get()); theResult = XObject::number(executionContext, *mnl.get()); } void XPath::locationPath( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, XalanDOMString& theResult) const { assert(context != 0); typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList mnl(executionContext); locationPath(context, opPos, executionContext, *mnl.get()); XObject::string(*mnl.get(), executionContext, theResult); } void XPath::locationPath( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const { assert(context != 0); typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList mnl(executionContext); locationPath(context, opPos, executionContext, *mnl.get()); XObject::string(*mnl, executionContext, formatterListener, function); } const XObjectPtr XPath::runExtFunction( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { assert(context != 0); const OpCodeMapPositionType endExtFunc = opPos + m_expression.getOpCodeMapValue(opPos + 1) - 1; opPos += 2; const XToken* const ns = m_expression.getToken(m_expression.getOpCodeMapValue(opPos)); assert(ns != 0); ++opPos; const XToken* const funcName = m_expression.getToken(m_expression.getOpCodeMapValue(opPos)); assert(funcName != 0); ++opPos; typedef XPathExecutionContext::XObjectArgVectorType XObjectArgVectorType; XObjectArgVectorType args(executionContext.getMemoryManager()); while(opPos < endExtFunc) { const OpCodeMapPositionType nextOpPos = m_expression.getNextOpCodePosition(opPos); args.push_back(executeMore(context, opPos, executionContext)); opPos = nextOpPos; } return extfunction(context, opPos, ns->str(), funcName->str(), args, executionContext); } const XObjectPtr XPath::runFunction( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { const OpCodeMapPositionType endFunc = opPos + m_expression.getOpCodeMapValue(opPos + 1) - 1; opPos += 2; // This is index into the function table for the // function. const OpCodeMapValueType funcID = m_expression.getOpCodeMapValue(opPos); opPos++; // Number of args is next. const OpCodeMapValueType argCount = m_expression.getOpCodeMapValue(opPos); opPos++; if (argCount == 0) { assert(opPos == endFunc); return s_functions[funcID].execute(executionContext, context, m_locator); } else if (argCount == 1) { return s_functions[funcID].execute( executionContext, context, executeMore(context, opPos, executionContext), m_locator); } else if (argCount == 2) { const XObjectPtr theArg1(executeMore(context, opPos, executionContext)); opPos = m_expression.getNextOpCodePosition(opPos); assert(m_expression.getNextOpCodePosition(opPos) == endFunc); return s_functions[funcID].execute( executionContext, context, theArg1, executeMore(context, opPos, executionContext), m_locator); } else if (argCount == 3) { const XObjectPtr theArg1(executeMore(context, opPos, executionContext)); opPos = m_expression.getNextOpCodePosition(opPos); const XObjectPtr theArg2(executeMore(context, opPos, executionContext)); opPos = m_expression.getNextOpCodePosition(opPos); assert(m_expression.getNextOpCodePosition(opPos) == endFunc); return s_functions[funcID].execute( executionContext, context, theArg1, theArg2, executeMore(context, opPos, executionContext), m_locator); } else { typedef XPathExecutionContext::XObjectArgVectorType XObjectArgVectorType; XObjectArgVectorType args(executionContext.getMemoryManager()); args.reserve(argCount); while(opPos < endFunc) { args.push_back(executeMore(context, opPos, executionContext)); opPos = m_expression.getNextOpCodePosition(opPos); } return function(context, funcID, args, executionContext); } } double XPath::functionCount( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { assert(context != 0); typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList result(executionContext); const XObjectPtr nodesetResult(executeMore(context, opPos + 2, executionContext, *result)); const XPathExecutionContext::size_type theResult = nodesetResult.null() == false ? nodesetResult->nodeset().getLength() : result->getLength(); assert(static_cast(theResult) == theResult); return static_cast(theResult); } const XalanDOMString& XPath::functionName( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { assert(context != 0); typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList result(executionContext); const XObjectPtr nodesetResult(executeMore(context, opPos + 2, executionContext, *result)); const NodeRefListBase* const theNodeList = nodesetResult.null() == false ? &nodesetResult->nodeset() : &*result; assert(theNodeList != 0); if (theNodeList->getLength() == 0) { return s_emptyString; } else { assert(theNodeList->item(0) != 0); return functionName(theNodeList->item(0)); } } const XalanDOMString& XPath::functionLocalName(XalanNode* context) const { assert(context != 0); const XalanDOMString* theResult = &s_emptyString; const XalanNode::NodeType theType = context->getNodeType(); if(theType == XalanNode::ELEMENT_NODE || theType == XalanNode::PROCESSING_INSTRUCTION_NODE) { theResult = &DOMServices::getLocalNameOfNode(*context); } else if (theType == XalanNode::ATTRIBUTE_NODE) { const XalanDOMString& theLocalName = DOMServices::getLocalNameOfNode(*context); if (theLocalName != DOMServices::s_XMLNamespace) { theResult = &theLocalName; } } return *theResult; } const XalanDOMString& XPath::functionLocalName( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { assert(context != 0); typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList result(executionContext); const XObjectPtr nodesetResult(executeMore(context, opPos + 2, executionContext, *result)); const NodeRefListBase* const theNodeList = nodesetResult.null() == false ? &nodesetResult->nodeset() : &*result; assert(theNodeList != 0); if (theNodeList->getLength() == 0) { return s_emptyString; } else { assert(theNodeList->item(0) != 0); return functionLocalName(theNodeList->item(0)); } } double XPath::functionStringLength( XalanNode* context, XPathExecutionContext& executionContext) const { assert(context != 0); FormatterStringLengthCounter theCounter; DOMServices::getNodeData(*context, executionContext, theCounter, &FormatterListener::characters); const FormatterListener::size_type theResult = theCounter.getCount(); assert(static_cast(theResult) == theResult); return static_cast(theResult); } double XPath::functionStringLength( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { assert(context != 0); FormatterStringLengthCounter theCounter; executeMore(context, opPos + 2, executionContext, theCounter, &FormatterListener::characters); const FormatterListener::size_type theResult = theCounter.getCount(); assert(static_cast(theResult) == theResult); return static_cast(theResult); } double XPath::functionSum( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { assert(context != 0); double sum = 0.0; typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList result(executionContext); const XObjectPtr nodesetResult(executeMore(context, opPos + 2, executionContext, *result)); const NodeRefListBase* const theNodeList = nodesetResult.null() == false ? &nodesetResult->nodeset() : &*result; assert(theNodeList != 0); const NodeRefListBase::size_type theLength = theNodeList->getLength(); if (theLength != 0) { assert(theNodeList->item(0) != 0); const GetCachedString theData(executionContext); XalanDOMString& theString = theData.get(); for (NodeRefListBase::size_type i = 0; i < theLength; i++) { DOMServices::getNodeData(*theNodeList->item(i), executionContext, theString); sum = DoubleSupport::add(sum, DoubleSupport::toDouble(theString, executionContext.getMemoryManager())); theString.clear(); } } return sum; } XPath::eMatchScore XPath::locationPathPattern( XPathExecutionContext& executionContext, XalanNode& context, OpCodeMapPositionType opPos) const { eMatchScore score = eMatchScoreNone; stepPattern(executionContext, &context, opPos + 2, score); return score; } void XPath::step( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, MutableNodeRefList& queryResults) const { const XPathExpression& currentExpression = getExpression(); const OpCodeMapValueType stepType = currentExpression.getOpCodeMapValue(opPos); typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList subQueryResults(executionContext); bool continueStepRecursion = true; switch(stepType) { case XPathExpression::eOP_VARIABLE: case XPathExpression::eOP_EXTFUNCTION: case XPathExpression::eOP_FUNCTION: case XPathExpression::eOP_GROUP: opPos = findNodeSet(executionContext, context, opPos, stepType, *subQueryResults); break; case XPathExpression::eFROM_ROOT: opPos = findRoot(executionContext, context, opPos, stepType, *subQueryResults); break; case XPathExpression::eFROM_PARENT: opPos = findParent(executionContext, context, opPos, stepType, *subQueryResults); break; case XPathExpression::eFROM_SELF: opPos = findSelf(executionContext, context, opPos, stepType, *subQueryResults); break; case XPathExpression::eFROM_ANCESTORS: opPos = findAncestors(executionContext, context, opPos, stepType, *subQueryResults); break; case XPathExpression::eFROM_ANCESTORS_OR_SELF: opPos = findAncestorsOrSelf(executionContext, context, opPos, stepType, *subQueryResults); break; case XPathExpression::eMATCH_ATTRIBUTE: continueStepRecursion = false; // fall-through on purpose. case XPathExpression::eFROM_ATTRIBUTES: opPos = findAttributes(executionContext, context, opPos, stepType, *subQueryResults); break; case XPathExpression::eMATCH_ANY_ANCESTOR: case XPathExpression::eMATCH_IMMEDIATE_ANCESTOR: case XPathExpression::eMATCH_ANY_ANCESTOR_WITH_PREDICATE: continueStepRecursion = false; // fall-through on purpose. case XPathExpression::eFROM_CHILDREN: opPos = findChildren(executionContext, context, opPos, stepType, *subQueryResults); break; case XPathExpression::eFROM_DESCENDANTS: case XPathExpression::eFROM_DESCENDANTS_OR_SELF: opPos = findDescendants(executionContext, context, opPos, stepType, *subQueryResults); break; case XPathExpression::eFROM_FOLLOWING: opPos = findFollowing(executionContext, context, opPos, stepType, *subQueryResults); break; case XPathExpression::eFROM_FOLLOWING_SIBLINGS: opPos = findFollowingSiblings(executionContext, context, opPos, stepType, *subQueryResults); break; case XPathExpression::eFROM_PRECEDING: opPos = findPreceeding(executionContext, context, opPos, stepType, *subQueryResults); break; case XPathExpression::eFROM_PRECEDING_SIBLINGS: opPos = findPreceedingSiblings(executionContext, context, opPos, stepType, *subQueryResults); break; case XPathExpression::eFROM_NAMESPACE: opPos = findNamespace(executionContext, context, opPos, stepType, *subQueryResults); break; default: opPos = findNodesOnUnknownAxis(executionContext, context, opPos, stepType, *subQueryResults); break; } OpCodeMapValueType nextStepType = currentExpression.getOpCodeMapValue(opPos); // Push and pop the context node list... XPathExecutionContext::ContextNodeListPushAndPop thePushAndPop( executionContext, *subQueryResults); if(XPathExpression::eOP_PREDICATE == nextStepType || XPathExpression::eOP_PREDICATE_WITH_POSITION == nextStepType) { opPos = predicates( executionContext, opPos, *subQueryResults); nextStepType = currentExpression.getOpCodeMapValue(opPos); } if(XPathExpression::eENDOP != nextStepType && continueStepRecursion == true) { const NodeRefListBase::size_type nContexts = subQueryResults->getLength(); if (nContexts > 0) { for(NodeRefListBase::size_type i = 0; i < nContexts; i++) { XalanNode* const node = subQueryResults->item(i); assert(node != 0); BorrowReturnMutableNodeRefList mnl(executionContext); step(executionContext, node, opPos, *mnl); if (mnl->empty() == false) { if(queryResults.empty() == false) { queryResults.addNodesInDocOrder(*mnl, executionContext); queryResults.setDocumentOrder(); } else { assert(mnl->getDocumentOrder() == true); queryResults.swap(*mnl); } } } if (queryResults.empty() == true) { queryResults.setDocumentOrder(); } } } else { if (subQueryResults->empty() == true) { queryResults.clear(); queryResults.setDocumentOrder(); } else if (subQueryResults->getReverseDocumentOrder() == true) { queryResults.swap(*subQueryResults); queryResults.reverse(); } else { assert(subQueryResults->getDocumentOrder() == true); queryResults.swap(*subQueryResults); } } } XPath::eMatchScore XPath::doStepPredicate( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapPositionType startOpPos, eMatchScore score) const { const XPathExpression& currentExpression = getExpression(); OpCodeMapValueType nextStepType = currentExpression.getOpCodeMapValue(opPos); if (XPathExpression::eOP_PREDICATE == nextStepType || XPathExpression::eOP_PREDICATE_WITH_POSITION == nextStepType) { do { // This is a quick hack to look ahead and see if we have // number literal as the predicate, i.e. match="foo[1]". if (XPathExpression::eOP_PREDICATE_WITH_POSITION == nextStepType) { if (m_expression.getOpCodeMapValue(opPos + 2) == XPathExpression::eOP_NUMBERLIT) { score = handleFoundIndexPositional( executionContext, context, startOpPos); } else { score = handleFoundIndex( executionContext, context, startOpPos); } } else { const XObjectPtr pred(predicate(context, opPos, executionContext)); assert(pred.get() != 0); if(XObject::eTypeNumber == pred->getType()) { score = handleFoundIndex(executionContext, context, startOpPos); } else if(pred->boolean(executionContext) == false) { score = eMatchScoreNone; break; } } opPos = currentExpression.getNextOpCodePosition(opPos); nextStepType = currentExpression.getOpCodeMapValue(opPos); } while(XPathExpression::eOP_PREDICATE == nextStepType || XPathExpression::eOP_PREDICATE_WITH_POSITION == nextStepType); } return score; } XalanNode* XPath::stepPattern( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, eMatchScore& scoreHolder) const { const XPathExpression& currentExpression = getExpression(); const OpCodeMapPositionType endStep = currentExpression.getNextOpCodePosition(opPos); OpCodeMapValueType nextStepType = currentExpression.getOpCodeMapValue(endStep); bool fDoPredicates = true; if(XPathExpression::eENDOP != nextStepType) { // Continue step via recursion... context = stepPattern( executionContext, context, endStep, scoreHolder); if(0 == context) { scoreHolder = eMatchScoreNone; } if (scoreHolder == eMatchScoreNone) { // !!!!!!!!!!!!! Big ugly return here !!!!!!!!!!!!!!!!!!! return 0; } scoreHolder = eMatchScoreOther; if (nextStepType != XPathExpression::eMATCH_ANY_ANCESTOR_WITH_FUNCTION_CALL) { context = DOMServices::getParentOfNode(*context); } if(0 == context) { // !!!!!!!!!!!!! Big ugly return here !!!!!!!!!!!!!!!!!!! return 0; } } assert(context != 0); OpCodeMapValueType argLen = 0; eMatchScore score = eMatchScoreNone; const OpCodeMapPositionType startOpPos = opPos; const OpCodeMapValueType stepType = currentExpression.getOpCodeMapValue(opPos); switch(stepType) { case XPathExpression::eMATCH_ANY_ANCESTOR_WITH_FUNCTION_CALL: score = scoreHolder; break; case XPathExpression::eOP_FUNCTION: { argLen = currentExpression.getOpCodeLengthFromOpMap(opPos, executionContext.getMemoryManager()); const XObjectPtr obj(executeMore(context, opPos, executionContext)); assert(obj.get() != 0); const NodeRefListBase& nl = obj->nodeset(); const NodeRefListBase::size_type len = nl.getLength(); if (nextStepType == XPathExpression::eMATCH_ANY_ANCESTOR_WITH_FUNCTION_CALL) { bool fFound = false; while(context != 0 && fFound == false) { for(NodeRefListBase::size_type i = 0; i < len; i++) { XalanNode* const n = nl.item(i); if(n == context) { score = eMatchScoreOther; context = n; fFound = true; break; } } context = DOMServices::getParentOfNode(*context); } } else { for(NodeRefListBase::size_type i = 0; i < len; i++) { XalanNode* const n = nl.item(i); if(n == context) { score = eMatchScoreOther; context = n; break; } } } } break; case XPathExpression::eFROM_ROOT: { argLen = currentExpression.getOpCodeArgumentLength(opPos); opPos += 3; const XalanNode::NodeType nodeType = context->getNodeType(); if (nodeType == XalanNode::DOCUMENT_NODE || nodeType == XalanNode::DOCUMENT_FRAGMENT_NODE) { score = eMatchScoreOther; } else { const OpCodeMapPositionType prevPos = currentExpression.getNextOpCodePosition(startOpPos); const OpCodeMapValueType prevStepType = currentExpression.getOpCodeMapValue(prevPos); if (eMatchScoreNone == score && (prevStepType == XPathExpression::eMATCH_ANY_ANCESTOR || prevStepType == XPathExpression::eMATCH_ANY_ANCESTOR_WITH_PREDICATE)) { const NodeTester theTester( *this, executionContext, opPos, argLen, stepType); while(0 != context) { score = theTester(*context, context->getNodeType()); if(eMatchScoreNone != score) break; context = DOMServices::getParentOfNode(*context); } } } } break; case XPathExpression::eMATCH_ATTRIBUTE: { argLen = currentExpression.getOpCodeArgumentLength(opPos); opPos += 3; score = NodeTester( *this, executionContext, opPos, argLen, XPathExpression::eFROM_ATTRIBUTES)(*context, context->getNodeType()); } break; case XPathExpression::eMATCH_ANY_ANCESTOR: case XPathExpression::eMATCH_ANY_ANCESTOR_WITH_PREDICATE: { assert(fDoPredicates == true); fDoPredicates = false; argLen = currentExpression.getOpCodeArgumentLength(opPos); XalanNode::NodeType nodeType = context->getNodeType(); if(nodeType != XalanNode::ATTRIBUTE_NODE) { opPos += 3; const NodeTester theTester( *this, executionContext, opPos, argLen, stepType); for(;;) { score = theTester(*context, nodeType); if (eMatchScoreNone != score) { score = doStepPredicate( executionContext, context, opPos + argLen, startOpPos, score); if (eMatchScoreNone != score) { break; } } context = DOMServices::getParentOfNode(*context); if (context == 0) break; nodeType = context->getNodeType(); } } } break; case XPathExpression::eMATCH_IMMEDIATE_ANCESTOR: { argLen = currentExpression.getOpCodeArgumentLength(opPos); const XalanNode::NodeType nodeType = context->getNodeType(); if(nodeType != XalanNode::ATTRIBUTE_NODE) { opPos += 3; score = NodeTester( *this, executionContext, opPos, argLen, XPathExpression::eMATCH_IMMEDIATE_ANCESTOR)(*context, nodeType); } } break; default: { const GetCachedString theGuard1(executionContext); const GetCachedString theGuard2(executionContext); executionContext.problem( XPathExecutionContext::eXPath, XPathExecutionContext::eError, XalanMessageLoader::getMessage( theGuard1.get(), XalanMessages::UnknownMatchOpCode_1Param, NumberToDOMString( stepType, theGuard2.get())), getLocator(), context); break; } } if (fDoPredicates == true && score != eMatchScoreNone) { score = doStepPredicate( executionContext, context, opPos + argLen, startOpPos, score); } if (scoreHolder == eMatchScoreNone || score == eMatchScoreNone) { scoreHolder = score; } return score == eMatchScoreNone ? 0 : context; } XPath::eMatchScore XPath::handleFoundIndex( XPathExecutionContext& executionContext, XalanNode* localContext, OpCodeMapPositionType startOpPos) const { // We have an index somewhere in our pattern. So, we have // to do a full search for our step, using the parent as // localContext, then see if the current localContext is found in the // node set. Seems crazy, but, so far, it seems like the // easiest way. XalanNode* const parentContext = DOMServices::getParentOfNode(*localContext); if (parentContext == 0) { return eMatchScoreNone; } else { typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList mnl(executionContext); step(executionContext, parentContext, startOpPos, *mnl); if (mnl->indexOf(localContext) == MutableNodeRefList::npos) { return eMatchScoreNone; } else { return eMatchScoreOther; } } } XPath::eMatchScore XPath::handleFoundIndexPositional( XPathExecutionContext& executionContext, XalanNode* localContext, OpCodeMapPositionType startOpPos) const { XalanNode* const parentContext = DOMServices::getParentOfNode(*localContext); if (parentContext == 0) { return eMatchScoreNone; } else { typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList mnl(executionContext); step(executionContext, parentContext, startOpPos, *mnl); if (mnl->empty() == true) { return eMatchScoreNone; } else { assert(mnl->getLength() == 1 && mnl->item(0) == localContext); return eMatchScoreOther; } } } XPath::OpCodeMapPositionType XPath::findNodeSet( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType /* stepType */, MutableNodeRefList& subQueryResults) const { assert(subQueryResults.empty() == true); const XObjectPtr nodesetResult(executeMore(context, opPos, executionContext, subQueryResults)); if (nodesetResult.null() == true) { assert(subQueryResults.getDocumentOrder()); } else { subQueryResults.addNodesInDocOrder(nodesetResult->nodeset(), executionContext); subQueryResults.setDocumentOrder(); } return opPos + getExpression().getOpCodeLengthFromOpMap(opPos, executionContext.getMemoryManager()); } XPath::OpCodeMapPositionType XPath::findRoot( XPathExecutionContext& /* executionContext */, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType /* stepType */, MutableNodeRefList& subQueryResults) const { assert(context != 0); assert(subQueryResults.empty() == true); const XPathExpression& currentExpression = getExpression(); const OpCodeMapValueType argLen = currentExpression.getOpCodeArgumentLength(opPos); XalanNode::NodeType nodeType = context->getNodeType(); XalanNode* docContext = nodeType == XalanNode::DOCUMENT_NODE ? context : context->getOwnerDocument(); // This is a special case for RTFs, as the "owner document" is // just a factory for the RTF. Instead, we have to search for // the containing XalanDocumentFragment node. if (static_cast(docContext)->getDocumentElement() == 0) { docContext = context; for(;;) { if (nodeType == XalanNode::DOCUMENT_FRAGMENT_NODE) { break; } else { docContext = DOMServices::getParentOfNode(*docContext); assert(docContext != 0); nodeType = docContext->getNodeType(); } } } assert(docContext != 0); subQueryResults.addNode(docContext); subQueryResults.setDocumentOrder(); return opPos + argLen + 3; } XPath::OpCodeMapPositionType XPath::findParent( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const { assert(subQueryResults.empty() == true); assert(context != 0); const XPathExpression& currentExpression = getExpression(); const OpCodeMapValueType argLen = currentExpression.getOpCodeArgumentLength(opPos); XalanNode* const theParent = DOMServices::getParentOfNode(*context); opPos += 3; if(0 != theParent) { if(argLen > 0) { const NodeTester theTester( *this, executionContext, opPos, argLen, stepType); const eMatchScore score = theTester(*theParent, theParent->getNodeType()); if(eMatchScoreNone != score) { subQueryResults.addNode(theParent); } } else { subQueryResults.addNode(theParent); } } subQueryResults.setDocumentOrder(); return opPos + argLen; } XPath::OpCodeMapPositionType XPath::findSelf( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const { assert(subQueryResults.empty() == true); assert(context != 0); const XPathExpression& currentExpression = getExpression(); const OpCodeMapValueType argLen = currentExpression.getOpCodeArgumentLength(opPos); opPos += 3; if(argLen == 0) { subQueryResults.addNode(context); } else { const NodeTester theTester( *this, executionContext, opPos, argLen, stepType); const eMatchScore score = theTester(*context, context->getNodeType()); if(eMatchScoreNone != score) { subQueryResults.addNode(context); } } subQueryResults.setDocumentOrder(); return opPos + argLen; } XPath::OpCodeMapPositionType XPath::findAncestors( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const { assert(subQueryResults.empty() == true); assert(context != 0); context = DOMServices::getParentOfNode(*context); const XPathExpression& currentExpression = getExpression(); const OpCodeMapValueType argLen = currentExpression.getOpCodeArgumentLength(opPos); opPos += 3; if (context != 0) { const NodeTester theTester( *this, executionContext, opPos, argLen, stepType); do { const eMatchScore score = theTester(*context, context->getNodeType()); if(eMatchScoreNone != score) { subQueryResults.addNode(context); } context = DOMServices::getParentOfNode(*context); } while(0 != context); } subQueryResults.setReverseDocumentOrder(); return opPos + argLen; } XPath::OpCodeMapPositionType XPath::findAncestorsOrSelf( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const { assert(subQueryResults.empty() == true); assert(context != 0); const XPathExpression& currentExpression = getExpression(); const OpCodeMapValueType argLen = currentExpression.getOpCodeArgumentLength(opPos); opPos += 3; const NodeTester theTester( *this, executionContext, opPos, argLen, stepType); do { const eMatchScore score = theTester(*context, context->getNodeType()); if(eMatchScoreNone != score) { subQueryResults.addNode(context); } context = DOMServices::getParentOfNode(*context); } while(0 != context); subQueryResults.setReverseDocumentOrder(); return opPos + argLen; } XPath::OpCodeMapPositionType XPath::findAttributes( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const { assert(subQueryResults.empty() == true); assert(context != 0); const XPathExpression& currentExpression = getExpression(); const OpCodeMapValueType argLen = currentExpression.getOpCodeArgumentLength(opPos); opPos += 3; if(context->getNodeType() == XalanNode::ELEMENT_NODE) { const XalanNamedNodeMap* const attributeList = context->getAttributes(); if(attributeList != 0) { const XalanSize_t nAttrs = attributeList->getLength(); if (nAttrs != 0) { const NodeTester theTester( *this, executionContext, opPos, argLen, stepType); for (XalanSize_t j = 0; j < nAttrs; j++) { XalanNode* const theNode = attributeList->item(j); assert(theNode != 0 && theNode->getNodeType() == XalanNode::ATTRIBUTE_NODE); const eMatchScore score = theTester(*theNode, XalanNode::ATTRIBUTE_NODE); if(eMatchScoreNone != score) { subQueryResults.addNode(theNode); } } } } } subQueryResults.setDocumentOrder(); return opPos + argLen; } XPath::OpCodeMapPositionType XPath::findChildren( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const { assert(subQueryResults.empty() == true); assert(context != 0); XalanNode* child = context->getFirstChild(); const XPathExpression& currentExpression = getExpression(); const OpCodeMapValueType argLen = currentExpression.getOpCodeArgumentLength(opPos); opPos += 3; if (child != 0) { const NodeTester theTester( *this, executionContext, opPos, argLen, stepType); do { const eMatchScore score = theTester(*child, child->getNodeType()); if(eMatchScoreNone != score) { subQueryResults.addNode(child); } child = child->getNextSibling(); } while(0 != child); } subQueryResults.setDocumentOrder(); return opPos + argLen; } XPath::OpCodeMapPositionType XPath::findDescendants( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const { assert(subQueryResults.empty() == true); assert(context != 0); const XPathExpression& currentExpression = getExpression(); const OpCodeMapValueType argLen = currentExpression.getOpCodeArgumentLength(opPos); // Perform a pre-order traversal of descendents... XalanNode* pos = context; opPos += 3; const NodeTester theTester( *this, executionContext, opPos, argLen, stepType); do { if(stepType == XPathExpression::eFROM_DESCENDANTS_OR_SELF || context != pos) { const eMatchScore score = theTester(*pos, pos->getNodeType()); if(score != eMatchScoreNone) { subQueryResults.addNode(pos); } } XalanNode* nextNode = pos->getFirstChild(); while(0 == nextNode) { if(context == pos) break; nextNode = pos->getNextSibling(); if(0 == nextNode) { pos = DOMServices::getParentOfNode(*pos); if(context == pos || pos == 0) { nextNode = 0; break; } } } pos = nextNode; } while(0 != pos); subQueryResults.setDocumentOrder(); return opPos + argLen; } XPath::OpCodeMapPositionType XPath::findFollowing( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const { assert(subQueryResults.empty() == true); assert(context != 0); const XPathExpression& currentExpression = getExpression(); const OpCodeMapValueType argLen = currentExpression.getOpCodeArgumentLength(opPos); opPos += 3; // What fun... XalanDocument* const doc = context->getOwnerDocument(); XalanNode* pos = context; const NodeTester theTester( *this, executionContext, opPos, argLen, stepType); while(0 != pos) { XalanNode* nextNode = 0; if(pos != context) { const eMatchScore score = theTester(*pos, pos->getNodeType()); if(eMatchScoreNone != score) { subQueryResults.addNodeInDocOrder(pos, executionContext); } nextNode = pos->getFirstChild(); } else { nextNode = 0; } while(0 == nextNode) { // This requires some explanation. pos could be an attribute // node, so getNextSibling() will always return 0. In that // case, I want to continue the search with the first child of // the owner element, as if attribute nodes are children which // are always _before_ the first child element. I don't have to // consider following attributes, since they _never_ match the // following axis. if (pos->getNodeType() == XalanNode::ATTRIBUTE_NODE) { assert(DOMServices::getParentOfNode(*pos) != 0); nextNode = DOMServices::getParentOfNode(*pos)->getFirstChild(); } else { nextNode = pos->getNextSibling(); } if(0 == nextNode) { pos = DOMServices::getParentOfNode(*pos); if(doc == pos || 0 == pos) { nextNode = 0; break; } } } pos = nextNode; } subQueryResults.setDocumentOrder(); return opPos + argLen; } XPath::OpCodeMapPositionType XPath::findFollowingSiblings( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const { assert(subQueryResults.empty() == true); assert(context != 0); const XPathExpression& currentExpression = getExpression(); const OpCodeMapValueType argLen = currentExpression.getOpCodeArgumentLength(opPos); XalanNode* pos = context->getNextSibling(); opPos += 3; if (pos != 0) { const NodeTester theTester( *this, executionContext, opPos, argLen, stepType); do { const eMatchScore score = theTester(*pos, pos->getNodeType()); if(eMatchScoreNone != score) { subQueryResults.addNode(pos); } pos = pos->getNextSibling(); } while(0 != pos); } subQueryResults.setDocumentOrder(); return opPos + argLen; } /* * This is bit of a hack to figure out where we should start for * the preceeding axis. It's mostly to support RTFs which have * been coerced to nodesets through the nodeset() extension function. */ static XalanNode* findTopNode( XalanNode* context, XalanNode::NodeType theType) { assert(context != 0); if (theType == XalanNode::DOCUMENT_NODE) { return context; } else { XalanDocument* const theDocument = context->getOwnerDocument(); assert(theDocument != 0); if (theDocument->getDocumentElement() != 0) { return theDocument; } else { XalanNode* theNode = 0; while(context != 0 && context->getNodeType() != XalanNode::DOCUMENT_NODE) { theNode = context; context = DOMServices::getParentOfNode(*context); } assert(theNode != 0); return theNode; } } } XPath::OpCodeMapPositionType XPath::findPreceeding( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const { assert(subQueryResults.empty() == true); assert(context != 0); const XPathExpression& currentExpression = getExpression(); const OpCodeMapValueType argLen = currentExpression.getOpCodeArgumentLength(opPos); opPos += 3; // Ugh. Reverse document order, no parents, I guess. const XalanNode::NodeType theType = context->getNodeType(); XalanNode* const topNode = findTopNode(context, theType); XalanNode* pos = topNode; // If the context node is an attribute, we need to perform some // magic to stop the search at the appropriate point, which is when // we arrive back at the parent. const bool contextIsAttribute = theType == XalanNode::ATTRIBUTE_NODE ? true : false; const XalanNode* const theAttributeContextParent = contextIsAttribute == true ? DOMServices::getParentOfNode(*context) : 0; const NodeTester theTester( *this, executionContext, opPos, argLen, stepType); while(0 != pos) { if(context == pos) { break; } const eMatchScore score = theTester(*pos, pos->getNodeType()); if(eMatchScoreNone != score) { // Ugh. If I could think a little better tonight, I'm // sure there's a better way to check for the parent. bool isParent = false; XalanNode* parent = DOMServices::getParentOfNode(*context); while(0 != parent) { if(parent == pos) { isParent = true; break; } parent = DOMServices::getParentOfNode(*parent); } if(isParent == false) { subQueryResults.addNode(pos); } } XalanNode* nextNode = 0; // Check to see if we're back at the attribute context node's // parent, in which case, we should stop. if (contextIsAttribute == true && pos == theAttributeContextParent) { nextNode = context; } else { nextNode = pos->getFirstChild(); } while(0 == nextNode) { nextNode = pos->getNextSibling(); if(0 == nextNode) { pos = DOMServices::getParentOfNode(*pos); if(topNode == pos) { nextNode = 0; break; } } } pos = nextNode; } // Now, reverse the order of the nodes, since // preceeding is a reverse axis, and we searched // the document from the root to this node. subQueryResults.reverse(); subQueryResults.setReverseDocumentOrder(); return opPos + argLen; } XPath::OpCodeMapPositionType XPath::findPreceedingSiblings( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const { assert(subQueryResults.empty() == true); assert(context != 0); const XPathExpression& currentExpression = getExpression(); const OpCodeMapValueType argLen = currentExpression.getOpCodeArgumentLength(opPos); opPos += 3; #if 1 XalanNode* pos = context->getPreviousSibling(); if (pos != 0) { const NodeTester theTester( *this, executionContext, opPos, argLen, stepType); do { const eMatchScore score = theTester(*pos, pos->getNodeType()); if(eMatchScoreNone != score) { subQueryResults.addNode(pos); } pos = pos->getPreviousSibling(); } while(0 != pos); } #else // This is some experimental code which avoids using getPreviousSibling(), with the idea that we // could reduce our in-memory representation size by not keeping the previous sibling node. XalanNode* pos = context->getParentNode(); if (pos != 0) { pos = pos->getFirstChild(); if (pos != context) { const NodeTester theTester( *this, executionContext, opPos, argLen, stepType); do { const eMatchScore score = theTester(*pos, pos->getNodeType()); if(eMatchScoreNone != score) { subQueryResults.addNode(pos); } pos = pos->getNextSibling(); } while(pos != context); } // Now, reverse the order of the nodes, since // preceeding-sibling is a reverse axis, and we searched // the document from the root to this node. subQueryResults.reverse(); } #endif subQueryResults.setReverseDocumentOrder(); return opPos + argLen; } XPath::OpCodeMapPositionType XPath::findNamespace( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const { assert(subQueryResults.empty() == true); assert(context != 0); const XPathExpression& currentExpression = getExpression(); const OpCodeMapValueType argLen = currentExpression.getOpCodeArgumentLength(opPos); opPos += 3; if(context->getNodeType() == XalanNode::ELEMENT_NODE) { // Look up the element chain until we hit the document, so that we // get all of the attribute/namespace nodes. const XalanNode* const theOwnerDocument = context->getOwnerDocument(); assert(theOwnerDocument != 0); const XalanNode* theCurrentNode = context; const NodeTester theTester( *this, executionContext, opPos, argLen, stepType); NodeRefListBase::size_type nNSFound = 0; bool defaultNSFound = false; do { const XalanNamedNodeMap* const attributeList = theCurrentNode->getAttributes(); if(attributeList != 0) { XalanSize_t nAttrs = attributeList->getLength(); while (nAttrs > 0) { --nAttrs; XalanNode* const attr = attributeList->item(nAttrs); assert(attr != 0 && attr->getNodeType() == XalanNode::ATTRIBUTE_NODE); const XalanDOMString& theNodeName = attr->getNodeName(); // This is an optimization to keep non-namespace attributes out of // the call to the NodeTester. if (startsWith(theNodeName, DOMServices::s_XMLNamespaceWithSeparator) == true || theNodeName == DOMServices::s_XMLNamespace) { const eMatchScore score = theTester(*attr, XalanNode::ATTRIBUTE_NODE); if(score != eMatchScoreNone) { const XalanDOMString& theNodeValue = attr->getNodeValue(); bool foundNSMatch = false; // Need to check default NS slightly differently if (theNodeName == DOMServices::s_XMLNamespace) { // If namespace is empty, don't add anything // as under XPath an empty default is indicated // by no node. foundNSMatch = defaultNSFound || (theNodeValue == DOMServices::s_emptyString); defaultNSFound = true; } for (NodeRefListBase::size_type lstIndex = 0; foundNSMatch == false && lstIndex < nNSFound; ++lstIndex) { if (subQueryResults.item(lstIndex)->getNodeName() == theNodeName) { foundNSMatch = true; } } if (foundNSMatch == false) { subQueryResults.addNode(attr); ++nNSFound; } } } } } theCurrentNode = theCurrentNode->getParentNode(); } while (theCurrentNode != theOwnerDocument && theCurrentNode != 0); } subQueryResults.reverse(); subQueryResults.setDocumentOrder(); return opPos + argLen; } XPath::OpCodeMapPositionType XPath::findNodesOnUnknownAxis( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& /* subQueryResults */) const { const XPathExpression& currentExpression = getExpression(); const OpCodeMapValueType argLen = currentExpression.getOpCodeArgumentLength(opPos); const GetCachedString theGuard1(executionContext); const GetCachedString theGuard2(executionContext); executionContext.problem( XPathExecutionContext::eXPath, XPathExecutionContext::eError, XalanMessageLoader::getMessage( theGuard1.get(), XalanMessages::UnknownAxis_1Param, NumberToDOMString( stepType, theGuard2.get())), getLocator(), context); return opPos + argLen + 3; } XPath::OpCodeMapPositionType XPath::predicates( XPathExecutionContext& executionContext, OpCodeMapPositionType opPos, MutableNodeRefList& subQueryResults) const { assert(&executionContext.getContextNodeList() == &subQueryResults); const XPathExpression& currentExpression = getExpression(); assert(currentExpression.getOpCodeMapValue(opPos) == XPathExpression::eOP_PREDICATE || currentExpression.getOpCodeMapValue(opPos) == XPathExpression::eOP_PREDICATE_WITH_POSITION); NodeRefListBase::size_type theLength = subQueryResults.getLength(); for(;;) { // If we have no nodes left, then there's no point in executing any // predicates. However, we will continue to loop, since we need to // update endPredicatePos. if (theLength > 0) { const OpCodeMapPositionType predOpPos = opPos + 2; // OK, this is a huge hack/optimization. If the predicate is // simple a number, such as [2], we can just get the // numeric value from the expression, and not bother executing // the predicate. Furthermore, we don't need to execute the // predicate for each node, since the evaluation is no dependent // on the context node. All we really have to do is remove all // nodes from subQueryResults, _except_ for the node at that // position. The only trick is that XPath indexes from 1, while // our node lists index from 0. if (m_expression.getOpCodeMapValue(predOpPos) == XPathExpression::eOP_NUMBERLIT) { assert(m_expression.tokenQueueSize() > m_expression.getOpCodeMapValue(predOpPos + 3)); // Get the value of the number... const double theIndex = m_expression.getNumberLiteral(m_expression.getOpCodeMapValue(predOpPos + 2)); // If the index is out of range, or not an integer, just clear subQueryResults... if (theIndex <= 0.0 || NodeRefListBase::size_type(theIndex) > theLength || double(NodeRefListBase::size_type(theIndex)) != theIndex) { subQueryResults.clear(); } else if (theLength > 1) { // Save the matching node... XalanNode* const theNode = subQueryResults.item(NodeRefListBase::size_type(theIndex) - 1); // Clear the list... subQueryResults.clear(); // Add the node back in... subQueryResults.addNode(theNode); subQueryResults.setDocumentOrder(); } else { // OK, if there's only 1 node in the list, then // we don't need to bother modifying the list. // Just assert that theIndex == 1.0... assert(theIndex == 1.0); } } else { for(NodeRefListBase::size_type i = 0; i < theLength; ++i) { XalanNode* const theNode = subQueryResults.item(i); assert(theNode != 0); const XObjectPtr pred(predicate(theNode, opPos, executionContext)); assert(pred.get() != 0); // Remove any node that doesn't satisfy the predicate. if((XObject::eTypeNumber == pred->getType() && i + 1 != pred->num(executionContext)) || pred->boolean(executionContext) == false) { // Set the node to 0. After we're done, // we'll clear it out. subQueryResults.setNode(i, 0); } } // Clear out any null entries... subQueryResults.clearNulls(); } } opPos = currentExpression.getNextOpCodePosition(opPos); const OpCodeMapValueType nextStepType = currentExpression.getOpCodeMapValue(opPos); if (nextStepType != XPathExpression::eOP_PREDICATE && nextStepType != XPathExpression::eOP_PREDICATE_WITH_POSITION) { break; } else { theLength = subQueryResults.getLength(); } } return opPos; } XPath::NodeTester::NodeTester(const NodeTester& theSource) : m_executionContext(theSource.m_executionContext), m_targetNamespace(theSource.m_targetNamespace), m_targetLocalName(theSource.m_targetLocalName), m_testFunction(theSource.m_testFunction), m_testFunction2(theSource.m_testFunction2) { } XPath::NodeTester::NodeTester( const XPath& xpath, XPathExecutionContext& executionContext, OpCodeMapPositionType opPos, OpCodeMapValueType argLen, OpCodeMapValueType stepType) : m_executionContext(&executionContext), m_targetNamespace(0), m_targetLocalName(0), m_testFunction(0), m_testFunction2(&NodeTester::testDefault2) { const XPathExpression& theExpression = xpath.getExpression(); switch(theExpression.getOpCodeMapValue(opPos)) { case XPathExpression::eNODETYPE_COMMENT: m_testFunction = &NodeTester::testComment; break; case XPathExpression::eNODETYPE_TEXT: m_testFunction = &NodeTester::testText; break; case XPathExpression::eNODETYPE_PI: if (argLen == 1) { m_testFunction = &NodeTester::testPI; } else if(argLen == 2) { m_testFunction = &NodeTester::testPIName; m_targetLocalName = getStringFromTokenQueue( theExpression, opPos + 1); } else { GetCachedString theGuard(executionContext); executionContext.problem( XPathExecutionContext::eXPath, XPathExecutionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::ArgLengthNodeTestIsIncorrect_1Param, "processing-instruction()"), xpath.getLocator(), executionContext.getCurrentNode()); } break; case XPathExpression::eNODETYPE_NODE: m_testFunction = &NodeTester::testNode; break; case XPathExpression::eNODETYPE_ROOT: m_testFunction = &NodeTester::testRoot; break; case XPathExpression::eNODENAME: { bool isTotallyWild = false; m_targetNamespace = getStringFromTokenQueue( theExpression, opPos + 1); if (m_targetNamespace == 0 && theExpression.getOpCodeMapValue(opPos + 2) == XPathExpression::eELEMWILDCARD) { isTotallyWild = true; } else { m_targetLocalName = getStringFromTokenQueue( theExpression, opPos + 2); } if(stepType == XPathExpression::eFROM_ATTRIBUTES) { if (isTotallyWild == true) { m_testFunction = &NodeTester::testAttributeTotallyWild; } else if (m_targetNamespace == 0) { assert(m_targetLocalName != 0); m_testFunction = &NodeTester::testAttributeNCName; } else if (m_targetLocalName == 0) { assert(m_targetNamespace != 0); m_testFunction = &NodeTester::testAttributeNamespaceOnly; } else { assert(m_targetNamespace != 0 && m_targetLocalName != 0); m_testFunction = &NodeTester::testAttributeQName; } } else if (stepType == XPathExpression::eFROM_NAMESPACE) { if (isTotallyWild == true) { m_testFunction = &NodeTester::testNamespaceTotallyWild; } else { m_testFunction = &NodeTester::testNamespaceNCName; } } else { if (isTotallyWild == true) { m_testFunction = &NodeTester::testElementTotallyWild; } else if (m_targetNamespace == 0) { m_testFunction = &NodeTester::testElementNCName; } else if (m_targetLocalName == 0) { assert(m_targetNamespace != 0); m_testFunction = &NodeTester::testElementNamespaceOnly; } else { assert(m_targetNamespace != 0 && m_targetLocalName != 0); m_testFunction = &NodeTester::testElementQName; } } } break; default: m_testFunction = &NodeTester::testDefault; break; } assert(m_testFunction != 0); } XPath::NodeTester::NodeTester() : m_executionContext(0), m_targetNamespace(0), m_targetLocalName(0), m_testFunction(&NodeTester::testDefault), m_testFunction2(&NodeTester::testDefault2) { } XPath::NodeTester::NodeTester( XPathConstructionContext& theConstructionContext, const XalanDOMString& theNameTest, const PrefixResolver& thePrefixResolver, const Locator* theLocator, eMatchScore* theMatchScore) : m_executionContext(0), m_targetNamespace(0), m_targetLocalName(0), m_testFunction(&NodeTester::testDefault), m_testFunction2(&NodeTester::testDefault2) { const eMatchScore theScore = initialize( theConstructionContext, theNameTest, thePrefixResolver, theLocator); if (theMatchScore != 0) { *theMatchScore = theScore; } } XPath::NodeTester::NodeTester( const XalanDOMString& theNamespaceURI, const XalanDOMString& theLocalName, eMatchScore* theMatchScore) : m_executionContext(0), m_targetNamespace(0), m_targetLocalName(0), m_testFunction(&NodeTester::testDefault), m_testFunction2(0) { const eMatchScore theScore = initialize(theNamespaceURI, theLocalName); if (theMatchScore != 0) { *theMatchScore = theScore; } } XPath::eMatchScore XPath::NodeTester::initialize( XPathConstructionContext& theConstructionContext, const XalanDOMString& theNameTest, const PrefixResolver& thePrefixResolver, const Locator* theLocator) { const XalanDOMString::size_type theLength = theNameTest.length(); if (theLength == 1 && theNameTest[0] == XPath::PSEUDONAME_ANY[0]) { return initialize(s_emptyString, s_emptyString); } else { eMatchScore theResult = eMatchScoreNone; const XalanDOMString::size_type theIndex = indexOf(theNameTest, XalanUnicode::charColon); // If there's no ':', it's an NCName... if (theIndex == theLength) { if (XalanQName::isValidNCName(theNameTest) == false) { const XPathConstructionContext::GetCachedString theGuard(theConstructionContext); theConstructionContext.problem( XPathConstructionContext::eXPath, XPathConstructionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::IsNotValidQName_1Param, theNameTest), theLocator, 0); } else { theResult = initialize( s_emptyString, theConstructionContext.getPooledString(theNameTest)); } } else { const XPathConstructionContext::GetCachedString scratchGuard(theConstructionContext); XalanDOMString& theScratchString = scratchGuard.get(); theScratchString.assign(theNameTest, 0, theIndex); // Get the namespace URI for the prefix... const XalanDOMString* const theNamespaceURI = thePrefixResolver.getNamespaceForPrefix(theScratchString); if (theNamespaceURI == 0) { theConstructionContext.problem( XPathConstructionContext::eXPath, XPathConstructionContext::eError, XalanMessageLoader::getMessage( theScratchString, XalanMessages::PrefixIsNotDeclared_1Param), theLocator, 0); } else { // OK, now we have a namespace URI... if (XalanQName::isValidNCName(theScratchString) == false) { theConstructionContext.problem( XPathConstructionContext::eXPath, XPathConstructionContext::eError, XalanMessageLoader::getMessage( theScratchString, XalanMessages::IsNotValidQName_1Param, theNameTest), theLocator, 0); } else if (theIndex == theLength - 2 && theNameTest[theIndex + 1] == XPath::PSEUDONAME_ANY[0]) { // It's of the form "NCName:*" theResult = initialize( theConstructionContext.getPooledString(*theNamespaceURI), s_emptyString); } else { theScratchString.assign(theNameTest, theIndex + 1, theLength - theIndex - 1); if (XalanQName::isValidNCName(theScratchString) == false) { theConstructionContext.problem( XPathConstructionContext::eXPath, XPathConstructionContext::eError, XalanMessageLoader::getMessage( theScratchString, XalanMessages::IsNotValidQName_1Param, theNameTest), theLocator, 0); } else { // It's of the form "NCName:NCName" theResult = initialize( theConstructionContext.getPooledString(*theNamespaceURI), theConstructionContext.getPooledString(theScratchString)); } } } } return theResult; } } XPath::eMatchScore XPath::NodeTester::initialize( const XalanDOMString& theNamespaceURI, const XalanDOMString& theLocalName) { if (theNamespaceURI.empty() == false) { m_targetNamespace = &theNamespaceURI; if (theLocalName.empty() == true) { m_testFunction2 = &NodeTester::testElementNamespaceOnly2; return eMatchScoreNSWild; } else { m_testFunction2 = &NodeTester::testElementQName2; m_targetLocalName = &theLocalName; return eMatchScoreQName; } } else if (theLocalName.empty() == false) { m_testFunction2 = &NodeTester::testElementNCName2; m_targetLocalName = &theLocalName; return eMatchScoreQName; } else { m_testFunction2 = &NodeTester::testElementTotallyWild2; return eMatchScoreNodeTest; } } inline bool isNamespaceDeclaration(const XalanNode& theAttributeNode) { assert(theAttributeNode.getNodeType() == XalanNode::ATTRIBUTE_NODE); return DOMServices::isNamespaceDeclaration(static_cast(theAttributeNode)); } // MSVC 6 generates some really horrible code for some of these very simple functions when they're inlined... #if defined(_MSC_VER) && _MSC_VER <= 1300 && !defined(__INTEL_COMPILER) #pragma auto_inline(off) #endif XPath::eMatchScore XPath::NodeTester::testComment( const XalanNode& /* context */, XalanNode::NodeType nodeType) const { if (XalanNode::COMMENT_NODE == nodeType) { return eMatchScoreNodeTest; } else { return eMatchScoreNone; } } XPath::eMatchScore XPath::NodeTester::testText( const XalanNode& context, XalanNode::NodeType nodeType) const { if (XalanNode::TEXT_NODE == nodeType && shouldStripSourceNode(static_cast(context)) == false) { return eMatchScoreNodeTest; } else { return eMatchScoreNone; } } XPath::eMatchScore XPath::NodeTester::testPI( const XalanNode& /* context */, XalanNode::NodeType nodeType) const { if (XalanNode::PROCESSING_INSTRUCTION_NODE == nodeType) { return eMatchScoreNodeTest; } else { return eMatchScoreNone; } } XPath::eMatchScore XPath::NodeTester::testPIName( const XalanNode& context, XalanNode::NodeType nodeType) const { assert(m_targetLocalName != 0); if (XalanNode::PROCESSING_INSTRUCTION_NODE == nodeType && context.getNodeName() == *m_targetLocalName) { return eMatchScoreQName; } else { return eMatchScoreNone; } } XPath::eMatchScore XPath::NodeTester::testNode( const XalanNode& context, XalanNode::NodeType nodeType) const { if (nodeType != XalanNode::TEXT_NODE || shouldStripSourceNode(static_cast(context)) == false) { return eMatchScoreNodeTest; } else { return eMatchScoreNone; } } XPath::eMatchScore XPath::NodeTester::testRoot( const XalanNode& /* context */, XalanNode::NodeType nodeType) const { if (XalanNode::DOCUMENT_NODE == nodeType || XalanNode::DOCUMENT_FRAGMENT_NODE == nodeType) { return eMatchScoreOther; } else { return eMatchScoreNone; } } XPath::eMatchScore XPath::NodeTester::testAttributeNCName( const XalanNode& context, XalanNode::NodeType nodeType) const { assert(m_targetNamespace == 0 && m_targetLocalName != 0); if (XalanNode::ATTRIBUTE_NODE != nodeType || isNamespaceDeclaration(context) == true || matchLocalName(context) == false) { return eMatchScoreNone; } else { return eMatchScoreQName; } } inline bool XPath::NodeTester::matchLocalNameAndNamespaceURI(const XalanNode& context) const { assert(m_targetNamespace != 0 && m_targetLocalName != 0); return DOMServices::getLocalNameOfNode(context) == *m_targetLocalName && context.getNamespaceURI() == *m_targetNamespace; } XPath::eMatchScore XPath::NodeTester::testAttributeQName( const XalanNode& context, XalanNode::NodeType nodeType) const { assert(m_targetNamespace != 0 && m_targetLocalName != 0); if (XalanNode::ATTRIBUTE_NODE != nodeType || isNamespaceDeclaration(context) == true || matchLocalNameAndNamespaceURI(context) == false) { return eMatchScoreNone; } else { return eMatchScoreQName; } } XPath::eMatchScore XPath::NodeTester::testAttributeNamespaceOnly( const XalanNode& context, XalanNode::NodeType nodeType) const { assert(m_targetNamespace != 0 && m_targetLocalName == 0); if (XalanNode::ATTRIBUTE_NODE != nodeType || isNamespaceDeclaration(context) == true || matchNamespaceURI(context) == false) { return eMatchScoreNone; } else { return eMatchScoreNSWild; } } XPath::eMatchScore XPath::NodeTester::testAttributeTotallyWild( const XalanNode& context, XalanNode::NodeType nodeType) const { if (XalanNode::ATTRIBUTE_NODE != nodeType || isNamespaceDeclaration(context) == true) { return eMatchScoreNone; } else { return eMatchScoreNodeTest; } } XPath::eMatchScore XPath::NodeTester::testElementNCName( const XalanNode& context, XalanNode::NodeType nodeType) const { assert(m_targetNamespace == 0 && m_targetLocalName != 0); if (XalanNode::ELEMENT_NODE != nodeType || matchLocalName(context) == false) { return eMatchScoreNone; } else { return eMatchScoreQName; } } XPath::eMatchScore XPath::NodeTester::testElementQName( const XalanNode& context, XalanNode::NodeType nodeType) const { assert(m_targetNamespace != 0 && m_targetLocalName != 0); if (XalanNode::ELEMENT_NODE != nodeType || matchLocalNameAndNamespaceURI(context) == false) { return eMatchScoreNone; } else { return eMatchScoreQName; } } XPath::eMatchScore XPath::NodeTester::testElementNamespaceOnly( const XalanNode& context, XalanNode::NodeType nodeType) const { assert(m_targetNamespace != 0 && m_targetLocalName == 0); if (XalanNode::ELEMENT_NODE != nodeType || matchNamespaceURI(context) == false) { return eMatchScoreNone; } else { return eMatchScoreNSWild; } } XPath::eMatchScore XPath::NodeTester::testElementTotallyWild( const XalanNode& /* context */, XalanNode::NodeType nodeType) const { assert(m_targetNamespace == 0 && m_targetLocalName == 0); if (XalanNode::ELEMENT_NODE != nodeType) { return eMatchScoreNone; } else { return eMatchScoreNodeTest; } } XPath::eMatchScore XPath::NodeTester::testElementNCName2(const XalanElement& context) const { assert( m_targetNamespace == 0 && m_targetLocalName != 0); if (matchLocalName(context) == false) { return eMatchScoreNone; } else { return eMatchScoreQName; } } XPath::eMatchScore XPath::NodeTester::testElementQName2(const XalanElement& context) const { assert( m_targetNamespace != 0 && m_targetLocalName != 0); if (matchLocalNameAndNamespaceURI(context) == false) { return eMatchScoreNone; } else { return eMatchScoreQName; } } XPath::eMatchScore XPath::NodeTester::testElementNamespaceOnly2(const XalanElement& context) const { assert( m_targetNamespace != 0 && m_targetLocalName == 0); if (matchNamespaceURI(context) == false) { return eMatchScoreNone; } else { return eMatchScoreNSWild; } } XPath::eMatchScore XPath::NodeTester::testElementTotallyWild2(const XalanElement& /* context */) const { assert( m_targetNamespace == 0 && m_targetLocalName == 0); return eMatchScoreNodeTest; } XPath::eMatchScore XPath::NodeTester::testNamespaceNCName( const XalanNode& context, XalanNode::NodeType nodeType) const { assert(m_targetNamespace == 0 && m_targetLocalName != 0); if (XalanNode::ATTRIBUTE_NODE != nodeType || isNamespaceDeclaration(context) == false || matchNamespace(context) == false) { return eMatchScoreNone; } else { return eMatchScoreQName; } } XPath::eMatchScore XPath::NodeTester::testNamespaceTotallyWild( const XalanNode& context, XalanNode::NodeType nodeType) const { assert(m_targetNamespace == 0 && m_targetLocalName == 0); if (XalanNode::ATTRIBUTE_NODE != nodeType || isNamespaceDeclaration(context) == false) { return eMatchScoreNone; } else { return eMatchScoreNodeTest; } } XPath::eMatchScore XPath::NodeTester::testDefault( const XalanNode& /* context */, XalanNode::NodeType /* nodeType */) const { return eMatchScoreNone; } XPath::eMatchScore XPath::NodeTester::testDefault2(const XalanElement& /* context */) const { return eMatchScoreNone; } bool XPath::NodeTester::matchLocalName(const XalanNode& context) const { assert(m_targetLocalName != 0); return context.getNamespaceURI().empty() == true && DOMServices::getLocalNameOfNode(context) == *m_targetLocalName; } bool XPath::NodeTester::matchNamespaceURI(const XalanNode& context) const { assert(m_targetNamespace != 0); return context.getNamespaceURI() == *m_targetNamespace; } bool XPath::NodeTester::matchNamespace(const XalanNode& context) const { assert(m_targetLocalName != 0); return context.getLocalName() == *m_targetLocalName; } bool XPath::NodeTester::shouldStripSourceNode(const XalanText& context) const { assert(m_executionContext != 0); return m_executionContext->shouldStripSourceNode(context); } const XalanDOMChar XPath::PSEUDONAME_ANY[] = { XalanUnicode::charAsterisk, 0 }; const XalanDOMChar XPath::PSEUDONAME_ROOT[] = { XalanUnicode::charSolidus, 0 }; const XalanDOMChar XPath::PSEUDONAME_TEXT[] = { XalanUnicode::charNumberSign, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_x, XalanUnicode::charLetter_t, 0 }; const XalanDOMChar XPath::PSEUDONAME_COMMENT[] = { XalanUnicode::charNumberSign, XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_m, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, 0 }; const XalanDOMChar XPath::PSEUDONAME_PI[] = { XalanUnicode::charNumberSign, XalanUnicode::charLetter_p, XalanUnicode::charLetter_i, 0 }; const XalanDOMChar XPath::PSEUDONAME_OTHER[] = { XalanUnicode::charAsterisk, 0 }; const XalanDOMChar XPath::PSEUDONAME_NODE[] = { XalanUnicode::charNumberSign, XalanUnicode::charLetter_n, XalanUnicode::charLetter_o, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, 0 }; // Don't auto-create the table... XPath::FunctionTableType XPath::s_functions(false); void XPath::initialize(MemoryManager& theManager) { s_functions.setMemoryManager(theManager); s_functions.CreateTable(); } void XPath::terminate() { s_functions.DestroyTable(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/Function.cpp0000664000175000000640000000777211731656102017564 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "Function.hpp" #include "XalanXPathException.hpp" #include "XObjectFactory.hpp" XALAN_CPP_NAMESPACE_BEGIN Function::Function() { } Function::~Function() { } XObjectPtr Function::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { const XObjectArgVectorType::size_type theArgCount = args.size(); if (theArgCount == 0) { return execute(executionContext, context, locator); } else if (theArgCount == 1) { return execute(executionContext, context, args[0], locator); } else if (theArgCount == 2) { return execute(executionContext, context, args[0], args[1], locator); } else if (theArgCount == 3) { return execute(executionContext, context, args[0], args[1], args[2], locator); } else { generalError( executionContext, context, locator); return XObjectPtr(0); } } XObjectPtr Function::execute( XPathExecutionContext& executionContext, XalanNode* context, const Locator* locator) const { generalError( executionContext, context, locator); return XObjectPtr(0); } XObjectPtr Function::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr /* arg1 */, const Locator* locator) const { generalError( executionContext, context, locator); return XObjectPtr(0); } XObjectPtr Function::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr /* arg1 */, const XObjectPtr /* arg2 */, const Locator* locator) const { generalError( executionContext, context, locator); return XObjectPtr(0); } XObjectPtr Function::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr /* arg1 */, const XObjectPtr /* arg2 */, const XObjectPtr /* arg3 */, const Locator* locator) const { generalError( executionContext, context, locator); return XObjectPtr(0); } void Function::generalError( XPathExecutionContext& executionContext, const XalanNode* context, const Locator* locator) const { const GetCachedString theGuard(executionContext); XalanDOMString& theErrorString = theGuard.get(); executionContext.problem( XPathExecutionContext::eXPath, XPathExecutionContext::eError, getError(theErrorString), locator, context); throw XalanXPathException( theErrorString, theErrorString.getMemoryManager(), locator); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XPathParserException.hpp0000664000175000000640000000437311731656102022056 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XPATHPARSEREXCEPTION_HEADER_GUARD_1357924680) #define XPATHPARSEREXCEPTION_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN /** * Exception class thrown when a problem parsing an XPath is encountered */ class XALAN_XPATH_EXPORT XPathParserException : public XalanXPathException { public: /** * Constructor * * @param theMessage message to write when exception thrown * @param theManager The MemoryManager instance to use. * @param theLocator The locator instance for error reporting, if any. */ XPathParserException( const XalanDOMString& theMessage, MemoryManager& theManager, const Locator* theLocator); /** * Constructor. Use this constructor when the error message has * already been formatted. * * @param theMessage message to write when exception thrown * @param theManager The MemoryManager instance to use. */ XPathParserException( const XalanDOMString& theMessage, MemoryManager& theManager); XPathParserException(const XPathParserException& other); virtual ~XPathParserException(); virtual const XalanDOMChar* getType() const; private: }; XALAN_CPP_NAMESPACE_END #endif // XPATHPARSEREXCEPTION_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XUnknown.cpp0000664000175000000640000001053711731656102017557 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XUnknown.hpp" #include "xalanc/PlatformSupport/DoubleSupport.hpp" #include #include #include "XObjectTypeCallback.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanDOMString XUnknown::s_unknownString(XalanMemMgrs::getDummyMemMgr()); static const XalanDOMChar s_unknown[] = { XalanUnicode::charLessThanSign, XalanUnicode::charLetter_u, XalanUnicode::charLetter_n, XalanUnicode::charLetter_k, XalanUnicode::charLetter_n, XalanUnicode::charLetter_o, XalanUnicode::charLetter_w, XalanUnicode::charLetter_n, XalanUnicode::charGreaterThanSign, 0 }; XUnknown::XUnknown( const XalanDOMString& name, MemoryManager& theMemoryManager) : XObject(eTypeUnknown, theMemoryManager), m_value(theMemoryManager) { XalanMessageLoader::getMessage( m_value, XalanMessages::VariableIsNotDefined_1Param, name); } XUnknown* XUnknown::create( const XalanDOMString& name, MemoryManager& theMemoryManager) { typedef XUnknown Type; XalanAllocationGuard theGuard(theMemoryManager, theMemoryManager.allocate(sizeof(Type))); Type* const theResult = new (theGuard.get()) Type(name, theMemoryManager); theGuard.release(); return theResult; } XUnknown::XUnknown( const XUnknown& source, MemoryManager& theMemoryManager) : XObject(source, theMemoryManager), m_value(source.m_value, theMemoryManager) { } XUnknown::~XUnknown() { } const XalanDOMString& XUnknown::getTypeString() const { return s_unknownString; } double XUnknown::num(XPathExecutionContext& /* executionContext */) const { return DoubleSupport::getNaN(); } double XUnknown::num() const { return DoubleSupport::getNaN(); } bool XUnknown::boolean(XPathExecutionContext& /* executionContext */) const { return false; } const XalanDOMString& XUnknown::str(XPathExecutionContext& /* executionContext */) const { return m_value; } const XalanDOMString& XUnknown::str() const { return m_value; } void XUnknown::str( XPathExecutionContext& /* executionContext */, FormatterListener& formatterListener, MemberFunctionPtr function) const { XObject::string(m_value, formatterListener, function); } void XUnknown::str( FormatterListener& formatterListener, MemberFunctionPtr function) const { XObject::string(m_value, formatterListener, function); } void XUnknown::str( XPathExecutionContext& /* executionContext */, XalanDOMString& theBuffer) const { theBuffer.append(m_value); } void XUnknown::str(XalanDOMString& theBuffer) const { theBuffer.append(m_value); } double XUnknown::stringLength(XPathExecutionContext& /* executionContext */) const { return static_cast(m_value.length()); } void XUnknown::ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject) { theCallbackObject.Unknown( *this, m_value); } void XUnknown::ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject) const { theCallbackObject.Unknown( *this, m_value); } void XUnknown::initialize(MemoryManager& theManager) { s_unknownString.reset(theManager, s_unknown); } void XUnknown::terminate() { releaseMemory(s_unknownString, XalanMemMgrs::getDummyMemMgr()); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/FunctionLang.cpp0000664000175000000640000001022411731656102020350 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionLang.hpp" #include "xalanc/Include/XalanMemoryManagement.hpp" #include "xalanc/XalanDOM/XalanNamedNodeMap.hpp" #include #include #include "XObjectFactory.hpp" XALAN_CPP_NAMESPACE_BEGIN static const XalanDOMString s_emptyString(XalanMemMgrs::getDummyMemMgr()); FunctionLang::FunctionLang() { } FunctionLang::~FunctionLang() { } XObjectPtr FunctionLang::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const Locator* const /* locator */) const { assert(arg1.null() == false); const XalanNode* parent = context; bool fMatch = false; const XalanDOMString& lang = arg1->str(executionContext); while(0 != parent) { if (XalanNode::ELEMENT_NODE == parent->getNodeType()) { const XalanElement* const theElementNode = static_cast(parent); const XalanNamedNodeMap* const theAttributes = theElementNode->getAttributes(); assert(theAttributes != 0); const XalanNode* const theAttribute = theAttributes->getNamedItemNS( DOMServices::s_XMLNamespaceURI, s_attributeName); const XalanDOMString& langVal = theAttribute == 0 ? s_emptyString : theAttribute->getNodeValue(); if (langVal.empty() == false) { const GetCachedString theGuard1(executionContext); const GetCachedString theGuard2(executionContext); if (startsWith(toLowerCaseASCII(langVal, theGuard1.get()), toLowerCaseASCII(lang, theGuard2.get()))) { const XalanDOMString::size_type valLen = lang.length(); if (langVal.length() == valLen || langVal[valLen] == XalanUnicode::charHyphenMinus) { fMatch = true; break; } } } } parent = DOMServices::getParentOfNode(*parent); } return executionContext.getXObjectFactory().createBoolean(fMatch); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionLang* #endif FunctionLang::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionLang::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionAcceptsOneArgument_1Param, "lang()"); } static XalanDOMChar s_langString[] = { XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, 0 }; static XalanDOMString s_localString(XalanMemMgrs::getDummyMemMgr()); const XalanDOMString& FunctionLang::s_attributeName = s_localString; void FunctionLang::initialize(MemoryManager& theManager) { s_localString.reset(theManager, s_langString); } void FunctionLang::terminate() { releaseMemory(s_localString, XalanMemMgrs::getDummyMemMgr()); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XStringCachedAllocator.cpp0000664000175000000640000000330111731656102022306 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XStringCachedAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XStringCachedAllocator::XStringCachedAllocator( MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XStringCachedAllocator::~XStringCachedAllocator() { } XStringCachedAllocator::string_type* XStringCachedAllocator::createString(GetCachedString& theValue) { string_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); string_type* const theResult = new(theBlock) string_type(theValue, m_allocator.getMemoryManager()); m_allocator.commitAllocation(theBlock); return theResult; } bool XStringCachedAllocator::destroy(string_type* theString) { return m_allocator.destroyObject(theString); } void XStringCachedAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XNodeSet.cpp0000664000175000000640000000404711731656102017460 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XNodeSet.hpp" #include #include #include #include #include "MutableNodeRefList.hpp" #include "XObjectTypeCallback.hpp" #include "XPathExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN XNodeSet::XNodeSet( BorrowReturnMutableNodeRefList& value, MemoryManager& theMemoryManager) : XNodeSetBase(theMemoryManager), m_value(value) { } XNodeSet::XNodeSet(const XNodeSet& source, MemoryManager& theMemoryManager) : XNodeSetBase(source, theMemoryManager), m_value(source.m_value.clone()) { } XNodeSet::~XNodeSet() { } const NodeRefListBase& XNodeSet::nodeset() const { return *m_value.get(); } void XNodeSet::release() { m_value.release(); clearCachedValues(); } void XNodeSet::set(BorrowReturnMutableNodeRefList& value) { release(); m_value = value; } XalanNode* XNodeSet::item(size_type index) const { return m_value->item(index); } XNodeSet::size_type XNodeSet::getLength() const { return m_value->getLength(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/FunctionContains.hpp0000664000175000000640000000420311731656102021252 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONCONTAINS_HEADER_GUARD_1357924680) #define FUNCTIONCONTAINS_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file... #include XALAN_CPP_NAMESPACE_BEGIN /** * XPath implementation of "contains" function. */ class XALAN_XPATH_EXPORT FunctionContains : public Function { public: typedef Function ParentType; FunctionContains(); virtual ~FunctionContains(); // These methods are inherited from Function ... XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const XObjectPtr arg2, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionContains* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: // Not implemented... FunctionContains& operator=(const FunctionContains&); bool operator==(const FunctionContains&) const; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONCONTAINS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XNodeSetAllocator.cpp0000664000175000000640000000321311731656102021313 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XNodeSetAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XNodeSetAllocator::XNodeSetAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XNodeSetAllocator::~XNodeSetAllocator() { } XNodeSetAllocator::nodeset_type* XNodeSetAllocator::createNodeSet(BorrowReturnMutableNodeRefList& value) { nodeset_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); nodeset_type* const theResult = new(theBlock) nodeset_type(value, m_allocator.getMemoryManager()); m_allocator.commitAllocation(theBlock); return theResult; } bool XNodeSetAllocator::destroy(nodeset_type* theNodeSet) { return m_allocator.destroyObject(theNodeSet); } void XNodeSetAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XObject.hpp0000664000175000000640000006524711731656102017343 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XOBJECT_HEADER_GUARD_1357924680) #define XOBJECT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class MutableNodeRefList; class NodeRefListBase; class XalanDocumentFragment; class XObjectFactory; class XObjectTypeCallback; /** * Class to hold XPath return types. */ class XALAN_XPATH_EXPORT XObject : protected XalanReferenceCountedObject { public: friend class XObjectPtr; typedef XPathExecutionContext::GetCachedString GetCachedString; /** * Enumeration of possible object types */ enum eObjectType { eTypeNull = 0, eTypeUnknown = 1, eTypeBoolean = 2, eTypeNumber = 3, eTypeString = 4, eTypeNodeSet = 5, eTypeResultTreeFrag = 6, eTypeUserDefined = 7, // These next types are implementation-specific, and // are never returned by getType(). eTypeStringReference = 8, eTypeStringAdapter = 9, eTypeStringCached = 10, eTypeXTokenNumberAdapter = 11, eTypeXTokenStringAdapter = 12, eTypeNodeSetNodeProxy = 13, eUnknown }; /** * Perform static initialization. See class XPathInit. * * @param theMemoryManager The MemoryManager instance. */ static void initialize(MemoryManager& theMemoryManager); /** * Perform static shut down. See class XPathInit. */ static void terminate(); /** * Create an XObject. * * @param theObjectType The enum for the type of the object. * @param theMemoryManager The MemoryManager instance. */ XObject( eObjectType theObjectType, MemoryManager& theMemoryManager); /** * Given a request type, return the equivalent string. * For diagnostic purposes. * * @return string for type */ virtual const XalanDOMString& getTypeString() const = 0; /** * Cast result object to a number. * * @param executionContext The current XPathExecutionContext * @return numeric value */ virtual double num(XPathExecutionContext& executionContext) const; /** * Cast result object to a number. * * This function does not have access to the current * XPathExecutionContext, so the result may contain data * from whitespace text nodes that might have been stripped * otherwise. * * @return numeric value */ virtual double num() const; /** * Cast result object to a boolean. * * @param executionContext The current XPathExecutionContext * @return boolean value */ virtual bool boolean(XPathExecutionContext& executionContext) const = 0; /** * Cast result object to a string. * * @param executionContext The current XPathExecutionContext * @return string value */ virtual const XalanDOMString& str(XPathExecutionContext& executionContext) const = 0; /** * Cast result object to a string. * * This function does not have access to the current * XPathExecutionContext, so the result may contain data * from whitespace text nodes that might have been stripped * otherwise. * * @param executionContext The current XPathExecutionContext * @return string value */ virtual const XalanDOMString& str() const = 0; typedef void (FormatterListener::*MemberFunctionPtr)(const XMLCh* const, const FormatterListener::size_type); /** * Send the string value to a FormatterListener instance. * * @param executionContext The current XPathExecutionContext * @param formatterListener The FormatterListener instance * @param function A pointer to the member function of FormatterListener to call */ virtual void str( XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const = 0; /** * Send the string value to a FormatterListener instance. * * This function does not have access to the current * XPathExecutionContext, so the result may contain data * from whitespace text nodes that might have been stripped * otherwise. * * @param formatterListener The FormatterListener instance * @param function A pointer to the member function of FormatterListener to call */ virtual void str( FormatterListener& formatterListener, MemberFunctionPtr function) const = 0; /** * Append the string value directly a string * * @param executionContext The current XPathExecutionContext * @param theBuffer The buffer for the data */ virtual void str( XPathExecutionContext& executionContext, XalanDOMString& theBuffer) const = 0; /** * Append the string value directly a string * * This function does not have access to the current * XPathExecutionContext, so the result may contain data * from whitespace text nodes that might have been stripped * otherwise. * * @param theBuffer The buffer for the data */ virtual void str(XalanDOMString& theBuffer) const = 0; /** * Get the length of the string value of the instance. * * @return The length of the string value */ virtual double stringLength(XPathExecutionContext& executionContext) const = 0; /** * Cast result object to a result tree fragment. * * @param executionContext The current XPathExecutionContext * @return result tree fragment */ virtual const XalanDocumentFragment& rtree() const; /** * Cast result object to a nodelist * * This function does not have access to the current * XPathExecutionContext, so the result may contain data * from whitespace text nodes that might have been stripped * otherwise. * * @param executionContext The current XPathExecutionContext * @return node list */ virtual const NodeRefListBase& nodeset() const; /** * Process a callback request for preferred type information. * * @param theCallbackObject object to call back */ virtual void ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject) = 0; /** * Process a callback request for preferred type information. * * @param theCallbackObject object to call back */ virtual void ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject) const = 0; /** * Tell if two objects are functionally equal. * * @param theRHS object to compare * @param executionContext the current execution context * @return true if they are equal */ bool equals( const XObject& theRHS, XPathExecutionContext& executionContext) const; /** * Tell if two objects are functionally not equal. * * @param theRHS object to compare * @param executionContext the current execution context * @return true if they are equal */ bool notEquals( const XObject& theRHS, XPathExecutionContext& executionContext) const; /** * Tell if one object is less than the other. * * @param theRHS object to compare * @return true if they are equal */ bool lessThan( const XObject& theRHS, XPathExecutionContext& executionContext) const; /** * Tell if one object is less than or equal * the other. * * @param theRHS object to compare * @return true if they are equal */ bool lessThanOrEquals( const XObject& theRHS, XPathExecutionContext& executionContext) const; /** * Tell if one object is greater than the other. * * @param theRHS object to compare * @return true if they are equal */ bool greaterThan( const XObject& theRHS, XPathExecutionContext& executionContext) const; /** * Tell if one object is greater than or equal * the other. * * @param theRHS object to compare * @return true if they are equal */ bool greaterThanOrEquals( const XObject& theRHS, XPathExecutionContext& executionContext) const; /** * Tell what kind of class this is. * * @return numeric type value */ eObjectType getType() const { return m_objectType; } /** * Static conversion function. Returns the boolean value * of the supplied double. * * @param theString The double to convert. * * @return bool value */ static bool boolean(double theNumber) { return !DoubleSupport::isNaN(theNumber) && !DoubleSupport::equal(theNumber, 0.0); } /** * Static conversion function. Returns the boolean value * of the supplied XalanDOMString. * * @param theString The XalanDOMString to convert. * @return bool value */ static bool boolean(const XalanDOMString& theString) { return theString.length() == 0 ? false : true; } /** * Static conversion function. Returns the boolean value * of the supplied NodeRefListBase. * * @param theNodeList The NodeRefListBase to convert. * @return bool value */ static bool boolean(const NodeRefListBase& theNodeList) { return theNodeList.getLength() == 0 ? false : true; } /** * Static conversion function. Returns a reference to a * XalanDOMString instance with the string value of the * boolean. * * @param theBool The boolean value to convert. * @return The string value of the boolean */ static const XalanDOMString& string(bool theBool) { return theBool == true ? s_trueString : s_falseString; } /** * Static conversion function. Appends the supplied boolean * value to a string. * * @param theBool The boolean value to convert. * @param theString The string value of the provided boolean value. */ static void string( bool theBool, XalanDOMString& theString) { theString.append(theBool == true ? s_trueString : s_falseString); } /** * Static conversion function. Calls the supplied FormatterListener * member function with the string value of the boolean. * * @param theBool The boolean value to convert. * @param formatterListener The FormatterListener instance. * @param function The FormatterListener member function to call. */ static void string( bool theBool, FormatterListener& formatterListener, MemberFunctionPtr function) { if(theBool == true) { (formatterListener.*function)(s_trueString.c_str(), s_trueString.length()); } else { (formatterListener.*function)(s_falseString.c_str(), s_falseString.length()); } } /** * Static conversion function. Append the string value of the * double to the supplied XalanDOMString parameter. * * @param theNumber The double to convert. * @param theString The output XalanDOMString. */ static void string( double theNumber, XalanDOMString& theString) { NumberToDOMString(theNumber, theString); } /** * Static conversion function. Calls the supplied FormatterListener * member function with the string value of the double. * * @param theNumber The double to convert. * @param formatterListener The FormatterListener instance. * @param function The FormatterListener member function to call. */ static void string( double theNumber, FormatterListener& formatterListener, MemberFunctionPtr function) { DOMStringHelper::NumberToCharacters(theNumber, formatterListener, function); } /** * Static conversion function. Append the string value of the * XalanNode to the supplied XalanDOMString parameter. * * @deprecated This function is deprecated and should not be used. * * @param theNode The XalanNode to convert. * @param theString The output XalanDOMString. */ static void string( const XalanNode& theNode, XalanDOMString& theString) { DOMServices::getNodeData(theNode, theString); } /** * Static conversion function. Calls the supplied FormatterListener * member function with the string value of the XalanNode. * * @deprecated This function is deprecated and should not be used. * * @param theNode The XalanNode to convert. * @param formatterListener The FormatterListener instance. * @param function The FormatterListener member function to call. */ static void string( const XalanNode& theNode, FormatterListener& formatterListener, MemberFunctionPtr function) { DOMServices::getNodeData(theNode, formatterListener, function); } /** * Static conversion function. Append the string value of the * NodeRefListBase to the supplied XalanDOMString parameter. * * @deprecated This function is deprecated and should not be used. * * @param theNodeList The NodeRefListBase to convert. * @param theString The output XalanDOMString. */ static void string( const NodeRefListBase& theNodeList, XalanDOMString& theString) { if (theNodeList.getLength() > 0) { assert(theNodeList.item(0) != 0); string(*theNodeList.item(0), theString); } } /** * Static conversion function. Calls the supplied FormatterListener * member function with the string value of the NodeRefListBase. * * @deprecated This function is deprecated and should not be used. * * @param theNodeList The NodeRefListBase to convert. * @param formatterListener The FormatterListener instance. * @param function The FormatterListener member function to call. */ static void string( const NodeRefListBase& theNodeList, FormatterListener& formatterListener, MemberFunctionPtr function) { if (theNodeList.getLength() > 0) { assert(theNodeList.item(0) != 0); DOMServices::getNodeData(*theNodeList.item(0), formatterListener, function); } } /** * Static conversion function. Append the string value of the * XalanNode to the supplied XalanDOMString parameter. * * @param theNode The XalanNode to convert. * @param theExecutionContext The current XPathExecutionContext. * @param theString The output XalanDOMString. */ static void string( const XalanNode& theNode, XPathExecutionContext& theExecutionContext, XalanDOMString& theString) { DOMServices::getNodeData(theNode, theExecutionContext, theString); } /** * Static conversion function. Calls the supplied FormatterListener * member function with the string value of the XalanNode. * * @param theNode The XalanNode to convert. * @param theExecutionContext The current XPathExecutionContext. * @param formatterListener The FormatterListener instance. * @param function The FormatterListener member function to call. */ static void string( const XalanNode& theNode, XPathExecutionContext& theExecutionContext, FormatterListener& formatterListener, MemberFunctionPtr function) { DOMServices::getNodeData( theNode, theExecutionContext, formatterListener, function); } /** * Static conversion function. Append the string value of the * NodeRefListBase to the supplied XalanDOMString parameter. * * @param theNodeList The NodeRefListBase to convert. * @param theExecutionContext The current XPathExecutionContext. * @param theString The output XalanDOMString. */ static void string( const NodeRefListBase& theNodeList, XPathExecutionContext& theExecutionContext, XalanDOMString& theString) { if (theNodeList.getLength() > 0) { assert(theNodeList.item(0) != 0); string(*theNodeList.item(0), theExecutionContext, theString); } } /** * Static conversion function. Calls the supplied FormatterListener * member function with the string value of the NodeRefListBase. * * @param theNodeList The NodeRefListBase to convert. * @param theExecutionContext The current XPathExecutionContext. * @param formatterListener The FormatterListener instance. * @param function The FormatterListener member function to call. */ static void string( const NodeRefListBase& theNodeList, XPathExecutionContext& theExecutionContext, FormatterListener& formatterListener, MemberFunctionPtr function) { if (theNodeList.getLength() > 0) { assert(theNodeList.item(0) != 0); DOMServices::getNodeData( *theNodeList.item(0), theExecutionContext, formatterListener, function); } } /** * Calls the supplied FormatterListener member function with * the string. * * @param theString The XalanDOMString to convert. * @param formatterListener The FormatterListener instance. * @param function The FormatterListener member function to call. */ static void string( const XalanDOMString& theString, FormatterListener& formatterListener, MemberFunctionPtr function) { const XalanDOMString::size_type theLength = theString.length(); if (theLength != 0) { assert(theLength == static_cast(theLength)); (formatterListener.*function)( theString.c_str(), static_cast(theLength)); } } /** * Static conversion function. * * @return bool value */ static double number(bool theBoolean) { return theBoolean == true ? 1.0 : 0.0; } static double number( const XalanDOMString& theString, MemoryManager& theManager) { return DoubleSupport::toDouble(theString, theManager); } /** * Static conversion function. * * @return The number value of the node list */ static double number( XPathExecutionContext& executionContext, const NodeRefListBase& theNodeList); /** * Static conversion function. * * @return The number value of the node */ static double number( XPathExecutionContext& executionContext, const XalanNode& theNode); // All XObject instances are controlled by an instance of an XObjectFactory. friend class XObjectFactory; void setFactory(XObjectFactory* theFactory) { m_factory = theFactory; } // Base class for all XObject exceptions... class XObjectException : public XalanXPathException { public: XObjectException( const XalanDOMString& theMessage, MemoryManager& theManager); XObjectException( const XalanDOMString& theMessage, MemoryManager& theManager, const Locator* theLocator); XObjectException(const XObjectException& other) ; virtual ~XObjectException(); virtual const XalanDOMChar* getType() const; private: static const XalanDOMChar s_type[]; }; class XObjectInvalidConversionException : public XObjectException { public: XObjectInvalidConversionException( MemoryManager& memoryManager, const XalanDOMString& fromType, const XalanDOMString& toType, XalanDOMString& buffer); XObjectInvalidConversionException(const XObjectInvalidConversionException& other); virtual ~XObjectInvalidConversionException(); virtual const XalanDOMChar* getType() const; private: static const XalanDOMChar s_type[]; static const XalanDOMString& formatErrorString( const XalanDOMString& fromType, const XalanDOMString& toType, XalanDOMString& theResult); }; protected: /** * Create an XObject from another XObject. * * The recommended copy constructor is the next * overload, that accepts an explicit MemoryManager * instance. * * @param source The source for the copy */ XObject(const XObject&); /** * Create an XObject from another XObject. * * @param source The source for the copy * @param theMemoryManager The MemoryManager instance. */ XObject( const XObject& source, MemoryManager& theManager); /** * Get the MemoryManager for this instance. * * @return The MemoryManager. */ MemoryManager& getMemoryManager() const { assert(m_memoryManager != 0); return *m_memoryManager; } void throwInvalidConversionException(const XalanDOMString& theTargetType) const; /** * Tell what kind of class this is. * * @return numeric type value */ virtual eObjectType getRealType() const; virtual void referenced(); virtual void dereferenced(); virtual ~XObject(); static const XalanDOMString s_emptyString; static const XalanDOMString& s_booleanString; static const XalanDOMString& s_falseString; static const XalanDOMString& s_nodesetString; static const XalanDOMString& s_numberString; static const XalanDOMString& s_resultTreeFragmentString; static const XalanDOMString& s_stringString; static const XalanDOMString& s_trueString; private: // Not implemented... XObject& operator=(const XObject&); eObjectType m_objectType; XObjectFactory* m_factory; mutable MemoryManager* m_memoryManager; }; /** * Class to hold XObjectPtr return types. */ class XALAN_XPATH_EXPORT XObjectPtr { public: friend bool operator==(const XObjectPtr&, const XObjectPtr&); friend bool operator<(const XObjectPtr&, const XObjectPtr&); /** * Create an XObjectPtr. */ explicit XObjectPtr(XObject* theXObject = 0) : m_xobjectPtr(theXObject) { XalanReferenceCountedObject::addReference(theXObject); } XObjectPtr(const XObjectPtr& theSource) : m_xobjectPtr(theSource.m_xobjectPtr) { XalanReferenceCountedObject::addReference(m_xobjectPtr); }; XObjectPtr& operator=(const XObjectPtr& theRHS) { if (m_xobjectPtr != theRHS.m_xobjectPtr) { XalanReferenceCountedObject::removeReference(m_xobjectPtr); m_xobjectPtr = theRHS.m_xobjectPtr; XalanReferenceCountedObject::addReference(m_xobjectPtr); } return *this; } ~XObjectPtr() { XalanReferenceCountedObject::removeReference(m_xobjectPtr); }; void release() { XObject* const xobjectPtr = m_xobjectPtr; m_xobjectPtr = 0; XalanReferenceCountedObject::removeReference(xobjectPtr); } bool null() const { return m_xobjectPtr == 0 ? true : false; } const XObject& operator*() const { return *m_xobjectPtr; }; XObject& operator*() { return *m_xobjectPtr; }; const XObject* operator->() const { return m_xobjectPtr; }; XObject* operator->() { return m_xobjectPtr; }; const XObject* get() const { return m_xobjectPtr; }; XObject* get() { return m_xobjectPtr; }; private: XObject* m_xobjectPtr; }; inline bool operator==( const XObjectPtr& theLHS, const XObjectPtr& theRHS) { return theLHS.m_xobjectPtr == theRHS.m_xobjectPtr; } inline bool operator!=( const XObjectPtr& theLHS, const XObjectPtr& theRHS) { return !(theLHS == theRHS); } inline bool operator<( const XObjectPtr& theLHS, const XObjectPtr& theRHS) { return theLHS.m_xobjectPtr < theRHS.m_xobjectPtr; } XALAN_CPP_NAMESPACE_END #endif // XOBJECT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XString.hpp0000664000175000000640000000665411731656102017400 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XSTRING_HEADER_GUARD_1357924680) #define XSTRING_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XString : public XStringBase { public: typedef XStringBase ParentType; /** * Construct an XString object from a string. * * @param val The string value to use. * @param theMemoryManager The MemoryManager instance. */ XString( const XalanDOMString& val, MemoryManager& theManager); /** * Construct an XString object from a string. * * @param val The string value to use. * @param theMemoryManager The MemoryManager instance. */ XString( const XalanDOMChar* val, MemoryManager& theManager); /** * Construct an XString object from a string. * * @param val The string value to use. * @param len The length of the string value. * @param theMemoryManager The MemoryManager instance. */ XString( const XalanDOMChar* val, XalanSize_t len, MemoryManager& theManager); /** * Construct an XString object from another string. * * @param source The source XString. * @param theMemoryManager The MemoryManager instance. */ XString( const XString& source, MemoryManager& theManager); virtual ~XString(); void set(const XalanDOMString& theString) { m_value = theString; } // These methods are inherited from XObject ... virtual const XalanDOMString& str(XPathExecutionContext& executionContext) const; virtual const XalanDOMString& str() const; virtual void str( XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( XPathExecutionContext& executionContext, XalanDOMString& theBuffer) const; virtual void str(XalanDOMString& theBuffer) const; virtual double stringLength(XPathExecutionContext& executionContext) const; private: //not implemented XString(const XString& source); XalanDOMString m_value; }; XALAN_CPP_NAMESPACE_END #endif // XSTRING_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XPathEnvSupportDefault.hpp0000664000175000000640000002146511731656102022376 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XPATHENVSUPPORTDEFAULT_HEADER_GUARD_1357924680) #define XPATHENVSUPPORTDEFAULT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN typedef XalanMap FunctionTableTypeDefinition; XALAN_USES_MEMORY_MANAGER(FunctionTableTypeDefinition) class XALAN_XPATH_EXPORT XPathEnvSupportDefault : public XPathEnvSupport { public: typedef XalanMap SourceDocsTableType; typedef FunctionTableTypeDefinition FunctionTableType; typedef XalanMap NamespaceFunctionTablesType; /** * Perform initialization of statics -- must be called before any * processing occurs. See class XPathInit. */ static void initialize(MemoryManager& theManager); /** * Perform termination of statics. See class XPathInit. */ static void terminate(); XPathEnvSupportDefault(MemoryManager& theManager XALAN_DEFAULT_MEMMGR); virtual ~XPathEnvSupportDefault(); MemoryManager& getMemoryManager() const { return m_memoryManager; } virtual void setPrintWriter(PrintWriter* pw); virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode); virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode); // Interfaces to install and uninstall external functions globally. // These calls are not thread-safe, and should happen during // processing. /** * Install an external function in the global space. * * @param theNamespace The namespace for the functionl * @param functionName The name of the function. * @param function The function to install. */ static void installExternalFunctionGlobal( const XalanDOMString& theNamespace, const XalanDOMString& functionName, const Function& function); /** * Uninstall an external function from the global space. * * @param theNamespace The namespace for the functionl * @param functionName The name of the function. */ static void uninstallExternalFunctionGlobal( const XalanDOMString& theNamespace, const XalanDOMString& functionName); // Interfaces to install and uninstall external functions in this instance. /** * Install an external function in the local space. * * @param theNamespace The namespace for the functionl * @param functionName The name of the function. * @param function The function to install. */ virtual void installExternalFunctionLocal( const XalanDOMString& theNamespace, const XalanDOMString& functionName, const Function& function); /** * Uninstall an external function from the local space. * * @param theNamespace The namespace for the functionl * @param functionName The name of the function. */ virtual void uninstallExternalFunctionLocal( const XalanDOMString& theNamespace, const XalanDOMString& functionName); // These interfaces are inherited from XPathEnvSupport... virtual XalanDocument* parseXML( MemoryManager& theManager, const XalanDOMString& urlString, const XalanDOMString& base, ErrorHandler* theErrorHandler = 0); virtual XalanDocument* getSourceDocument(const XalanDOMString& theURI) const; virtual void setSourceDocument( const XalanDOMString& theURI, XalanDocument* theDocument); virtual const XalanDOMString& findURIFromDoc(const XalanDocument* owner) const; virtual bool elementAvailable( const XalanDOMString& theNamespace, const XalanDOMString& elementName) const; virtual bool functionAvailable( const XalanDOMString& theNamespace, const XalanDOMString& functionName) const; virtual XObjectPtr extFunction( XPathExecutionContext& executionContext, const XalanDOMString& theNamespace, const XalanDOMString& functionName, XalanNode* context, const XObjectArgVectorType& argVec, const Locator* locator) const; virtual void reset(); // Delete functor for table cleanup... struct NamespaceFunctionTableDeleteFunctor { typedef FunctionTableType FunctionTableInnerType; typedef NamespaceFunctionTablesType NamespaceFunctionTablesInnerType; NamespaceFunctionTableDeleteFunctor(MemoryManager& theManager); /** * Delete the value object in a map value pair. The value of the pair must * be of pointer type. * * @param thePair key-value pair */ void operator()(const NamespaceFunctionTablesInnerType::value_type& thePair) const; private: MemoryManager& m_memoryManager; }; protected: /** * Find an external function. * * @param theNamespace The namespace for the function. * @param functionName The name of the function. * @return a pointer to the function if found, or 0 if not found. */ const Function* findFunction( const XalanDOMString& theNamespace, const XalanDOMString& functionName) const; private: // These are not implemented... XPathEnvSupportDefault(const XPathEnvSupportDefault&); XPathEnvSupportDefault& operator=(const XPathEnvSupportDefault&); bool operator==(const XPathEnvSupportDefault&) const; /** * Update the supplied function table. If the parameter * function is 0, and a function with the supplied * namespace and name exists in the table, it will be * removed. If function is not 0, and a function with * the supplied namespace and name exists in the table, * it will be replaced with the new function. Otherwise, * the function will be added. * * @param theNamespace The namespace for the functionl * @param functionName The name of the function. * @param function The function to install. */ static void updateFunctionTable( NamespaceFunctionTablesType& theTable, const XalanDOMString& theNamespace, const XalanDOMString& functionName, const Function* function); /** * Find an external function in the supplied table. * * @param theTable The table to search. * @param theNamespace The namespace for the function. * @param functionName The name of the function. * @return a pointer to the function if found, or 0 if not found. */ const Function* findFunction( const NamespaceFunctionTablesType& theTable, const XalanDOMString& theNamespace, const XalanDOMString& functionName) const; // Data members... SourceDocsTableType m_sourceDocs; NamespaceFunctionTablesType m_externalFunctions; MemoryManager& m_memoryManager; PrintWriter* m_pw; static NamespaceFunctionTablesType s_externalFunctions; static const XalanDOMString s_emptyString; }; XALAN_CPP_NAMESPACE_END #endif // XPATHENVSUPPORTDEFAULT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XPathEvaluator.cpp0000664000175000000640000003123111731656102020671 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XPathEvaluator.hpp" #include #include "ElementPrefixResolverProxy.hpp" #include "XObjectFactoryDefault.hpp" #include "XPathEnvSupportDefault.hpp" #include "XPathConstructionContextDefault.hpp" #include "XPathExecutionContextDefault.hpp" #include "XPathFactoryDefault.hpp" #include "XPathProcessorImpl.hpp" #include "XPathInit.hpp" XALAN_CPP_NAMESPACE_BEGIN static XPathInit* s_xpathInit = 0; static MemoryManager* s_memoryManager = 0; void XPathEvaluator::initialize(MemoryManager& theManager) { s_xpathInit = XPathInit::create(theManager); s_memoryManager = &theManager; } void XPathEvaluator::terminate() { XalanDestroy( *s_memoryManager, *s_xpathInit); s_xpathInit = 0; s_memoryManager = 0; } XPathEvaluator::XPathEvaluator(MemoryManager& theManager) : m_xobjectFactory(theManager, XObjectFactoryDefault::create(theManager)), m_xpathFactory(theManager, XPathFactoryDefault::create(theManager)), m_constructionContext(theManager, XPathConstructionContextDefault::create(theManager)), m_executionContext(theManager, XPathExecutionContextDefault::create(theManager)), m_memoryManager(theManager) { } XPathEvaluator::~XPathEvaluator() { // Just in case these are still set, reset them // to 0. m_executionContext->setXPathEnvSupport(0); m_executionContext->setXObjectFactory(0); m_executionContext->setDOMSupport(0); } XalanNode* XPathEvaluator::selectSingleNode( DOMSupport& domSupport, XalanNode* contextNode, const XalanDOMChar* xpathString, const XalanElement* namespaceNode) { const XObjectPtr theResult( evaluate( domSupport, contextNode, xpathString, namespaceNode)); const NodeRefListBase& theNodeList = theResult->nodeset(); return theNodeList.getLength() == 0 ? 0 : theNodeList.item(0); } XalanNode* XPathEvaluator::selectSingleNode( DOMSupport& domSupport, XalanNode* contextNode, const XalanDOMChar* xpathString, const PrefixResolver& prefixResolver) { const XObjectPtr theResult( evaluate( domSupport, contextNode, xpathString, prefixResolver)); const NodeRefListBase& theNodeList = theResult->nodeset(); return theNodeList.getLength() == 0 ? 0 : theNodeList.item(0); } XalanNode* XPathEvaluator::selectSingleNode( DOMSupport& domSupport, XalanNode* contextNode, const XPath& xpath, const XalanElement* namespaceNode) { const XObjectPtr theResult( evaluate( domSupport, contextNode, xpath, namespaceNode)); const NodeRefListBase& theNodeList = theResult->nodeset(); return theNodeList.getLength() == 0 ? 0 : theNodeList.item(0); } XalanNode* XPathEvaluator::selectSingleNode( DOMSupport& domSupport, XalanNode* contextNode, const XPath& xpath, const PrefixResolver& prefixResolver) { const XObjectPtr theResult( evaluate( domSupport, contextNode, xpath, prefixResolver)); const NodeRefListBase& theNodeList = theResult->nodeset(); return theNodeList.getLength() == 0 ? 0 : theNodeList.item(0); } NodeRefList& XPathEvaluator::selectNodeList( NodeRefList& result, DOMSupport& domSupport, XalanNode* contextNode, const XalanDOMChar* xpathString, const XalanElement* namespaceNode) { const XObjectPtr theResult( evaluate( domSupport, contextNode, xpathString, namespaceNode)); result = theResult->nodeset(); return result; } NodeRefList& XPathEvaluator::selectNodeList( NodeRefList& result, DOMSupport& domSupport, XalanNode* contextNode, const XalanDOMChar* xpathString, const PrefixResolver& prefixResolver) { const XObjectPtr theResult( evaluate( domSupport, contextNode, xpathString, prefixResolver)); result = theResult->nodeset(); return result; } NodeRefList& XPathEvaluator::selectNodeList( NodeRefList& result, DOMSupport& domSupport, XalanNode* contextNode, const XPath& xpath, const XalanElement* namespaceNode) { const XObjectPtr theResult( evaluate( domSupport, contextNode, xpath, namespaceNode)); result = theResult->nodeset(); return result; } NodeRefList& XPathEvaluator::selectNodeList( NodeRefList& result, DOMSupport& domSupport, XalanNode* contextNode, const XPath& xpath, const PrefixResolver& prefixResolver) { const XObjectPtr theResult( evaluate( domSupport, contextNode, xpath, prefixResolver)); result = theResult->nodeset(); return result; } XObjectPtr XPathEvaluator::evaluate( DOMSupport& domSupport, XalanNode* contextNode, const XalanDOMChar* xpathString, const XalanElement* namespaceNode) { XPathEnvSupportDefault theEnvSupportDefault(m_memoryManager); const ElementPrefixResolverProxy thePrefixResolver( namespaceNode, theEnvSupportDefault, domSupport, m_memoryManager); return evaluate( domSupport, contextNode, xpathString, thePrefixResolver, theEnvSupportDefault); } XObjectPtr XPathEvaluator::evaluate( DOMSupport& domSupport, XalanNode* contextNode, const XPath& xpath, const XalanElement* namespaceNode) { XPathEnvSupportDefault theEnvSupportDefault(m_memoryManager); const ElementPrefixResolverProxy thePrefixResolver( namespaceNode, theEnvSupportDefault, domSupport, m_memoryManager); return evaluate( domSupport, contextNode, xpath, thePrefixResolver, theEnvSupportDefault); } XObjectPtr XPathEvaluator::evaluate( DOMSupport& domSupport, XalanNode* contextNode, const XalanDOMChar* xpathString, const PrefixResolver& prefixResolver) { XPathEnvSupportDefault theEnvSupportDefault(m_memoryManager); return evaluate( domSupport, contextNode, xpathString, prefixResolver, theEnvSupportDefault); } XObjectPtr XPathEvaluator::evaluate( DOMSupport& domSupport, XalanNode* contextNode, const XPath& xpath, const PrefixResolver& prefixResolver) { XPathEnvSupportDefault theEnvSupportDefault(m_memoryManager); return evaluate( domSupport, contextNode, xpath, prefixResolver, theEnvSupportDefault); } XPath* XPathEvaluator::createXPath(const XalanDOMChar* xpathString) { DOMSupportDefault theDOMSupport(m_memoryManager); XPathEnvSupportDefault theEnvSupportDefault(m_memoryManager); const ElementPrefixResolverProxy thePrefixResolver( 0, theEnvSupportDefault, theDOMSupport, m_memoryManager); return createXPath(xpathString, thePrefixResolver); } XPath* XPathEvaluator::createXPath( const XalanDOMChar* xpathString, DOMSupport& domSupport, const XalanElement* namespaceNode) { XPathEnvSupportDefault theEnvSupportDefault(m_memoryManager); const ElementPrefixResolverProxy thePrefixResolver( namespaceNode, theEnvSupportDefault, domSupport, m_memoryManager); return createXPath(xpathString, thePrefixResolver); } typedef XPathConstructionContext::GetCachedString GetCachedString; XPath* XPathEvaluator::createXPath( const XalanDOMChar* xpathString, const PrefixResolver& prefixResolver) { XPath* const theXPath = m_xpathFactory->create(); assert(theXPath != 0); XPathProcessorImpl theProcessor(m_memoryManager); const GetCachedString theGuard(*m_constructionContext.get()); XalanDOMString& theTempString = theGuard.get(); theTempString = xpathString; theProcessor.initXPath( *theXPath, *m_constructionContext.get(), theTempString, prefixResolver); return theXPath; } bool XPathEvaluator::destroyXPath(XPath* theXPath) { assert(theXPath != 0); const bool theResult = m_xpathFactory->returnObject(theXPath); if (m_xpathFactory->getInstanceCount() == 0) { m_constructionContext->reset(); } return theResult; } XObjectPtr XPathEvaluator::evaluate( DOMSupport& domSupport, XalanNode* contextNode, const XalanDOMChar* xpathString, const PrefixResolver& prefixResolver, XPathEnvSupport& envSupport) { assert(contextNode != 0); assert(xpathString != 0); // Create an XPath, and an XPathProcessorImpl to process // the XPath. XPath theXPath(m_memoryManager); XPathProcessorImpl theProcessor(m_memoryManager); const GetCachedString theGuard(*m_constructionContext.get()); XalanDOMString& theTempString = theGuard.get(); theTempString = xpathString; theProcessor.initXPath( theXPath, *m_constructionContext.get(), theTempString, prefixResolver); return evaluate( domSupport, contextNode, theXPath, prefixResolver, envSupport); } XObjectPtr XPathEvaluator::evaluate( DOMSupport& domSupport, XalanNode* contextNode, const XPath& xpath, const PrefixResolver& prefixResolver, XPathEnvSupport& envSupport) { // Reset these, in case we've been here before... m_executionContext->reset(); m_xobjectFactory->reset(); // Set up the connections between the execution context and // the provided support objects... m_executionContext->setXPathEnvSupport(&envSupport); m_executionContext->setXObjectFactory(m_xobjectFactory.get()); m_executionContext->setDOMSupport(&domSupport); // OK, evaluate the expression... const XObjectPtr theResult( xpath.execute( contextNode, prefixResolver, *m_executionContext.get())); // Break the connectons we set... m_executionContext->setXPathEnvSupport(0); m_executionContext->setXObjectFactory(0); m_executionContext->setDOMSupport(0); return theResult; } XPathExecutionContext& XPathEvaluator::getExecutionContext() { assert(m_executionContext.get() != 0); return *m_executionContext.get(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XPathInit.cpp0000664000175000000640000000401011731656102017625 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XPathInit.hpp" #include "FunctionLang.hpp" #include "XObject.hpp" #include "XUnknown.hpp" #include "XPath.hpp" #include "XPathEnvSupportDefault.hpp" #include "XPathProcessorImpl.hpp" XALAN_CPP_NAMESPACE_BEGIN unsigned long XPathInit::s_initCounter = 0; XPathInit::XPathInit(MemoryManager& theManager) : m_platformSupportInit(theManager), m_domSupportInit(theManager) { ++s_initCounter; if (s_initCounter == 1) { initialize(theManager); } } XPathInit* XPathInit::create(MemoryManager& theManager) { XPathInit* theResult; return XalanConstruct(theManager, theResult, theManager); } XPathInit::~XPathInit() { --s_initCounter; if (s_initCounter == 0) { terminate(); } } void XPathInit::initialize(MemoryManager& theManager) { FunctionLang::initialize(theManager); XObject::initialize(theManager); XUnknown::initialize(theManager); XPath::initialize(theManager); XPathEnvSupportDefault::initialize(theManager); } void XPathInit::terminate() { XPathEnvSupportDefault::terminate(); XPath::terminate(); XUnknown::terminate(); XObject::terminate(); FunctionLang::terminate(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/FunctionString.cpp0000664000175000000640000000671711731656102020751 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionString.hpp" #include #include #include "XObjectFactory.hpp" XALAN_CPP_NAMESPACE_BEGIN FunctionString::FunctionString() { } FunctionString::~FunctionString() { } XObjectPtr FunctionString::execute( XPathExecutionContext& executionContext, XalanNode* context, const Locator* locator) const { if (context == 0) { const GetCachedString theGuard(executionContext); XalanDOMString& theResult = theGuard.get(); executionContext.problem( XPathExecutionContext::eXPath, XPathExecutionContext::eError, XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionRequiresNonNullContextNode_1Param, "string"), locator, context); // Dummy return value... return XObjectPtr(); } else { // The XPath standard says that if there are no arguments, // the argument defaults to a node set with the context node // as the only member. The string value of a node set is the // string value of the first node in the node set. // DOMServices::getNodeData() will give us the data. // Get a cached string... GetCachedString theData(executionContext); XalanDOMString& theString = theData.get(); DOMServices::getNodeData(*context, executionContext, theString); return executionContext.getXObjectFactory().createString(theData); } } XObjectPtr FunctionString::execute( XPathExecutionContext& executionContext, XalanNode* /* context */, const XObjectPtr arg1, const Locator* const /* locator */) const { assert(arg1.null() == false); if (arg1->getType() == XObject::eTypeString) { // Since XObjects are reference counted, just return the // argument. return arg1; } else { return executionContext.getXObjectFactory().createStringAdapter(arg1, executionContext); } } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionString* #endif FunctionString::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionString::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionTakesZeroOrOneArg_1Param, "string()"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/NodeRefList.cpp0000664000175000000640000000742011731656102020143 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "NodeRefList.hpp" #include #include #if !defined(NDEBUG) #include #endif XALAN_CPP_NAMESPACE_BEGIN NodeRefList::NodeRefList(MemoryManager& theManager) : NodeRefListBase(), m_nodeList(theManager) { } NodeRefList::NodeRefList(const NodeRefList& theSource, MemoryManager& theManager) : NodeRefListBase(theSource), m_nodeList(theSource.m_nodeList, theManager) { } NodeRefList::NodeRefList(const NodeRefListBase& theSource, MemoryManager& theManager) : NodeRefListBase(theSource), m_nodeList(theManager) { *this = theSource; } NodeRefList::~NodeRefList() { } NodeRefList& NodeRefList::operator=(const NodeRefListBase& theRHS) { if (&theRHS != this) { m_nodeList.clear(); const size_type theLength = theRHS.getLength(); m_nodeList.reserve(theLength); for(size_type i = 0; i < theLength; i++) { XalanNode* const theNode = theRHS.item(i); if (theNode != 0) { m_nodeList.push_back(theNode); } } // Chain up... NodeRefListBase::operator=(theRHS); } return *this; } NodeRefList& NodeRefList::operator=(const NodeRefList& theRHS) { if (&theRHS != this) { m_nodeList = theRHS.m_nodeList; // Chain up... NodeRefListBase::operator=(theRHS); } return *this; } XalanNode* NodeRefList::item(size_type index) const { assert(index < m_nodeList.size()); return m_nodeList[index]; } NodeRefList::size_type NodeRefList::getLength() const { assert(size_type(m_nodeList.size()) == m_nodeList.size()); return size_type(m_nodeList.size()); } NodeRefList::size_type NodeRefList::indexOf(const XalanNode* theNode) const { XALAN_USING_STD(find) // Look for the node in the list. NodeListVectorType::const_iterator i = find( m_nodeList.begin(), m_nodeList.end(), theNode); // If not found, return npos. Otherwise, subtract the iterator // from the first iterator to get the distance between them. return i == m_nodeList.end() ? npos : i - m_nodeList.begin(); } #if !defined(NDEBUG) bool NodeRefList::checkForDuplicates(MemoryManager& theManager) const { typedef XalanSet NodeSetType; bool fResult = false; const size_type theLength = getLength(); if (theLength > 0) { NodeSetType theNodes(theManager); for (size_type i = 0; i < theLength && fResult == false; ++i) { const XalanNode* const theNode = item(i); if (theNodes.find(theNode) != theNodes.end()) { fResult = true; } else { theNodes.insert(theNode); } } } return fResult; } #endif XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XalanQNameByValueAllocator.hpp0000664000175000000640000001240311731656102023105 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANQNAMEBYVALUEALLOCATOR_INCLUDE_GUARD_12455133) #define XALANQNAMEBYVALUEALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XalanQNameByValueAllocator { public: typedef XalanQNameByValue data_type; typedef data_type::NamespacesStackType NamespacesStackType; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanQNameByValueAllocator( MemoryManager& theManager, size_type theBlockCount); ~XalanQNameByValueAllocator(); /** * Create an instance. * * @param theSource The source of the copy. * * @return A pointer to the new instance. */ data_type* create(const XalanQNameByValue& theSource); /** * Create an instance. * * @param theNamespace namespace string * @param theLocalPart local part string * * @return A pointer to the new instance. */ data_type* create( const XalanDOMString& theNamespaceURI, const XalanDOMString& theLocalPart); /** * Create an instance. * * @param qname QName string * @param namespaces namespace vector stack to use * @param locator The Locator instance for error reporting, if any * @param fUseDefault If true, then elements with no prefix will have the default namespace URI, if there is one. * * @return A pointer to the new instance. */ data_type* create( const XalanDOMString& qname, const NamespacesStackType& namespaces, const Locator* locator = 0, bool fUseDefault = false); /** * Create an instance. * * @param qname QName string * @param namespaces namespace vector stack to use * @param locator The Locator instance for error reporting, if any * @param fUseDefault If true, then elements with no prefix will have the default namespace URI, if there is one. * * @return A pointer to the new instance. */ data_type* create( const XalanDOMChar* qname, const NamespacesStackType& namespaces, const Locator* locator = 0, bool fUseDefault = false); /** * Create an instance. * * @param qname QName string * @param theResolver prefix resolver to use * @param locator The Locator instance for error reporting, if any * * @return A pointer to the new instance. */ data_type* create( const XalanDOMString& qname, const PrefixResolver* theResolver = 0, const Locator* locator = 0); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const data_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all objects from the allocator. */ void reset() { m_allocator.reset(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanQNameByValueAllocator(const XalanQNameByValueAllocator&); XalanQNameByValueAllocator& operator=(const XalanQNameByValueAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANQNAMEBYVALUEALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XPath/XTokenNumberAdapterAllocator.cpp0000664000175000000640000000335611731656102023514 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XTokenNumberAdapterAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XTokenNumberAdapterAllocator::XTokenNumberAdapterAllocator( MemoryManager& theMemoryManager, size_type theBlockCount) : m_allocator(theMemoryManager, theBlockCount) { } XTokenNumberAdapterAllocator::~XTokenNumberAdapterAllocator() { } XTokenNumberAdapterAllocator::object_type* XTokenNumberAdapterAllocator::create(const XToken& theXToken) { object_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); object_type* const theResult = new(theBlock) object_type(theXToken, getMemoryManager()); m_allocator.commitAllocation(theBlock); return theResult; } bool XTokenNumberAdapterAllocator::destroy(object_type* theObject) { return m_allocator.destroyObject(theObject); } void XTokenNumberAdapterAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XPathDefinitions.hpp0000664000175000000640000000243711731656102021215 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XPATHDEFINITIONS_HEADER_GUARD_1357924680) #define XPATHDEFINITIONS_HEADER_GUARD_1357924680 #include #if defined(XALAN_BUILD_DLL) #define XALAN_XPATH_EXPORT XALAN_PLATFORM_EXPORT #define XALAN_XPATH_EXPORT_FUNCTION(T) XALAN_PLATFORM_EXPORT_FUNCTION(T) #else #define XALAN_XPATH_EXPORT XALAN_PLATFORM_IMPORT #define XALAN_XPATH_EXPORT_FUNCTION(T) XALAN_PLATFORM_IMPORT_FUNCTION(T) #endif #endif // XPATHDEFINITIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XObjectFactory.hpp0000664000175000000640000002142411731656102020660 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XOBJECTFACTORY_HEADER_GUARD_1357924680) #define XOBJECTFACTORY_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanNode; class MutableNodeRefList; class NodeRefListBase; class XObject; class XObjectPtr; class XToken; /** * This class handles the creation of XObjects and manages their lifetime. */ class XALAN_XPATH_EXPORT XObjectFactory { public: typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; typedef XPathExecutionContext::GetCachedString GetCachedString; typedef XPathExecutionContext::GetCachedString GetAndReleaseCachedString; XObjectFactory(MemoryManager& theManager); virtual ~XObjectFactory(); MemoryManager& getMemoryManager() { return m_memoryManager; } /** * Return an XObject to the factory. * * @param theXObject The XObject to be returned * @return true if the object belongs to the factory, false if not. */ bool returnObject(XObject* theXObject) { return doReturnObject(theXObject); } /** * Reset the instance. This invalidates all existing instances created * with this XObjectFactory. */ virtual void reset() = 0; /** * Create a boolean XObject from a boolean value. * * @param theValue value used to create object * @return pointer to new object */ virtual const XObjectPtr createBoolean(bool theValue) = 0; /** * Create a node set XObject from a node list. * * @param theValue value used to create object. theValue will be owned by the new XObject. * @return pointer to new object */ virtual const XObjectPtr createNodeSet(BorrowReturnMutableNodeRefList& theValue) = 0; /** * Create a node set XObject from a node. * * @param theNOde value used to create object. * @return pointer to new object */ virtual const XObjectPtr createNodeSet(XalanNode* theValue) = 0; /** * Create a numeric XObject from a number. * * @param theValue value used to create object * @return pointer to new object */ virtual const XObjectPtr createNumber(double theValue) = 0; /** * Create a numeric XObject from an XToken. The XToken * instance must be inexistence for the lifetime of the * object. * * @param theValue value used to create object * @return pointer to new object */ virtual const XObjectPtr createNumber(const XToken& theValue) = 0; /** * Create a string XObject from a string. * * @param theValue value used to create object * @return pointer to new object */ virtual const XObjectPtr createString(const XalanDOMString& theValue) = 0; /** * Create a string XObject from a null-terminated array of characters. * * @param theValue a pointer to the array * @return pointer to new object */ virtual const XObjectPtr createString(const XalanDOMChar* theValue) = 0; /** * Create a string XObject from an array of characters. * * @param theValue a pointer to the array * @paran theLength the length of the array * @return pointer to new object */ virtual const XObjectPtr createString( const XalanDOMChar* theValue, XalanSize_t theLength) = 0; /** * Create a string XObject from an XToken. The XToken * instance must be inexistence for the lifetime of the * object. * * @param theValue value used to create object * @return pointer to new object */ virtual const XObjectPtr createString(const XToken& theValue) = 0; /** * Create a string XObject from a string. The XObject * will hold a reference to the supplied string, so * the string must be in scope for the lifetime of * the instance * * @param theValue value used to create object * @return pointer to new object */ virtual const XObjectPtr createStringReference(const XalanDOMString& theValue) = 0; /** * Create a string XObject that will adapt another XObject to * behave like a string. The XObject holds a reference to the * other XObject. * * @param theValue value used to create object * @paran theExecutionContext The current execution context * @return pointer to new object */ virtual const XObjectPtr createStringAdapter( const XObjectPtr& theValue, XPathExecutionContext& theExecutionContext) = 0; /** * Create a string XObject from a cached XalanDOMString, * * @param theValue value used to create object * @return pointer to new object */ virtual const XObjectPtr createString(GetCachedString& theValue) = 0; /** * Create an "unknown" XObject from a string. * * @param theValue value used to create object * @return pointer to new object */ virtual const XObjectPtr createUnknown(const XalanDOMString& theValue) = 0; /** * Hold a reference to an XObject instance until the * factory is reset. This is needed in a very few cases * when the object lifetime needs to extend after the * execution of an XPath expression. * * @param theValue The XObjectPtr instance. */ virtual void holdReference(XObjectPtr theValue) = 0; /** * * A public functor for use with stl algorithms. * */ #if defined(XALAN_NO_STD_NAMESPACE) struct DeleteXObjectFunctor : public unary_function #else struct DeleteXObjectFunctor : public std::unary_function #endif { public: DeleteXObjectFunctor( XObjectFactory& theFactoryInstance, bool fInReset = false) : m_factoryInstance(theFactoryInstance), m_fInReset(fInReset) { } result_type operator()(argument_type theXObject) const { if (m_fInReset == true) { return m_factoryInstance.doReturnObject( theXObject, true); } else { return m_factoryInstance.returnObject(theXObject); } } private: XObjectFactory& m_factoryInstance; const bool m_fInReset; }; friend struct DeleteXObjectFunctor; protected: /** * Return the actual implementation type of an XObject. * * @param theXObject the XObject */ XObject::eObjectType getRealType(const XObject& theXObject) const { return theXObject.getRealType(); } /** * Delete a FactoryObject instance. * * @param theXObject the XObject instance to delete. */ void deleteObject(const XObject* theXObject) const { if( theXObject!= 0) { XObject* const nonConst = const_cast(theXObject); nonConst->~XObject(); m_memoryManager.deallocate(nonConst); } } /** * Return an XObject to the factory. * * @param theXObject XObject to be returned * @param fInReset true when called during reset(). */ virtual bool doReturnObject( XObject* theXObject, bool fInReset = false) = 0; private: // Not implemented... XObjectFactory(const XObjectFactory&); XObjectFactory& operator=(const XObjectFactory&); bool operator==(const XObjectFactory&) const; MemoryManager& m_memoryManager; }; XALAN_CPP_NAMESPACE_END #endif // XOBJECTFACTORY_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/MutableNodeRefList.hpp0000664000175000000640000002004511731656102021460 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(MUTABLENODEREFLIST_HEADER_GUARD_1357924680) #define MUTABLENODEREFLIST_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN class XPathExecutionContext; class XalanDocument; class XalanNodeList; /** * Local implementation of MutableNodeRefList. This class is for internal use * only. */ class XALAN_XPATH_EXPORT MutableNodeRefList : public NodeRefList { public: /** * Construct an empty mutable node list. */ explicit MutableNodeRefList(MemoryManager& theManager); static MutableNodeRefList* create(MemoryManager& theManager); /** * Construct a mutable node list from another list. * * @param theSource source list */ MutableNodeRefList(const MutableNodeRefList& theSource, MemoryManager& theManager); /** * Construct a mutable node list from another list. * * @param theSource source list */ explicit MutableNodeRefList(const NodeRefListBase& theSource, MemoryManager& theManager); virtual ~MutableNodeRefList(); MutableNodeRefList& operator=(const MutableNodeRefList& theRHS); MutableNodeRefList& operator=(const NodeRefList& theRHS); MutableNodeRefList& operator=(const NodeRefListBase& theRHS); MutableNodeRefList& operator=(const XalanNodeList* theRHS); /** * Add a node at to the list. * * @param n node to add */ void addNode(XalanNode* n); /** * Insert a node at a given position. * * @param n node to insert * @param pos position of insertion */ void insertNode( XalanNode* n, size_type pos); /** * Remove a node from the list. * * @param n node to insert */ void removeNode(const XalanNode* n); /** * Remove a node from the list. * * @param pos position of node in list */ void removeNode(size_type pos); /** * Remove all nodes. */ void clear(); /** * Set a item. * * @param pos position of node to modify * @param n node to insert, default is empty node */ void setNode( size_type pos, XalanNode* n = 0); /** * Copy NodeList members into this nodelist, adding in document order. If * a node is null, don't add it. * * @param nodelist node list to add */ void addNodes(const XalanNodeList& nodelist); /** * Copy NodeList members into this nodelist, adding in document order. If * a node is null, don't add it. * * @param nodelist node list to add */ void addNodes(const NodeRefListBase& nodelist); /** * Copy NodeList members into this nodelist, adding in document order. * * @param nodelist node list to add * @param executionContext the current execution context */ void addNodesInDocOrder( const XalanNodeList& nodelist, XPathExecutionContext& executionContext); /** * Copy NodeList members into this nodelist, adding in document order. * * @param nodelist node list to add * @param executionContext the current execution context */ void addNodesInDocOrder( const NodeRefListBase& nodelist, XPathExecutionContext& executionContext); /** * Copy NodeList members into this nodelist, adding in document order. * * @param nodelist node list to add * @param executionContext the current execution context */ void addNodesInDocOrder( const MutableNodeRefList& nodelist, XPathExecutionContext& executionContext); /** * Add a node into list where it should occur in document order. * * @param node node object to add * @param executionContext the current execution context */ void addNodeInDocOrder( XalanNode* node, XPathExecutionContext& executionContext); /** * Clear any null entries in the node list. */ void clearNulls(); /** * Reverse the nodes in the list. */ void reverse(); /** * Reserve space for the supplied number of nodes. * This is taken as an optimization, and may be * ignored. You might want to call this when you * know the number of nodes you're about to add to * this list. * * Remember to take into account the current size of * the list when calling this. That means you will * probably want to add the result of getLength() to * the number of nodes you're planning to add. * * @param theCount the number of nodes to reserve space for */ void reserve(size_type theCount) { m_nodeList.reserve(theCount); } /** * See if the order of the nodes is an unknown order. */ bool getUnknownOrder() const { return m_order == eUnknownOrder ? true : false; } void setUnknownOrder() { m_order = eUnknownOrder; } /** * See if the order of the nodes is document order. */ bool getDocumentOrder() const { return m_order == eDocumentOrder ? true : false; } /** * Set the known order of the nodes. This should * only be done when the order is known. Otherwise, * disaster will ensue. */ void setDocumentOrder() { m_order = eDocumentOrder; } /** * See if the order of the nodes is reverse document order. */ bool getReverseDocumentOrder() const { return m_order == eReverseDocumentOrder ? true : false; } /** * Set the known order of the nodes. This should * only be done when the order is known. Otherwise, * disaster will ensue. */ void setReverseDocumentOrder() { m_order = eReverseDocumentOrder; } typedef NodeListVectorType::iterator NodeListIteratorType; class addNodeInDocOrderFunctor { public: addNodeInDocOrderFunctor( MutableNodeRefList& theList, XPathExecutionContext& theExecutionContext) : m_list(theList), m_executionContext(theExecutionContext) { } void operator()(XalanNode* theNode) const { m_list.addNodeInDocOrder(theNode, m_executionContext); } private: MutableNodeRefList& m_list; XPathExecutionContext& m_executionContext; }; void swap(MutableNodeRefList& theOther) { NodeRefList::swap(theOther); const eOrder temp = m_order; m_order = theOther.m_order; theOther.m_order = temp; } private: //not defined MutableNodeRefList(const MutableNodeRefList& theSource); // An enum to determine what the order of the nodes is... enum eOrder { eUnknownOrder, eDocumentOrder, eReverseDocumentOrder }; eOrder m_order; }; XALAN_USES_MEMORY_MANAGER(MutableNodeRefList) XALAN_CPP_NAMESPACE_END #endif // MUTABLENODEREFLIST_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XalanQNameByReference.cpp0000664000175000000640000000366111731656102022067 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XalanQNameByReference.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanQNameByReference::XalanQNameByReference() : XalanQName(), m_namespace(&s_emptyString), m_localpart(&s_emptyString) { } XalanQNameByReference::XalanQNameByReference( const XalanDOMString& theNamespace, const XalanDOMString& theLocalPart) : XalanQName(), m_namespace(&theNamespace), m_localpart(&theLocalPart) { } XalanQNameByReference::XalanQNameByReference(const XalanDOMString& theLocalPart) : XalanQName(), m_namespace(&s_emptyString), m_localpart(&theLocalPart) { } XalanQNameByReference::XalanQNameByReference(const XalanQName& theQName) : XalanQName(), m_namespace(&theQName.getNamespace()), m_localpart(&theQName.getLocalPart()) { } XalanQNameByReference::~XalanQNameByReference() { } const XalanDOMString& XalanQNameByReference::getLocalPart() const { assert(m_localpart != 0); return *m_localpart; } const XalanDOMString& XalanQNameByReference::getNamespace() const { assert(m_namespace != 0); return *m_namespace; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/FormatterStringLengthCounter.hpp0000664000175000000640000000620511731656102023626 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FORMATTERSTRINGLENGTHCOUNTER_HEADER_GUARD_1357924680) #define FORMATTERSTRINGLENGTHCOUNTER_HEADER_GUARD_1357924680 // Base include file. Must be first. #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN /** * This class takes SAX events (in addition to some extra events * that SAX doesn't handle yet) and produces counts the characters * sent to the characters event. */ class XALAN_XPATH_EXPORT FormatterStringLengthCounter : public FormatterListener { public: /** * FormatterStringLengthCounter instance constructor. */ explicit FormatterStringLengthCounter(); virtual ~FormatterStringLengthCounter(); size_type getCount() const { return m_count; } // These methods are inherited from FormatterListener ... virtual void setDocumentLocator(const Locator* const locator); virtual void startDocument(); virtual void endDocument(); virtual void startElement( const XMLCh* const name, AttributeListType& attrs); virtual void endElement(const XMLCh* const name); virtual void characters( const XMLCh* const chars, const size_type length); virtual void charactersRaw( const XMLCh* const chars, const size_type length); virtual void entityReference(const XMLCh* const name); virtual void ignorableWhitespace( const XMLCh* const chars, const size_type length); virtual void processingInstruction( const XMLCh* const target, const XMLCh* const data); virtual void resetDocument(); virtual void comment(const XMLCh* const data); virtual void cdata( const XMLCh* const ch, const size_type length); private: // These are not implemented. FormatterStringLengthCounter(const FormatterStringLengthCounter&); FormatterStringLengthCounter& operator=(const FormatterStringLengthCounter&); bool operator==(const FormatterStringLengthCounter&) const; // Data members... size_type m_count; }; XALAN_CPP_NAMESPACE_END #endif // FORMATTERSTRINGLENGTHCOUNTER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XPathProcessorImpl.cpp0000664000175000000640000025120511731656102021535 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XPathProcessorImpl.hpp" #include #include #include #include #include #include #include #include #include #include "XalanQName.hpp" #include "XPathEnvSupport.hpp" #include "XPathFunctionTable.hpp" #include "XPathConstructionContext.hpp" #include "XPathExecutionContext.hpp" #include "XPathParserException.hpp" XALAN_CPP_NAMESPACE_BEGIN XPathProcessorImpl::XPathProcessorImpl(MemoryManager& theManager) : m_token(theManager), m_tokenChar(0), m_xpath(0), m_constructionContext(0), m_expression(0), m_prefixResolver(0), m_requireLiterals(false), m_isMatchPattern(false), m_positionPredicateStack(theManager), m_namespaces(theManager), m_allowVariableReferences(true), m_allowKeyFunction(true) { } XPathProcessorImpl* XPathProcessorImpl::create(MemoryManager& theManager) { typedef XPathProcessorImpl ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType(theManager); theGuard.release(); return theResult; } XPathProcessorImpl::~XPathProcessorImpl() { } void XPathProcessorImpl::initXPath( XPath& pathObj, XPathConstructionContext& constructionContext, const XalanDOMString& expression, const PrefixResolver& resolver, const Locator* locator, bool allowVariableReferences, bool allowKeyFunction) { m_isMatchPattern = false; m_requireLiterals = false; m_allowVariableReferences = allowVariableReferences; m_allowKeyFunction = allowKeyFunction; m_xpath = &pathObj; m_constructionContext = &constructionContext; m_expression = &m_xpath->getExpression(); m_prefixResolver = &resolver; m_locator = locator; m_expression->reset(); tokenize(expression); m_expression->appendOpCode(XPathExpression::eOP_XPATH); nextToken(); Expr(); if (m_token.empty() == false) { error(XalanMessages::ExtraIllegalTokens); } m_xpath = 0; m_constructionContext = 0; m_expression = 0; m_prefixResolver = 0; m_locator = 0; m_positionPredicateStack.clear(); m_namespaces.clear(); } void XPathProcessorImpl::initMatchPattern( XPath& pathObj, XPathConstructionContext& constructionContext, const XalanDOMString& expression, const PrefixResolver& resolver, const Locator* locator, bool allowVariableReferences, bool allowKeyFunction) { m_isMatchPattern = true; m_allowVariableReferences = allowVariableReferences; m_allowKeyFunction = allowKeyFunction; m_xpath = &pathObj; m_constructionContext = &constructionContext; m_expression = &m_xpath->getExpression(); m_prefixResolver = &resolver; m_locator = locator; m_expression->reset(); tokenize(expression); m_expression->appendOpCode(XPathExpression::eOP_MATCHPATTERN); nextToken(); Pattern(); if (m_token.empty() == false) { error(XalanMessages::ExtraIllegalTokens); } // Terminate for safety. m_expression->appendOpCode(XPathExpression::eENDOP); m_expression->shrink(); m_xpath = 0; m_constructionContext = 0; m_expression = 0; m_prefixResolver = 0; m_locator = 0; m_positionPredicateStack.clear(); m_namespaces.clear(); } void XPathProcessorImpl::tokenize(const XalanDOMString& pat) { assert(m_xpath != 0); assert(m_expression != 0); assert(m_constructionContext != 0); m_expression->setCurrentPattern(m_constructionContext->getPooledString(pat)); const t_size_type nChars = pat.length(); t_size_type startSubstring = XalanDOMString::npos; t_size_type posOfNSSep = XalanDOMString::npos; const XPathConstructionContext::GetCachedString theGuard(*m_constructionContext); XalanDOMString& theToken = theGuard.get(); for(t_size_type i = 0; i < nChars; i++) { XalanDOMChar c = pat[i]; switch(c) { case XalanUnicode::charQuoteMark: { if(startSubstring != XalanDOMString::npos) { if(XalanDOMString::npos != posOfNSSep) { posOfNSSep = mapNSTokens(pat, startSubstring, posOfNSSep, i); } else { substring(pat, theToken, startSubstring, i); addToTokenQueue(theToken); } } startSubstring = i; for(++i; i < nChars && (c = pat[i]) != XalanUnicode::charQuoteMark; ++i); if(c == XalanUnicode::charQuoteMark && i < nChars) { substring(pat, theToken, startSubstring, i + 1); addToTokenQueue(theToken); startSubstring = XalanDOMString::npos; } else { error(XalanMessages::UnterminatedStringLiteral); } } break; case XalanUnicode::charApostrophe: { if(startSubstring != XalanDOMString::npos) { if(XalanDOMString::npos != posOfNSSep) { posOfNSSep = mapNSTokens(pat, startSubstring, posOfNSSep, i); } else { substring(pat, theToken, startSubstring, i); addToTokenQueue(theToken); } } startSubstring = i; for(++i; i < nChars && (c = pat[i]) != XalanUnicode::charApostrophe; ++i); if(c == XalanUnicode::charApostrophe && i < nChars) { substring(pat, theToken, startSubstring, i + 1); addToTokenQueue(theToken); startSubstring = XalanDOMString::npos; } else { error(XalanMessages::UnterminatedStringLiteral); } } break; case XalanUnicode::charLF: case XalanUnicode::charCR: case XalanUnicode::charSpace: case XalanUnicode::charHTab: { if(startSubstring != XalanDOMString::npos) { if(XalanDOMString::npos != posOfNSSep) { posOfNSSep = mapNSTokens(pat, startSubstring, posOfNSSep, i); } else { substring(pat, theToken, startSubstring, i); addToTokenQueue(theToken); } startSubstring = XalanDOMString::npos; } } break; case XalanUnicode::charHyphenMinus: { if(!(startSubstring == XalanDOMString::npos)) { break; } } // fall-through on purpose case XalanUnicode::charCommercialAt: case XalanUnicode::charLeftParenthesis: case XalanUnicode::charLeftSquareBracket: case XalanUnicode::charRightParenthesis: case XalanUnicode::charRightSquareBracket: case XalanUnicode::charVerticalLine: case XalanUnicode::charSolidus: case XalanUnicode::charAsterisk: case XalanUnicode::charPlusSign: case XalanUnicode::charEqualsSign: case XalanUnicode::charComma: case XalanUnicode::charReverseSolidus: // Unused at the moment case XalanUnicode::charCircumflexAccent: // Unused at the moment case XalanUnicode::charExclamationMark: // Unused at the moment case XalanUnicode::charDollarSign: case XalanUnicode::charLessThanSign: case XalanUnicode::charGreaterThanSign: { if(startSubstring != XalanDOMString::npos) { if(XalanDOMString::npos != posOfNSSep) { posOfNSSep = mapNSTokens(pat, startSubstring, posOfNSSep, i); } else { substring(pat, theToken, startSubstring, i); addToTokenQueue(theToken); } startSubstring = XalanDOMString::npos; } substring(pat, theToken, i, i + 1); addToTokenQueue(theToken); } break; case XalanUnicode::charColon: { if(posOfNSSep == i - 1 && i > 0) { if(startSubstring != XalanDOMString::npos) { if (startSubstring < i - 1) { substring(pat, theToken, startSubstring, i - 1); addToTokenQueue(theToken); } } startSubstring = XalanDOMString::npos; posOfNSSep = XalanDOMString::npos; substring(pat, theToken, i - 1, i + 1); addToTokenQueue(theToken); break; } else { posOfNSSep = i; } } // fall through on purpose default: { if(XalanDOMString::npos == startSubstring) { startSubstring = i; if (XalanXMLChar::isDigit(c) == true) { bool gotFullStop = false; while(i < nChars - 1) { ++i; const XalanDOMChar currentChar = pat[i]; if (currentChar == XalanUnicode::charFullStop) { if (gotFullStop == false) { gotFullStop = true; } else { --i; break; } } else if (XalanXMLChar::isDigit(currentChar) == false) { --i; break; } } substring(pat, theToken, startSubstring, i + 1); addToTokenQueue(theToken); startSubstring = XalanDOMString::npos; } } } } } if(startSubstring != XalanDOMString::npos) { if(XalanDOMString::npos != posOfNSSep) { posOfNSSep = mapNSTokens(pat, startSubstring, posOfNSSep, nChars); } else { substring(pat, theToken, startSubstring, nChars); addToTokenQueue(theToken); } } if (0 == m_expression->tokenQueueSize()) { error(XalanMessages::EmptyExpression); } m_expression->resetTokenPosition(); } void XPathProcessorImpl::addToTokenQueue(const XalanDOMString& s) const { assert(m_xpath != 0); assert(m_expression != 0); m_expression->pushToken(m_constructionContext->getPooledString(s)); } void XPathProcessorImpl::replaceTokenWithNamespaceToken() const { assert(m_xpath != 0); assert(m_expression != 0); assert(m_token.empty() == false); StringToStringMapType::const_iterator i = m_namespaces.find(m_token); assert(i != m_namespaces.end()); const XalanDOMString* const theNamespaceURI = (*i).second; assert(theNamespaceURI != 0 && theNamespaceURI->empty() == false); m_expression->replaceRelativeToken( 1, XPathExpression::eRelativeBackward, m_constructionContext->getPooledString(*theNamespaceURI)); } XPathProcessorImpl::t_size_type XPathProcessorImpl::mapNSTokens( const XalanDOMString& pat, t_size_type startSubstring, t_size_type posOfNSSep, t_size_type posOfScan) { assert(m_prefixResolver != 0); const XPathConstructionContext::GetCachedString theGuard(*m_constructionContext); XalanDOMString& scratchString = theGuard.get(); // Get the prefix of the QName... scratchString.assign(pat, startSubstring, posOfNSSep - startSubstring); if (XalanQName::isValidNCName(scratchString) == false) { error( XalanMessages::IsNotValidNCName_1Param, scratchString); } const XalanDOMString* const uName = m_prefixResolver->getNamespaceForPrefix(scratchString); if(uName == 0) { error( XalanMessages::PrefixIsNotDeclared_1Param, scratchString); } else if (uName->empty() == true) { error( XalanMessages::PrefixIsBoundToZeroLengthURI_1Param, scratchString); } else { m_namespaces[scratchString] = uName; addToTokenQueue(scratchString); addToTokenQueue(DOMServices::s_XMLNamespaceSeparatorString); // If there's no local part, then don't bother. We need to check // this because '*' tokenizes separately, which means "ns:*" tokenizes // differently from "ns:foo". In the first case, '*' will be tokenized // _after_ this code, in the second 'ns:foo' will be split into tokens // here... if(posOfNSSep + 1 < posOfScan) { scratchString.assign(pat, posOfNSSep + 1, posOfScan - (posOfNSSep + 1)); assert(scratchString.empty() == false); if (XalanQName::isValidNCName(scratchString) == false) { error( XalanMessages::NotValidNCName_1Param, scratchString); } else { addToTokenQueue(scratchString); } } } return XalanDOMString::npos; } bool XPathProcessorImpl::tokenIs(const XalanDOMString& s) const { return equals(m_token, s); } bool XPathProcessorImpl::tokenIs(const XalanDOMChar* s) const { return equals(m_token, s); } bool XPathProcessorImpl::tokenIs(XalanDOMChar c) const { return m_tokenChar == c ? true : false; } bool XPathProcessorImpl::lookahead( XalanDOMChar c, int n) const { const XalanDOMString& tok = getTokenRelative(n - 1); if (tok.length() == 1 && tok[0] == c) { return true; } else { return false; } } bool XPathProcessorImpl::lookahead( const XalanDOMChar* s, int n) const { assert(s != 0); const XalanDOMString& tok = getTokenRelative(n - 1); return equals(tok, s); } bool XPathProcessorImpl::lookahead( const XalanDOMString& s, int n) const { const XalanDOMString& tok = getTokenRelative(n - 1); return equals(tok, s); } bool XPathProcessorImpl::lookbehind( char c, int n) const { const XalanDOMString& tok = getTokenRelative(-(n + 1)); if (tok.length() == 1 && tok[0] == c) { return true; } else { return false; } } bool XPathProcessorImpl::lookbehindHasToken(int n) const { const XalanDOMString& tok = getTokenRelative(-(n + 1)); const XalanDOMChar c0 = tok.length() == 0 ? XalanUnicode::charVerticalLine : tok[0]; return c0 == XalanUnicode::charVerticalLine ? false : true; } bool XPathProcessorImpl::nextToken() { assert(m_expression != 0); const XToken* const theNextToken = m_expression->getNextToken(); if (theNextToken == 0) { m_token.clear(); } else { m_token = theNextToken->str(); } if(m_token.empty() == false) { m_tokenChar = m_token[0]; return true; } else { m_tokenChar = 0; return false; } } void XPathProcessorImpl::prevToken() { assert(m_expression != 0); const XToken* const thePreviousToken = m_expression->getPreviousToken(); m_token = thePreviousToken == 0 ? s_emptyString : thePreviousToken->str(); if(m_token.empty() == false) { m_tokenChar = m_token[0]; } else { m_tokenChar = 0; } } const XalanDOMString& XPathProcessorImpl::getTokenRelative(int theOffset) const { assert(m_expression != 0); const XToken* theToken = 0; if (theOffset < 0) { theToken = m_expression->getRelativeToken( XPathExpression::TokenQueueSizeType(-theOffset), XPathExpression::eRelativeBackward); } else { theToken = m_expression->getRelativeToken( XPathExpression::TokenQueueSizeType(theOffset), XPathExpression::eRelativeForward); } return theToken == 0 ? s_emptyString : theToken->str(); } void XPathProcessorImpl::consumeExpected(XalanDOMChar expected) { if(tokenIs(expected) == true) { nextToken(); } else { error( XalanMessages::NotFoundWhatExpected_2Param, expected, m_token); } } typedef XPathConstructionContext::GetCachedString GetCachedString; void XPathProcessorImpl::error(const XalanDOMString& msg) const { assert(m_constructionContext != 0); const GetCachedString theGuard(*m_constructionContext); XalanDOMString& emsg = theGuard.get(); if (m_expression == 0) { emsg = msg; } else { const XalanDOMString& theCurrentPattern = m_expression->getCurrentPattern(); DOMStringPrintWriter thePrintWriter(emsg); thePrintWriter.print(msg); thePrintWriter.println(); if (theCurrentPattern.empty() == false) { const GetCachedString theGuard(*m_constructionContext); XalanDOMString& theResult = theGuard.get(); const XalanMessages::Codes theCode = m_isMatchPattern == true ? XalanMessages::PatternIs_1Param : XalanMessages::ExpressionIs_1Param; thePrintWriter.print( XalanMessageLoader::getMessage( theResult, theCode, theCurrentPattern)); } // Back up one token, since we've consumed one... m_expression->getPreviousToken(); // Ask the expression to dump the remaining tokens... m_expression->dumpRemainingTokenQueue(thePrintWriter); } m_constructionContext->problem( XPathConstructionContext::eXPath, XPathConstructionContext::eError, emsg, m_locator, 0); throw XPathParserException( emsg, m_constructionContext->getMemoryManager(), m_locator); } void XPathProcessorImpl::error(XalanMessages::Codes theCode) const { assert(m_constructionContext != 0); const GetCachedString theGuard(*m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), theCode)); } void XPathProcessorImpl::error( XalanMessages::Codes theCode, const XalanDOMString& theToken) const { assert(m_constructionContext != 0); const GetCachedString theGuard(*m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), theCode, theToken)); } void XPathProcessorImpl::error( XalanMessages::Codes theCode, const XalanDOMChar* theToken) const { assert(m_constructionContext != 0); const GetCachedString theGuard(*m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), theCode, theToken)); } void XPathProcessorImpl::error( XalanMessages::Codes theCode, XalanDOMChar theToken1, const XalanDOMString& theToken2) const { assert(m_constructionContext != 0); const GetCachedString theGuard(*m_constructionContext); XalanDOMString& theResult = theGuard.get(); error( XalanMessageLoader::getMessage( theResult, theCode, XalanDOMString(1, theToken1, theResult.getMemoryManager()), theToken2)); } void XPathProcessorImpl::Expr() { OrExpr(); } void XPathProcessorImpl::OrExpr() { const int opPos = m_expression->opCodeMapLength(); AndExpr(); if(tokenIs(s_orString) == true) { if (nextToken() == false) { error(XalanMessages::ExpectedToken); } else { m_expression->insertOpCode( XPathExpression::eOP_OR, opPos); OrExpr(); m_expression->updateOpCodeLength( XPathExpression::eOP_OR, opPos); } } } void XPathProcessorImpl::AndExpr() { const int opPos = m_expression->opCodeMapLength(); EqualityExpr(); if(tokenIs(s_andString) == true) { if (nextToken() == false) { error(XalanMessages::ExpectedToken); } else { m_expression->insertOpCode( XPathExpression::eOP_AND, opPos); AndExpr(); m_expression->updateOpCodeLength( XPathExpression::eOP_AND, opPos); } } } int XPathProcessorImpl::EqualityExpr(int opCodePos) { int theOpDisplacement = 0; const int opPos = opCodePos != -1 ? opCodePos : m_expression->opCodeMapLength(); RelationalExpr(); XPathExpression::eOpCodes theOpCode = XPathExpression::eENDOP; bool foundToken = false; if(tokenIs(XalanUnicode::charExclamationMark) && lookahead(XalanUnicode::charEqualsSign, 1)) { nextToken(); foundToken = nextToken(); theOpCode = XPathExpression::eOP_NOTEQUALS; } else if(tokenIs(XalanUnicode::charEqualsSign)) { foundToken = nextToken(); theOpCode = XPathExpression::eOP_EQUALS; } if (theOpCode != XPathExpression::eENDOP) { if (foundToken == false) { error(XalanMessages::ExpectedToken); } else { // Save the number of bytes we inserted // into the map. const int theLocalDisplacement = m_expression->insertOpCode(theOpCode, opPos); // Update the length m_expression->updateOpCodeLength(theOpCode, opPos); // Do the right term of the expression. theOpDisplacement += EqualityExpr(opPos); // If there's any displacement from the right // term, update the length for a shift. Otherwise, // just update the length. if (theOpDisplacement > 0) { m_expression->updateShiftedOpCodeLength( theOpCode, opPos, opPos + theOpDisplacement); } else { m_expression->updateOpCodeLength( theOpCode, opPos); } // Accumulate the displacement. theOpDisplacement += theLocalDisplacement; } } return theOpDisplacement; } int XPathProcessorImpl::RelationalExpr(int opCodePos) { int theOpDisplacement = 0; const int opPos = opCodePos != -1 ? opCodePos : m_expression->opCodeMapLength(); AdditiveExpr(); if(m_token.empty() == false) { bool foundToken = false; XPathExpression::eOpCodes theOpCode = XPathExpression::eENDOP; if(tokenIs(XalanUnicode::charLessThanSign) == true) { foundToken = nextToken(); if(tokenIs(XalanUnicode::charEqualsSign) == true) { foundToken = nextToken(); theOpCode = XPathExpression::eOP_LTE; } else { theOpCode = XPathExpression::eOP_LT; } } else if(tokenIs(XalanUnicode::charGreaterThanSign) == true) { foundToken = nextToken(); if(tokenIs(XalanUnicode::charEqualsSign) == true) { foundToken = nextToken(); theOpCode = XPathExpression::eOP_GTE; } else { theOpCode = XPathExpression::eOP_GT; } } if (theOpCode != XPathExpression::eENDOP) { if (foundToken == false) { error(XalanMessages::ExpectedToken); } else { // Save the number of bytes we inserted // into the map. const int theLocalDisplacement = m_expression->insertOpCode(theOpCode, opPos); // Update the length m_expression->updateOpCodeLength(theOpCode, opPos); // Do the right term of the expression. theOpDisplacement += RelationalExpr(opPos); // If there's any displacement from the right // term, update the length for a shift. Otherwise, // just update the length. if (theOpDisplacement > 0) { m_expression->updateShiftedOpCodeLength( theOpCode, opPos, opPos + theOpDisplacement); } else { m_expression->updateOpCodeLength( theOpCode, opPos); } // Accumulate the displacement. theOpDisplacement += theLocalDisplacement; } } } return theOpDisplacement; } int XPathProcessorImpl::AdditiveExpr(int opCodePos) { int theOpDisplacement = 0; const int opPos = opCodePos != -1 ? opCodePos : m_expression->opCodeMapLength(); MultiplicativeExpr(); if(m_token.empty() == false) { XPathExpression::eOpCodes theOpCode = XPathExpression::eENDOP; if(tokenIs(XalanUnicode::charPlusSign) == true) { theOpCode = XPathExpression::eOP_PLUS; } else if(tokenIs(XalanUnicode::charHyphenMinus) == true) { theOpCode = XPathExpression::eOP_MINUS; } if (theOpCode != XPathExpression::eENDOP) { if (nextToken() == false) { error(XalanMessages::ExpectedToken); } else { // Save the number of bytes we inserted // into the map. const int theLocalDisplacement = m_expression->insertOpCode(theOpCode, opPos); // Update the length m_expression->updateOpCodeLength(theOpCode, opPos); // Do the right term of the expression. theOpDisplacement += AdditiveExpr(opPos); // If there's any displacement from the right // term, update the length for a shift. Otherwise, // just update the length. if (theOpDisplacement > 0) { m_expression->updateShiftedOpCodeLength( theOpCode, opPos, opPos + theOpDisplacement); } else { m_expression->updateOpCodeLength( theOpCode, opPos); } // Accumulate the displacement. theOpDisplacement += theLocalDisplacement; } } } return theOpDisplacement; } int XPathProcessorImpl::MultiplicativeExpr(int opCodePos) { int theOpDisplacement = 0; const int opPos = opCodePos != -1 ? opCodePos : m_expression->opCodeMapLength(); UnaryExpr(); if(m_token.empty() == false) { XPathExpression::eOpCodes theOpCode = XPathExpression::eENDOP; if(tokenIs(XalanUnicode::charAsterisk) == true) { theOpCode = XPathExpression::eOP_MULT; } else if(tokenIs(s_divString) == true) { theOpCode = XPathExpression::eOP_DIV; } else if(tokenIs(s_modString) == true) { theOpCode = XPathExpression::eOP_MOD; } if (theOpCode != XPathExpression::eENDOP) { if (nextToken() == false) { error(XalanMessages::ExpectedToken); } else { // Save the number of bytes we inserted // into the map. const int theLocalDisplacement = m_expression->insertOpCode(theOpCode, opPos); // Update the length m_expression->updateOpCodeLength(theOpCode, opPos); // Do the right term of the expression. theOpDisplacement += MultiplicativeExpr(opPos); // If there's any displacement from the right // term, update the length for a shift. Otherwise, // just update the length. if (theOpDisplacement > 0) { m_expression->updateShiftedOpCodeLength( theOpCode, opPos, opPos + theOpDisplacement); } else { m_expression->updateOpCodeLength( theOpCode, opPos); } // Accumulate the displacement. theOpDisplacement += theLocalDisplacement; } } } return theOpDisplacement; } void XPathProcessorImpl::UnaryExpr() { const int opPos = m_expression->opCodeMapLength(); bool isNeg = false; if(tokenIs(XalanUnicode::charHyphenMinus) == true) { nextToken(); m_expression->insertOpCode(XPathExpression::eOP_NEG, opPos); isNeg = true; } UnionExpr(); if(isNeg == true) { m_expression->updateOpCodeLength(XPathExpression::eOP_NEG, opPos); } } void XPathProcessorImpl::UnionExpr() { const int opPos = m_expression->opCodeMapLength(); bool continueOrLoop = true; bool foundUnion = false; do { PathExpr(); if(tokenIs(XalanUnicode::charVerticalLine) == true) { if(false == foundUnion) { foundUnion = true; m_expression->insertOpCode(XPathExpression::eOP_UNION, opPos); } nextToken(); } else { if (foundUnion == true) { // Terminate for safety. m_expression->appendOpCode(XPathExpression::eENDOP); } break; } } while(continueOrLoop == true); m_expression->updateOpCodeLength(opPos); } void XPathProcessorImpl::PathExpr() { assert(m_expression != 0); const int opPos = m_expression->opCodeMapLength(); FilterExpr(); if(tokenIs(XalanUnicode::charSolidus) == true) { nextToken(); m_expression->insertOpCode( XPathExpression::eOP_LOCATIONPATH, opPos); RelativeLocationPath(); m_expression->appendOpCode(XPathExpression::eENDOP); m_expression->updateOpCodeLength( XPathExpression::eOP_LOCATIONPATH, opPos); } } void XPathProcessorImpl::FilterExpr() { assert(m_expression != 0); const int opPos = m_expression->opCodeMapLength(); // const bool isFunc = lookahead(XalanUnicode::charLeftParenthesis, 1); PrimaryExpr(); if(tokenIs(XalanUnicode::charLeftSquareBracket) == true) { m_expression->insertOpCode(XPathExpression::eOP_LOCATIONPATH, opPos); while(tokenIs(XalanUnicode::charLeftSquareBracket) == true) { Predicate(); } if(tokenIs(XalanUnicode::charSolidus) == true) { nextToken(); RelativeLocationPath(); } // Terminate for safety. m_expression->appendOpCode(XPathExpression::eENDOP); m_expression->updateOpCodeLength(XPathExpression::eOP_LOCATIONPATH, opPos); } } void XPathProcessorImpl::PrimaryExpr() { assert(m_expression != 0); const int opPos = m_expression->opCodeMapLength(); if(tokenIs(XalanUnicode::charApostrophe) == true || tokenIs(XalanUnicode::charQuoteMark) == true) { m_expression->appendOpCode(XPathExpression::eOP_LITERAL); Literal(); m_expression->updateOpCodeLength( XPathExpression::eOP_LITERAL, opPos); } else if(tokenIs(XalanUnicode::charDollarSign) == true) { nextToken(); // consume '$' if (m_allowVariableReferences == false) { error(XalanMessages::VariableReferenceNotAllowed); } else { m_expression->appendOpCode(XPathExpression::eOP_VARIABLE); QName(); m_expression->updateOpCodeLength( XPathExpression::eOP_VARIABLE, opPos); } } else if(tokenIs(XalanUnicode::charLeftParenthesis) == true) { nextToken(); m_expression->appendOpCode(XPathExpression::eOP_GROUP); Expr(); consumeExpected(XalanUnicode::charRightParenthesis); m_expression->updateOpCodeLength( XPathExpression::eOP_GROUP, opPos); } else if((tokenIs(XalanUnicode::charFullStop) == true && m_token.length() > 1 && XalanXMLChar::isDigit(m_token[1]) == true) || XalanXMLChar::isDigit(m_tokenChar) == true) { m_expression->appendOpCode(XPathExpression::eOP_NUMBERLIT); Number(); m_expression->updateOpCodeLength( XPathExpression::eOP_NUMBERLIT, opPos); } else if(lookahead(XalanUnicode::charLeftParenthesis, 1) == true || (lookahead(XalanUnicode::charColon, 1) == true && lookahead(XalanUnicode::charLeftParenthesis, 3) == true)) { FunctionCall(); } else { LocationPath(); } } void XPathProcessorImpl::Argument() { assert(m_expression != 0); if (m_requireLiterals == false || isCurrentLiteral() == true) { Expr(); } else { error(XalanMessages::LiteralArgumentIsRequired); } } int XPathProcessorImpl::FunctionCallArguments() { int argCount = 0; consumeExpected(XalanUnicode::charLeftParenthesis); while(tokenIs(XalanUnicode::charRightParenthesis) == false && m_token.empty() == false) { if(tokenIs(XalanUnicode::charComma) == true) { error(XalanMessages::NoPrecedingArgument); } Argument(); ++argCount; if(tokenIs(XalanUnicode::charRightParenthesis) == false) { consumeExpected(XalanUnicode::charComma); if(tokenIs(XalanUnicode::charRightParenthesis) == true) { error(XalanMessages::NoFollowingArgument); } } } consumeExpected(XalanUnicode::charRightParenthesis); return argCount; } void XPathProcessorImpl::FunctionCall() { assert(m_expression != 0); const int opPos = m_expression->opCodeMapLength(); if(lookahead(XalanUnicode::charColon, 1) == true) { m_expression->appendOpCode(XPathExpression::eOP_EXTFUNCTION); XPathExpression::OpCodeMapValueVectorType theArgs(2, 0, m_constructionContext->getMemoryManager()); // Replace the token in the queue with the actual namespace URI... replaceTokenWithNamespaceToken(); theArgs[0] = m_expression->getTokenPosition() - 1; nextToken(); consumeExpected(XalanUnicode::charColon); theArgs[1] = m_expression->getTokenPosition() - 1; m_expression->setOpCodeArgs(XPathExpression::eOP_EXTFUNCTION, opPos, theArgs); nextToken(); FunctionCallArguments(); } else { if (isValidFunction(m_token) == false) { error( XalanMessages::CouldNotFindFunction_1Param, m_token); } const XPathExpression::eOpCodes funcTok = getFunctionToken(m_token); switch(funcTok) { case XPathExpression::eNODETYPE_PI: case XPathExpression::eNODETYPE_COMMENT: case XPathExpression::eNODETYPE_TEXT: case XPathExpression::eNODETYPE_NODE: LocationPath(); // ************** Nasty return here!!! *********************** // return; break; case XPathExpression::eOP_FUNCTION_POSITION: FunctionPosition(); break; case XPathExpression::eOP_FUNCTION_LAST: FunctionLast(); break; case XPathExpression::eOP_FUNCTION_COUNT: FunctionCount(); break; case XPathExpression::eOP_FUNCTION_NOT: FunctionNot(); break; case XPathExpression::eOP_FUNCTION_TRUE: FunctionTrue(); break; case XPathExpression::eOP_FUNCTION_FALSE: FunctionFalse(); break; case XPathExpression::eOP_FUNCTION_BOOLEAN: FunctionBoolean(); break; case XPathExpression::eOP_FUNCTION_NAME_0: FunctionName(opPos); break; case XPathExpression::eOP_FUNCTION_LOCALNAME_0: FunctionLocalName(opPos); break; case XPathExpression::eOP_FUNCTION_NUMBER_0: FunctionNumber(opPos); break; case XPathExpression::eOP_FUNCTION_FLOOR: FunctionFloor(); break; case XPathExpression::eOP_FUNCTION_CEILING: FunctionCeiling(); break; case XPathExpression::eOP_FUNCTION_ROUND: FunctionRound(); break; case XPathExpression::eOP_FUNCTION_STRINGLENGTH_0: FunctionStringLength(opPos); break; case XPathExpression::eOP_FUNCTION_SUM: FunctionSum(); break; default: { // The position must be at least 1, since // we've looked at a token. assert(m_expression->getTokenPosition() > 0); if (m_allowKeyFunction == false && m_token == XPathFunctionTable::s_key) { error(XalanMessages::KeyFunctionNotAllowed); } int theFunctionID = XPath::getFunctionTable().nameToID(m_token); if ((equals(m_token, s_positionString) == true || equals(m_token, s_lastString) == true) && m_positionPredicateStack.empty() == false) { m_positionPredicateStack.back() = true; } XPathExpression::OpCodeMapValueVectorType theArgs(2, 0, m_constructionContext->getMemoryManager()); theArgs[0] = theFunctionID; theArgs[1] = 0; m_expression->appendOpCode( XPathExpression::eOP_FUNCTION, theArgs); nextToken(); // Get the arguments, and the argument count... const int argCount = FunctionCallArguments(); assert(m_expression->getOpCodeMapValue(opPos + 3) == 0); // update the arg count in the op map... m_expression->setOpCodeMapValue(opPos + 3, argCount); } } } // Terminate for safety. m_expression->appendOpCode(XPathExpression::eENDOP); m_expression->updateOpCodeLength(opPos); } void XPathProcessorImpl::FunctionPosition() { m_expression->appendOpCode(XPathExpression::eOP_FUNCTION_POSITION); // Consume the name... nextToken(); // Get the arguments, and the argument count... const int argCount = FunctionCallArguments(); if (argCount != 0) { XalanDOMString theResult(m_constructionContext->getMemoryManager()); error( XalanMessages::FunctionDoesNotAcceptAnyArguments_1Param, XPathFunctionTable::s_position); } else { if (m_positionPredicateStack.empty() == false) { m_positionPredicateStack.back() = true; } } } void XPathProcessorImpl::FunctionLast() { m_expression->appendOpCode(XPathExpression::eOP_FUNCTION_LAST); // Consume the name... nextToken(); // Get the arguments, and the argument count... const int argCount = FunctionCallArguments(); if (argCount != 0) { error( XalanMessages::FunctionDoesNotAcceptAnyArguments_1Param, XPathFunctionTable::s_last); } else { if (m_positionPredicateStack.empty() == false) { m_positionPredicateStack.back() = true; } } } void XPathProcessorImpl::FunctionCount() { m_expression->appendOpCode(XPathExpression::eOP_FUNCTION_COUNT); // Consume the name... nextToken(); // Get the arguments, and the argument count... const int argCount = FunctionCallArguments(); if (argCount != 1) { error( XalanMessages::FunctionAcceptsOneArgument_1Param, XPathFunctionTable::s_count); } } void XPathProcessorImpl::FunctionNot() { m_expression->appendOpCode(XPathExpression::eOP_FUNCTION_NOT); // Consume the name... nextToken(); // Get the arguments, and the argument count... const int argCount = FunctionCallArguments(); if (argCount != 1) { error( XalanMessages::FunctionAcceptsOneArgument_1Param, XPathFunctionTable::s_not); } } void XPathProcessorImpl::FunctionTrue() { m_expression->appendOpCode(XPathExpression::eOP_FUNCTION_TRUE); // Consume the name... nextToken(); // Get the arguments, and the argument count... const int argCount = FunctionCallArguments(); if (argCount != 0) { error( XalanMessages::FunctionDoesNotAcceptAnyArguments_1Param, XPathFunctionTable::s_true); } } void XPathProcessorImpl::FunctionFalse() { m_expression->appendOpCode(XPathExpression::eOP_FUNCTION_FALSE); // Consume the name... nextToken(); // Get the arguments, and the argument count... const int argCount = FunctionCallArguments(); if (argCount != 0) { error( XalanMessages::FunctionDoesNotAcceptAnyArguments_1Param, XPathFunctionTable::s_false); } } void XPathProcessorImpl::FunctionBoolean() { m_expression->appendOpCode(XPathExpression::eOP_FUNCTION_BOOLEAN); // Consume the name... nextToken(); // Get the arguments, and the argument count... const int argCount = FunctionCallArguments(); if (argCount != 1) { error( XalanMessages::FunctionAcceptsOneArgument_1Param, XPathFunctionTable::s_boolean); } } void XPathProcessorImpl::FunctionName(int opPos) { m_expression->appendOpCode(XPathExpression::eOP_FUNCTION_NAME_0); // Consume the name... nextToken(); // Get the arguments, and the argument count... const int argCount = FunctionCallArguments(); if (argCount != 0) { if (argCount == 1) { m_expression->replaceOpCode( opPos, XPathExpression::eOP_FUNCTION_NAME_0, XPathExpression::eOP_FUNCTION_NAME_1); } else { error( XalanMessages::FunctionTakesZeroOrOneArg_1Param, XPathFunctionTable::s_name); } } } void XPathProcessorImpl::FunctionLocalName(int opPos) { m_expression->appendOpCode(XPathExpression::eOP_FUNCTION_LOCALNAME_0); // Consume the name... nextToken(); // Get the arguments, and the argument count... const int argCount = FunctionCallArguments(); if (argCount != 0) { if (argCount == 1) { m_expression->replaceOpCode( opPos, XPathExpression::eOP_FUNCTION_LOCALNAME_0, XPathExpression::eOP_FUNCTION_LOCALNAME_1); } else { error( XalanMessages::FunctionTakesZeroOrOneArg_1Param, XPathFunctionTable::s_localName); } } } void XPathProcessorImpl::FunctionNumber(int opPos) { m_expression->appendOpCode(XPathExpression::eOP_FUNCTION_NUMBER_0); // Consume the name... nextToken(); // Get the arguments, and the argument count... const int argCount = FunctionCallArguments(); if (argCount != 0) { if (argCount == 1) { m_expression->replaceOpCode( opPos, XPathExpression::eOP_FUNCTION_NUMBER_0, XPathExpression::eOP_FUNCTION_NUMBER_1); } else { error( XalanMessages::FunctionTakesZeroOrOneArg_1Param, XPathFunctionTable::s_number); } } } void XPathProcessorImpl::FunctionFloor() { m_expression->appendOpCode(XPathExpression::eOP_FUNCTION_FLOOR); // Consume the name... nextToken(); // Get the arguments, and the argument count... const int argCount = FunctionCallArguments(); if (argCount != 1) { error( XalanMessages::FunctionAcceptsOneArgument_1Param, XPathFunctionTable::s_floor); } } void XPathProcessorImpl::FunctionCeiling() { m_expression->appendOpCode(XPathExpression::eOP_FUNCTION_CEILING); // Consume the name... nextToken(); // Get the arguments, and the argument count... const int argCount = FunctionCallArguments(); if (argCount != 1) { error( XalanMessages::FunctionAcceptsOneArgument_1Param, XPathFunctionTable::s_ceiling); } } void XPathProcessorImpl::FunctionRound() { m_expression->appendOpCode(XPathExpression::eOP_FUNCTION_ROUND); // Consume the name... nextToken(); // Get the arguments, and the argument count... const int argCount = FunctionCallArguments(); if (argCount != 1) { error( XalanMessages::FunctionAcceptsOneArgument_1Param, XPathFunctionTable::s_round); } } void XPathProcessorImpl::FunctionString(int opPos) { m_expression->appendOpCode(XPathExpression::eOP_FUNCTION_STRING_0); // Consume the name... nextToken(); // Get the arguments, and the argument count... const int argCount = FunctionCallArguments(); if (argCount != 0) { if (argCount == 1) { m_expression->replaceOpCode( opPos, XPathExpression::eOP_FUNCTION_STRING_0, XPathExpression::eOP_FUNCTION_STRING_1); } else { error( XalanMessages::FunctionTakesZeroOrOneArg_1Param, XPathFunctionTable::s_string); } } } void XPathProcessorImpl::FunctionSum() { m_expression->appendOpCode(XPathExpression::eOP_FUNCTION_SUM); // Consume the name... nextToken(); // Get the arguments, and the argument count... const int argCount = FunctionCallArguments(); if (argCount != 1) { error( XalanMessages::FunctionAcceptsOneArgument_1Param, XPathFunctionTable::s_sum); } } void XPathProcessorImpl::FunctionStringLength(int opPos) { m_expression->appendOpCode(XPathExpression::eOP_FUNCTION_STRINGLENGTH_0); // Consume the name... nextToken(); // Get the arguments, and the argument count... const int argCount = FunctionCallArguments(); if (argCount != 0) { if (argCount == 1) { m_expression->replaceOpCode( opPos, XPathExpression::eOP_FUNCTION_STRINGLENGTH_0, XPathExpression::eOP_FUNCTION_STRINGLENGTH_1); } else { error( XalanMessages::FunctionTakesZeroOrOneArg_1Param, XPathFunctionTable::s_stringLength); } } } void XPathProcessorImpl::FunctionNamespaceURI(int opPos) { m_expression->appendOpCode(XPathExpression::eOP_FUNCTION_NAMESPACEURI_0); // Consume the name... nextToken(); // Get the arguments, and the argument count... const int argCount = FunctionCallArguments(); if (argCount != 0) { if (argCount == 1) { m_expression->replaceOpCode( opPos, XPathExpression::eOP_FUNCTION_NAMESPACEURI_0, XPathExpression::eOP_FUNCTION_NAMESPACEURI_1); } else { error( XalanMessages::FunctionTakesZeroOrOneArg_1Param, XPathFunctionTable::s_namespaceUri); } } } void XPathProcessorImpl::LocationPath() { const int opPos = m_expression->opCodeMapLength(); m_expression->appendOpCode(XPathExpression::eOP_LOCATIONPATH); if(tokenIs(XalanUnicode::charSolidus) == true) { nextToken(); const int newOpPos = m_expression->opCodeMapLength(); // Tell how long the step is without the predicate const XPathExpression::OpCodeMapValueVectorType theArgs(1, 4, m_constructionContext->getMemoryManager()); m_expression->appendOpCode( XPathExpression::eFROM_ROOT, theArgs); m_expression->appendOpCode(XPathExpression::eNODETYPE_ROOT); // Tell how long the entire step is. m_expression->updateOpCodeLength(newOpPos); } if(m_token.empty() == false) { RelativeLocationPath(); } // Terminate for safety. m_expression->appendOpCode(XPathExpression::eENDOP); m_expression->updateOpCodeLength(XPathExpression::eOP_LOCATIONPATH, opPos); } void XPathProcessorImpl::RelativeLocationPath() { Step(); while(tokenIs(XalanUnicode::charSolidus) == true) { nextToken(); Step(); } } void XPathProcessorImpl::Step() { const int opPos = m_expression->opCodeMapLength(); if(m_token.empty() == true) { error(XalanMessages::ExpectedNodeTest); } else if(tokenIs(s_dotString) == true) { nextToken(); if(tokenIs(XalanUnicode::charLeftSquareBracket) == true) { error(XalanMessages::IllegalSyntaxOfPredicatesSelf); } const XPathExpression::OpCodeMapValueVectorType theArgs(1, 4, m_constructionContext->getMemoryManager()); m_expression->appendOpCode(XPathExpression::eFROM_SELF, theArgs); m_expression->appendOpCode(XPathExpression::eNODETYPE_NODE); // Tell how long the entire step is. m_expression->updateOpCodeLength(opPos); } else if(tokenIs(s_dotDotString) == true) { nextToken(); if(tokenIs(XalanUnicode::charLeftSquareBracket) == true) { error(XalanMessages::IllegalSyntaxOfPredicatesParent); } // Tell how long the step is without the predicate const XPathExpression::OpCodeMapValueVectorType theArgs(1, 4,m_constructionContext->getMemoryManager()); m_expression->appendOpCode(XPathExpression::eFROM_PARENT, theArgs); m_expression->appendOpCode(XPathExpression::eNODETYPE_NODE); // Tell how long the entire step is. m_expression->updateOpCodeLength(opPos); } else if (tokenIs(XalanUnicode::charAsterisk) || tokenIs(XalanUnicode::charCommercialAt) || tokenIs(XalanUnicode::charSolidus) || (tokenIs(XalanUnicode::charLowLine) || XalanXMLChar::isLetter(m_token[0]))) { Basis(); while(tokenIs(XalanUnicode::charLeftSquareBracket) == true) { Predicate(); } // Tell how long the entire step is. m_expression->updateOpCodeLength(opPos); } else if (tokenIs(XalanUnicode::charRightParenthesis) == false) { error( XalanMessages::UnexpectedTokenFound_1Param, m_token); } } void XPathProcessorImpl::Basis() { assert(m_xpath != 0); assert(m_expression != 0); const int opPos = m_expression->opCodeMapLength(); XPathExpression::eOpCodes axisType = XPathExpression::eENDOP; // The next blocks guarantee that a FROM_XXX will be added. if(lookahead(s_axisString, 1) == true) { axisType = AxisName(); nextToken(); nextToken(); } else if(tokenIs(XalanUnicode::charCommercialAt) == true) { axisType = XPathExpression::eFROM_ATTRIBUTES; m_expression->appendOpCode(XPathExpression::eFROM_ATTRIBUTES); nextToken(); } else if(tokenIs(XalanUnicode::charSolidus) == true) { // Check the current token in the expression. It's // actually the next token in this context. // const XalanDOMString& theNextToken = getTokenRelative(0); if (isAxis(theNextToken) == false && isNodeTest(theNextToken) == false) { nextToken(); error(XalanMessages::ExpectedAxis); } else { // Tell how long the step is without the predicate const XPathExpression::OpCodeMapValueVectorType theArgs(1, 4, m_constructionContext->getMemoryManager()); m_expression->appendOpCode(XPathExpression::eFROM_DESCENDANTS_OR_SELF, theArgs); m_expression->appendOpCode(XPathExpression::eNODETYPE_NODE); // Tell how long the step is without the predicate m_expression->updateOpCodeLengthAfterNodeTest(opPos); return; // make a quick exit... } } else { axisType = XPathExpression::eFROM_CHILDREN; m_expression->appendOpCode(XPathExpression::eFROM_CHILDREN); } NodeTest(); // Tell how long the step is without the predicate m_expression->updateOpCodeLengthAfterNodeTest(opPos); } XPathExpression::eOpCodes XPathProcessorImpl::AxisName() { assert(m_xpath != 0); assert(m_expression != 0); const XPathExpression::eOpCodes theOpCode = getAxisToken(m_token); if (theOpCode == XPathExpression::eENDOP) { error( XalanMessages::IllegalAxisName_1Param, m_token); } else { m_expression->appendOpCode(theOpCode); } return theOpCode; } int XPathProcessorImpl::NodeTest() { assert(m_xpath != 0); assert(m_expression != 0); int nodeTestPos = -1; if (lookahead(XalanUnicode::charLeftParenthesis, 1) == true) { const XPathExpression::eOpCodes theOpCode = getNodeTypeToken(m_token); if (theOpCode == XPathExpression::eENDOP) { error( XalanMessages::UnknownNodeType_1Param, m_token); } else { nextToken(); nodeTestPos = m_expression->appendOpCode(theOpCode); consumeExpected(XalanUnicode::charLeftParenthesis); if(XPathExpression::eNODETYPE_PI == theOpCode) { if(tokenIs(XalanUnicode::charRightParenthesis) == false) { Literal(); } } consumeExpected(XalanUnicode::charRightParenthesis); } } else { // Assume name of attribute or element. m_expression->appendOpCode(XPathExpression::eNODENAME); if(lookahead(XalanUnicode::charColon, 1) == true) { if(tokenIs(XalanUnicode::charAsterisk) == true) { m_expression->appendOpCode(XPathExpression::eELEMWILDCARD); } else { // Replace the token in the queue with the actual namespace... replaceTokenWithNamespaceToken(); m_expression->pushCurrentTokenOnOpCodeMap(); } nextToken(); consumeExpected(XalanUnicode::charColon); } else { m_expression->appendOpCode(XPathExpression::eEMPTY); } if (tokenIs(XalanUnicode::charAsterisk) == true) { m_expression->appendOpCode(XPathExpression::eELEMWILDCARD); } else if (isNodeTest(m_token) == false) { error(XalanMessages::ExpectedNodeTest); } else { m_expression->pushCurrentTokenOnOpCodeMap(); } nextToken(); } return nodeTestPos; } void XPathProcessorImpl::Predicate() { if(tokenIs(XalanUnicode::charLeftSquareBracket) == true) { nextToken(); PredicateExpr(); consumeExpected(XalanUnicode::charRightSquareBracket); } } void XPathProcessorImpl::PredicateExpr() { assert(m_xpath != 0); assert(m_expression != 0); const int opPos = m_expression->opCodeMapLength(); m_expression->appendOpCode(XPathExpression::eOP_PREDICATE); m_positionPredicateStack.push_back(false); Expr(); // Terminate for safety. m_expression->appendOpCode(XPathExpression::eENDOP); m_expression->updateOpCodeLength(XPathExpression::eOP_PREDICATE, opPos); assert(m_positionPredicateStack.empty() == false); if (m_positionPredicateStack.back() == true) { m_expression->replaceOpCode( opPos, XPathExpression::eOP_PREDICATE, XPathExpression::eOP_PREDICATE_WITH_POSITION); } m_positionPredicateStack.pop_back(); } void XPathProcessorImpl::QName() { assert(m_xpath != 0); assert(m_expression != 0); // If there is no prefix, we have to fake things out... if (lookahead(XalanUnicode::charColon, 1) == false) { m_expression->insertToken(s_emptyString); m_expression->pushCurrentTokenOnOpCodeMap(); nextToken(); } else { // Replace the token in the queue with the actual namespace... replaceTokenWithNamespaceToken(); m_expression->pushCurrentTokenOnOpCodeMap(); nextToken(); consumeExpected(XalanUnicode::charColon); } m_expression->pushCurrentTokenOnOpCodeMap(); nextToken(); } void XPathProcessorImpl::NCName() { assert(m_xpath != 0); assert(m_expression != 0); m_expression->pushCurrentTokenOnOpCodeMap(); nextToken(); } void XPathProcessorImpl::Literal() { assert(m_xpath != 0); assert(m_expression != 0); if(isCurrentLiteral() == true) { m_expression->pushArgumentOnOpCodeMap( m_constructionContext->getPooledString(m_token.c_str() + 1, m_token.length() - 2)); nextToken(); } else { error(XalanMessages::LiteralArgumentIsRequired); } } void XPathProcessorImpl::Number() { assert(m_xpath != 0); assert(m_expression != 0); if(m_token.empty() == false) { const double num = DoubleSupport::toDouble(m_token, m_constructionContext->getMemoryManager()); const XPathConstructionContext::GetCachedString theGuard(*m_constructionContext); XalanDOMString& theStringValue = theGuard.get(); NumberToDOMString(num, theStringValue); m_expression->pushNumberLiteralOnOpCodeMap(num); m_expression->pushArgumentOnOpCodeMap(num, m_constructionContext->getPooledString(theStringValue)); nextToken(); } } void XPathProcessorImpl::Pattern() { while(true) { LocationPathPattern(); if(tokenIs(XalanUnicode::charVerticalLine) == true) { nextToken(); } else { break; } } } void XPathProcessorImpl::LocationPathPattern() { assert(m_xpath != 0); assert(m_expression != 0); const int opPos = m_expression->opCodeMapLength(); m_expression->appendOpCode(XPathExpression::eOP_LOCATIONPATHPATTERN); if(lookahead(XalanUnicode::charLeftParenthesis, 1) == true && (tokenIs(s_functionIDString) == true || tokenIs(s_functionKeyString) == true)) { IdKeyPattern(); if(tokenIs(XalanUnicode::charSolidus) == true && lookahead(XalanUnicode::charSolidus, 1) == true) { const int newOpPos = m_expression->opCodeMapLength(); // Tell how long the step is without the predicate const XPathExpression::OpCodeMapValueVectorType theArgs(1, 4, m_constructionContext->getMemoryManager()); m_expression->appendOpCode(XPathExpression::eMATCH_ANY_ANCESTOR_WITH_FUNCTION_CALL, theArgs); m_expression->updateOpCodeLength(newOpPos); nextToken(); } } else if(tokenIs(XalanUnicode::charSolidus) == true) { const int newOpPos = m_expression->opCodeMapLength(); // Tell how long the step is without the predicate const XPathExpression::OpCodeMapValueVectorType theArgs(1, 4, m_constructionContext->getMemoryManager()); if(lookahead(XalanUnicode::charSolidus, 1) == true) { m_expression->appendOpCode( XPathExpression::eMATCH_ANY_ANCESTOR_WITH_PREDICATE, theArgs); m_expression->appendOpCode(XPathExpression::eNODETYPE_NODE); nextToken(); } else { m_expression->appendOpCode(XPathExpression::eFROM_ROOT, theArgs); m_expression->appendOpCode(XPathExpression::eNODETYPE_ROOT); } m_expression->updateOpCodeLength(newOpPos); nextToken(); } if(m_token.empty() == false) { if (!tokenIs(XalanUnicode::charVerticalLine) == true) { RelativePathPattern(); } else if (lookahead(XalanUnicode::charVerticalLine, -1) == true) { error( XalanMessages::UnexpectedTokenFound_1Param, m_token); } } // Terminate for safety. m_expression->appendOpCode(XPathExpression::eENDOP); m_expression->updateOpCodeLength(XPathExpression::eOP_LOCATIONPATHPATTERN, opPos); } void XPathProcessorImpl::IdKeyPattern() { m_requireLiterals = true; FunctionCall(); m_requireLiterals = false; } void XPathProcessorImpl::RelativePathPattern() { StepPattern(); while(tokenIs(XalanUnicode::charSolidus) == true) { nextToken(); StepPattern(); } } void XPathProcessorImpl::StepPattern() { AbbreviatedNodeTestStep(); } void XPathProcessorImpl::AbbreviatedNodeTestStep() { assert(m_xpath != 0); assert(m_expression != 0); const int opPos = m_expression->opCodeMapLength(); int matchTypePos = -1; XPathExpression::eOpCodes axisType = XPathExpression::eENDOP; // The next blocks guarantee that a MATCH_XXX will be added. if(tokenIs(XalanUnicode::charCommercialAt) == true) { axisType = XPathExpression::eMATCH_ATTRIBUTE; m_expression->appendOpCode(axisType); nextToken(); } else if(lookahead(s_axisString, 1) == true) { if(tokenIs(s_attributeString) == true) { axisType = XPathExpression::eMATCH_ATTRIBUTE; m_expression->appendOpCode(axisType); } else if(tokenIs(s_childString) == true) { matchTypePos = m_expression->opCodeMapLength(); axisType = XPathExpression::eMATCH_IMMEDIATE_ANCESTOR; m_expression->appendOpCode(axisType); } else { error(XalanMessages::OnlyChildAndAttributeAxesAreAllowed); } nextToken(); nextToken(); } else if(tokenIs(XalanUnicode::charSolidus) == true) { if(lookahead(s_axisString, 2) == false && lookahead(XalanUnicode::charCommercialAt, 1) == false) { matchTypePos = m_expression->opCodeMapLength(); axisType = XPathExpression::eMATCH_IMMEDIATE_ANCESTOR; m_expression->appendOpCode(axisType); } else { nextToken(); // This matches an abbreviated step "@foo" if (tokenIs(XalanUnicode::charCommercialAt) == true) { axisType = XPathExpression::eMATCH_ATTRIBUTE; m_expression->appendOpCode(axisType); } else { // This matches the attribute or child axis: attribute::name or child::name. if(tokenIs(s_attributeString) == true) { axisType = XPathExpression::eMATCH_ATTRIBUTE; m_expression->appendOpCode(axisType); } else if(tokenIs(s_childString) == true) { matchTypePos = m_expression->opCodeMapLength(); axisType = XPathExpression::eMATCH_IMMEDIATE_ANCESTOR; m_expression->appendOpCode(axisType); } else { error(XalanMessages::OnlyChildAndAttributeAxesAreAllowed); } nextToken(); } } nextToken(); } else { if(tokenIs(XalanUnicode::charSolidus) == true) { nextToken(); } matchTypePos = m_expression->opCodeMapLength(); axisType = XPathExpression::eMATCH_IMMEDIATE_ANCESTOR; m_expression->appendOpCode(axisType); } // Make room for telling how long the step is without the predicate. // This will be replaced by the right value. m_expression->appendOpCode(XPathExpression::eENDOP); NodeTest(); m_expression->updateOpCodeLengthAfterNodeTest(opPos); while(tokenIs(XalanUnicode::charLeftSquareBracket) == true) { Predicate(); } if(matchTypePos > -1 && tokenIs(XalanUnicode::charSolidus) == true && lookahead(XalanUnicode::charSolidus, 1) == true) { assert(m_expression->opCodeMapLength() > matchTypePos); m_expression->setOpCodeMapValue(matchTypePos, XPathExpression::eMATCH_ANY_ANCESTOR); } m_expression->updateOpCodeLength(opPos); } bool XPathProcessorImpl::isValidFunction(const XalanDOMString& key) { bool fResult = true; if(XPath::isInstalledFunction(key) == false) { if (searchTable(s_functionTable, s_functionTableSize, key).m_opCode == XPathExpression::eENDOP) { fResult = false; } } return fResult; } bool XPathProcessorImpl::isCurrentLiteral() const { const t_size_type theLength = m_token.length(); if (theLength <= 1) { return false; } else { const t_size_type last = theLength - 1; const XalanDOMChar c0 = m_tokenChar; const XalanDOMChar cX = m_token[last]; if((c0 == XalanUnicode::charQuoteMark && cX == XalanUnicode::charQuoteMark) || (c0 == XalanUnicode::charApostrophe && cX == XalanUnicode::charApostrophe)) { return true; } else { return false; } } } bool XPathProcessorImpl::isAxis(const XalanDOMString& theToken) { const XalanDOMString::size_type theLength = theToken.length(); if (theLength == 0) { return false; } else if (theLength == 1 && theToken[0] == XalanUnicode::charCommercialAt) { return true; } else if (equals(theToken, s_dotString) == true || equals(theToken, s_dotDotString) == true) { return true; } else { const XPathExpression::eOpCodes theOpCode = getAxisToken(theToken); if (theOpCode != XPathExpression::eENDOP) { return true; } else { return false; } } } bool XPathProcessorImpl::isNodeTest(const XalanDOMString& theToken) { const XalanDOMString::size_type theLength = theToken.length(); if (theLength == 0) { return false; } else if (theLength == 1 && theToken[0] == XalanUnicode::charAsterisk) { return true; } else if (theToken[0] == XalanUnicode::charLowLine || XalanXMLChar::isLetter(theToken[0]) == true) { return true; } else { return false; } } const XPathProcessorImpl::TableEntry& XPathProcessorImpl::searchTable( const TableEntry theTable[], size_type theTableSize, const XalanDOMString& theString) { const TableEntry* theFirst = theTable; const TableEntry* theLast = &theTable[theTableSize - 1]; while(theFirst <= theLast) { const TableEntry* theCurrent = theFirst + (theLast - theFirst) / 2; assert(theCurrent->m_string[0] != 0); const int theResult = compare(theString.c_str(), theCurrent->m_string); if (theResult < 0) { theLast = theCurrent - 1; } else if (theResult > 0) { theFirst = theCurrent + 1; } else { return *theCurrent; } } return s_dummyEntry; } const XalanDOMString XPathProcessorImpl::s_emptyString(XalanMemMgrs::getDummyMemMgr()); const XalanDOMChar XPathProcessorImpl::s_functionIDString[] = { XalanUnicode::charLetter_i, XalanUnicode::charLetter_d, 0 }; // This shouldn't really be here, since it's not part of the XPath standard, // but rather a part ofthe XSLT standard. const XalanDOMChar XPathProcessorImpl::s_functionKeyString[] = { XalanUnicode::charLetter_k, XalanUnicode::charLetter_e, XalanUnicode::charLetter_y, 0 }; const XalanDOMChar XPathProcessorImpl::s_orString[] = { XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, 0 }; const XalanDOMChar XPathProcessorImpl::s_andString[] = { XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_d, 0 }; const XalanDOMChar XPathProcessorImpl::s_divString[] = { XalanUnicode::charLetter_d, XalanUnicode::charLetter_i, XalanUnicode::charLetter_v, 0 }; const XalanDOMChar XPathProcessorImpl::s_modString[] = { XalanUnicode::charLetter_m, XalanUnicode::charLetter_o, XalanUnicode::charLetter_d, 0 }; const XalanDOMChar XPathProcessorImpl::s_dotString[] = { XalanUnicode::charFullStop, 0 }; const XalanDOMChar XPathProcessorImpl::s_dotDotString[] = { XalanUnicode::charFullStop, XalanUnicode::charFullStop, 0 }; const XalanDOMChar XPathProcessorImpl::s_axisString[] = { XalanUnicode::charColon, XalanUnicode::charColon, 0 }; const XalanDOMChar XPathProcessorImpl::s_attributeString[] = { XalanUnicode::charLetter_a, XalanUnicode::charLetter_t, XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, XalanUnicode::charLetter_b, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar XPathProcessorImpl::s_childString[] = { XalanUnicode::charLetter_c, XalanUnicode::charLetter_h, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, XalanUnicode::charLetter_d, 0 }; const XalanDOMChar XPathProcessorImpl::s_lastString[] = { XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, 0 }; const XalanDOMChar XPathProcessorImpl::s_positionString[] = { XalanUnicode::charLetter_p, XalanUnicode::charLetter_o, XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; const XalanDOMChar XPathProcessorImpl::s_asteriskString[] = { XalanUnicode::charAsterisk, 0 }; const XalanDOMChar XPathProcessorImpl::s_commentString[] = { XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_m, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, 0 }; const XalanDOMChar XPathProcessorImpl::s_piString[] = { XalanUnicode::charLetter_p, XalanUnicode::charLetter_r, XalanUnicode::charLetter_o, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_u, XalanUnicode::charLetter_c, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; const XalanDOMChar XPathProcessorImpl::s_nodeString[] = { XalanUnicode::charLetter_n, XalanUnicode::charLetter_o, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar XPathProcessorImpl::s_textString[] = { XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_x, XalanUnicode::charLetter_t, 0 }; const XalanDOMChar XPathProcessorImpl::s_ancestorString[] = { XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, 0 }; const XalanDOMChar XPathProcessorImpl::s_ancestorOrSelfString[] = { XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_s, XalanUnicode::charLetter_e, XalanUnicode::charLetter_l, XalanUnicode::charLetter_f, 0 }; const XalanDOMChar XPathProcessorImpl::s_descendantString[] = { XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_d, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, 0 }; const XalanDOMChar XPathProcessorImpl::s_descendantOrSelfString[] = { XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_d, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_s, XalanUnicode::charLetter_e, XalanUnicode::charLetter_l, XalanUnicode::charLetter_f, 0 }; const XalanDOMChar XPathProcessorImpl::s_followingString[] = { XalanUnicode::charLetter_f, XalanUnicode::charLetter_o, XalanUnicode::charLetter_l, XalanUnicode::charLetter_l, XalanUnicode::charLetter_o, XalanUnicode::charLetter_w, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, 0 }; const XalanDOMChar XPathProcessorImpl::s_followingSiblingString[] = { XalanUnicode::charLetter_f, XalanUnicode::charLetter_o, XalanUnicode::charLetter_l, XalanUnicode::charLetter_l, XalanUnicode::charLetter_o, XalanUnicode::charLetter_w, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, XalanUnicode::charLetter_b, XalanUnicode::charLetter_l, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, 0 }; const XalanDOMChar XPathProcessorImpl::s_parentString[] = { XalanUnicode::charLetter_p, XalanUnicode::charLetter_a, XalanUnicode::charLetter_r, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, 0 }; const XalanDOMChar XPathProcessorImpl::s_precedingString[] = { XalanUnicode::charLetter_p, XalanUnicode::charLetter_r, XalanUnicode::charLetter_e, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_d, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, 0 }; const XalanDOMChar XPathProcessorImpl::s_precedingSiblingString[] = { XalanUnicode::charLetter_p, XalanUnicode::charLetter_r, XalanUnicode::charLetter_e, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_d, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, XalanUnicode::charLetter_b, XalanUnicode::charLetter_l, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, 0 }; const XalanDOMChar XPathProcessorImpl::s_selfString[] = { XalanUnicode::charLetter_s, XalanUnicode::charLetter_e, XalanUnicode::charLetter_l, XalanUnicode::charLetter_f, 0 }; const XalanDOMChar XPathProcessorImpl::s_namespaceString[] = { XalanUnicode::charLetter_n, XalanUnicode::charLetter_a, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charLetter_p, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, 0 }; const XPathProcessorImpl::TableEntry XPathProcessorImpl::s_functionTable[] = { { XPathFunctionTable::s_not, XPathExpression::eOP_FUNCTION_NOT }, { XPathFunctionTable::s_sum, XPathExpression::eOP_FUNCTION_SUM }, { XPathProcessorImpl::s_lastString, XPathExpression::eOP_FUNCTION_LAST }, { XPathFunctionTable::s_name, XPathExpression::eOP_FUNCTION_NAME_0 }, { XPathProcessorImpl::s_nodeString, XPathExpression::eNODETYPE_NODE }, { XPathProcessorImpl::s_textString, XPathExpression::eNODETYPE_TEXT }, { XPathFunctionTable::s_true, XPathExpression::eOP_FUNCTION_TRUE }, { XPathFunctionTable::s_count, XPathExpression::eOP_FUNCTION_COUNT }, { XPathFunctionTable::s_false, XPathExpression::eOP_FUNCTION_FALSE }, { XPathFunctionTable::s_floor, XPathExpression::eOP_FUNCTION_FLOOR }, { XPathFunctionTable::s_round, XPathExpression::eOP_FUNCTION_ROUND }, { XPathFunctionTable::s_number, XPathExpression::eOP_FUNCTION_NUMBER_0 }, { XPathFunctionTable::s_boolean, XPathExpression::eOP_FUNCTION_BOOLEAN }, { XPathFunctionTable::s_ceiling, XPathExpression::eOP_FUNCTION_CEILING }, { XPathProcessorImpl::s_commentString, XPathExpression::eNODETYPE_COMMENT }, { XPathProcessorImpl::s_positionString, XPathExpression::eOP_FUNCTION_POSITION }, { XPathFunctionTable::s_localName, XPathExpression::eOP_FUNCTION_LOCALNAME_0 }, { XPathFunctionTable::s_stringLength, XPathExpression::eOP_FUNCTION_STRINGLENGTH_0 }, { XPathProcessorImpl::s_piString, XPathExpression::eNODETYPE_PI }, }; const XPathProcessorImpl::size_type XPathProcessorImpl::s_functionTableSize = sizeof(s_functionTable) / sizeof(s_functionTable[0]); const XPathProcessorImpl::TableEntry XPathProcessorImpl::s_nodeTypeTable[] = { { XPathProcessorImpl::s_asteriskString, XPathExpression::eNODETYPE_ANYELEMENT }, { XPathProcessorImpl::s_nodeString, XPathExpression::eNODETYPE_NODE }, { XPathProcessorImpl::s_textString, XPathExpression::eNODETYPE_TEXT }, { XPathProcessorImpl::s_commentString, XPathExpression::eNODETYPE_COMMENT }, { XPathProcessorImpl::s_piString, XPathExpression::eNODETYPE_PI }, }; const XPathProcessorImpl::size_type XPathProcessorImpl::s_nodeTypeTableSize = sizeof(s_nodeTypeTable) / sizeof(s_nodeTypeTable[0]); const XPathProcessorImpl::TableEntry XPathProcessorImpl::s_axisTable[] = { { XPathProcessorImpl::s_selfString, XPathExpression::eFROM_SELF }, { XPathProcessorImpl::s_childString, XPathExpression::eFROM_CHILDREN }, { XPathProcessorImpl::s_parentString, XPathExpression::eFROM_PARENT }, { XPathProcessorImpl::s_ancestorString, XPathExpression::eFROM_ANCESTORS }, { XPathProcessorImpl::s_attributeString, XPathExpression::eFROM_ATTRIBUTES }, { XPathProcessorImpl::s_followingString, XPathExpression::eFROM_FOLLOWING }, { XPathProcessorImpl::s_namespaceString, XPathExpression::eFROM_NAMESPACE }, { XPathProcessorImpl::s_precedingString, XPathExpression::eFROM_PRECEDING }, { XPathProcessorImpl::s_descendantString, XPathExpression::eFROM_DESCENDANTS }, { XPathProcessorImpl::s_ancestorOrSelfString, XPathExpression::eFROM_ANCESTORS_OR_SELF }, { XPathProcessorImpl::s_followingSiblingString, XPathExpression::eFROM_FOLLOWING_SIBLINGS }, { XPathProcessorImpl::s_precedingSiblingString, XPathExpression::eFROM_PRECEDING_SIBLINGS }, { XPathProcessorImpl::s_descendantOrSelfString, XPathExpression::eFROM_DESCENDANTS_OR_SELF }, }; const XPathProcessorImpl::size_type XPathProcessorImpl::s_axisTableSize = sizeof(s_axisTable) / sizeof(s_axisTable[0]); const XPathProcessorImpl::TableEntry XPathProcessorImpl::s_dummyEntry = { 0, XPathExpression::eENDOP }; XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XBoolean.cpp0000664000175000000640000000621511731656102017475 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XBoolean.hpp" #include #include "XObjectTypeCallback.hpp" XALAN_CPP_NAMESPACE_BEGIN XBoolean::XBoolean( bool val, MemoryManager& theMemoryManager) : XObject(eTypeBoolean, theMemoryManager), m_value(val) { } XBoolean::XBoolean( const XBoolean& source, MemoryManager& theMemoryManager) : XObject(source, theMemoryManager), m_value(source.m_value) { } XBoolean::~XBoolean() { } const XalanDOMString& XBoolean::getTypeString() const { return s_booleanString; } double XBoolean::num(XPathExecutionContext& /* executionContext */) const { return number(m_value); } bool XBoolean::boolean(XPathExecutionContext& /* executionContext */) const { return m_value; } const XalanDOMString& XBoolean::str(XPathExecutionContext& /* executionContext */) const { return string(m_value); } const XalanDOMString& XBoolean::str() const { return string(m_value); } void XBoolean::str( XPathExecutionContext& /* executionContext */, FormatterListener& formatterListener, MemberFunctionPtr function) const { string(m_value, formatterListener, function); } void XBoolean::str( FormatterListener& formatterListener, MemberFunctionPtr function) const { string(m_value, formatterListener, function); } void XBoolean::str( XPathExecutionContext& /* executionContext */, XalanDOMString& theBuffer) const { string(m_value, theBuffer); } void XBoolean::str(XalanDOMString& theBuffer) const { string(m_value, theBuffer); } double XBoolean::stringLength(XPathExecutionContext& /* executionContext */) const { assert( s_trueString.length() == 4 && s_falseString.length() == 5); return m_value == true ? 4 : 5; } void XBoolean::ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject) { theCallbackObject.Boolean( *this, boolean(theCallbackObject.getExecutionContext())); } void XBoolean::ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject) const { theCallbackObject.Boolean( *this, boolean(theCallbackObject.getExecutionContext())); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/FunctionSubstringAfter.cpp0000664000175000000640000001002311731656102022426 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionSubstringAfter.hpp" #include #include "XObjectFactory.hpp" XALAN_CPP_NAMESPACE_BEGIN FunctionSubstringAfter::FunctionSubstringAfter() { } FunctionSubstringAfter::~FunctionSubstringAfter() { } static const XalanDOMString theEmptyString(XalanMemMgrs::getDummyMemMgr()); inline XObjectPtr createEmptyString(XPathExecutionContext& executionContext) { return executionContext.getXObjectFactory().createStringReference(theEmptyString); } XObjectPtr FunctionSubstringAfter::execute( XPathExecutionContext& executionContext, XalanNode* /* context */, const XObjectPtr arg1, const XObjectPtr arg2, const Locator* const /* locator */) const { assert(arg1.null() == false && arg2.null() == false); const XalanDOMString& theFirstString = arg1->str(executionContext); const XalanDOMString::size_type theFirstStringLength = theFirstString.length(); if (theFirstStringLength == 0) { return createEmptyString(executionContext); } else { const XalanDOMString& theSecondString = arg2->str(executionContext); const XalanDOMString::size_type theSecondStringLength = theSecondString.length(); if (theSecondStringLength == 0) { return arg1; } else { const XalanDOMString::size_type theIndex = indexOf(theFirstString, theSecondString); if (theIndex == theFirstStringLength) { return createEmptyString(executionContext); } else { // Find the first character, which will be the offset of the index of the // beginning of the second string, plus the length of the second string. const XalanDOMChar* const theFirstCharacter = theFirstString.c_str() + theIndex + theSecondStringLength; // The remaining length is just the opposite -- the length of the string, // minus the index, minus the length of the second string. const XalanDOMString::size_type theSubstringLength = theFirstStringLength - theIndex - theSecondStringLength; GetCachedString theResult(executionContext); XalanDOMString& theString = theResult.get(); theString.assign( theFirstCharacter, theSubstringLength); return executionContext.getXObjectFactory().createString(theResult); } } } } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionSubstringAfter* #endif FunctionSubstringAfter::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionSubstringAfter::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionTakesTwoArguments_1Param, "substring-after()"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XNumberBase.cpp0000664000175000000640000000361611731656102020143 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XNumberBase.hpp" #include #include "XObjectTypeCallback.hpp" XALAN_CPP_NAMESPACE_BEGIN XNumberBase::XNumberBase(MemoryManager& theMemoryManager) : XObject(eTypeNumber, theMemoryManager) { } XNumberBase::XNumberBase( const XNumberBase& source, MemoryManager& theMemoryManager) : XObject(source, theMemoryManager) { } XNumberBase::~XNumberBase() { } const XalanDOMString& XNumberBase::getTypeString() const { return s_numberString; } bool XNumberBase::boolean(XPathExecutionContext& executionContext) const { return XObject::boolean(num(executionContext)); } void XNumberBase::ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject) { theCallbackObject.Number( *this, num(theCallbackObject.getExecutionContext())); } void XNumberBase::ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject) const { theCallbackObject.Number( *this, num(theCallbackObject.getExecutionContext())); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/NodeRefListBase.hpp0000664000175000000640000000513111731656102020740 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(NODEREFLISTBASE_HEADER_GUARD_1357924680) #define NODEREFLISTBASE_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanNode; /** * Local implementation of NodeRefList. This class is for internal use only. */ class XALAN_XPATH_EXPORT NodeRefListBase { public: NodeRefListBase(); virtual ~NodeRefListBase(); typedef XalanSize_t size_type; /** * Returns the indexth item in the collection. If * index is greater than or equal to the number of nodes in * the list, this returns null. * * @param index index into the collection * @return node at the indexth position in the * NodeList, or null if that is not a * valid index */ virtual XalanNode* item(size_type index) const = 0; /** * Determine the number of nodes in the list. The range of valid child node * indices is 0 to length-1 inclusive. * * @return number of nodes */ virtual size_type getLength() const = 0; /** * Retrieve the zero based index of the node in the list * * @param theNode node whose index to find * @return index of node */ virtual size_type indexOf(const XalanNode* theNode) const = 0; #if defined(XALAN_INLINE_INITIALIZATION) static const size_type npos = ~0u; #else static const size_type npos; #endif protected: NodeRefListBase(const NodeRefListBase&) { } NodeRefListBase& operator=(const NodeRefListBase&) { return *this; } }; XALAN_CPP_NAMESPACE_END #endif // NODEREFLISTBASE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XNodeSetResultTreeFragProxy.hpp0000664000175000000640000000365611731656102023353 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XNODESETRESULTTREEFRAGPROXY_HEADER_GUARD_1357924680) #define XNODESETRESULTTREEFRAGPROXY_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN class XNodeSetBase; class XALAN_XPATH_EXPORT XNodeSetResultTreeFragProxy : public XObjectResultTreeFragProxyBase { public: XNodeSetResultTreeFragProxy(const XNodeSetBase& value); virtual ~XNodeSetResultTreeFragProxy(); // These interfaces are inherited from XObjectResultTreeFragProxyBase... virtual XalanNode* getFirstChild() const; virtual XalanNode* getLastChild() const; private: // Not implemented... XNodeSetResultTreeFragProxy(const XNodeSetResultTreeFragProxy& theSource); XNodeSetResultTreeFragProxy& operator=(const XNodeSetResultTreeFragProxy& theRHS); bool operator==(const XNodeSetResultTreeFragProxy& theRHS); // Data members... const XNodeSetBase& m_value; }; XALAN_CPP_NAMESPACE_END #endif // XNODESETRESULTTREEFRAGPROXY_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XObjectResultTreeFragProxyBase.hpp0000664000175000000640000000543411731656102024007 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XOBJECTRESULTTREEFRAGPROXYBASE_HEADER_GUARD_1357924680) #define XOBJECTRESULTTREEFRAGPROXYBASE_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XObjectResultTreeFragProxyBase : public XalanDocumentFragment { public: XObjectResultTreeFragProxyBase(); virtual ~XObjectResultTreeFragProxyBase(); // These interfaces are inherited from XalanDocumentFragment... virtual const XalanDOMString& getNodeName() const; virtual const XalanDOMString& getNodeValue() const; virtual NodeType getNodeType() const; virtual XalanNode* getParentNode() const; virtual const XalanNodeList* getChildNodes() const; virtual XalanNode* getFirstChild() const = 0; virtual XalanNode* getLastChild() const = 0; virtual XalanNode* getPreviousSibling() const; virtual XalanNode* getNextSibling() const; virtual const XalanNamedNodeMap* getAttributes() const; virtual XalanDocument* getOwnerDocument() const; virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; virtual bool isIndexed() const; virtual IndexType getIndex() const; protected: XObjectResultTreeFragProxyBase(const XObjectResultTreeFragProxyBase& theRHS); private: // Not implemented... XObjectResultTreeFragProxyBase& operator=(const XObjectResultTreeFragProxyBase& theRHS); bool operator==(const XObjectResultTreeFragProxyBase& theRHS); // Data members... static const XalanDOMString s_emptyString; }; XALAN_CPP_NAMESPACE_END #endif // XOBJECTRESULTTREEFRAGPROXYBASE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XNumberAllocator.cpp0000664000175000000640000000321411731656102021203 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XNumberAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XNumberAllocator::XNumberAllocator( MemoryManager& theMemoryManager, size_type theBlockCount) : m_allocator(theMemoryManager, theBlockCount) { } XNumberAllocator::~XNumberAllocator() { } XNumberAllocator::number_type* XNumberAllocator::createNumber(double theNumber) { number_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); number_type* const theResult = new(theBlock) number_type(theNumber, m_allocator.getMemoryManager()); m_allocator.commitAllocation(theBlock); return theResult; } bool XNumberAllocator::destroy(number_type* theNumber) { return m_allocator.destroyObject(theNumber); } void XNumberAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XPathFactoryDefault.cpp0000664000175000000640000000445511731656102021653 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XPathFactoryDefault.hpp" #include #include "XPath.hpp" XALAN_CPP_NAMESPACE_BEGIN XPathFactoryDefault::XPathFactoryDefault(MemoryManager& theManager) : XPathFactory(), m_xpaths(theManager) { } XPathFactoryDefault* XPathFactoryDefault::create(MemoryManager& theManager) { typedef XPathFactoryDefault ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType(theManager); theGuard.release(); return theResult; } XPathFactoryDefault::~XPathFactoryDefault() { reset(); } void XPathFactoryDefault::reset() { XALAN_USING_STD(for_each) for_each(m_xpaths.begin(), m_xpaths.end(), DeleteXPathFunctor(*this, true)); m_xpaths.clear(); } bool XPathFactoryDefault::doReturnObject( const XPath* theXPath, bool fInReset) { const CollectionType::size_type theCount = fInReset == true ? m_xpaths.count(theXPath) : m_xpaths.erase(theXPath); if (theCount == 0) { return false; } else { XalanDestroy( m_xpaths.getMemoryManager(), const_cast(theXPath)); return true; } } XPath* XPathFactoryDefault::create() { XPath* const theXPath = XPath::create(m_xpaths.getMemoryManager()); m_xpaths.insert(theXPath); return theXPath; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/FunctionNamespaceURI.cpp0000664000175000000640000000626711731656102021757 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionNamespaceURI.hpp" #include #include #include #include "XObjectFactory.hpp" XALAN_CPP_NAMESPACE_BEGIN FunctionNamespaceURI::FunctionNamespaceURI() { } FunctionNamespaceURI::~FunctionNamespaceURI() { } static const XalanDOMString theEmptyString(XalanMemMgrs::getDummyMemMgr()); XObjectPtr FunctionNamespaceURI::execute( XPathExecutionContext& executionContext, XalanNode* context, const Locator* locator) const { if (context == 0) { const GetCachedString theGuard(executionContext); XalanDOMString& theResult = theGuard.get(); executionContext.problem( XPathExecutionContext::eXPath, XPathExecutionContext::eError, XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionRequiresNonNullContextNode_1Param, "namespace-uri()"), locator, context); // Dummy return value... return XObjectPtr(0); } else { return executionContext.getXObjectFactory().createStringReference(DOMServices::getNamespaceOfNode(*context)); } } XObjectPtr FunctionNamespaceURI::execute( XPathExecutionContext& executionContext, XalanNode* /* context */, const XObjectPtr arg1, const Locator* locator) const { assert(arg1.null() == false); const NodeRefListBase& theList = arg1->nodeset(); if (theList.getLength() == 0) { return executionContext.getXObjectFactory().createStringReference(theEmptyString); } else { assert(theList.item(0) != 0); return execute(executionContext, theList.item(0), locator); } } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionNamespaceURI* #endif FunctionNamespaceURI::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionNamespaceURI::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionTakesZeroOrOneArg_1Param, "namespace-uri()"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/FunctionStartsWith.cpp0000664000175000000640000000410111731656102021600 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionStartsWith.hpp" #include #include "XObjectFactory.hpp" XALAN_CPP_NAMESPACE_BEGIN FunctionStartsWith::FunctionStartsWith() { } FunctionStartsWith::~FunctionStartsWith() { } XObjectPtr FunctionStartsWith::execute( XPathExecutionContext& executionContext, XalanNode* /* context */, const XObjectPtr arg1, const XObjectPtr arg2, const Locator* const /* locator */) const { assert(arg1.null() == false && arg2.null() == false); const bool fStartsWith = startsWith( arg1->str(executionContext), arg2->str(executionContext)); return executionContext.getXObjectFactory().createBoolean(fStartsWith); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionStartsWith* #endif FunctionStartsWith::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionStartsWith::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionTakesTwoArguments_1Param, "starts-with()"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XStringReferenceAllocator.hpp0000664000175000000640000000612411731656102023050 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XSTRINGREFERENCEALLOCATOR_INCLUDE_GUARD_1357924680) #define XSTRINGREFERENCEALLOCATOR_INCLUDE_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XStringReferenceAllocator { public: typedef XStringReference string_type; typedef ReusableArenaAllocator ArenaAllocatorType; typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XStringReferenceAllocator( MemoryManager& theManager, size_type theBlockCount); ~XStringReferenceAllocator(); /** * Create an XStringReference object from a string. * * @param theString source string * * @return a pointer to string */ string_type* createString(const XalanDOMString& theString); /** * Delete an XStringReference object from allocator. */ bool destroy(string_type* theString); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const string_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all XStringReference objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XStringReferenceAllocator(const XStringReferenceAllocator&); XStringReferenceAllocator& operator=(const XStringReferenceAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XSTRINGREFERENCEALLOCATOR_INCLUDE_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XalanQName.cpp0000664000175000000640000002611711731656102017756 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XalanQName.hpp" #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN const XalanDOMString XalanQName::s_emptyString(XalanMemMgrs::getDummyMemMgr()); XalanDOMString& XalanQName::format(XalanDOMString& theString) const { const XalanDOMString& theURI = getNamespace(); if (theURI.empty() == false) { theString += XalanDOMChar(XalanUnicode::charLeftCurlyBracket); theString += theURI; theString += XalanDOMChar(XalanUnicode::charRightCurlyBracket); } theString += getLocalPart(); return theString; } XalanQName::PrefixResolverProxy::PrefixResolverProxy( const NamespacesStackType& theStack, const XalanDOMString& theURI) : m_stack(theStack), m_uri(theURI) { } XalanQName::PrefixResolverProxy::~PrefixResolverProxy() { } const XalanDOMString* XalanQName::PrefixResolverProxy::getNamespaceForPrefix(const XalanDOMString& prefix) const { return XalanQName::getNamespaceForPrefix(m_stack, prefix); } const XalanDOMString& XalanQName::PrefixResolverProxy::getURI() const { return m_uri; } const XalanDOMString* XalanQName::getNamespaceForPrefix( const NamespaceVectorType& namespaces, const XalanDOMChar* prefix) { assert( prefix != 0 ); const XalanDOMString* nsURI = 0; if(prefix == DOMServices::s_XMLString) { nsURI = &DOMServices::s_XMLNamespaceURI; } else if (prefix == DOMServices::s_XMLNamespace) { nsURI = &DOMServices::s_XMLNamespacePrefixURI; } else { const NamespaceVectorType::size_type theSize = namespaces.size(); for(NamespaceVectorType::size_type j = theSize; j > 0; --j) { const NameSpace& ns = namespaces[j - 1]; const XalanDOMString& thisPrefix = ns.getPrefix(); if(prefix == thisPrefix) { nsURI = &ns.getURI(); break; } } } return nsURI; } const XalanDOMString* XalanQName::getNamespaceForPrefix( const NamespaceVectorType& namespaces, const XalanDOMString& prefix) { const XalanDOMString* nsURI = 0; if(prefix == DOMServices::s_XMLString) { nsURI = &DOMServices::s_XMLNamespaceURI; } else if (prefix == DOMServices::s_XMLNamespace) { nsURI = &DOMServices::s_XMLNamespacePrefixURI; } else { const NamespaceVectorType::size_type theSize = namespaces.size(); for(NamespaceVectorType::size_type j = theSize; j > 0; --j) { const NameSpace& ns = namespaces[j - 1]; const XalanDOMString& thisPrefix = ns.getPrefix(); if(prefix == thisPrefix) { nsURI = &ns.getURI(); break; } } } return nsURI; } const XalanDOMString* XalanQName::getNamespaceForPrefix( const NamespacesStackType& nsStack, const XalanDOMString& prefix) { return getNamespaceForPrefix(nsStack.begin(), nsStack.end(), prefix); } const XalanDOMString* XalanQName::getNamespaceForPrefix( const NamespacesStackType& nsStack, const XalanDOMChar* prefix) { return getNamespaceForPrefix(nsStack.begin(), nsStack.end(), prefix); } const XalanDOMString* XalanQName::getNamespaceForPrefix( NamespacesStackType::const_iterator theBegin, NamespacesStackType::const_iterator theEnd, const XalanDOMChar* prefix) { const XalanDOMString* nsURI = 0; if (theBegin != theEnd) { do { --theEnd; nsURI = getNamespaceForPrefix((*theEnd), prefix); if (nsURI != 0) { break; } } while(theBegin != theEnd); } return nsURI; } const XalanDOMString* XalanQName::getNamespaceForPrefix( NamespacesStackType::const_iterator theBegin, NamespacesStackType::const_iterator theEnd, const XalanDOMString& prefix) { const XalanDOMString* nsURI = 0; if (theBegin != theEnd) { do { nsURI = getNamespaceForPrefix(*(--theEnd), prefix); if (nsURI != 0) { break; } } while(theBegin != theEnd); } return nsURI; } const XalanDOMString* XalanQName::getPrefixForNamespace( const NamespaceVectorType& namespaces, const XalanDOMString& uri) { const XalanDOMString* thePrefix = 0; const NamespaceVectorType::size_type theSize = namespaces.size(); for(NamespaceVectorType::size_type j = theSize; j > 0; --j) { const NameSpace& ns = namespaces[j - 1]; const XalanDOMString& thisURI = ns.getURI(); if(uri == thisURI) { thePrefix = &ns.getPrefix(); break; } } return thePrefix; } const XalanDOMString* XalanQName::getPrefixForNamespace( const NamespacesStackType& nsStack, const XalanDOMString& uri) { return getPrefixForNamespace(nsStack.begin(), nsStack.end(), uri); } const XalanDOMString* XalanQName::getPrefixForNamespace( NamespacesStackType::const_iterator theBegin, NamespacesStackType::const_iterator theEnd, const XalanDOMString& uri) { const XalanDOMString* thePrefix = 0; if (theBegin != theEnd) { do { thePrefix = getPrefixForNamespace(*(--theEnd), uri); if (thePrefix != 0) { break; } } while(theBegin != theEnd); } return thePrefix; } bool XalanQName::isValidNCName(const XalanDOMString& theNCName) { return isValidNCName(theNCName.c_str(), theNCName.length()); } bool XalanQName::isValidNCName( const XalanDOMChar* theNCName, XalanDOMString::size_type theLength) { assert(theNCName != 0); if (theLength == XalanDOMString::npos) { theLength = length(theNCName); } if (theLength == 0) { return false; } else { XalanDOMChar c = theNCName[0]; if(!(XalanXMLChar::isLetter(c) || c == XalanUnicode::charLowLine)) return false; if(theLength > 1) { for(XalanDOMString::size_type i = 1; i < theLength; i++) { c = theNCName[i]; if(!(XalanXMLChar::isLetter(c) || XalanXMLChar::isDigit(c) || XalanXMLChar::isExtender(c) || XalanXMLChar::isCombiningChar(c) || c == XalanUnicode::charLowLine || c == XalanUnicode::charHyphenMinus || c == XalanUnicode::charFullStop)) { return false; } } } return true; } } bool XalanQName::isValidQName(const XalanDOMString& theQName) { return isValidQName(theQName.c_str(), theQName.length()); } bool XalanQName::isValidQName( const XalanDOMChar* theQName, XalanDOMString::size_type theLength) { const XalanDOMString::size_type theIndex = indexOf(theQName, XalanUnicode::charColon); if (theIndex == theLength) { return isValidNCName(theQName, theLength); } else { const XalanDOMChar* const thePrefix = theQName; const XalanDOMChar* const theLocalName = thePrefix + theIndex + 1; return XalanQName::isValidNCName(thePrefix, theIndex) && XalanQName::isValidNCName(theLocalName, theLength - theIndex - 1); } } XalanQName::InvalidQNameException::InvalidQNameException( const XalanDOMChar* theQName, XalanDOMString::size_type theQNameLength, XalanDOMString& theResult, const Locator* theLocator) : XalanXPathException( format(theQName, theQNameLength, theResult), theResult.getMemoryManager(), theLocator) { } XalanQName::InvalidQNameException::InvalidQNameException( const XalanDOMString& theMessage, MemoryManager& theManager, const Locator* theLocator) : XalanXPathException( theMessage, theManager, theLocator) { } XalanQName::InvalidQNameException::InvalidQNameException(const InvalidQNameException& other) : XalanXPathException(other) { } XalanQName::InvalidQNameException::~InvalidQNameException() { } const XalanDOMChar* XalanQName::InvalidQNameException::getType() const { static const XalanDOMChar s_type[] = { XalanUnicode::charLetter_I, XalanUnicode::charLetter_n, XalanUnicode::charLetter_v, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_i, XalanUnicode::charLetter_d, XalanUnicode::charLetter_Q, XalanUnicode::charLetter_N, XalanUnicode::charLetter_a, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, XalanUnicode::charLetter_E, XalanUnicode::charLetter_x, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_p, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; return s_type; } const XalanDOMString& XalanQName::InvalidQNameException::format( const XalanDOMChar* theQName, XalanDOMString::size_type theQNameLength, XalanDOMString& theResult ) { XalanDOMString theParameter(theResult.getMemoryManager()); theParameter.append(theQName, theQNameLength); return XalanMessageLoader::getMessage( theResult, XalanMessages::IsNotValidQName_1Param, theParameter); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XalanXPathException.cpp0000664000175000000640000000437711731656102021664 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanXPathException.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanXPathException::XalanXPathException( const XalanDOMString& theMessage, MemoryManager& theManager, const Locator* theLocator) : XSLException( theMessage, theManager, theLocator) { } XalanXPathException::XalanXPathException( const XalanDOMString& theMessage, MemoryManager& theManager) : XSLException( theMessage, theManager) { } XalanXPathException::XalanXPathException(const XalanXPathException& other) : XSLException(other) { } XalanXPathException::~XalanXPathException() { } static const XalanDOMChar s_type[] = { XalanUnicode::charLetter_X, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_X, XalanUnicode::charLetter_P, XalanUnicode::charLetter_a, XalanUnicode::charLetter_t, XalanUnicode::charLetter_h, XalanUnicode::charLetter_E, XalanUnicode::charLetter_x, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_p, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; const XalanDOMChar* XalanXPathException::getType() const { return s_type; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XTokenNumberAdapter.hpp0000664000175000000640000000600211731656102021647 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XTOKENNUMBERADAPTER_HEADER_GUARD_1357924680) #define XTOKENNUMBERADAPTER_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN class XToken; class XALAN_XPATH_EXPORT XTokenNumberAdapter : public XNumberBase { public: /** * Create an XTokenNumberAdapter from an XToken. * * @param theXToken The XToken instance to adapt * @param theMemoryManager The MemoryManager instance. */ XTokenNumberAdapter( const XToken& theToken, MemoryManager& theMemoryManager); /** * Create an XTokenNumberAdapter from another one. * * @param source The XTokenNumberAdapter instance to copy * @param theMemoryManager The MemoryManager instance. */ XTokenNumberAdapter( const XTokenNumberAdapter& source, MemoryManager& theMemoryManager); virtual ~XTokenNumberAdapter(); // These methods are inherited from XObject ... virtual double num(XPathExecutionContext& executionContext) const; virtual double num() const; virtual const XalanDOMString& str(XPathExecutionContext& executionContext) const; virtual const XalanDOMString& str() const; virtual void str( XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( XPathExecutionContext& executionContext, XalanDOMString& theBuffer) const; virtual void str(XalanDOMString& theBuffer) const; virtual double stringLength(XPathExecutionContext& executionContext) const; protected: virtual eObjectType getRealType() const; private: // XToken instance that we're adapting... const XToken& m_value; }; XALAN_CPP_NAMESPACE_END #endif // XTOKENNUMBERADAPTER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XPath.hpp0000664000175000000640000025434711731656102017032 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XPATH_HEADER_GUARD_1357924680) #define XPATH_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include #include // Base class header files... #include #include #include #include #include XALAN_DECLARE_XERCES_CLASS(Locator) XALAN_CPP_NAMESPACE_BEGIN class PrefixResolver; class XObject; class XalanElement; class XalanNode; class XPathConstructionContext; class XALAN_XPATH_EXPORT XPath { public: typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator LocatorType; typedef XPathExpression::OpCodeMapPositionType OpCodeMapPositionType; typedef XPathExpression::OpCodeMapValueType OpCodeMapValueType; typedef XPathExpression::TokenQueuePositionType TokenQueuePositionType; typedef XPathExecutionContext::GetCachedString GetCachedString; typedef XPathExecutionContext::PrefixResolverSetAndRestore PrefixResolverSetAndRestore; typedef XPathExecutionContext::CurrentNodePushAndPop CurrentNodePushAndPop; static const XalanDOMChar PSEUDONAME_ANY[]; static const XalanDOMChar PSEUDONAME_ROOT[]; static const XalanDOMChar PSEUDONAME_TEXT[]; static const XalanDOMChar PSEUDONAME_COMMENT[]; static const XalanDOMChar PSEUDONAME_PI[]; static const XalanDOMChar PSEUDONAME_OTHER[]; static const XalanDOMChar PSEUDONAME_NODE[]; enum eMatchScore { eMatchScoreNone, eMatchScoreNodeTest, eMatchScoreNSWild, eMatchScoreQName, eMatchScoreOther }; class TargetData { public: enum eTargetType { eAttribute, eElement, eAny, eOther }; TargetData() : m_string(0), m_priority(eMatchScoreNone), m_targetType(eOther) { } TargetData( const XalanDOMChar* theString, eMatchScore thePriority, eTargetType theTargetType) : m_string(theString), m_priority(thePriority), m_targetType(theTargetType) { } const XalanDOMChar* getString() const { return m_string; } eMatchScore getDefaultPriority() const { return m_priority; } eTargetType getTargetType() const { return m_targetType; } private: const XalanDOMChar* m_string; eMatchScore m_priority; eTargetType m_targetType; }; typedef XalanVector TargetDataVectorType; /** * Perform static initialization. See class XPathInit. */ static void initialize(MemoryManager& theManager); /** * Perform static shut down. See class XPathInit. */ static void terminate(); /** * Construct an XPath. * * @param theLocator The applicable Locator, if any. */ explicit XPath( MemoryManager& theManager, const Locator* theLocator = 0); static XPath* create( MemoryManager& theManager, const Locator* theLocator = 0); MemoryManager& getMemoryManager() { return m_expression.getMemoryManager(); } ~XPath(); /** * Shrink internal tables. */ void shrink() { m_expression.shrink(); } /** * Execute the XPath from the provided context. * * @param context current source tree context node, which must not be 0 * @param prefixResolver prefix resolver to use * @param executionContext current execution context * @return smart-pointer to result XObject */ const XObjectPtr execute( XalanNode* context, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext) const; /** * Execute the XPath from the provided context. * * @param context current source tree context node, which must not be 0 * @param prefixResolver prefix resolver to use * @param executionContext current execution context * @param result the boolean result */ void execute( XalanNode* context, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext, bool& result) const; /** * Execute the XPath from the provided context. * * @param context current source tree context node, which must not be 0 * @param prefixResolver prefix resolver to use * @param executionContext current execution context * @param result the numeric result */ void execute( XalanNode* context, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext, double& result) const; /** * Execute the XPath from the provided context. The * result is appended to the supplied string. * * @param context current source tree context node, which must not be 0 * @param prefixResolver prefix resolver to use * @param executionContext current execution context * @param result the string result */ void execute( XalanNode* context, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext, XalanDOMString& result) const; typedef void (FormatterListener::*MemberFunctionPtr)(const XMLCh* const, const FormatterListener::size_type); /** * Execute the XPath from the provided context. * * @param context current source tree context node, which must not be 0 * @param prefixResolver prefix resolver to use * @param executionContext current execution context * @param formatterListener the FormatterListener instance to receive the result * @param function A pointer to the member function of FormatterListener to call */ void execute( XalanNode* context, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const; /** * Execute the XPath from the provided context. Normally, * the expression will be evaluated and the result placed * in the parameter result. However, some cases (such as * the evalution of a variable) could result in the copying * of a node-set, which is extremely expensive. In that * case, the return value will contain the result of the * evaluation. If the call to XObject::null() on the return * value is true, that indicates the value was executed * directly into the parameter. Otherwise, the parameter * will be empty, and the result will be in the XObject * instance returned. * * @param context current source tree context node, which must not be 0 * @param prefixResolver prefix resolver to use * @param executionContext current execution context * @param result the node-set result * @return the node-set result, if the result was not returned in the parameter */ const XObjectPtr execute( XalanNode* context, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext, MutableNodeRefList& result) const; /** * Execute the XPath from the provided context. * * @param context current source tree context node, which must not be 0 * @param prefixResolver prefix resolver to use * @param contextNodeList node list for current context * @param executionContext current execution context * @return smart-pointer to result XObject */ const XObjectPtr execute( XalanNode* context, const PrefixResolver& prefixResolver, const NodeRefListBase& contextNodeList, XPathExecutionContext& executionContext) const { // Push and pop the context node list... XPathExecutionContext::ContextNodeListPushAndPop thePushAndPop( executionContext, contextNodeList); return execute(context, prefixResolver, executionContext); } /** * Execute the XPath from the provided context. * * @param context current source tree context node, which must not be 0 * @param prefixResolver prefix resolver to use * @param contextNodeList node list for current context * @param executionContext current execution context * @param result the boolean result */ void execute( XalanNode* context, const PrefixResolver& prefixResolver, const NodeRefListBase& contextNodeList, XPathExecutionContext& executionContext, bool& result) const { // Push and pop the context node list... XPathExecutionContext::ContextNodeListPushAndPop thePushAndPop( executionContext, contextNodeList); execute(context, prefixResolver, executionContext, result); } /** * Execute the XPath from the provided context. * * @param context current source tree context node, which must not be 0 * @param prefixResolver prefix resolver to use * @param contextNodeList node list for current context * @param executionContext current execution context * @param result the numeric result */ void execute( XalanNode* context, const PrefixResolver& prefixResolver, const NodeRefListBase& contextNodeList, XPathExecutionContext& executionContext, double& result) const { // Push and pop the context node list... XPathExecutionContext::ContextNodeListPushAndPop thePushAndPop( executionContext, contextNodeList); execute(context, prefixResolver, executionContext, result); } /** * Execute the XPath from the provided context. The * result is appended to the supplied string. * * @param context current source tree context node, which must not be 0 * @param prefixResolver prefix resolver to use * @param contextNodeList node list for current context * @param executionContext current execution context * @param result the string result */ void execute( XalanNode* context, const PrefixResolver& prefixResolver, const NodeRefListBase& contextNodeList, XPathExecutionContext& executionContext, XalanDOMString& result) const { // Push and pop the context node list... XPathExecutionContext::ContextNodeListPushAndPop thePushAndPop( executionContext, contextNodeList); execute(context, prefixResolver, executionContext, result); } /** * Execute the XPath from the provided context. * * @param context current source tree context node, which must not be 0 * @param prefixResolver prefix resolver to use * @param contextNodeList node list for current context * @param executionContext current execution context * @param formatterListener the FormatterListener instance to receive the result * @param function A pointer to the member function of FormatterListener to call */ void execute( XalanNode* context, const PrefixResolver& prefixResolver, const NodeRefListBase& contextNodeList, XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const { // Push and pop the context node list... XPathExecutionContext::ContextNodeListPushAndPop thePushAndPop( executionContext, contextNodeList); execute(context, prefixResolver, executionContext, formatterListener, function); } /** * Execute the XPath from the provided context. Normally, * the expression will be evaluated and the result placed * in the parameter result. However, some cases (such as * the evalution of a variable) could result in the copying * of a node-set, which is extremely expensive. In that * case, the return value will contain the result of the * evaluation. If the call to XObject::null() on the return * value is true, that indicates the value was executed * directly into the parameter. Otherwise, the parameter * will be empty, and the result will be in the XObject * instance returned. * * @param context current source tree context node, which must not be 0 * @param prefixResolver prefix resolver to use * @param contextNodeList node list for current context * @param executionContext current execution context * @param result the result as a set of nodes * @return the node-set result, if the result was not returned in the parameter */ const XObjectPtr execute( XalanNode* context, const PrefixResolver& prefixResolver, const NodeRefListBase& contextNodeList, XPathExecutionContext& executionContext, MutableNodeRefList& result) const { // Push and pop the context node list... XPathExecutionContext::ContextNodeListPushAndPop thePushAndPop( executionContext, contextNodeList); return execute(context, prefixResolver, executionContext, result); } /** * Execute the XPath from the provided context. * * The prefix resolver and current node must already * be set execution context, and must not be 0. * * @param executionContext current execution context * @return smart-pointer to result XObject */ const XObjectPtr execute(XPathExecutionContext& executionContext) const { assert(executionContext.getCurrentNode() != 0); assert(executionContext.getPrefixResolver() != 0); return executeMore( executionContext.getCurrentNode(), getInitialOpCodePosition(), executionContext); } /** * Execute the XPath from the provided context. * * The prefix resolver and current node must already * be set execution context, and must not be 0. * * @param executionContext current execution context * @param result the boolean result */ void execute( XPathExecutionContext& executionContext, bool& result) const { assert(executionContext.getCurrentNode() != 0); assert(executionContext.getPrefixResolver() != 0); executeMore( executionContext.getCurrentNode(), getInitialOpCodePosition(), executionContext, result); } /** * Execute the XPath from the provided context. * * The prefix resolver must already be set in the * execution context. * * @param executionContext current execution context * @param result the numeric result */ void execute( XPathExecutionContext& executionContext, double& result) const { assert(executionContext.getCurrentNode() != 0); assert(executionContext.getPrefixResolver() != 0); executeMore( executionContext.getCurrentNode(), getInitialOpCodePosition(), executionContext, result); } /** * Execute the XPath from the provided context. The * result is appended to the supplied string. * * The prefix resolver and current node must already * be set execution context, and must not be 0. * * @param executionContext current execution context * @param result the string result */ void execute( XPathExecutionContext& executionContext, XalanDOMString& result) const { assert(executionContext.getCurrentNode() != 0); assert(executionContext.getPrefixResolver() != 0); executeMore( executionContext.getCurrentNode(), getInitialOpCodePosition(), executionContext, result); } /** * Execute the XPath from the provided context. * * The prefix resolver and current node must already * be set execution context, and must not be 0. * * @param executionContext current execution context * @param formatterListener the FormatterListener instance to receive the result * @param function A pointer to the member function of FormatterListener to call */ void execute( XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const { assert(executionContext.getCurrentNode() != 0); assert(executionContext.getPrefixResolver() != 0); executeMore( executionContext.getCurrentNode(), getInitialOpCodePosition(), executionContext, formatterListener, function); } /** * Execute the XPath from the provided context. Normally, * the expression will be evaluated and the result placed * in the parameter result. However, some cases (such as * the evalution of a variable) could result in the copying * of a node-set, which is extremely expensive. In that * case, the return value will contain the result of the * evaluation. If the call to XObject::null() on the return * value is true, that indicates the value was executed * directly into the parameter. Otherwise, the parameter * will be empty, and the result will be in the XObject * instance returned. * * The prefix resolver and current node must already * be set execution context, and must not be 0. * * @param executionContext current execution context * @param result A node list for the result. This may or may not contain the actual result. * @return the node-set result, if the result was not returned in the parameter */ const XObjectPtr execute( XPathExecutionContext& executionContext, MutableNodeRefList& result) const { assert(executionContext.getCurrentNode() != 0); assert(executionContext.getPrefixResolver() != 0); return executeMore( executionContext.getCurrentNode(), getInitialOpCodePosition(), executionContext, result); } /** * Execute the XPath from the provided context. * * The current node must already be set execution context, * and must not be 0. * * @param executionContext current execution context * @param prefixResolver prefix resolver to use * @return smart-pointer to result XObject */ const XObjectPtr execute( const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext) const { assert(executionContext.getCurrentNode() != 0); // Push and pop the PrefixResolver... const PrefixResolverSetAndRestore theResolverSetAndRestore( executionContext, &prefixResolver); return executeMore( executionContext.getCurrentNode(), getInitialOpCodePosition(), executionContext); } /** * Execute the XPath from the provided context. * * The current node must already be set execution context, * and must not be 0. * * @param executionContext current execution context * @param prefixResolver prefix resolver to use * @param result the boolean result */ void execute( const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext, bool& result) const { assert(executionContext.getCurrentNode() != 0); // Push and pop the PrefixResolver... const PrefixResolverSetAndRestore theResolverSetAndRestore( executionContext, &prefixResolver); executeMore( executionContext.getCurrentNode(), getInitialOpCodePosition(), executionContext, result); } /** * Execute the XPath from the provided context. * * The current node must already be set execution context, * and must not be 0. * * @param executionContext current execution context * @param prefixResolver prefix resolver to use * @param result the numeric result */ void execute( const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext, double& result) const { assert(executionContext.getCurrentNode() != 0); // Push and pop the PrefixResolver... const PrefixResolverSetAndRestore theResolverSetAndRestore( executionContext, &prefixResolver); executeMore( executionContext.getCurrentNode(), getInitialOpCodePosition(), executionContext, result); } /** * Execute the XPath from the provided context. The * result is appended to the supplied string. * * The current node must already be set execution context, * and must not be 0. * * @param executionContext current execution context * @param prefixResolver prefix resolver to use * @param result the string result */ void execute( const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext, XalanDOMString& result) const { assert(executionContext.getCurrentNode() != 0); // Push and pop the PrefixResolver... const PrefixResolverSetAndRestore theResolverSetAndRestore( executionContext, &prefixResolver); executeMore( executionContext.getCurrentNode(), getInitialOpCodePosition(), executionContext, result); } /** * Execute the XPath from the provided context. * * @param prefixResolver prefix resolver to use * @param executionContext current execution context * @param formatterListener the FormatterListener instance to receive the result * @param function A pointer to the member function of FormatterListener to call */ void execute( const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const { assert(executionContext.getCurrentNode() != 0); // Push and pop the PrefixResolver... const PrefixResolverSetAndRestore theResolverSetAndRestore( executionContext, &prefixResolver); executeMore( executionContext.getCurrentNode(), getInitialOpCodePosition(), executionContext, formatterListener, function); } /** * Execute the XPath from the provided context. Normally, * the expression will be evaluated and the result placed * in the parameter result. However, some cases (such as * the evalution of a variable) could result in the copying * of a node-set, which is extremely expensive. In that * case, the return value will contain the result of the * evaluation. If the call to XObject::null() on the return * value is true, that indicates the value was executed * directly into the parameter. Otherwise, the parameter * will be empty, and the result will be in the XObject * instance returned. * * The current node must already be set execution context, * and must not be 0. * * @param executionContext current execution context * @param prefixResolver prefix resolver to use * @param result A node list for the result. This may or may not contain the actual result. * @return the node-set result, if the result was not returned in the parameter */ XObjectPtr execute( const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext, MutableNodeRefList& result) const { assert(executionContext.getCurrentNode() != 0); // Push and pop the PrefixResolver... const PrefixResolverSetAndRestore theResolverSetAndRestore( executionContext, &prefixResolver); return executeMore( executionContext.getCurrentNode(), getInitialOpCodePosition(), executionContext, result); } /** * Retrieve a reference to the current expression. * * @return current expression */ XPathExpression& getExpression() { return m_expression; } /** * Retrieve a reference to the current expression. * * @return current expression */ const XPathExpression& getExpression() const { return m_expression; } static double getMatchScoreValue(eMatchScore score) { switch(score) { case eMatchScoreNone: return DoubleSupport::getNegativeInfinity(); break; case eMatchScoreNodeTest: return -0.5; break; case eMatchScoreNSWild: return -0.25; break; case eMatchScoreOther: return 0.5; break; case eMatchScoreQName: return 0.0; break; }; assert(false); return 0.0; } /** * Get the match score for the specified node. * * @param node The node for the score * @param executionContext current execution context * @return union of node-set operands */ eMatchScore getMatchScore( XalanNode* node, XPathExecutionContext& executionContext) const; /** * Get the match score for the specified node. * * @param node The node for the score * @param resolver The prefix resolver * @param executionContext current execution context * @return union of node-set operands */ eMatchScore getMatchScore( XalanNode* node, const PrefixResolver& resolver, XPathExecutionContext& executionContext) const; /** * Evaluate a predicate. * * @param context current source tree context node * @param opPos current position in the Op Map * @param executionContext current execution context * @return pointer to either a boolean or a number */ const XObjectPtr predicate( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { return executeMore(context, opPos + 2, executionContext); } /** * Add the data for the target of match pattern to a vector. * * @param targetData The vector for the data */ void getTargetData(TargetDataVectorType& targetData) const; /** * Install a built-in function. * * @param funcName unqualified name of the function * @param func instance of an XPath function object */ static void installFunction( const XalanDOMString& funcName, const Function& func) { s_functions.InstallFunction(funcName, func); } /** * Install a built-in function. * * @param funcName unqualified name of the function * @param func instance of an XPath function object */ static void installFunction( const XalanDOMChar* funcName, const Function& func) { s_functions.InstallFunction(funcName, func); } /** * Remove a named function from the function table. * * @param funcName name of function * @return true if the function was found and removed. */ static bool uninstallFunction(const XalanDOMString& funcName) { return s_functions.UninstallFunction(funcName); } /** * Remove a named function from the function table. * * @param funcName name of function * @return true if the function was found and removed. */ static bool uninstallFunction(const XalanDOMChar* funcName) { return s_functions.UninstallFunction(funcName); } /** * Whether the named function is installed in the function table. * * @param name of function * @return true if the function has been installed */ static bool isInstalledFunction(const XalanDOMString& theFunctionName) { return s_functions.isInstalledFunction(theFunctionName); } typedef XPathFunctionTable FunctionTableType; /** * Retrieve the table of installed functions. * * @return function table */ static const FunctionTableType& getFunctionTable() { return s_functions; } /** * Add the names for the installed functions to a vector strings. * * @param theIterator vector added to */ template static void getInstalledFunctionNames(OutputIteratorType theIterator) { s_functions.getInstalledFunctionNames(theIterator); } static void destroyTable() { s_functions.DestroyTable(); } bool getInStylesheet() const { return m_inStylesheet; } void setInStylesheet(bool fValue) { m_inStylesheet = fValue; } const Locator* getLocator() const { return m_locator; } void setLocator(const Locator* theLocator) { m_locator = theLocator; } class NodeTester { public: NodeTester(); NodeTester(const NodeTester& theSource); NodeTester( const XPath& xpath, XPathExecutionContext& executionContext, OpCodeMapPositionType opPos, OpCodeMapValueType argLen, OpCodeMapValueType stepType); NodeTester( XPathConstructionContext& theContext, const XalanDOMString& theNameTest, const PrefixResolver& thePrefixResolver, const Locator* theLocator = 0, eMatchScore* theMatchScore = 0); NodeTester( const XalanDOMString& theNamespaceURI, const XalanDOMString& theLocalName, eMatchScore* theMatchScore = 0); eMatchScore operator()( const XalanNode& context, XalanNode::NodeType nodeType) const { assert(context.getNodeType() == nodeType); return (this->*m_testFunction)(context, nodeType); } eMatchScore operator()(const XalanElement& context) const { return (this->*m_testFunction2)(context); } NodeTester& operator=(const NodeTester& theRHS) { m_executionContext = theRHS.m_executionContext; m_targetNamespace = theRHS.m_targetNamespace; m_targetLocalName = theRHS.m_targetLocalName; m_testFunction = theRHS.m_testFunction; m_testFunction2 = theRHS.m_testFunction2; return *this; } protected: eMatchScore initialize( XPathConstructionContext& theConstructionContext, const XalanDOMString& theNameTest, const PrefixResolver& thePrefixResolver, const Locator* theLocator); eMatchScore initialize( const XalanDOMString& theNamespaceURI, const XalanDOMString& theLocalName); private: typedef eMatchScore (NodeTester::*TestFunctionPtr)(const XalanNode&, XalanNode::NodeType) const; typedef eMatchScore (NodeTester::*TestFunctionPtr2)(const XalanElement&) const; eMatchScore testComment( const XalanNode& context, XalanNode::NodeType nodeType) const; eMatchScore testText( const XalanNode& context, XalanNode::NodeType nodeType) const; eMatchScore testPI( const XalanNode& context, XalanNode::NodeType nodeType) const; eMatchScore testPIName( const XalanNode& context, XalanNode::NodeType nodeType) const; eMatchScore testNode( const XalanNode& context, XalanNode::NodeType nodeType) const; eMatchScore testRoot( const XalanNode& context, XalanNode::NodeType nodeType) const; eMatchScore testAttributeNCName( const XalanNode& context, XalanNode::NodeType nodeType) const; eMatchScore testAttributeQName( const XalanNode& context, XalanNode::NodeType nodeType) const; eMatchScore testAttributeNamespaceOnly( const XalanNode& context, XalanNode::NodeType nodeType) const; eMatchScore testAttributeTotallyWild( const XalanNode& context, XalanNode::NodeType nodeType) const; eMatchScore testElementNCName( const XalanNode& context, XalanNode::NodeType nodeType) const; eMatchScore testElementQName( const XalanNode& context, XalanNode::NodeType nodeType) const; eMatchScore testElementNamespaceOnly( const XalanNode& context, XalanNode::NodeType nodeType) const; eMatchScore testElementTotallyWild( const XalanNode& context, XalanNode::NodeType nodeType) const; eMatchScore testElementNCName2(const XalanElement& context) const; eMatchScore testElementQName2(const XalanElement& context) const; eMatchScore testElementNamespaceOnly2(const XalanElement& context) const; eMatchScore testElementTotallyWild2(const XalanElement& context) const; eMatchScore testNamespaceNCName( const XalanNode& context, XalanNode::NodeType nodeType) const; eMatchScore testNamespaceTotallyWild( const XalanNode& context, XalanNode::NodeType nodeType) const; eMatchScore testDefault( const XalanNode& context, XalanNode::NodeType nodeType) const; eMatchScore testDefault2(const XalanElement& context) const; bool matchLocalName(const XalanNode& context) const; bool matchNamespaceURI(const XalanNode& context) const; bool matchLocalNameAndNamespaceURI(const XalanNode& context) const; bool matchNamespace(const XalanNode& context) const; bool shouldStripSourceNode(const XalanText& context) const; // Data members... XPathExecutionContext* m_executionContext; const XalanDOMString* m_targetNamespace; const XalanDOMString* m_targetLocalName; TestFunctionPtr m_testFunction; TestFunctionPtr2 m_testFunction2; }; friend class NodeTester; protected: /** * Execute a location path. * * @param context current source tree context node * @param opPos current position in the Op Mpa * @param executionContext current execution context * @return node-set */ const XObjectPtr locationPath( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Execute a location path. * * @param context current source tree context node * @param opPos current position in the Op Map * @param executionContext current execution context * @param theResult the result as a node list */ void locationPath( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, bool& theResult) const; /** * Execute a location path. * * @param context current source tree context node * @param opPos current position in the Op Map * @param executionContext current execution context * @param theResult the result as a node list */ void locationPath( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, double& theResult) const; /** * Execute a location path. * * @param context current source tree context node * @param opPos current position in the Op Map * @param executionContext current execution context * @param theResult the result as a node list */ void locationPath( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, XalanDOMString& theResult) const; /** * Execute a location path. * * @param context current source tree context node * @param opPos current position in the Op Map * @param executionContext current execution context * @param formatterListener the FormatterListener instance to receive the result * @param function A pointer to the member function of FormatterListener to call */ void locationPath( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const; /** * Execute a location path. * * @param context current source tree context node * @param opPos current position in the Op Map * @param executionContext current execution context * @param theResult the result as a node list */ void locationPath( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, MutableNodeRefList& theResult) const { step(executionContext, context, opPos + 2, theResult); } /** * Execute the XPath from the provided context. * * @param context current source tree context node * @param opPos current position in the Op Map * @param executionContext current execution context * @return pointer to union of node-set operands */ const XObjectPtr executeMore( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Execute the XPath from the provided context. * * @param context current source tree context node * @param opPos current position in the Op Map * @param executionContext current execution context * @param theResult The result of the execution */ void executeMore( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, bool& theResult) const; /** * Execute the XPath from the provided context. * * @param context current source tree context node * @param opPos current position in the Op Map * @param executionContext current execution context * @param theResult The result of the execution */ void executeMore( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, double& theResult) const; /** * Execute the XPath from the provided context. The result * is appended to the supplied string. * * @param context current source tree context node * @param opPos current position in the Op Map * @param executionContext current execution context * @param theResult The result of the execution */ void executeMore( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, XalanDOMString& theResult) const; /** * Execute the XPath from the provided context. * * @param context current source tree context node * @param opPos current position in the Op Map * @param executionContext current execution context * @param formatterListener the FormatterListener instance to receive the result * @param function A pointer to the member function of FormatterListener to call */ void executeMore( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const; /** * Execute the XPath from the provided context. * * @param context current source tree context node * @param opPos current position in the Op Map * @param executionContext current execution context * @param theResult The result of the execution * @return the node-set result, if the result was not returned in the parameter */ const XObjectPtr executeMore( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, MutableNodeRefList& theResult) const; /** * Helper function to get match score. * @param context The current source tree context node. * @param executionContext The current execution context * @param score The match score */ void doGetMatchScore( XalanNode* context, XPathExecutionContext& executionContext, eMatchScore& score) const; /** * OR two expressions and return the boolean result. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return true if the one of the two arguments are true. */ bool Or( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * OR two expressions and return the boolean result. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return true if the two arguments are both true. */ bool And( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Tell if two expressions are functionally not equal. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return true if the two arguments are not equal. */ bool notequals( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Tell if two expressions are functionally equal. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return true if the two arguments are equal. */ bool equals( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Tell if one argument is less than or equal to the other argument. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return true if arg 1 is less than or equal to arg 2. */ bool lte( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Tell if one argument is less than the other argument. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return true if arg 1 is less than arg 2. */ bool lt( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Tell if one argument is greater than or equal to the other argument. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return true if arg 1 is greater than or equal to arg 2. */ bool gte( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Tell if one argument is greater than the other argument. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return true if arg 1 is greater than arg 2. */ bool gt( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Give the sum of two arguments. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return sum of arg1 and arg2. */ double plus( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Give the sum of two arguments. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @param formatterListener the FormatterListener instance to receive the result * @param function A pointer to the member function of FormatterListener to call */ void plus( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const; /** * Give the difference of two arguments. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return difference of arg1 and arg2. */ double minus( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Give the difference of two arguments. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @param formatterListener the FormatterListener instance to receive the result * @param function A pointer to the member function of FormatterListener to call */ void minus( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const; /** * Multiply two arguments. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return arg1 * arg2. */ double mult( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Multiply two arguments. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @param formatterListener the FormatterListener instance to receive the result * @param function A pointer to the member function of FormatterListener to call */ void mult( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const; /** * Divide a number. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return arg1 / arg2. */ double div( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Divide a number. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @param formatterListener the FormatterListener instance to receive the result * @param function A pointer to the member function of FormatterListener to call */ void div( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const; /** * Return the remainder from a truncating division. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return arg1 mod arg2. */ double mod( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Return the remainder from a truncating division. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @param formatterListener the FormatterListener instance to receive the result * @param function A pointer to the member function of FormatterListener to call */ void mod( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const; /** * Return the negation of a number. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return -arg. */ double neg( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Return the negation of a number. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @param formatterListener the FormatterListener instance to receive the result * @param function A pointer to the member function of FormatterListener to call */ void neg( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const; /** * Computes the union of its operands which must be node-sets. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return the union of node-set operands. */ const XObjectPtr Union( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Computes the union of its operands which must be node-sets. * * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @result the result of the union of node-set operands. */ void Union( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, bool& result) const; /** * Computes the union of its operands which must be node-sets. * * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @result the result of the union of node-set operands. */ void Union( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, double& result) const; /** * Computes the union of its operands which must be node-sets. * * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @result the result of the union of node-set operands. */ void Union( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, XalanDOMString& result) const; /** * Computes the union of its operands which must be node-sets. * * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @param formatterListener the FormatterListener instance to receive the result * @param function A pointer to the member function of FormatterListener to call */ void Union( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const; /** * Computes the union of its operands which must be node-sets. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @result the result of the union of node-set operands. */ void Union( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, MutableNodeRefList& result) const; /** * Get a literal value. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return an XObject object. */ const XObjectPtr literal( OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Get a literal value as a boolean. * * @param opPos The current position in the Op Map. * @param theResult The value. */ void literal( OpCodeMapPositionType opPos, bool& theResult) const; /** * Get a literal value as a number. * * @param opPos The current position in the Op Map. * @param theResult The value. */ void literal( OpCodeMapPositionType opPos, double& theResult) const; /** * Get a literal value. The value is appended to the * supplied string. * * @param opPos The current position in the Op Map. * @param theResult The string. */ void literal( OpCodeMapPositionType opPos, XalanDOMString& theResult) const; /** * Get a literal value. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return The result as a double. */ void literal( OpCodeMapPositionType opPos, FormatterListener& formatterListener, MemberFunctionPtr function) const; /** * Get the value of a variable. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return an XObject object. */ const XObjectPtr variable( OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Execute an expression as a group. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return arg. */ const XObjectPtr group( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { return executeMore(context, opPos + 2, executionContext); } /** * Execute an expression as a group. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @param theResult The result of the execution */ void group( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, bool& theResult) const { executeMore(context, opPos + 2, executionContext, theResult); } /** * Execute an expression as a group. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @param theResult The result of the execution */ void group( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, double& theResult) const { executeMore(context, opPos + 2, executionContext, theResult); } /** * Execute an expression as a group. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @param theResult The result of the execution */ void group( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, XalanDOMString& theResult) const { executeMore(context, opPos + 2, executionContext, theResult); } /** * Execute an expression as a group. * * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @param formatterListener the FormatterListener instance to receive the result * @param function A pointer to the member function of FormatterListener to call */ void group( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const { executeMore( context, opPos + 2, executionContext, formatterListener, function); } /** * Execute an expression as a group. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @param theResult The result of the execution */ void group( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext, MutableNodeRefList& theResult) const { const XObjectPtr theValue(executeMore( context, opPos + 2, executionContext, theResult)); if (theValue.null() == false) { theResult.addNodesInDocOrder( theValue->nodeset(), executionContext); theResult.setDocumentOrder(); } } /** * Get a literal value. * @param opPos The current position in the Op Map. * @return The result as a double. */ double numberlit(OpCodeMapPositionType opPos) const; /** * Get a literal value. * @param opPos The current position in the Op Map. * @return The result as a double. */ const XObjectPtr numberlit( OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Get a literal value as a boolean. * * @param opPos The current position in the Op Map. * @param theResult The string. */ void numberlit( OpCodeMapPositionType opPos, bool& theResult) const; /** * Get a literal value. The value is appended to the * supplied string. * * @param opPos The current position in the Op Map. * @param theResult The string. */ void numberlit( OpCodeMapPositionType opPos, XalanDOMString& theResult) const; /** * Get a literal value. * * @param opPos The current position in the Op Map. * @param formatterListener the FormatterListener instance to receive the result * @param function A pointer to the member function of FormatterListener to call */ void numberlit( OpCodeMapPositionType opPos, FormatterListener& formatterListener, MemberFunctionPtr function) const; /** * Setup for and run an extension function. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return the result of the function. */ const XObjectPtr runExtFunction( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Handle an extension function. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param theNamespace The namespace of the function. * @param functionName The name of the function. * @param executionContext current execution context * @return the result of the function. */ const XObjectPtr extfunction( XalanNode* context, OpCodeMapPositionType /* opPos */, const XalanDOMString& theNamespace, const XalanDOMString& functionName, const Function::XObjectArgVectorType& argVec, XPathExecutionContext& executionContext) const { return executionContext.extFunction(theNamespace, functionName, context, argVec, m_locator); } /** * Setup for and run a function. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return the result of the function. */ const XObjectPtr runFunction( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Handle a built-in function. * @param context The current source tree context node. * @param funcID The function ID. * @param argVec The arguments for the function. * @param executionContext current execution context * @return the result of the function. */ const XObjectPtr function( XalanNode* context, OpCodeMapValueType funcID, const Function::XObjectArgVectorType& argVec, XPathExecutionContext& executionContext) const { return s_functions[funcID].execute(executionContext, context, argVec, m_locator); } /** * Handle the built-in function "position". * * @param context The current source tree context node, which must not be 0. * @param executionContext current execution context * @return the result of the function. */ double functionPosition( XalanNode* context, XPathExecutionContext& executionContext) const { assert(context != 0); const XPathExecutionContext::size_type theResult = executionContext.getContextNodeListPosition(*context); assert(static_cast(theResult) == theResult); return static_cast(theResult); } /** * Handle the built-in function "last". * * @param executionContext current execution context * @return the result of the function. */ double functionLast(XPathExecutionContext& executionContext) const { const XPathExecutionContext::size_type theResult = executionContext.getContextNodeListLength(); assert(static_cast(theResult) == theResult); return static_cast(theResult); } /** * Handle the built-in function "count". * * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return the result of the function. */ double functionCount( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Handle the built-in function "not". * * @param context The current source tree context node, which must not be 0. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return the result of the function. */ bool functionNot( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { assert(context != 0); return !functionBoolean(context, opPos, executionContext); } /** * Handle the built-in function "boolean". * * @param context The current source tree context node, which must not be 0. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return the result of the function. */ bool functionBoolean( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { assert(context != 0); bool result; executeMore(context, opPos + 2, executionContext, result); return result; } /** * Handle the built-in function "name". * * @param context The current source tree context node, which must not be 0. * @return the result of the function. */ const XalanDOMString& functionName(XalanNode* context) const { assert(context != 0); return DOMServices::getNameOfNode(*context); } /** * Handle the built-in function "name". * * @param context The current source tree context node, which must not be 0. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return the result of the function. */ const XalanDOMString& functionName( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Handle the built-in function "local-name". * * @param context The current source tree context node, which must not be 0. * @return the result of the function. */ const XalanDOMString& functionLocalName(XalanNode* context) const; /** * Handle the built-in function "local-name". * * @param context The current source tree context node, which must not be 0. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return the result of the function. */ const XalanDOMString& functionLocalName( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Handle the built-in function "number". * * @param context The current source tree context node, which must not be 0. * @param executionContext current execution context * @return the result of the function. */ double functionNumber( XalanNode* context, XPathExecutionContext& executionContext) const { assert(context != 0); return XObject::number(executionContext, *context); } /** * Handle the built-in function "number". * * @param context The current source tree context node, which must not be 0. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return the result of the function. */ double functionNumber( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { double result; executeMore(context, opPos + 2, executionContext, result); return result; } /** * Handle the built-in function "floor". * * @param context The current source tree context node, which must not be 0. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return the result of the function. */ double functionFloor( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { return DoubleSupport::floor(functionNumber(context, opPos, executionContext)); } /** * Handle the built-in function "ceiling". * * @param context The current source tree context node, which must not be 0. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return the result of the function. */ double functionCeiling( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { return DoubleSupport::ceiling(functionNumber(context, opPos, executionContext)); } /** * Handle the built-in function "round". * * @param context The current source tree context node, which must not be 0. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return the result of the function. */ double functionRound( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const { return DoubleSupport::round(functionNumber(context, opPos, executionContext)); } /** * Handle the built-in function "string-length". * * @param context The current source tree context node, which must not be 0. * @param executionContext current execution context * @return the result of the function. */ double functionStringLength( XalanNode* context, XPathExecutionContext& executionContext) const; /** * Handle the built-in function "string-length". * * @param context The current source tree context node, which must not be 0. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return the result of the function. */ double functionStringLength( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Handle the built-in function "sum". * * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return the result of the function. */ double functionSum( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; /** * Get a numeric operand for an expression. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param executionContext current execution context * @return The value of the operand. */ double getNumericOperand( XalanNode* context, OpCodeMapPositionType opPos, XPathExecutionContext& executionContext) const; private: // These are not implemented... XPath(const XPath&); XPath& operator=(const XPath&); bool operator==(const XPath&) const; // Default vector allocation sizes. enum { eDefaultTargetDataSize = 5 }; OpCodeMapPositionType getInitialOpCodePosition() const { #if defined(XALAN_XPATH_EXPRESSION_USE_ITERATORS) assert(m_expression.getOpCodeMapValue(0) == XPathExpression::eOP_XPATH); #else assert(m_expression.getOpCodeMapValue( m_expression.getInitialOpCodePosition()) == XPathExpression::eOP_XPATH); #endif return m_expression.getInitialOpCodePosition() + 2; } eMatchScore locationPathPattern( XPathExecutionContext& executionContext, XalanNode& context, OpCodeMapPositionType opPos) const; protected: /** * Execute a step in a location path. * * @param xpath The xpath that is executing * @param context The current source tree context node * @param opPos The current position in the xpath operation map array * @param queryResults The set of nodes that matches the step. */ void step( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, MutableNodeRefList& queryResults) const; /** * Potentially evaluate a predicate in a match pattern step. * * @param executionContext The current execution context. * @param context The current source tree context node. * @param opPos The current position in the Op Map. * @param startOpPos The original position for the step in the Op Map. * @param score The current match score for the context node. * @return The resulting match score */ eMatchScore doStepPredicate( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapPositionType startOpPos, eMatchScore score) const; /** * Execute a step in a match pattern's location path. * * @param xpath The xpath that is executing * @param context The current source tree context node * @param opPos The current position in the xpath operation map array * @param scoreHolder a reference to an eMatchScore to receive * the result. * @return the last matched context node */ XalanNode* stepPattern( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, eMatchScore& scoreHolder) const; OpCodeMapPositionType findNodeSet( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const; OpCodeMapPositionType findRoot( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const; OpCodeMapPositionType findParent( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const; OpCodeMapPositionType findSelf( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const; OpCodeMapPositionType findAncestors( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const; OpCodeMapPositionType findAncestorsOrSelf( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const; OpCodeMapPositionType findAttributes( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const; OpCodeMapPositionType findChildren( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const; OpCodeMapPositionType findDescendants( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const; OpCodeMapPositionType findFollowing( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const; OpCodeMapPositionType findFollowingSiblings( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const; OpCodeMapPositionType findPreceeding( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const; OpCodeMapPositionType findPreceedingSiblings( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const; OpCodeMapPositionType findNamespace( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const; OpCodeMapPositionType findNodesOnUnknownAxis( XPathExecutionContext& executionContext, XalanNode* context, OpCodeMapPositionType opPos, OpCodeMapValueType stepType, MutableNodeRefList& subQueryResults) const; OpCodeMapPositionType predicates( XPathExecutionContext& executionContext, OpCodeMapPositionType opPos, MutableNodeRefList& subQueryResults) const; eMatchScore handleFoundIndex( XPathExecutionContext& executionContext, XalanNode* localContext, OpCodeMapPositionType startOpPos) const; eMatchScore handleFoundIndexPositional( XPathExecutionContext& executionContext, XalanNode* localContext, OpCodeMapPositionType startOpPos) const; private: void unknownOpCodeError( XalanNode* context, XPathExecutionContext& executionContext, OpCodeMapPositionType opPos) const; void notNodeSetError( XalanNode* context, XPathExecutionContext& executionContext) const; // Data members... /** * * Holds information about the current expression. * */ XPathExpression m_expression; /** * A Locator for reporting errors. */ const Locator* m_locator; /** * If true, the XPath can allocated XObjects in more * efficient ways, since its lifetime is guaranteed * to be at least that of the transformation. */ bool m_inStylesheet; /** * * This is the table of installed functions. * */ static FunctionTableType s_functions; static const XalanDOMString s_emptyString; }; XALAN_CPP_NAMESPACE_END #endif // XPATH_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/Function.hpp0000664000175000000640000001567311731656102017570 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTION_HEADER_GUARD_1357924680) #define FUNCTION_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include #include #include #include XALAN_DECLARE_XERCES_CLASS(Locator) XALAN_CPP_NAMESPACE_BEGIN class XalanNode; // Base class for all XPath function classes. // // These are all inline, even though // there are virtual functions, because we expect that they will only be // needed by the XPath class. class XALAN_XPATH_EXPORT Function { public: typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator LocatorType; explicit Function(); virtual ~Function(); typedef XPathExecutionContext::XObjectArgVectorType XObjectArgVectorType; typedef XPathExecutionContext::GetCachedString GetCachedString; typedef XPathExecutionContext::GetCachedNodeList GetCachedNodeList; /** * Execute an XPath function object. The function must return a valid * object. Extension functions should override this version of execute(), * rather than one of the other calls designed for a specific number of * arguments, since the extension function mechanism will call this * version first. Extension functions that accept more than three * arguments _must_ override this version. * * @param executionContext executing context * @param context current context node * @param args vector of pointers to XObject arguments * @param locator Locator instance for the XPath expression that contains the function call * @return pointer to the result XObject */ virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const; /** * Execute an XPath function object. The function must return a valid * object. Called if function has no parameters. * * @param executionContext executing context * @param context current context node * @param locator Locator instance for the XPath expression that contains the function call * @return pointer to the result XObject */ virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const Locator* locator) const; /** * Execute an XPath function object. The function must return a valid * object. Called if function has one parameter. * * @param executionContext executing context * @param context current context node * @param arg pointer to XObject argument * @param locator Locator instance for the XPath expression that contains the function call * @return pointer to the result XObject */ virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg, const Locator* locator) const; /** * Execute an XPath function object. The function must return a valid * object. Called if function has two parameters. * * @param executionContext executing context * @param context current context node * @param arg1 pointer to XObject argument * @param arg2 pointer to XObject argument * @param locator Locator instance for the XPath expression that contains the function call * @return pointer to the result XObject */ virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const XObjectPtr arg2, const Locator* locator) const; /** * Execute an XPath function object. The function must return a valid * object. Called if function has three parameters. * * @param executionContext executing context * @param context current context node * @param arg1 pointer to XObject arguments * @param arg2 pointer to XObject argument * @param arg3 pointer to XObject argument * @param locator Locator instance for the XPath expression that contains the function call * @return pointer to the result XObject */ virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const XObjectPtr arg2, const XObjectPtr arg3, const Locator* locator) const; /** * Create a copy of the function object. * * @return pointer to the new object */ virtual Function* clone(MemoryManager& theManager) const = 0; protected: /** * Get the error message to report when * the function is called with the wrong * number of arguments. * * @param theBuffer The XalanDOMString for the message. * @return The error message */ virtual const XalanDOMString& getError(XalanDOMString& theBuffer) const = 0; /** * Report the error returned from the getError() * call. * * @param executionContext The current XPathExecutionContext * @param context The context node * @param locator The Locator instance for the XPath expression that contains the function call */ void generalError( XPathExecutionContext& executionContext, const XalanNode* context, const Locator* locator) const; private: // Not implemented... Function& operator=(const Function&); bool operator==(const Function&) const; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTION_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XStringCachedAllocator.hpp0000664000175000000640000000620311731656102022317 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XSTRINGCACHEDALLOCATOR_INCLUDE_GUARD_1357924680) #define XSTRINGCACHEDALLOCATOR_INCLUDE_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XStringCachedAllocator { public: typedef XStringCached string_type; typedef string_type::GetCachedString GetCachedString; typedef ReusableArenaAllocator ArenaAllocatorType; typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XStringCachedAllocator( MemoryManager& theManager, size_type theBlockCount); ~XStringCachedAllocator(); /** * Create an XString object from a cached string. * * @param theXObject The source cached string * * @return a pointer to the new XStringCached instance. */ string_type* createString(GetCachedString& theValue); /** * Delete an XStringCached object from allocator. */ bool destroy(string_type* theString); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const string_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all XStringCached objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XStringCachedAllocator(const XStringCachedAllocator&); XStringCachedAllocator& operator=(const XStringCachedAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XSTRINGCACHEDALLOCATOR_INCLUDE_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/FunctionLang.hpp0000664000175000000640000000452111731656102020360 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONLANG_HEADER_GUARD_1357924680) #define FUNCTIONLANG_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file... #include XALAN_CPP_NAMESPACE_BEGIN /** * XPath implementation of "lang" function. */ class XALAN_XPATH_EXPORT FunctionLang : public Function { public: typedef Function ParentType; /** * Perform static initialization. See class XPathInit. */ static void initialize(MemoryManager& theManager); /** * Perform static shut down. See class XPathInit. */ static void terminate(); FunctionLang(); virtual ~FunctionLang(); // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionLang* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: // Not implemented... FunctionLang& operator=(const FunctionLang&); bool operator==(const FunctionLang&) const; static const XalanDOMString& s_attributeName; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONLANG_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XUnknown.hpp0000664000175000000640000000744111731656102017564 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XUKNOWN_HEADER_GUARD_1357924680) #define XUKNOWN_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XUnknown : public XObject { public: typedef XObject ParentType; /** * Perform static initialization. See class XPathInit. */ static void initialize(MemoryManager& theManager); /** * Perform static shut down. See class XPathInit. */ static void terminate(); /** * Construct an XUnknown object from a string. * * @param name The source string. * @param theMemoryManager The MemoryManager instance. */ XUnknown( const XalanDOMString& name, MemoryManager& theMemoryManager); /** * Construct an XUnknown from another one. * * @param source The XUnknown instance to copy. * @param theMemoryManager The MemoryManager instance. */ XUnknown( const XUnknown& source, MemoryManager& theMemoryManager); /** * Create an XUnknown object from a string. * * @param name the source string. * @param theMemoryManager The MemoryManager instance. */ static XUnknown* create( const XalanDOMString& name, MemoryManager& theMemoryManager); virtual ~XUnknown(); // These methods are inherited from XObject ... virtual const XalanDOMString& getTypeString() const; virtual double num(XPathExecutionContext& executionContext) const; virtual double num() const; virtual bool boolean(XPathExecutionContext& executionContext) const; virtual const XalanDOMString& str(XPathExecutionContext& executionContext) const; virtual const XalanDOMString& str() const; virtual void str( XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( XPathExecutionContext& executionContext, XalanDOMString& theBuffer) const; virtual void str(XalanDOMString& theBuffer) const; virtual double stringLength(XPathExecutionContext& executionContext) const; virtual void ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject); virtual void ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject) const; private: // undefined XUnknown(const XUnknown& source); XUnknown(); XalanDOMString m_value; static XalanDOMString s_unknownString; }; XALAN_CPP_NAMESPACE_END #endif // XUKNOWN_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XNodeSet.hpp0000664000175000000640000000524011731656102017461 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XNODESET_HEADER_GUARD_1357924680) #define XNODESET_HEADER_GUARD_1357924680 // Base include file. Must be first. #include // Base class header file. #include #include XALAN_CPP_NAMESPACE_BEGIN /** * Class to hold XPath return types. */ class XALAN_XPATH_EXPORT XNodeSet : public XNodeSetBase { public: typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; /** * Create an XNodeSet from a node list. * * @param value Pointer to source node list. The XNodeSet will adopt the pointer. * @param theMemoryManager The MemoryManager for the instance. */ XNodeSet( BorrowReturnMutableNodeRefList& value, MemoryManager& theMemoryManager); /** * Create an XNodeSet from another. * * @param source object to copy * @param theMemoryManager The MemoryManager for the instance. */ XNodeSet( const XNodeSet& source, MemoryManager& theMemoryManager); virtual ~XNodeSet(); // These methods are inherited from XNodeSetBase... virtual const NodeRefListBase& nodeset() const; virtual XalanNode* item(size_type index) const; virtual size_type getLength() const; /** * Release the node set held by the instance. */ void release(); /** * Change the value of an XNodeSet * * @param theValue The new value. */ void set(BorrowReturnMutableNodeRefList& value); private: // Not implemented... XNodeSet& operator=(const XNodeSet&); // Data members... BorrowReturnMutableNodeRefList m_value; }; XALAN_CPP_NAMESPACE_END #endif // XNODESET_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XNodeSetAllocator.hpp0000664000175000000640000000612311731656102021323 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XNODESETALLOCATOR_INCLUDE_GUARD_12455133) #define XNODESETALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XNodeSetAllocator { public: typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; typedef XNodeSet nodeset_type; typedef ReusableArenaAllocator ArenaAllocatorType; typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XNodeSetAllocator(MemoryManager& theManager, size_type theBlockCount); ~XNodeSetAllocator(); /** * Create an XNodeSet object using allocator from a string. * * @param value source NodeRefListBase * * @return pointer to a node */ nodeset_type* createNodeSet(BorrowReturnMutableNodeRefList& value); /** * Delete an XNodeSet object from allocator. */ bool destroy(nodeset_type* theNodeSet); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const nodeset_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all XNodeSet objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XNodeSetAllocator(const XNodeSetAllocator&); XNodeSetAllocator& operator=(const XNodeSetAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XNODESETALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XPath/XStringAdapterAllocator.cpp0000664000175000000640000000345411731656102022530 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XStringAdapterAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XStringAdapterAllocator::XStringAdapterAllocator( MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XStringAdapterAllocator::~XStringAdapterAllocator() { } XStringAdapterAllocator::string_type* XStringAdapterAllocator::createString( const XObjectPtr& theXObject, XPathExecutionContext& theExecutionContext) { string_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); string_type* const theResult = new(theBlock) string_type(theXObject, m_allocator.getMemoryManager(), theExecutionContext); m_allocator.commitAllocation(theBlock); return theResult; } bool XStringAdapterAllocator::destroy(string_type* theString) { return m_allocator.destroyObject(theString); } void XStringAdapterAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XPathFunctionTable.cpp0000664000175000000640000007111411731656102021470 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Base class header file #include "XPathFunctionTable.hpp" #include #include #include #include "FunctionConcat.hpp" #include "FunctionContains.hpp" #include "FunctionID.hpp" #include "FunctionLang.hpp" #include "FunctionString.hpp" #include "FunctionNamespaceURI.hpp" #include "FunctionNormalizeSpace.hpp" #include "FunctionStartsWith.hpp" #include "FunctionSubstring.hpp" #include "FunctionSubstringAfter.hpp" #include "FunctionSubstringBefore.hpp" #include "FunctionTranslate.hpp" XALAN_CPP_NAMESPACE_BEGIN class FunctionNotImplemented : public Function { public: FunctionNotImplemented(const XalanDOMChar* theName) : m_name(theName) { } /** * Create a copy of the function object. * * @return pointer to the new object */ virtual Function* clone(MemoryManager& theManager) const { typedef FunctionNotImplemented ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType(m_name); theGuard.release(); return theResult; } protected: /** * Get the error message to report when * the function is called with the wrong * number of arguments. * * @return function error message */ virtual const XalanDOMString& getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionIsNotImplemented_1Param, m_name); } private: // Not implemented... Function& operator=(const Function&); bool operator==(const Function&) const; const XalanDOMChar* const m_name; }; XPathFunctionTable::XPathFunctionTable( bool fCreateTable) : m_memoryManager(0), m_functionTable(), m_functionTableEnd(m_functionTable + (sizeof(m_functionTable) / sizeof(m_functionTable[0])) - 1) { assert(int(s_functionNamesSize) == TableSize); #if defined(XALAN_STRICT_ANSI_HEADERS) std::memset(m_functionTable, 0, sizeof(m_functionTable)); #else memset(m_functionTable, 0, sizeof(m_functionTable)); #endif if (fCreateTable == true) { CreateTable(); } } XPathFunctionTable::~XPathFunctionTable() { DestroyTable(); } void XPathFunctionTable::InstallFunction( const XalanDOMChar* theFunctionName, const Function& theFunction) { const int theFunctionID = getFunctionIndex(theFunctionName); assert (m_memoryManager != 0); if (theFunctionID == InvalidFunctionNumberID) { XalanDOMString theResult(*m_memoryManager); throw XPathExceptionFunctionNotSupported( theFunctionName, theResult, 0); } else { if (m_functionTable[theFunctionID] == 0) { m_functionTable[theFunctionID] = theFunction.clone(*m_memoryManager); } else { const Function* const theOldFunction = m_functionTable[theFunctionID]; m_functionTable[theFunctionID] = theFunction.clone(*m_memoryManager); const_cast(theOldFunction)->~Function(); m_memoryManager->deallocate((void*)theOldFunction); } } } bool XPathFunctionTable::UninstallFunction(const XalanDOMChar* theFunctionName) { const int theFunctionID = getFunctionIndex(theFunctionName); if (theFunctionID == InvalidFunctionNumberID) { return false; } else { Function* const theFunction = const_cast(m_functionTable[theFunctionID]); if (theFunction != 0) { m_functionTable[theFunctionID] = 0; XalanDestroy( *m_memoryManager, *theFunction); } return true; } } #if 0 #include void dumpTable( const XPathFunctionTable::FunctionNameIndexMapType& theTable, std::ostream& theSourceStream, std::ostream& theHeaderStream) { XPathFunctionTable::FunctionNameIndexMapType::const_iterator i = theTable.begin(); while(i != theTable.end()) { theSourceStream << "const XalanDOMChar\tXPathFunctionTable::s_"; const XalanDOMString& theString = (*i).first; theHeaderStream << "\t// The string \"" << theString << "\"\n\tstatic const XalanDOMChar\ts_"; bool nextCap = false; XalanDOMString::const_iterator j = theString.begin(); while(*j) { if (*j == '-') { nextCap = true; } else { assert(*j >= 'a' && *j <= 'z'); if (nextCap) { theSourceStream << char(*j -'a' + 'A'); theHeaderStream << char(*j -'a' + 'A'); nextCap = false; } else { theSourceStream << char(*j); theHeaderStream << char(*j); } } ++j; } j = theString.begin(); theSourceStream << "[] =\n{\n"; theHeaderStream << "[];\n\n"; while(*j) { if (*j == '-') { theSourceStream << "\tXalanUnicode::charHyphenMinus,\n"; } else { assert(*j >= 'a' && *j <= 'z'); theSourceStream << "\tXalanUnicode::charLetter_"; theSourceStream << char(*j) << ",\n"; } ++j; } theSourceStream << "\t0\n};\n\n"; ++i; } } #endif void XPathFunctionTable::CreateTable() { try { InstallFunction( s_id, FunctionID()); InstallFunction( s_key, FunctionNotImplemented(s_key)); InstallFunction( s_not, FunctionNotImplemented(s_not)); InstallFunction( s_sum, FunctionNotImplemented(s_sum)); InstallFunction( s_lang, FunctionLang()); InstallFunction( s_last, FunctionNotImplemented(s_last)); InstallFunction( s_name, FunctionNotImplemented(s_name)); InstallFunction( s_true, FunctionNotImplemented(s_true)); InstallFunction( s_count, FunctionNotImplemented(s_count)); InstallFunction( s_false, FunctionNotImplemented(s_false)); InstallFunction( s_floor, FunctionNotImplemented(s_floor)); InstallFunction( s_round, FunctionNotImplemented(s_round)); InstallFunction( s_concat, FunctionConcat()); InstallFunction( s_number, FunctionNotImplemented(s_number)); InstallFunction( s_string, FunctionString()); InstallFunction( s_boolean, FunctionNotImplemented(s_boolean)); InstallFunction( s_ceiling, FunctionNotImplemented(s_ceiling)); InstallFunction( s_current, FunctionNotImplemented(s_current)); InstallFunction( s_contains, FunctionContains()); InstallFunction( s_document, FunctionNotImplemented(s_document)); InstallFunction( s_position, FunctionNotImplemented(s_position)); InstallFunction( s_substring, FunctionSubstring()); InstallFunction( s_translate, FunctionTranslate()); InstallFunction( s_localName, FunctionNotImplemented(s_localName)); InstallFunction( s_generateId, FunctionNotImplemented(s_generateId)); InstallFunction( s_startsWith, FunctionStartsWith()); InstallFunction( s_formatNumber, FunctionNotImplemented(s_formatNumber)); InstallFunction( s_namespaceUri, FunctionNamespaceURI()); InstallFunction( s_stringLength, FunctionNotImplemented(s_stringLength)); InstallFunction( s_normalizeSpace, FunctionNormalizeSpace()); InstallFunction( s_substringAfter, FunctionSubstringAfter()); InstallFunction( s_systemProperty, FunctionNotImplemented(s_systemProperty)); InstallFunction( s_substringBefore, FunctionSubstringBefore()); InstallFunction( s_elementAvailable, FunctionNotImplemented(s_elementAvailable)); InstallFunction( s_functionAvailable, FunctionNotImplemented(s_functionAvailable)); InstallFunction( s_unparsedEntityUri, FunctionNotImplemented(s_unparsedEntityUri)); #if 0 std::ofstream theSourceStream("\\foo.cpp"); std::ofstream theHeaderStream("\\foo.hpp"); dumpTable(m_FunctionNameIndex, theSourceStream, theHeaderStream); #endif } catch(...) { DestroyTable(); throw; } } void XPathFunctionTable::DestroyTable() { try { XALAN_USING_STD(for_each) for_each( m_functionTable, m_functionTable + TableSize, DeleteFunctorType(*m_memoryManager)); #if defined(XALAN_STRICT_ANSI_HEADERS) std::memset(m_functionTable, 0, sizeof(m_functionTable)); #else memset(m_functionTable, 0, sizeof(m_functionTable)); #endif } catch(...) { } } int XPathFunctionTable::getFunctionIndex( const XalanDOMChar* theName, StringSizeType theNameLength) { assert(theName != 0); // Do a binary search... const FunctionNameTableEntry* theFirst = s_functionNames; const FunctionNameTableEntry* theLast = s_lastFunctionName; while(theFirst <= theLast) { const FunctionNameTableEntry* const theCurrent = theFirst + (theLast - theFirst) / 2; assert(theCurrent->m_size == length(theCurrent->m_name)); const int theResult = compare( theName, theNameLength, theCurrent->m_name, theCurrent->m_size); if (theResult < 0) { theLast = theCurrent - 1; } else if (theResult > 0) { theFirst = theCurrent + 1; } else { assert(int(theCurrent - s_functionNames) == theCurrent - s_functionNames); return int(theCurrent - s_functionNames); } } return InvalidFunctionNumberID; } XPathExceptionFunctionNotAvailable::XPathExceptionFunctionNotAvailable( const XalanDOMString& theFunctionNumber, XalanDOMString& theResult, const Locator* theLocator) : XalanXPathException( XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionNumberIsNotAvailable_1Param, theFunctionNumber), theResult.getMemoryManager(), theLocator) { } XPathExceptionFunctionNotAvailable::XPathExceptionFunctionNotAvailable(const XPathExceptionFunctionNotAvailable& other) : XalanXPathException(other) { } XPathExceptionFunctionNotAvailable::~XPathExceptionFunctionNotAvailable() { } XPathExceptionFunctionNotSupported::XPathExceptionFunctionNotSupported( const XalanDOMChar* theFunctionName, XalanDOMString& theResult, const Locator* theLocator) : XalanXPathException( XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionIsNotSupported_1Param, theFunctionName), theResult.getMemoryManager(), theLocator) { } XPathExceptionFunctionNotSupported::XPathExceptionFunctionNotSupported(const XPathExceptionFunctionNotSupported& other) : XalanXPathException(other) { } XPathExceptionFunctionNotSupported::~XPathExceptionFunctionNotSupported() { } const XalanDOMChar XPathFunctionTable::s_id[] = { XalanUnicode::charLetter_i, XalanUnicode::charLetter_d, 0 }; const XalanDOMChar XPathFunctionTable::s_key[] = { XalanUnicode::charLetter_k, XalanUnicode::charLetter_e, XalanUnicode::charLetter_y, 0 }; const XalanDOMChar XPathFunctionTable::s_not[] = { XalanUnicode::charLetter_n, XalanUnicode::charLetter_o, XalanUnicode::charLetter_t, 0 }; const XalanDOMChar XPathFunctionTable::s_sum[] = { XalanUnicode::charLetter_s, XalanUnicode::charLetter_u, XalanUnicode::charLetter_m, 0 }; const XalanDOMChar XPathFunctionTable::s_lang[] = { XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, 0 }; const XalanDOMChar XPathFunctionTable::s_last[] = { XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, 0 }; const XalanDOMChar XPathFunctionTable::s_name[] = { XalanUnicode::charLetter_n, XalanUnicode::charLetter_a, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar XPathFunctionTable::s_true[] = { XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_u, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar XPathFunctionTable::s_count[] = { XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_u, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, 0 }; const XalanDOMChar XPathFunctionTable::s_false[] = { XalanUnicode::charLetter_f, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_s, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar XPathFunctionTable::s_floor[] = { XalanUnicode::charLetter_f, XalanUnicode::charLetter_l, XalanUnicode::charLetter_o, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, 0 }; const XalanDOMChar XPathFunctionTable::s_round[] = { XalanUnicode::charLetter_r, XalanUnicode::charLetter_o, XalanUnicode::charLetter_u, XalanUnicode::charLetter_n, XalanUnicode::charLetter_d, 0 }; const XalanDOMChar XPathFunctionTable::s_concat[] = { XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, XalanUnicode::charLetter_c, XalanUnicode::charLetter_a, XalanUnicode::charLetter_t, 0 }; const XalanDOMChar XPathFunctionTable::s_number[] = { XalanUnicode::charLetter_n, XalanUnicode::charLetter_u, XalanUnicode::charLetter_m, XalanUnicode::charLetter_b, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, 0 }; const XalanDOMChar XPathFunctionTable::s_string[] = { XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, 0 }; const XalanDOMChar XPathFunctionTable::s_boolean[] = { XalanUnicode::charLetter_b, XalanUnicode::charLetter_o, XalanUnicode::charLetter_o, XalanUnicode::charLetter_l, XalanUnicode::charLetter_e, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, 0 }; const XalanDOMChar XPathFunctionTable::s_ceiling[] = { XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, 0 }; const XalanDOMChar XPathFunctionTable::s_current[] = { XalanUnicode::charLetter_c, XalanUnicode::charLetter_u, XalanUnicode::charLetter_r, XalanUnicode::charLetter_r, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, 0 }; const XalanDOMChar XPathFunctionTable::s_contains[] = { XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_s, 0 }; const XalanDOMChar XPathFunctionTable::s_document[] = { XalanUnicode::charLetter_d, XalanUnicode::charLetter_o, XalanUnicode::charLetter_c, XalanUnicode::charLetter_u, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, 0 }; const XalanDOMChar XPathFunctionTable::s_position[] = { XalanUnicode::charLetter_p, XalanUnicode::charLetter_o, XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; const XalanDOMChar XPathFunctionTable::s_substring[] = { XalanUnicode::charLetter_s, XalanUnicode::charLetter_u, XalanUnicode::charLetter_b, XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, 0 }; const XalanDOMChar XPathFunctionTable::s_translate[] = { XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_s, XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar XPathFunctionTable::s_localName[] = { XalanUnicode::charLetter_l, XalanUnicode::charLetter_o, XalanUnicode::charLetter_c, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_n, XalanUnicode::charLetter_a, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar XPathFunctionTable::s_generateId[] = { XalanUnicode::charLetter_g, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_i, XalanUnicode::charLetter_d, 0 }; const XalanDOMChar XPathFunctionTable::s_startsWith[] = { XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, XalanUnicode::charLetter_r, XalanUnicode::charLetter_t, XalanUnicode::charLetter_s, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_w, XalanUnicode::charLetter_i, XalanUnicode::charLetter_t, XalanUnicode::charLetter_h, 0 }; const XalanDOMChar XPathFunctionTable::s_formatNumber[] = { XalanUnicode::charLetter_f, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charLetter_m, XalanUnicode::charLetter_a, XalanUnicode::charLetter_t, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_n, XalanUnicode::charLetter_u, XalanUnicode::charLetter_m, XalanUnicode::charLetter_b, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, 0 }; const XalanDOMChar XPathFunctionTable::s_namespaceUri[] = { XalanUnicode::charLetter_n, XalanUnicode::charLetter_a, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charLetter_p, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_u, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, 0 }; const XalanDOMChar XPathFunctionTable::s_stringLength[] = { XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_l, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, XalanUnicode::charLetter_t, XalanUnicode::charLetter_h, 0 }; const XalanDOMChar XPathFunctionTable::s_normalizeSpace[] = { XalanUnicode::charLetter_n, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charLetter_m, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_i, XalanUnicode::charLetter_z, XalanUnicode::charLetter_e, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_s, XalanUnicode::charLetter_p, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar XPathFunctionTable::s_substringAfter[] = { XalanUnicode::charLetter_s, XalanUnicode::charLetter_u, XalanUnicode::charLetter_b, XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_a, XalanUnicode::charLetter_f, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, 0 }; const XalanDOMChar XPathFunctionTable::s_systemProperty[] = { XalanUnicode::charLetter_s, XalanUnicode::charLetter_y, XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_m, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_p, XalanUnicode::charLetter_r, XalanUnicode::charLetter_o, XalanUnicode::charLetter_p, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, XalanUnicode::charLetter_t, XalanUnicode::charLetter_y, 0 }; const XalanDOMChar XPathFunctionTable::s_substringBefore[] = { XalanUnicode::charLetter_s, XalanUnicode::charLetter_u, XalanUnicode::charLetter_b, XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_b, XalanUnicode::charLetter_e, XalanUnicode::charLetter_f, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar XPathFunctionTable::s_elementAvailable[] = { XalanUnicode::charLetter_e, XalanUnicode::charLetter_l, XalanUnicode::charLetter_e, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_a, XalanUnicode::charLetter_v, XalanUnicode::charLetter_a, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_b, XalanUnicode::charLetter_l, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar XPathFunctionTable::s_functionAvailable[] = { XalanUnicode::charLetter_f, XalanUnicode::charLetter_u, XalanUnicode::charLetter_n, XalanUnicode::charLetter_c, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_a, XalanUnicode::charLetter_v, XalanUnicode::charLetter_a, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_b, XalanUnicode::charLetter_l, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar XPathFunctionTable::s_unparsedEntityUri[] = { XalanUnicode::charLetter_u, XalanUnicode::charLetter_n, XalanUnicode::charLetter_p, XalanUnicode::charLetter_a, XalanUnicode::charLetter_r, XalanUnicode::charLetter_s, XalanUnicode::charLetter_e, XalanUnicode::charLetter_d, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_t, XalanUnicode::charLetter_y, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_u, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, 0 }; typedef XPathFunctionTable::SizeType SizeType; typedef XPathFunctionTable::FunctionNameTableEntry FunctionNameTableEntry; #define XFTBL_SIZE(str) ((sizeof(str) / sizeof(str[0]) - 1)) const FunctionNameTableEntry XPathFunctionTable::s_functionNames[] = { { s_id, XFTBL_SIZE(s_id) }, { s_key, XFTBL_SIZE(s_key) }, { s_not, XFTBL_SIZE(s_not) }, { s_sum, XFTBL_SIZE(s_sum) }, { s_lang, XFTBL_SIZE(s_lang) }, { s_last, XFTBL_SIZE(s_last) }, { s_name, XFTBL_SIZE(s_name) }, { s_true, XFTBL_SIZE(s_true) }, { s_count, XFTBL_SIZE(s_count) }, { s_false, XFTBL_SIZE(s_false) }, { s_floor, XFTBL_SIZE(s_floor) }, { s_round, XFTBL_SIZE(s_round) }, { s_concat, XFTBL_SIZE(s_concat) }, { s_number, XFTBL_SIZE(s_number) }, { s_string, XFTBL_SIZE(s_string) }, { s_boolean, XFTBL_SIZE(s_boolean) }, { s_ceiling, XFTBL_SIZE(s_ceiling) }, { s_current, XFTBL_SIZE(s_current) }, { s_contains, XFTBL_SIZE(s_contains) }, { s_document, XFTBL_SIZE(s_document) }, { s_position, XFTBL_SIZE(s_position) }, { s_substring, XFTBL_SIZE(s_substring) }, { s_translate, XFTBL_SIZE(s_translate) }, { s_localName, XFTBL_SIZE(s_localName) }, { s_generateId, XFTBL_SIZE(s_generateId) }, { s_startsWith, XFTBL_SIZE(s_startsWith) }, { s_formatNumber, XFTBL_SIZE(s_formatNumber) }, { s_namespaceUri, XFTBL_SIZE(s_namespaceUri) }, { s_stringLength, XFTBL_SIZE(s_stringLength) }, { s_normalizeSpace, XFTBL_SIZE(s_normalizeSpace) }, { s_substringAfter, XFTBL_SIZE(s_substringAfter) }, { s_systemProperty, XFTBL_SIZE(s_systemProperty) }, { s_substringBefore, XFTBL_SIZE(s_substringBefore) }, { s_elementAvailable, XFTBL_SIZE(s_elementAvailable) }, { s_functionAvailable, XFTBL_SIZE(s_functionAvailable) }, { s_unparsedEntityUri, XFTBL_SIZE(s_unparsedEntityUri) } }; const FunctionNameTableEntry* const XPathFunctionTable::s_lastFunctionName = &s_functionNames[sizeof(s_functionNames) / sizeof(s_functionNames[0]) - 1]; const SizeType XPathFunctionTable::s_functionNamesSize = sizeof(s_functionNames) / sizeof(s_functionNames[0]); XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XPathFactory.cpp0000664000175000000640000000172711731656102020345 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XPathFactory.hpp" XALAN_CPP_NAMESPACE_BEGIN XPathFactory::XPathFactory() { } XPathFactory::~XPathFactory() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XPathEvaluator.hpp0000664000175000000640000004311411731656102020701 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XPATHEVALUATOR_HEADER_GUARD_1357924680) #define XPATHEVALUATOR_HEADER_GUARD_1357924680 #include #if defined(XALAN_AUTO_PTR_REQUIRES_DEFINITION) #include #include #include #include #endif #include #include XALAN_CPP_NAMESPACE_BEGIN #if !defined(XALAN_AUTO_PTR_REQUIRES_DEFINITION) class XObjectFactory; class XPathFactoryDefault; class XPathConstructionContextDefault; class XPathExecutionContextDefault; #endif class DOMSupport; class NodeRefList; class PrefixResolver; class XalanNode; class XalanElement; class XObjectPtr; class XPath; class XPathEnvSupport; class XPathExecutionContext; class XALAN_XPATH_EXPORT XPathEvaluator { public: // Static initializer to be called before any instances are // created. The call is _not_ thread-safe, you must only call // it once, unless you have called terminate previously, and // you want to re-initialize the library. static void initialize(MemoryManager& theManager XALAN_DEFAULT_MEMMGR); // Static terminator to be called after all instances // are destroyed. The call is _not_ thread-safe. Once // terminated, you can call initialize() again, to // re-initialize the library. static void terminate(); XPathEvaluator(MemoryManager& theManager XALAN_DEFAULT_MEMMGR); ~XPathEvaluator(); /** * Evaluate the supplied XPath expression, within the given context. If * the expression doesn't select a node, 0 is returned. If it selects * more than one node, only the first is returned. * * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used. * @param contextNode The source tree context node * @param xpathString The XPath expression to evaluate * @param namespaceNode A node to use for namespace prefix resolution. * @return A pointer to the node selected by the expression, if any. */ XalanNode* selectSingleNode( DOMSupport& domSupport, XalanNode* contextNode, const XalanDOMChar* xpathString, const XalanElement* namespaceNode = 0); /** * Evaluate the supplied XPath expression, within the given context. If * the expression doesn't select a node, 0 is returned. If it selects * more than one node, only the first is returned. * * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used. * @param contextNode The source tree context node * @param xpathString The XPath expression to evaluate * @param prefixResolver A prefix resolver instance to use for namespace prefix resolution. * @return A pointer to the node selected by the expression, if any. */ XalanNode* selectSingleNode( DOMSupport& domSupport, XalanNode* contextNode, const XalanDOMChar* xpathString, const PrefixResolver& prefixResolver); /** * Evaluate the supplied XPath, within the given context. If * the expression doesn't select a node, 0 is returned. If it selects * more than one node, only the first is returned. * * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used. * @param contextNode The source tree context node * @param xpath A reference to a compiled XPath expression. * @param namespaceNode A node to use for namespace prefix resolution. * @return A pointer to the node selected by the expression, if any. */ XalanNode* selectSingleNode( DOMSupport& domSupport, XalanNode* contextNode, const XPath& xpath, const XalanElement* namespaceNode = 0); /** * Evaluate the supplied XPath, within the given context. If * the expression doesn't select a node, 0 is returned. If it selects * more than one node, only the first is returned. * * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used. * @param contextNode The source tree context node * @param xpath A reference to a compiled XPath expression. * @param prefixResolver A prefix resolver instance to use for namespace prefix resolution. * @return A pointer to the node selected by the expression, if any. */ XalanNode* selectSingleNode( DOMSupport& domSupport, XalanNode* contextNode, const XPath& xpath, const PrefixResolver& prefixResolver); /** * Evaluate the supplied XPath expression, within the given context. If * the expression doesn't select a node, an empty list is returned. * * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used. * @param contextNode The source tree context node * @param xpathString The XPath expression to evaluate * @param namespaceNode A node to use for namespace prefix resolution. * @return A list of selected nodes. */ NodeRefList& selectNodeList( NodeRefList& result, DOMSupport& domSupport, XalanNode* contextNode, const XalanDOMChar* xpathString, const XalanElement* namespaceNode = 0); /** * Evaluate the supplied XPath expression, within the given context. If * the expression doesn't select a node, an empty list is returned. * * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used. * @param contextNode The source tree context node * @param xpathString The XPath expression to evaluate * @param prefixResolver A prefix resolver instance to use for namespace prefix resolution. * @return A list of selected nodes. */ NodeRefList& selectNodeList( NodeRefList& result, DOMSupport& domSupport, XalanNode* contextNode, const XalanDOMChar* xpathString, const PrefixResolver& prefixResolver); /** * Evaluate the supplied XPath, within the given context. If * the expression doesn't select a node, an empty list is returned. * * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used. * @param contextNode The source tree context node * @param xpath A reference to a compiled XPath expression. * @param namespaceNode A node to use for namespace prefix resolution. * @return A list of selected nodes. */ NodeRefList& selectNodeList( NodeRefList& result, DOMSupport& domSupport, XalanNode* contextNode, const XPath& xpath, const XalanElement* namespaceNode = 0); /** * Evaluate the supplied XPath, within the given context. If * the expression doesn't select a node, an empty list is returned. * * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used. * @param contextNode The source tree context node * @param xpath A reference to a compiled XPath expression. * @param prefixResolver A prefix resolver instance to use for namespace prefix resolution. * @return A list of selected nodes. */ NodeRefList& selectNodeList( NodeRefList& result, DOMSupport& domSupport, XalanNode* contextNode, const XPath& xpath, const PrefixResolver& prefixResolver); /** * Evaluate the supplied XPath expression, within the given context. The * result is returned as a generalized object. The object will be * destroyed when the user's copy of the returned XObjectPtr goes out of * scope, or when the XPathEvaluator goes out of scope or another expression * is evaluated. * * The user's XObjectPtr copy _must_ no longer be in scope when the XPathEvaluator * instance goes out of scope, or another expression is evaluated. * * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used. * @param contextNode The source tree context node * @param xpathString The XPath expression to evaluate * @param namespaceNode A node to use for namespace prefix resolution. * @return The result of evaluting the XPath expression. */ XObjectPtr evaluate( DOMSupport& domSupport, XalanNode* contextNode, const XalanDOMChar* xpathString, const XalanElement* namespaceNode = 0); /** * Evaluate the supplied XPath expression, within the given context. The * result is returned as a generalized object. The object will be * destroyed when the user's copy of the returned XObjectPtr goes out of * scope, or when the XPathEvaluator goes out of scope or another expression * is evaluated. * * The user's XObjectPtr copy _must_ no longer be in scope when the XPathEvaluator * instance goes out of scope, or another expression is evaluated. * * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used. * @param contextNode The source tree context node * @param xpathString The XPath expression to evaluate * @param prefixResolver A prefix resolver instance to use for namespace prefix resolution. * @return The result of evaluting the XPath expression. */ XObjectPtr evaluate( DOMSupport& domSupport, XalanNode* contextNode, const XalanDOMChar* xpathString, const PrefixResolver& prefixResolver); /** * Evaluate the supplied XPath expression, within the given context. The * result is returned as a generalized object. The object will be * destroyed when the user's copy of the returned XObjectPtr goes out of * scope, or when the XPathEvaluator goes out of scope or another expression * is evaluated. * * The user's XObjectPtr copy _must_ no longer be in scope when the XPathEvaluator * instance goes out of scope, or another expression is evaluated. * * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used. * @param contextNode The source tree context node * @param xpath A reference to a compiled XPath expression. * @param namespaceNode A node to use for namespace prefix resolution. * @return The result of evaluting the XPath expression. */ XObjectPtr evaluate( DOMSupport& domSupport, XalanNode* contextNode, const XPath& xpath, const XalanElement* namespaceNode = 0); /** * Evaluate the supplied XPath expression, within the given context. The * result is returned as a generalized object. The object will be * destroyed when the user's copy of the returned XObjectPtr goes out of * scope, or when the XPathEvaluator goes out of scope or another expression * is evaluated. * * The user's XObjectPtr copy _must_ no longer be in scope when the XPathEvaluator * instance goes out of scope, or another expression is evaluated. * * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used. * @param contextNode The source tree context node * @param xpath A reference to a compiled XPath expression. * @param prefixResolver A prefix resolver instance to use for namespace prefix resolution. * @return The result of evaluting the XPath expression. */ XObjectPtr evaluate( DOMSupport& domSupport, XalanNode* contextNode, const XPath& xpath, const PrefixResolver& prefixResolver); /** * Compile an XPath expression into an object which can be used multiple times. * Call destroyXPath() when finished with the instance. Otherwise, the object * will be destroyed when the XPathEvaluator instance goes out of scope. Since * no PrefixResolver is supplied, the XPath expression may not contain any * namespace prefixes. * * @param xpathString The XPath expression to evaluate * @return A pointer to an XPath instance. */ XPath* createXPath(const XalanDOMChar* xpathString); /** * Compile an XPath expression into an object which can be used multiple times. * Call destroyXPath() when finished with the instance. Otherwise, the object * will be destroyed when the XPathEvaluator instance goes out of scope. * * @param xpathString The XPath expression to evaluate * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used. * @param namespaceNode A node to use for namespace prefix resolution. * @return A pointer to an XPath instance. */ XPath* createXPath( const XalanDOMChar* xpathString, DOMSupport& domSupport, const XalanElement* namespaceNode); /** * Compile an XPath expression into an object which can be used multiple times. * Call destroyXPath() when finished with the instance. Otherwise, the object * will be destroyed when the XPathEvaluator instance goes out of scope. * * @param xpathString The XPath expression to evaluate * @param prefixResolver A prefix resolver instance to use for namespace prefix resolution. * @return A pointer to an XPath instance. */ XPath* createXPath( const XalanDOMChar* xpathString, const PrefixResolver& prefixResolver); /** * Destory a compiled XPath instance. The instance must have * been created using createXPath(). * * @param theXPath The XPath instance to destroy * @return true if the instance was successfully destroyed */ bool destroyXPath(XPath* theXPath); XPathExecutionContext& getExecutionContext(); private: /** * A helper function to evaluate the supplied XPath expression, within * the given context. * * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used. * @param contextNode The source tree context node * @param xpathString The XPath expression to evaluate * @param prefixResolver A prefix resolver instance to use for namespace prefix resolution. * @param envSupport The XPathEnvSupport instance to use. * @return The result of evaluting the XPath expression. */ XObjectPtr evaluate( DOMSupport& domSupport, XalanNode* contextNode, const XalanDOMChar* xpathString, const PrefixResolver& prefixResolver, XPathEnvSupport& envSupport); /** * A helper function to evaluate the supplied XPath expression, within * the given context. * * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used. * @param contextNode The source tree context node * @param xpath The XPath to evaluate * @param prefixResolver A prefix resolver instance to use for namespace prefix resolution. * @param envSupport The XPathEnvSupport instance to use. * @return The result of evaluting the XPath expression. */ XObjectPtr evaluate( DOMSupport& domSupport, XalanNode* contextNode, const XPath& xpath, const PrefixResolver& prefixResolver, XPathEnvSupport& envSupport); // Data members... const XalanMemMgrAutoPtr m_xobjectFactory; const XalanMemMgrAutoPtr m_xpathFactory; const XalanMemMgrAutoPtr m_constructionContext; const XalanMemMgrAutoPtr m_executionContext; MemoryManager& m_memoryManager; }; XALAN_CPP_NAMESPACE_END #endif // XPATHEVALUATOR_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XPathInit.hpp0000664000175000000640000000340011731656102017634 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XPATHINIT_INCLUDE_GUARD_1357924680) #define XPATHINIT_INCLUDE_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XPathInit { public: explicit XPathInit(MemoryManager& theManager XALAN_DEFAULT_MEMMGR); static XPathInit* create(MemoryManager& theManager); ~XPathInit(); private: // Not implemented... XPathInit(const XPathInit&); XPathInit& operator=(const XPathInit&); static void initialize(MemoryManager& theManager); static void terminate(); const PlatformSupportInit m_platformSupportInit; const DOMSupportInit m_domSupportInit; static unsigned long s_initCounter; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XPATHINIT_INCLUDE_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XPath/FunctionConcat.cpp0000664000175000000640000000676211731656102020712 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionConcat.hpp" #include #include "XObjectFactory.hpp" XALAN_CPP_NAMESPACE_BEGIN FunctionConcat::FunctionConcat() { } FunctionConcat::~FunctionConcat() { } XObjectPtr FunctionConcat::execute( XPathExecutionContext& executionContext, XalanNode* /* context */, const XObjectPtr arg1, const XObjectPtr arg2, const Locator* const /* locator */) const { assert(arg1.null() == false && arg2.null() == false); GetCachedString theResult(executionContext); XalanDOMString& theString = theResult.get(); arg1->str(executionContext, theString); arg2->str(executionContext, theString); return executionContext.getXObjectFactory().createString(theResult); } XObjectPtr FunctionConcat::execute( XPathExecutionContext& executionContext, XalanNode* /* context */, const XObjectPtr arg1, const XObjectPtr arg2, const XObjectPtr arg3, const Locator* const /* locator */) const { assert(arg1.null() == false && arg2.null() == false && arg3.null() == false); GetCachedString theResult(executionContext); XalanDOMString& theString = theResult.get(); arg1->str(executionContext, theString); arg2->str(executionContext, theString); arg3->str(executionContext, theString); return executionContext.getXObjectFactory().createString(theResult); } XObjectPtr FunctionConcat::execute( XPathExecutionContext& executionContext, XalanNode* /* context */, const XObjectArgVectorType& args, const Locator* /* locator */) const { const XObjectArgVectorType::const_iterator theEnd = args.end(); GetCachedString theResult(executionContext); XalanDOMString& theString = theResult.get(); XObjectArgVectorType::const_iterator i = args.begin(); for(; i != theEnd; ++i) { (*i)->str(executionContext, theString); } return executionContext.getXObjectFactory().createString(theResult); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionConcat* #endif FunctionConcat::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionConcat::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionTakes2ArgsAtLeast_1Param, "concat()"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XalanQNameByValue.cpp0000664000175000000640000002674111731656102021251 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XalanQNameByValue.hpp" #include #include #include #include #include #include "ElementPrefixResolverProxy.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanQNameByValue::XalanQNameByValue(MemoryManager& theManager) : XalanQName(), m_namespace(theManager), m_localpart(theManager) { } XalanQNameByValue::XalanQNameByValue( const XalanQNameByValue& theSource, MemoryManager& theManager) : XalanQName(theSource), m_namespace(theSource.m_namespace, theManager), m_localpart(theSource.m_localpart, theManager) { } XalanQNameByValue::XalanQNameByValue( const XalanQName& theSource, MemoryManager& theManager) : XalanQName(), m_namespace(theSource.getNamespace(), theManager), m_localpart(theSource.getLocalPart(), theManager) { } XalanQNameByValue::XalanQNameByValue( const XalanDOMString& theNamespace, const XalanDOMString& theLocalPart, MemoryManager& theManager) : XalanQName(), m_namespace(theNamespace, theManager), m_localpart(theLocalPart, theManager) { } XalanQNameByValue* XalanQNameByValue::create( const XalanDOMString& theNamespace, const XalanDOMString& theLocalPart, MemoryManager& theManager) { typedef XalanQNameByValue ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( theNamespace, theLocalPart, theManager); theGuard.release(); return theResult; } XalanQNameByValue::XalanQNameByValue( const XalanDOMString& qname, const NamespacesStackType& namespaces, MemoryManager& theManager, const Locator* locator, bool fUseDefault) : XalanQName(), m_namespace(theManager), m_localpart(theManager) { initialize( qname.c_str(), qname.length(), namespaces, locator, fUseDefault); } XalanQNameByValue::XalanQNameByValue( const XalanDOMChar* qname, const NamespacesStackType& namespaces, MemoryManager& theManager, const Locator* locator, bool fUseDefault) : XalanQName(), m_namespace(theManager), m_localpart(theManager) { assert(qname != 0); initialize( qname, length(qname), namespaces, locator, fUseDefault); } XalanQNameByValue::XalanQNameByValue( const XalanDOMString& qname, MemoryManager& theManager, const PrefixResolver* theResolver, const Locator* locator) : XalanQName(), m_namespace(theManager), m_localpart(theManager) { resolvePrefix( qname.c_str(), qname.length(), theResolver, locator); } XalanQNameByValue::~XalanQNameByValue() { } const XalanDOMString& XalanQNameByValue::getLocalPart() const { return m_localpart; } const XalanDOMString& XalanQNameByValue::getNamespace() const { return m_namespace; } void XalanQNameByValue::set( const XalanDOMString& qname, const NamespacesStackType& namespaces, const Locator* locator, bool fUseDefault) { initialize( qname.c_str(), qname.length(), namespaces, locator, fUseDefault); } void XalanQNameByValue::set( const XalanDOMChar* qname, const NamespacesStackType& namespaces, const Locator* locator, bool fUseDefault) { assert(qname != 0); initialize( qname, length(qname), namespaces, locator, fUseDefault); } void XalanQNameByValue::set( const XalanDOMString& qname, const PrefixResolver* theResolver, const Locator* locator) { resolvePrefix( qname.c_str(), qname.length(), theResolver, locator); } void XalanQNameByValue::set( const XalanDOMChar* qname, const PrefixResolver* theResolver, const Locator* locator) { assert(qname != 0); resolvePrefix( qname, length(qname), theResolver, locator); } static void throwException( MemoryManager& theMemoryManager, XalanMessages::Codes theCode, const XalanDOMString& theParameter, const Locator* theLocator) { XalanDOMString theMessage(theMemoryManager); XalanMessageLoader::getMessage( theMessage, theCode, theParameter); throw XalanQName::InvalidQNameException( theMessage, theMemoryManager, theLocator); } static void throwException( MemoryManager& theMemoryManager, const XalanDOMChar* theQName, XalanDOMString::size_type theLength, const Locator* theLocator) { XalanDOMString theBuffer(theMemoryManager); throw XalanQName::InvalidQNameException( theQName, theLength, theBuffer, theLocator); } void XalanQNameByValue::initialize( const XalanDOMChar* qname, XalanDOMString::size_type len, const NamespacesStackType& namespaces, const Locator* locator, bool fUseDefault) { const XalanDOMString::size_type indexOfNSSep = indexOf(qname, XalanUnicode::charColon); if (indexOfNSSep == 0) { throwException( getMemoryManager(), XalanMessages::PrefixOfLengthZeroDetected, m_localpart, // This is a dummy parameter... locator); } else if(indexOfNSSep < len) { // Reserve some space for the local part right now, and // use it as a temporary for the prefix. m_localpart.reserve(len); m_localpart.assign(qname, indexOfNSSep); if(m_localpart == DOMServices::s_XMLString) { m_namespace = DOMServices::s_XMLNamespaceURI; } else if(m_localpart == DOMServices::s_XMLNamespace) { // The xmlns prefix is not normally bound to a namespace URI, but we're really trying // to form a QName, so we'll do what the DOM does... m_namespace = DOMServices::s_XMLNamespacePrefixURI; } else { const XalanDOMString* const theNamespace = getNamespaceForPrefix(namespaces, m_localpart); if(theNamespace == 0 || theNamespace->empty() == true) { throwException( getMemoryManager(), XalanMessages::PrefixIsNotDeclared_1Param, m_localpart, locator); } else { m_namespace = *theNamespace; } } m_localpart.assign(qname + indexOfNSSep + 1, len - (indexOfNSSep + 1)); } else { if (fUseDefault == false) { m_namespace.clear(); } else { const XalanDOMString* const theNamespace = getNamespaceForPrefix(namespaces, s_emptyString); if(theNamespace != 0 && theNamespace->empty() == false) { m_namespace = *theNamespace; } } m_localpart = qname; } validate(qname, len, locator); } void XalanQNameByValue::resolvePrefix( const XalanDOMChar* qname, XalanDOMString::size_type theLength, const PrefixResolver* theResolver, const Locator* locator) { const XalanDOMString::size_type indexOfNSSep = indexOf(qname, XalanUnicode::charColon); if (indexOfNSSep == 0) { throwException( getMemoryManager(), XalanMessages::PrefixOfLengthZeroDetected, m_localpart, // This is a dummy parameter... locator); } else if(indexOfNSSep >= theLength) { m_localpart.assign(qname, theLength); m_namespace.clear(); } else { // Reserve some space for the local part right now, and // use it as a temporary for the prefix. m_localpart.reserve(theLength); m_localpart.assign(qname, indexOfNSSep); if(m_localpart == DOMServices::s_XMLString) { m_namespace = DOMServices::s_XMLNamespaceURI; } else if(m_localpart == DOMServices::s_XMLNamespace) { // The xmlns prefix is not normally bound to a namespace URI, but we're really trying // to form a QName, so we'll do what the DOM does... m_namespace = DOMServices::s_XMLNamespacePrefixURI; } else if (theResolver == 0) { throwException( getMemoryManager(), XalanMessages::PrefixIsNotDeclared_1Param, m_localpart, locator); } else { const XalanDOMString* const theNamespace = theResolver->getNamespaceForPrefix(m_localpart); if (theNamespace != 0) { m_namespace = *theNamespace; } } if(m_namespace.empty() == true) { throwException( getMemoryManager(), XalanMessages::PrefixIsNotDeclared_1Param, m_localpart, locator); } m_localpart.assign( qname + indexOfNSSep + 1, theLength - (indexOfNSSep + 1)); } validate(qname, theLength, locator); } void XalanQNameByValue::validate( const XalanDOMChar* theQName, XalanDOMString::size_type theLength, const Locator* theLocator) { if (isValid() == false) { throwException( getMemoryManager(), theQName, theLength, theLocator); } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XNumber.cpp0000664000175000000640000000713411731656102017347 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XNumber.hpp" #include XALAN_CPP_NAMESPACE_BEGIN XNumber::XNumber( double val, MemoryManager& theMemoryManager) : XNumberBase(theMemoryManager), m_value(val), m_cachedStringValue(theMemoryManager) { } XNumber::XNumber( const XNumber& source, MemoryManager& theMemoryManager) : XNumberBase(source, theMemoryManager), m_value(source.m_value), m_cachedStringValue(source.m_cachedStringValue, theMemoryManager) { } XNumber::~XNumber() { } double XNumber::num(XPathExecutionContext& /* executionContext */) const { return m_value; } double XNumber::num() const { return m_value; } const XalanDOMString& XNumber::str(XPathExecutionContext& /* executionContext */) const { if (m_cachedStringValue.empty() == true) { NumberToDOMString(m_value, m_cachedStringValue); } return m_cachedStringValue; } const XalanDOMString& XNumber::str() const { if (m_cachedStringValue.empty() == true) { NumberToDOMString(m_value, m_cachedStringValue); } return m_cachedStringValue; } void XNumber::str( XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const { const XalanDOMString& theValue = str(executionContext); assert(theValue.length() == FormatterListener::size_type(theValue.length())); (formatterListener.*function)( theValue.c_str(), FormatterListener::size_type(theValue.length())); } void XNumber::str( FormatterListener& formatterListener, MemberFunctionPtr function) const { const XalanDOMString& theValue = str(); assert(theValue.length() == FormatterListener::size_type(theValue.length())); (formatterListener.*function)( theValue.c_str(), FormatterListener::size_type(theValue.length())); } void XNumber::str( XPathExecutionContext& /* executionContext */, XalanDOMString& theBuffer) const { if (m_cachedStringValue.empty() == false) { theBuffer.append(m_cachedStringValue); } else { NumberToDOMString(m_value, theBuffer); } } void XNumber::str(XalanDOMString& theBuffer) const { if (m_cachedStringValue.empty() == false) { theBuffer.append(m_cachedStringValue); } else { NumberToDOMString(m_value, theBuffer); } } double XNumber::stringLength(XPathExecutionContext& executionContext) const { return static_cast(str(executionContext).length()); } void XNumber::set(double theValue) { m_value = theValue; m_cachedStringValue.clear(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/FunctionString.hpp0000664000175000000640000000446711731656102020756 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONSTRING_HEADER_GUARD_1357924680) #define FUNCTIONSTRING_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include // Base class header file... #include #include XALAN_CPP_NAMESPACE_BEGIN /** * XPath implementation of "string" function. */ class XALAN_XPATH_EXPORT FunctionString : public Function { public: typedef Function ParentType; FunctionString(); virtual ~FunctionString(); // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const Locator* locator) const; virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionString* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: // Not implemented... FunctionString& operator=(const FunctionString&); bool operator==(const FunctionString&) const; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONSTRING_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/NodeRefList.hpp0000664000175000000640000000665411731656102020160 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(NODEREFLIST_HEADER_GUARD_1357924680) #define NODEREFLIST_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN /** * Local implementation of NodeRefList. This class is for internal use only. */ class XALAN_XPATH_EXPORT NodeRefList : public NodeRefListBase { public: explicit NodeRefList(MemoryManager& theManager XALAN_DEFAULT_CONSTRUCTOR_MEMMGR); /** * Construct a node list from another * * @param theSource source node list */ NodeRefList( const NodeRefList& theSource, MemoryManager& theManager XALAN_DEFAULT_CONSTRUCTOR_MEMMGR); MemoryManager& getMemoryManager() { return m_nodeList.getMemoryManager(); } /** * Construct a node list from another * * @param theSource source node list */ explicit NodeRefList( const NodeRefListBase& theSource, MemoryManager& theManager XALAN_DEFAULT_CONSTRUCTOR_MEMMGR); virtual ~NodeRefList(); NodeRefList& operator=(const NodeRefListBase& theRHS); NodeRefList& operator=(const NodeRefList& theRHS); bool empty() const { return m_nodeList.empty(); } // These methods are inherited from NodeRefListBase ... virtual XalanNode* item(size_type index) const; virtual size_type getLength() const; virtual size_type indexOf(const XalanNode* theNode) const; #if !defined(NDEBUG) bool checkForDuplicates(MemoryManager& theManager) const; #endif typedef XalanVector NodeListVectorType; void swap(NodeRefList& theOther) { m_nodeList.swap(theOther.m_nodeList); } protected: // Default vector allocation size. It seems high, but // it's really worth it... enum { eDefaultVectorSize = 100 }; /** * Ensure that an allocation is either the default allocation * amount, or the amount specified in the parameter, whichever * is larger. * * @param theSize The requested size. */ void ensureAllocation(NodeListVectorType::size_type theSize = 0) { m_nodeList.reserve(eDefaultVectorSize > theSize ? eDefaultVectorSize : theSize); } NodeListVectorType m_nodeList; private: #if defined (XALAN_DEVELOPMENT) // not defined NodeRefList(); NodeRefList(const NodeRefList& theSource); #endif }; XALAN_CPP_NAMESPACE_END #endif // NODEREFLIST_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/XNodeSetBase.cpp0000664000175000000640000001426611731656102020257 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XNodeSetBase.hpp" #include #include #include #include #include "FormatterStringLengthCounter.hpp" #include "XObjectTypeCallback.hpp" #include "XPathExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN const double theBogusNumberValue = 123456789; XNodeSetBase::XNodeSetBase(MemoryManager& theMemoryManager) : XObject(eTypeNodeSet, theMemoryManager), m_proxy(*this), m_cachedStringValue(theMemoryManager), m_cachedNumberValue(theBogusNumberValue) { } XNodeSetBase::XNodeSetBase( const XNodeSetBase& source, MemoryManager& theMemoryManager) : XObject(source, theMemoryManager), m_proxy(*this), m_cachedStringValue(source.m_cachedStringValue, theMemoryManager), m_cachedNumberValue(source.m_cachedNumberValue) { } XNodeSetBase::~XNodeSetBase() { } const XalanDOMString& XNodeSetBase::getTypeString() const { return s_nodesetString; } double XNodeSetBase::num(XPathExecutionContext& executionContext) const { if (DoubleSupport::equal(m_cachedNumberValue, theBogusNumberValue) == true) { m_cachedNumberValue = DoubleSupport::toDouble( str(executionContext), getMemoryManager()); } return m_cachedNumberValue; } bool XNodeSetBase::boolean(XPathExecutionContext& /* executionContext */) const { return getLength() > 0 ? true : false; } const XalanDOMString& XNodeSetBase::str(XPathExecutionContext& executionContext) const { if (m_cachedStringValue.empty() == true && getLength() > 0) { const XalanNode* const theNode = item(0); assert(theNode != 0); DOMServices::getNodeData( *theNode, executionContext, m_cachedStringValue); } return m_cachedStringValue; } const XalanDOMString& XNodeSetBase::str() const { if (m_cachedStringValue.empty() == true && getLength() > 0) { const XalanNode* const theNode = item(0); assert(theNode != 0); DOMServices::getNodeData( *theNode, m_cachedStringValue); } return m_cachedStringValue; } void XNodeSetBase::str( XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const { if (m_cachedStringValue.empty() == false) { XObject::string(m_cachedStringValue, formatterListener, function); } else if (getLength() > 0) { const XalanNode* const theNode = item(0); assert(theNode != 0); DOMServices::getNodeData( *theNode, executionContext, formatterListener, function); } } void XNodeSetBase::str( FormatterListener& formatterListener, MemberFunctionPtr function) const { if (m_cachedStringValue.empty() == false) { XObject::string(m_cachedStringValue, formatterListener, function); } else if (getLength() > 0) { const XalanNode* const theNode = item(0); assert(theNode != 0); DOMServices::getNodeData( *theNode, formatterListener, function); } } void XNodeSetBase::str( XPathExecutionContext& executionContext, XalanDOMString& theBuffer) const { if (m_cachedStringValue.empty() == false) { theBuffer.append(m_cachedStringValue); } else if (getLength() > 0) { const XalanNode* const theNode = item(0); assert(theNode != 0); DOMServices::getNodeData( *theNode, executionContext, theBuffer); } } void XNodeSetBase::str(XalanDOMString& theBuffer) const { if (m_cachedStringValue.empty() == false) { theBuffer.append(m_cachedStringValue); } else if (getLength() > 0) { const XalanNode* const theNode = item(0); assert(theNode != 0); DOMServices::getNodeData( *theNode, theBuffer); } } double XNodeSetBase::stringLength(XPathExecutionContext& executionContext) const { if (m_cachedStringValue.empty() == false) { return static_cast(m_cachedStringValue.length()); } else if (getLength() == 0) { return 0; } else { const XalanNode* const theNode = item(0); assert(theNode != 0); FormatterStringLengthCounter theCounter; DOMServices::getNodeData( *theNode, executionContext, theCounter, &FormatterListener::characters); return static_cast(theCounter.getCount()); } } const XalanDocumentFragment& XNodeSetBase::rtree() const { return m_proxy; } void XNodeSetBase::ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject) { theCallbackObject.NodeSet( *this, nodeset()); } void XNodeSetBase::ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject) const { theCallbackObject.NodeSet( *this, nodeset()); } void XNodeSetBase::clearCachedValues() { m_cachedNumberValue = theBogusNumberValue; m_cachedStringValue.clear(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XPathAllocator.cpp0000664000175000000640000000264311731656102020654 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XPathAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XPathAllocator::XPathAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XPathAllocator::~XPathAllocator() { } XPathAllocator::object_type* XPathAllocator::create() { object_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); new(theBlock) object_type(m_allocator.getMemoryManager()); m_allocator.commitAllocation(theBlock); return theBlock; } void XPathAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XStringCached.cpp0000664000175000000640000000510511731656102020451 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XStringCached.hpp" #include XALAN_CPP_NAMESPACE_BEGIN XStringCached::XStringCached( GetCachedString& val, MemoryManager& theManager) : XStringBase(theManager), m_value(val) { } XStringCached::XStringCached( const XStringCached& source, MemoryManager& theManager) : XStringBase(source, theManager), m_value(source.m_value.getExecutionContext()) { m_value.get() = source.m_value.get(); } XStringCached::~XStringCached() { } const XalanDOMString& XStringCached::str(XPathExecutionContext& /* executionContext */) const { return m_value.get(); } const XalanDOMString& XStringCached::str() const { return m_value.get(); } void XStringCached::str( XPathExecutionContext& /* executionContext */, FormatterListener& formatterListener, MemberFunctionPtr function) const { string(m_value.get(), formatterListener, function); } void XStringCached::str( FormatterListener& formatterListener, MemberFunctionPtr function) const { string(m_value.get(), formatterListener, function); } void XStringCached::str( XPathExecutionContext& /* executionContext */, XalanDOMString& theBuffer) const { theBuffer.append(m_value.get()); } void XStringCached::str(XalanDOMString& theBuffer) const { theBuffer.append(m_value.get()); } double XStringCached::stringLength(XPathExecutionContext& /* executionContext */) const { return static_cast(m_value.get().length()); } XStringCached::eObjectType XStringCached::getRealType() const { return eTypeStringCached; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XPath/XTokenNumberAdapterAllocator.hpp0000664000175000000640000000633211731656102023516 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XTOKENNUMBERADAPTERALLOCATOR_INCLUDE_GUARD_1357924680) #define XTOKENNUMBERADAPTERALLOCATOR_INCLUDE_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XPATH_EXPORT XTokenNumberAdapterAllocator { public: typedef XTokenNumberAdapter object_type; typedef ReusableArenaAllocator ArenaAllocatorType; typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XTokenNumberAdapterAllocator( MemoryManager& theMemoryManager, size_type theBlockCount); ~XTokenNumberAdapterAllocator(); /** * Create an instance from an XToken. * * @param theXToken The source XToken * * @return A pointer to the new object */ object_type* create(const XToken& theXToken); /** * Delete an XStringAdapter object from allocator. */ bool destroy(object_type* theObject); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const object_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all XStringAdapter objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: MemoryManager& getMemoryManager() { return m_allocator.getMemoryManager(); } // Not implemented... XTokenNumberAdapterAllocator(const XTokenNumberAdapterAllocator&); XTokenNumberAdapterAllocator& operator=(const XTokenNumberAdapterAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XTOKENNUMBERADAPTERALLOCATOR_INCLUDE_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XPath/ElementPrefixResolverProxy.cpp0000664000175000000640000000460511731656102023322 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "ElementPrefixResolverProxy.hpp" #include #include #include #include #include "XPathEnvSupport.hpp" XALAN_CPP_NAMESPACE_BEGIN ElementPrefixResolverProxy::ElementPrefixResolverProxy( const XalanElement* namespaceContext, const XPathEnvSupport& envSupport, const DOMSupport& /* domSupport */, MemoryManager& theManager) : m_namespaceContext(namespaceContext), m_envSupport(&envSupport), m_uri(theManager) { } ElementPrefixResolverProxy::ElementPrefixResolverProxy( const XalanElement* namespaceContext, MemoryManager& theManager, const XPathEnvSupport* envSupport) : m_namespaceContext(namespaceContext), m_envSupport(envSupport), m_uri(theManager) { } ElementPrefixResolverProxy::~ElementPrefixResolverProxy() { } const XalanDOMString* ElementPrefixResolverProxy::getNamespaceForPrefix(const XalanDOMString& prefix) const { if (m_namespaceContext == 0) { return 0; } else { return DOMServices::getNamespaceForPrefix(prefix, *m_namespaceContext); } } const XalanDOMString& ElementPrefixResolverProxy::getURI() const { if (m_envSupport != 0 && m_namespaceContext != 0 && m_uri.empty() == true) { m_uri = m_envSupport->findURIFromDoc(m_namespaceContext->getOwnerDocument()); } return m_uri; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/0002775000175000000640000000000012037700125020154 5ustar stevesambaxalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/0002775000175000000640000000000012037700125022214 5ustar stevesambaxalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentFragmentBridge.hpp0000664000175000000640000003537511731656102030476 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESDOCUMENTFRAGMENTBRIDGE_HEADER_GUARD_1357924680) #define XERCESDOCUMENTFRAGMENTBRIDGE_HEADER_GUARD_1357924680 #include #if XERCES_VERSION_MAJOR >= 2 #include #else #include #endif #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesBridgeNavigator; /** * This class is deprecated. * * @deprecated This class is part of the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesDocumentFragmentBridge : public XalanDocumentFragment { public: typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_DocumentFragment DOM_DocumentFragmentType; XercesDocumentFragmentBridge( const DOM_DocumentFragmentType& theXercesDOMDocumentFragment, const XercesBridgeNavigator& theNavigator); virtual ~XercesDocumentFragmentBridge(); // These interfaces are inherited from XalanNode... virtual const XalanDOMString& getNodeName() const; /** * Gets the value of this node, depending on its type. */ virtual const XalanDOMString& getNodeValue() const; /** * An enum value representing the type of the underlying object. */ virtual NodeType getNodeType() const; /** * Gets the parent of this node. * * All nodes, except Document, * DocumentFragment, and Attr may have a parent. * However, if a node has just been created and not yet added to the tree, * or if it has been removed from the tree, a null DOM_Node * is returned. */ virtual XalanNode* getParentNode() const; /** * Gets a NodeList that contains all children of this node. * * If there * are no children, this is a NodeList containing no nodes. * The content of the returned NodeList is "live" in the sense * that, for instance, changes to the children of the node object that * it was created from are immediately reflected in the nodes returned by * the NodeList accessors; it is not a static snapshot of the * content of the node. This is true for every NodeList, * including the ones returned by the getElementsByTagName * method. */ virtual const XalanNodeList* getChildNodes() const; /** * Gets the first child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getFirstChild() const; /** * Gets the last child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getLastChild() const; /** * Gets the node immediately preceding this node. * * If there is no such node, this returns null. */ virtual XalanNode* getPreviousSibling() const; /** * Gets the node immediately following this node. * * If there is no such node, this returns null. */ virtual XalanNode* getNextSibling() const; /** * Gets a NamedNodeMap containing the attributes of this node (if it * is an Element) or null otherwise. */ virtual const XalanNamedNodeMap* getAttributes() const; /** * Gets the DOM_Document object associated with this node. * * This is also * the DOM_Document object used to create new nodes. When this * node is a DOM_Document or a DOM_DocumentType * which is not used with any DOM_Document yet, this is * null. */ virtual XalanDocument* getOwnerDocument() const; //@} /** @name Cloning function. */ //@{ /** * Returns a duplicate of this node. * * This function serves as a generic copy constructor for nodes. * * The duplicate node has no parent ( * parentNode returns null.). *
    Cloning an Element copies all attributes and their * values, including those generated by the XML processor to represent * defaulted attributes, but this method does not copy any text it contains * unless it is a deep clone, since the text is contained in a child * Text node. Cloning any other type of node simply returns a * copy of this node. * @param deep If true, recursively clone the subtree under the * specified node; if false, clone only the node itself (and * its attributes, if it is an Element). * @return The duplicate node. */ #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual XalanNode* #else virtual XercesDocumentFragmentBridge* #endif cloneNode(bool deep) const; //@} /** @name Functions to modify the DOM Node. */ //@{ /** * Inserts the node newChild before the existing child node * refChild. * * If refChild is null, * insert newChild at the end of the list of children. *
    If newChild is a DocumentFragment object, * all of its children are inserted, in the same order, before * refChild. If the newChild is already in the * tree, it is first removed. Note that a DOM_Node that * has never been assigned to refer to an actual node is == null. * @param newChild The node to insert. * @param refChild The reference node, i.e., the node before which the new * node must be inserted. * @return The node being inserted. */ virtual XalanNode* insertBefore( XalanNode* newChild, XalanNode* refChild); /** * Replaces the child node oldChild with newChild * in the list of children, and returns the oldChild node. * * If newChild is a DOM_DocumentFragment object, * oldChild is replaced by all of the DOM_DocumentFragment * children, which are inserted in the same order. * * If the newChild is already in the tree, it is first removed. * @param newChild The new node to put in the child list. * @param oldChild The node being replaced in the list. * @return The node replaced. */ virtual XalanNode* replaceChild( XalanNode* newChild, XalanNode* oldChild); /** * Removes the child node indicated by oldChild from the list * of children, and returns it. * * @param oldChild The node being removed. * @return The node removed. */ virtual XalanNode* removeChild(XalanNode* oldChild); /** * Adds the node newChild to the end of the list of children of * this node. * * If the newChild is already in the tree, it is * first removed. * @param newChild The node to add.If it is a DocumentFragment * object, the entire contents of the document fragment are moved into * the child list of this node * @return The node added. */ virtual XalanNode* appendChild(XalanNode* newChild); //@} /** @name Query functions. */ //@{ /** * This is a convenience method to allow easy determination of whether a * node has any children. * * @return true if the node has any children, * false if the node has no children. */ virtual bool hasChildNodes() const; //@} /** @name Set functions. */ //@{ /** * Sets the value of the node. * * Any node which can have a nodeValue (@see getNodeValue) will * also accept requests to set it to a string. The exact response to * this varies from node to node -- Attribute, for example, stores * its values in its children and has to replace them with a new Text * holding the replacement value. * * For most types of Node, value is null and attempting to set it * will throw DOMException(NO_MODIFICATION_ALLOWED_ERR). This will * also be thrown if the node is read-only. */ virtual void setNodeValue(const XalanDOMString& nodeValue); //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * Puts all DOM_Text * nodes in the full depth of the sub-tree underneath this DOM_Node, * including attribute nodes, into a "normal" form where only markup (e.g., * tags, comments, processing instructions, CDATA sections, and entity * references) separates DOM_Text * nodes, i.e., there are no adjacent DOM_Text * nodes. This can be used to ensure that the DOM view of a document is the * same as if it were saved and re-loaded, and is useful when operations * (such as XPointer lookups) that depend on a particular document tree * structure are to be used. *

    Note: In cases where the document contains DOM_CDATASections, * the normalize operation alone may not be sufficient, since XPointers do * not differentiate between DOM_Text * nodes and DOM_CDATASection nodes.

    */ virtual void normalize(); /** * Tests whether the DOM implementation implements a specific * feature and that feature is supported by this node. * @param feature The string of the feature to test. This is the same * name as what can be passed to the method hasFeature on * DOMImplementation. * @param version This is the version number of the feature to test. In * Level 2, version 1, this is the string "2.0". If the version is not * specified, supporting any version of the feature will cause the * method to return true. * @return Returns true if the specified feature is supported * on this node, false otherwise. */ virtual bool isSupported( const XalanDOMString& feature, const XalanDOMString& version) const; /** * Get the namespace URI of * this node, or null if it is unspecified. *

    * This is not a computed value that is the result of a namespace lookup * based on an examination of the namespace declarations in scope. It is * merely the namespace URI given at creation time. *

    * For nodes of any type other than ELEMENT_NODE and * ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, * such as createElement from the Document * interface, this is always null. */ virtual const XalanDOMString& getNamespaceURI() const; /** * Get the namespace prefix * of this node, or null if it is unspecified. */ virtual const XalanDOMString& getPrefix() const; /** * Returns the local part of the qualified name of this node. *

    * For nodes created with a DOM Level 1 method, such as * createElement from the DOM_Document interface, * it is null. */ virtual const XalanDOMString& getLocalName() const; /** * Set the namespace prefix of this node. *

    * Note that setting this attribute, when permitted, changes * the nodeName attribute, which holds the qualified * name, as well as the tagName and name * attributes of the DOM_Element and DOM_Attr * interfaces, when applicable. *

    * Note also that changing the prefix of an * attribute, that is known to have a default value, does not make a new * attribute with the default value and the original prefix appear, since the * namespaceURI and localName do not change. * * @param prefix The prefix of this node. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified prefix contains * an illegal character. *
    * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. *
    * NAMESPACE_ERR: Raised if the specified prefix is * malformed, if the specified prefix is "xml" and the * namespaceURI of this node is different from * "http://www.w3.org/XML/1998/namespace", if specified prefix is * "xmlns" and the namespaceURI is neither * null nor an empty string, or if the * localName is null. */ virtual void setPrefix(const XalanDOMString& prefix); virtual bool isIndexed() const; virtual IndexType getIndex() const; /** * Get the Xerces node this instance represent. * * @return The Xerces node */ DOM_DocumentFragmentType getXercesNode() const { return m_xercesNode; } //@} private: // Not implemented... XercesDocumentFragmentBridge(const XercesDocumentFragmentBridge& theSource); XercesDocumentFragmentBridge& operator=(const XercesDocumentFragmentBridge& theSource); bool operator==(const XercesDocumentFragmentBridge& theRHS) const; // Data members... DOM_DocumentFragmentType m_xercesNode; XercesNodeListBridge m_children; const XercesBridgeNavigator& m_navigator; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESDOCUMENTFRAGMENTBRIDGE_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeTypes.hpp0000664000175000000640000001006211731656102026322 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESBRIDGETYPES_HEADER_GUARD_1357924680) #define XERCESBRIDGETYPES_HEADER_GUARD_1357924680 #include XALAN_DECLARE_XERCES_CLASS(DOM_Attr) XALAN_DECLARE_XERCES_CLASS(DOM_CharacterData) XALAN_DECLARE_XERCES_CLASS(DOM_Comment) XALAN_DECLARE_XERCES_CLASS(DOM_CDATASection) XALAN_DECLARE_XERCES_CLASS(DOM_Document) XALAN_DECLARE_XERCES_CLASS(DOM_DocumentFragment) XALAN_DECLARE_XERCES_CLASS(DOM_DocumentType) XALAN_DECLARE_XERCES_CLASS(DOM_DOMImplementation) XALAN_DECLARE_XERCES_CLASS(DOM_Element) XALAN_DECLARE_XERCES_CLASS(DOM_Entity) XALAN_DECLARE_XERCES_CLASS(DOM_EntityReference) XALAN_DECLARE_XERCES_CLASS(DOM_Node) XALAN_DECLARE_XERCES_CLASS(DOM_Text) XALAN_DECLARE_XERCES_CLASS(DOM_NamedNodeMap) XALAN_DECLARE_XERCES_CLASS(DOM_NodeList) XALAN_DECLARE_XERCES_CLASS(DOM_Notation) XALAN_DECLARE_XERCES_CLASS(DOM_ProcessingInstruction) XALAN_DECLARE_XERCES_CLASS(DOM_Text) XALAN_DECLARE_XERCES_CLASS(DOM_DocumentType) XALAN_DECLARE_XERCES_CLASS(DOM_DOMException) XALAN_DECLARE_XERCES_CLASS(DOMString) XALAN_DECLARE_XERCES_CLASS(AttrImpl) XALAN_DECLARE_XERCES_CLASS(ElementImpl) XALAN_DECLARE_XERCES_CLASS(NodeImpl) XALAN_DECLARE_XERCES_CLASS(TextImpl) XALAN_CPP_NAMESPACE_BEGIN typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Attr DOM_AttrType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_CharacterData DOM_CharacterDataType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Comment DOM_CommentType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_CDATASection DOM_CDATASectionType; // These next two have an extra '_' because they collide without it... typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_DocumentType DOM_DocumentType_Type; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Document DOM_Document_Type; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_DocumentFragment DOM_DocumentFragmentType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_DOMImplementation DOM_DOMImplementationType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Element DOM_ElementType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Entity DOM_EntityType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_EntityReference DOM_EntityReferenceType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Node DOM_NodeType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Text DOM_TextType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_NamedNodeMap DOM_NamedNodeMapType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_NodeList DOM_NodeListType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Notation DOM_NotationType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_ProcessingInstruction DOM_ProcessingInstructionType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Text DOM_TextType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_DOMException DOM_DOMExceptionType; typedef XERCES_CPP_NAMESPACE_QUALIFIER AttrImpl AttrImplType; typedef XERCES_CPP_NAMESPACE_QUALIFIER ElementImpl ElementImplType; typedef XERCES_CPP_NAMESPACE_QUALIFIER NodeImpl NodeImplType; typedef XERCES_CPP_NAMESPACE_QUALIFIER TextImpl TextImplType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMString DOMStringType; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESBRIDGETYPES_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesAttrBridge.cpp0000664000175000000640000001343011731656102026125 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) #include "XercesAttrBridge.hpp" #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN XercesAttrBridge::XercesAttrBridge( const DOM_AttrType& theXercesAttr, const XercesBridgeNavigator& theNavigator) : XalanAttr(), m_xercesNode(theXercesAttr), m_children(theXercesAttr.getChildNodes(), theNavigator), m_navigator(theNavigator) { } XercesAttrBridge::~XercesAttrBridge() { } const XalanDOMString& XercesAttrBridge::getNodeName() const { return m_navigator.getPooledString(m_xercesNode.getNodeName()); } const XalanDOMString& XercesAttrBridge::getNodeValue() const { return m_navigator.getPooledString(m_xercesNode.getNodeValue()); } XercesAttrBridge::NodeType XercesAttrBridge::getNodeType() const { return ATTRIBUTE_NODE; } XalanNode* XercesAttrBridge::getParentNode() const { return 0; } const XalanNodeList* XercesAttrBridge::getChildNodes() const { return &m_children; } XalanNode* XercesAttrBridge::getFirstChild() const { return m_navigator.getFirstChild(m_xercesNode); } XalanNode* XercesAttrBridge::getLastChild() const { return m_navigator.getLastChild(m_xercesNode); } XalanNode* XercesAttrBridge::getPreviousSibling() const { return 0; } XalanNode* XercesAttrBridge::getNextSibling() const { return 0; } const XalanNamedNodeMap* XercesAttrBridge::getAttributes() const { return 0; } XalanDocument* XercesAttrBridge::getOwnerDocument() const { return m_navigator.getOwnerDocument(); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) XalanNode* #else XercesAttrBridge* #endif XercesAttrBridge::cloneNode(bool deep) const { assert(m_navigator.getOwnerDocument() != 0); #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) return m_navigator.cloneNode(this, m_xercesNode, deep); #else XercesAttrBridge* const theBridge = static_cast(m_navigator.cloneNode(this, m_xercesNode, deep)); return theBridge; #endif } XalanNode* XercesAttrBridge::insertBefore( XalanNode* newChild, XalanNode* refChild) { return m_navigator.insertBefore(m_xercesNode, newChild, refChild); } XalanNode* XercesAttrBridge::replaceChild( XalanNode* newChild, XalanNode* oldChild) { return m_navigator.replaceChild(m_xercesNode, newChild, oldChild); } XalanNode* XercesAttrBridge::removeChild(XalanNode* oldChild) { return m_navigator.removeChild(m_xercesNode, oldChild); } XalanNode* XercesAttrBridge::appendChild(XalanNode* newChild) { return m_navigator.appendChild(m_xercesNode, newChild); } bool XercesAttrBridge::hasChildNodes() const { return m_xercesNode.hasChildNodes(); } void XercesAttrBridge::setNodeValue(const XalanDOMString& nodeValue) { XercesBridgeHelper::setNodeValue(m_xercesNode, nodeValue); } void XercesAttrBridge::normalize() { XercesBridgeHelper::normalize(m_xercesNode); } bool XercesAttrBridge::isSupported( const XalanDOMString& feature, const XalanDOMString& version) const { return m_xercesNode.isSupported( XercesBridgeHelper::XalanDOMStringToXercesDOMString(feature), XercesBridgeHelper::XalanDOMStringToXercesDOMString(version)); } const XalanDOMString& XercesAttrBridge::getNamespaceURI() const { return m_navigator.getPooledString(m_xercesNode.getNamespaceURI()); } const XalanDOMString& XercesAttrBridge::getPrefix() const { return m_navigator.getPooledString(m_xercesNode.getPrefix()); } const XalanDOMString& XercesAttrBridge::getLocalName() const { return m_navigator.getPooledString(m_xercesNode.getLocalName()); } void XercesAttrBridge::setPrefix(const XalanDOMString& prefix) { XercesBridgeHelper::setPrefix(m_xercesNode, prefix); } bool XercesAttrBridge::isIndexed() const { return m_navigator.getOwnerDocument()->isIndexed(); } XercesAttrBridge::IndexType XercesAttrBridge::getIndex() const { return m_navigator.getIndex(); } const XalanDOMString& XercesAttrBridge::getName() const { return m_navigator.getPooledString(m_xercesNode.getName()); } bool XercesAttrBridge::getSpecified() const { return m_xercesNode.getSpecified(); } const XalanDOMString& XercesAttrBridge::getValue() const { return m_navigator.getPooledString(m_xercesNode.getValue()); } void XercesAttrBridge::setValue(const XalanDOMString& value) { XercesBridgeHelper::setNodeValue(m_xercesNode, value); } XalanElement* XercesAttrBridge::getOwnerElement() const { return m_navigator.getOwnerElement(m_xercesNode); } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentBridge.cpp0000664000175000000640000011627611731656102027005 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) #include "XercesDocumentBridge.hpp" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN XercesDocumentBridge::XercesDocumentBridge( const DOM_Document_Type& theXercesDocument, bool threadSafe, bool buildBridge) : XalanDocument(), m_xercesDocument(theXercesDocument), m_documentElement(0), m_nodeMap(), m_domImplementation(new XercesDOMImplementationBridge(theXercesDocument.getImplementation())), m_navigators(1, XercesBridgeNavigator(this, threadSafe == true ? false : !buildBridge)), m_navigator(&m_navigators.front()), m_children(theXercesDocument.getChildNodes(), *m_navigator), m_nodes(), m_doctype(0), m_mappingMode(threadSafe == true ? false : !buildBridge), m_indexValid(false), m_elementAllocator(25), m_textAllocator(25), m_attributeAllocator(25), m_stringPool(threadSafe == true ? new XercesLiaisonXalanDOMStringPool : new XalanDOMStringPool) { if (m_mappingMode == false) { // The document index is always 1... m_navigator->setIndex(1); // OK, let's build the nodes. This makes things // thread-safe, so the document can be shared... buildBridgeNodes(); } else { m_nodeMap.addAssociation(m_xercesDocument, this); } } XercesDocumentBridge::~XercesDocumentBridge() { destroyBridge(); } XalanNode* XercesDocumentBridge::mapNode(const DOM_NodeType& theXercesNode) const { return mapNode(XercesDOM_NodeHack::getImpl(theXercesNode)); } XalanNode* XercesDocumentBridge::mapNode(NodeImplType* theXercesNodeImpl) const { XalanNode* theXalanNode = 0; if (theXercesNodeImpl != 0) { theXalanNode = m_nodeMap.getNode(theXercesNodeImpl); if (theXalanNode == 0) { XercesDOM_NodeHack theHack(theXercesNodeImpl); if (theHack != m_xercesDocument && theHack.getOwnerDocument() != m_xercesDocument && theHack.getParentNode() != m_xercesDocument) { throw XalanDOMException(XalanDOMException::WRONG_DOCUMENT_ERR); } else if (m_mappingMode == true) { // OK, we haven't yet created a bridge not, so go ahead and // create one. theXalanNode = createBridgeNode(theHack, 0, true); assert(theXalanNode != 0); } } } return theXalanNode; } DOM_NodeType XercesDocumentBridge::mapNode(const XalanNode* theXalanNode) const { DOM_NodeType theXercesNode; if (theXalanNode != 0) { theXercesNode = m_nodeMap.getNode(theXalanNode); if (theXercesNode.isNull() == true) { throw XalanDOMException(XalanDOMException::WRONG_DOCUMENT_ERR); } } return theXercesNode; } DOM_AttrType XercesDocumentBridge::mapNode(const XalanAttr* theXalanNode) const { NodeImplType* const theXercesNodeImpl = mapNodeToImpl(theXalanNode); return XercesDOM_AttrHack(reinterpret_cast(theXercesNodeImpl)); } NodeImplType* XercesDocumentBridge::mapNodeToImpl(const XalanNode* theXalanNode) const { NodeImplType* theXercesNodeImpl = 0; if (theXalanNode != 0) { theXercesNodeImpl = m_nodeMap.getNodeImpl(theXalanNode); if (theXercesNodeImpl == 0) { throw XalanDOMException(XalanDOMException::WRONG_DOCUMENT_ERR); } } return theXercesNodeImpl; } XalanAttr* XercesDocumentBridge::mapNode(const DOM_AttrType& theXercesNode) const { return static_cast(mapNode(XercesDOM_NodeHack::getImpl(theXercesNode))); } XalanElement* XercesDocumentBridge::mapNode(const DOM_ElementType& theXercesNode) const { return static_cast(mapNode(XercesDOM_NodeHack::getImpl(theXercesNode))); } void XercesDocumentBridge::destroyBridge() { XALAN_USING_STD(for_each) // Set this to null, since it will be deleted // by the next for_each... m_doctype = 0; // m_bridgeMap contains all of the nodes that // are still alive... for_each( m_nodes.begin(), m_nodes.end(), DeleteFunctor()); // Clear everything out, since we just delete everything... m_nodes.clear(); // Clear out all of the navigators, except ours... m_navigators.erase(m_navigators.begin() + 1, m_navigators.end()); m_navigator = &m_navigators.front(); // Clear the node map... m_nodeMap.clear(); m_indexValid = false; m_mappingMode = true; m_stringPool->clear(); } void XercesDocumentBridge::rebuildBridge() { destroyBridge(); buildBridgeNodes(); } XercesBridgeNavigator& XercesDocumentBridge::pushNavigator(bool mappingMode) const { XercesDocumentBridge* const This = const_cast(this); This->m_navigators.push_back(XercesBridgeNavigator(This, mappingMode)); return This->m_navigators.back(); } XercesDocumentTypeBridge* XercesDocumentBridge::createBridgeNode( const DOM_DocumentType_Type& theDoctype, IndexType theIndex, bool mapNode) const { // This is a special case, since there is only one // doctype node allowed... assert(m_doctype == 0); assert(m_xercesDocument.getDoctype().isNull() == false && m_xercesDocument.getDoctype() == theDoctype); // Create a navigator... XercesBridgeNavigator& theNavigator = pushNavigator(mapNode); theNavigator.setIndex(theIndex); // Update the member variable for the new instance. m_doctype = new XercesDocumentTypeBridge(theDoctype, theNavigator); if (mapNode == true) { m_nodeMap.addAssociation(theDoctype, m_doctype); } m_nodes.push_back(m_doctype); return m_doctype; } XercesElementBridge* XercesDocumentBridge::createBridgeNode( const DOM_ElementType& theXercesNode, IndexType theIndex, bool mapNode) const { // Create a navigator... XercesBridgeNavigator& theNavigator = pushNavigator(mapNode); theNavigator.setIndex(theIndex); XercesElementBridge* const theBridge = m_elementAllocator.create(theXercesNode, theNavigator); if (m_doctype != 0 || mapNode == true) { // Add it to the node map, since we my need it for getting // elements by ID, or we're in mapping mode. m_nodeMap.addAssociation(theXercesNode, theBridge); } return theBridge; } XercesDocumentFragmentBridge* XercesDocumentBridge::createBridgeNode( const DOM_DocumentFragmentType& theXercesNode, IndexType theIndex, bool mapNode) const { // Create a navigator... XercesBridgeNavigator& theNavigator = pushNavigator(mapNode); theNavigator.setIndex(theIndex); XercesDocumentFragmentBridge* const theBridge = new XercesDocumentFragmentBridge(theXercesNode, theNavigator); m_nodes.push_back(theBridge); if (mapNode == true) { // Add it to the node map... m_nodeMap.addAssociation(theXercesNode, theBridge); } return theBridge; } XercesTextBridge* XercesDocumentBridge::createBridgeNode( const DOM_TextType& theXercesNode, IndexType theIndex, bool mapNode) const { // Create a navigator... XercesBridgeNavigator& theNavigator = pushNavigator(mapNode); theNavigator.setIndex(theIndex); XercesTextBridge* const theBridge = m_textAllocator.create(theXercesNode, theNavigator); if (mapNode == true) { // Add it to the node map... m_nodeMap.addAssociation(theXercesNode, theBridge); } return theBridge; } XercesCommentBridge* XercesDocumentBridge::createBridgeNode( const DOM_CommentType& theXercesNode, IndexType theIndex, bool mapNode) const { // Create a navigator... XercesBridgeNavigator& theNavigator = pushNavigator(mapNode); theNavigator.setIndex(theIndex); XercesCommentBridge* const theBridge = new XercesCommentBridge(theXercesNode, theNavigator); m_nodes.push_back(theBridge); if (mapNode == true) { // Add it to the node map... m_nodeMap.addAssociation(theXercesNode, theBridge); } return theBridge; } XercesCDATASectionBridge* XercesDocumentBridge::createBridgeNode( const DOM_CDATASectionType& theXercesNode, IndexType theIndex, bool mapNode) const { // Create a navigator... XercesBridgeNavigator& theNavigator = pushNavigator(mapNode); theNavigator.setIndex(theIndex); XercesCDATASectionBridge* const theBridge = new XercesCDATASectionBridge(theXercesNode, theNavigator); m_nodes.push_back(theBridge); if (mapNode == true) { // Add it to the node map... m_nodeMap.addAssociation(theXercesNode, theBridge); } return theBridge; } XercesProcessingInstructionBridge* XercesDocumentBridge::createBridgeNode( const DOM_ProcessingInstructionType& theXercesNode, IndexType theIndex, bool mapNode) const { // Create a navigator... XercesBridgeNavigator& theNavigator = pushNavigator(mapNode); theNavigator.setIndex(theIndex); XercesProcessingInstructionBridge* const theBridge = new XercesProcessingInstructionBridge(theXercesNode, theNavigator); m_nodes.push_back(theBridge); if (mapNode == true) { // Add it to the node map... m_nodeMap.addAssociation(theXercesNode, theBridge); } return theBridge; } XercesAttrBridge* XercesDocumentBridge::createBridgeNode( const DOM_AttrType& theXercesNode, IndexType theIndex, bool mapNode) const { // Create a navigator... XercesBridgeNavigator& theNavigator = pushNavigator(mapNode); theNavigator.setIndex(theIndex); XercesAttrBridge* const theBridge = m_attributeAllocator.create(theXercesNode, theNavigator); // Add it to the node map -- attributes ALWAYS go in the map // for now... m_nodeMap.addAssociation(theXercesNode, theBridge); return theBridge; } XercesEntityBridge* XercesDocumentBridge::createBridgeNode( const DOM_EntityType& theXercesNode, IndexType theIndex, bool mapNode) const { // Create a navigator... XercesBridgeNavigator& theNavigator = pushNavigator(mapNode); theNavigator.setIndex(theIndex); XercesEntityBridge* const theBridge = new XercesEntityBridge(theXercesNode, theNavigator); m_nodes.push_back(theBridge); // Add it to the node map -- entities ALWAYS go in the map // for now... m_nodeMap.addAssociation(theXercesNode, theBridge); return theBridge; } XercesEntityReferenceBridge* XercesDocumentBridge::createBridgeNode( const DOM_EntityReferenceType& theXercesNode, IndexType theIndex, bool mapNode) const { // Create a navigator... XercesBridgeNavigator& theNavigator = pushNavigator(mapNode); theNavigator.setIndex(theIndex); XercesEntityReferenceBridge* const theBridge = new XercesEntityReferenceBridge(theXercesNode, theNavigator); m_nodes.push_back(theBridge); if (mapNode == true) { // Add it to the node map... m_nodeMap.addAssociation(theXercesNode, theBridge); } return theBridge; } XercesNotationBridge* XercesDocumentBridge::createBridgeNode( const DOM_NotationType& theXercesNode, IndexType theIndex, bool mapNode) const { // Create a navigator... XercesBridgeNavigator& theNavigator = pushNavigator(mapNode); theNavigator.setIndex(theIndex); XercesNotationBridge* const theBridge = new XercesNotationBridge(theXercesNode, theNavigator); m_nodes.push_back(theBridge); // Add it to the node map -- notations ALWAYS go in the map // for now... m_nodeMap.addAssociation(theXercesNode, theBridge); return theBridge; } XalanNode* XercesDocumentBridge::createBridgeNode( const DOM_NodeType& theXercesNode, IndexType theIndex, bool mapNode) const { XalanNode* theNewNode = 0; switch(theXercesNode.getNodeType()) { case DOM_NodeType::ATTRIBUTE_NODE: { const DOM_AttrType& theAttrNode = static_cast(theXercesNode); theNewNode = createBridgeNode(theAttrNode, theIndex, mapNode); assert(theNewNode != 0); } break; case DOM_NodeType::CDATA_SECTION_NODE: { const DOM_CDATASectionType& theCDATASectionNode = static_cast(theXercesNode); theNewNode = createBridgeNode(theCDATASectionNode, theIndex, mapNode); assert(theNewNode != 0); } break; case DOM_NodeType::COMMENT_NODE: { const DOM_CommentType& theCommentNode = static_cast(theXercesNode); theNewNode = createBridgeNode(theCommentNode, theIndex, mapNode); assert(theNewNode != 0); } break; case DOM_NodeType::DOCUMENT_FRAGMENT_NODE: { const DOM_DocumentFragmentType& theDocumentFragmentNode = static_cast(theXercesNode); theNewNode = createBridgeNode(theDocumentFragmentNode, theIndex, mapNode); assert(theNewNode != 0); } break; case DOM_NodeType::ELEMENT_NODE: { const DOM_ElementType& theElementNode = static_cast(theXercesNode); theNewNode = createBridgeNode(theElementNode, theIndex, mapNode); assert(theNewNode != 0); } break; case DOM_NodeType::ENTITY_NODE: { const DOM_EntityType& theEntityNode = static_cast(theXercesNode); theNewNode = createBridgeNode(theEntityNode, theIndex, mapNode); assert(theNewNode != 0); } break; case DOM_NodeType::ENTITY_REFERENCE_NODE: { const DOM_EntityReferenceType& theEntityReferenceNode = static_cast(theXercesNode); theNewNode = createBridgeNode(theEntityReferenceNode, theIndex, mapNode); assert(theNewNode != 0); } break; case DOM_NodeType::NOTATION_NODE: { const DOM_NotationType& theNotationNode = static_cast(theXercesNode); theNewNode = createBridgeNode(theNotationNode, theIndex, mapNode); assert(theNewNode != 0); } break; case DOM_NodeType::PROCESSING_INSTRUCTION_NODE: { const DOM_ProcessingInstructionType& thePINode = static_cast(theXercesNode); theNewNode = createBridgeNode(thePINode, theIndex, mapNode); assert(theNewNode != 0); } break; case DOM_NodeType::TEXT_NODE: { const DOM_TextType& theTextNode = static_cast(theXercesNode); theNewNode = createBridgeNode(theTextNode, theIndex, mapNode); assert(theNewNode != 0); } break; case DOM_NodeType::DOCUMENT_TYPE_NODE: { const DOM_DocumentType_Type& theDoctypeNode = static_cast(theXercesNode); theNewNode = createBridgeNode(theDoctypeNode, theIndex, mapNode); assert(theNewNode != 0); } break; default: assert(false); break; } return theNewNode; } void XercesDocumentBridge::destroyNode(XalanNode* theNode) { XALAN_USING_STD(find) const NodeVectorType::iterator i = find(m_nodes.begin(), m_nodes.end(), theNode); if (i == m_nodes.end()) { // Doesn't belong to this doc, so throw... throw XercesDOMException(XercesDOMException::WRONG_DOCUMENT_ERR); } else { // Delete the node... delete *i; // Erase it from the map... m_nodes.erase(i); } } XalanNode* XercesDocumentBridge::internalCloneNode( const XalanNode* theXalanNode, const DOM_NodeType& theXercesNode, bool deep) { XalanNode* theNewNode = 0; if (theXalanNode->getOwnerDocument() != this) { throw XercesDOMException(XercesDOMException::WRONG_DOCUMENT_ERR); } try { const DOM_NodeType theNewXercesNode = theXercesNode.cloneNode(deep); theNewNode = createBridgeNode(theNewXercesNode, 0, true); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } return theNewNode; } const XalanDOMString& XercesDocumentBridge::getNodeName() const { assert(m_navigator != 0); return m_navigator->getPooledString(m_xercesDocument.getNodeName()); } const XalanDOMString& XercesDocumentBridge::getNodeValue() const { assert(m_navigator != 0); return m_navigator->getPooledString(m_xercesDocument.getNodeValue()); } XercesDocumentBridge::NodeType XercesDocumentBridge::getNodeType() const { return DOCUMENT_NODE; } XalanNode* XercesDocumentBridge::getParentNode() const { return 0; } const XalanNodeList* XercesDocumentBridge::getChildNodes() const { return &m_children; } XalanNode* XercesDocumentBridge::getFirstChild() const { assert(m_navigator != 0); return m_navigator->getFirstChild(m_xercesDocument); } XalanNode* XercesDocumentBridge::getLastChild() const { assert(m_navigator != 0); return m_navigator->getLastChild(m_xercesDocument); } XalanNode* XercesDocumentBridge::getPreviousSibling() const { return 0; } XalanNode* XercesDocumentBridge::getNextSibling() const { return 0; } const XalanNamedNodeMap* XercesDocumentBridge::getAttributes() const { return 0; } XalanDocument* XercesDocumentBridge::getOwnerDocument() const { return 0; } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) XalanNode* #else XercesDocumentBridge* #endif XercesDocumentBridge::cloneNode(bool deep) const { XercesDocumentBridge* theBridge = 0; try { const DOM_NodeType theNewDocument = m_xercesDocument.cloneNode(deep); theBridge = new XercesDocumentBridge(static_cast(theNewDocument)); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } return theBridge; } XalanNode* XercesDocumentBridge::insertBefore( XalanNode* newChild, XalanNode* refChild) { assert(m_navigator != 0); return m_navigator->insertBefore(m_xercesDocument, newChild, refChild); } XalanNode* XercesDocumentBridge::replaceChild( XalanNode* newChild, XalanNode* oldChild) { assert(m_navigator != 0); return m_navigator->replaceChild(m_xercesDocument, newChild, oldChild); } XalanNode* XercesDocumentBridge::removeChild(XalanNode* oldChild) { assert(m_navigator != 0); return m_navigator->removeChild(m_xercesDocument, oldChild); } XalanNode* XercesDocumentBridge::appendChild(XalanNode* newChild) { assert(m_navigator != 0); return m_navigator->appendChild(m_xercesDocument, newChild); } bool XercesDocumentBridge::hasChildNodes() const { return m_xercesDocument.hasChildNodes(); } void XercesDocumentBridge::setNodeValue(const XalanDOMString& nodeValue) { XercesBridgeHelper::setNodeValue(m_xercesDocument, nodeValue); } void XercesDocumentBridge::normalize() { XercesBridgeHelper::normalize(m_xercesDocument); } bool XercesDocumentBridge::isSupported( const XalanDOMString& feature, const XalanDOMString& version) const { return m_xercesDocument.isSupported( XercesBridgeHelper::XalanDOMStringToXercesDOMString(feature), XercesBridgeHelper::XalanDOMStringToXercesDOMString(version)); } const XalanDOMString& XercesDocumentBridge::getNamespaceURI() const { assert(m_navigator != 0); return m_navigator->getPooledString(m_xercesDocument.getNamespaceURI()); } const XalanDOMString& XercesDocumentBridge::getPrefix() const { assert(m_navigator != 0); return m_navigator->getPooledString(m_xercesDocument.getPrefix()); } const XalanDOMString& XercesDocumentBridge::getLocalName() const { assert(m_navigator != 0); return m_navigator->getPooledString(m_xercesDocument.getLocalName()); } void XercesDocumentBridge::setPrefix(const XalanDOMString& prefix) { XercesBridgeHelper::setPrefix(m_xercesDocument, prefix); } bool XercesDocumentBridge::isIndexed() const { return m_indexValid; } XercesDocumentBridge::IndexType XercesDocumentBridge::getIndex() const { assert(m_navigator != 0); assert(m_navigator->getIndex() == 1); return m_navigator->getIndex(); } XalanElement* XercesDocumentBridge::createElement(const XalanDOMString& tagName) { XalanElement* theBridgeNode = 0; try { const DOM_ElementType theXercesNode = m_xercesDocument.createElement(tagName.c_str()); assert(theXercesNode.isNull() == false); theBridgeNode = createBridgeNode(theXercesNode, 0, true); assert(mapNode(theXercesNode) == theBridgeNode); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } return theBridgeNode; } XalanDocumentFragment* XercesDocumentBridge::createDocumentFragment() { XalanDocumentFragment* theBridgeNode = 0; try { const DOM_DocumentFragmentType theXercesNode = m_xercesDocument.createDocumentFragment(); assert(theXercesNode.isNull() == false); theBridgeNode = createBridgeNode(theXercesNode, 0, true); assert(mapNode(theXercesNode) == theBridgeNode); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } return theBridgeNode; } XalanText* XercesDocumentBridge::createTextNode(const XalanDOMString& data) { XalanText* theBridgeNode = 0; try { const DOM_TextType theXercesNode = m_xercesDocument.createTextNode(data.c_str()); assert(theXercesNode.isNull() == false); theBridgeNode = createBridgeNode(theXercesNode, 0, true); assert(mapNode(theXercesNode) == theBridgeNode); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } return theBridgeNode; } XalanComment* XercesDocumentBridge::createComment(const XalanDOMString& data) { XalanComment* theBridgeNode = 0; try { const DOM_CommentType theXercesNode = m_xercesDocument.createComment(data.c_str()); assert(theXercesNode.isNull() == false); theBridgeNode = createBridgeNode(theXercesNode, 0, true); assert(mapNode(theXercesNode) == theBridgeNode); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } return theBridgeNode; } XalanCDATASection* XercesDocumentBridge::createCDATASection(const XalanDOMString& data) { XalanCDATASection* theBridgeNode = 0; try { const DOM_CDATASectionType theXercesNode = m_xercesDocument.createCDATASection(data.c_str()); assert(theXercesNode.isNull() == false); theBridgeNode = createBridgeNode(theXercesNode, 0, true); assert(mapNode(theXercesNode) == theBridgeNode); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } return theBridgeNode; } XalanProcessingInstruction* XercesDocumentBridge::createProcessingInstruction( const XalanDOMString& target, const XalanDOMString& data) { XalanProcessingInstruction* theBridgeNode = 0; try { const DOM_ProcessingInstructionType theXercesNode = m_xercesDocument.createProcessingInstruction(target.c_str(), data.c_str()); assert(theXercesNode.isNull() == false); theBridgeNode = createBridgeNode(theXercesNode, 0, true); assert(mapNode(theXercesNode) == theBridgeNode); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } return theBridgeNode; } XalanAttr* XercesDocumentBridge::createAttribute(const XalanDOMString& name) { XalanAttr* theBridgeNode = 0; try { const DOM_AttrType theXercesNode = m_xercesDocument.createAttribute(name.c_str()); assert(theXercesNode.isNull() == false); theBridgeNode = createBridgeNode(theXercesNode, 0, true); assert(mapNode(theXercesNode) == theBridgeNode); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } return theBridgeNode; } XalanEntityReference* XercesDocumentBridge::createEntityReference(const XalanDOMString& name) { XalanEntityReference* theBridgeNode = 0; try { const DOM_EntityReferenceType theXercesNode = m_xercesDocument.createEntityReference(name.c_str()); assert(theXercesNode.isNull() == false); theBridgeNode = createBridgeNode(theXercesNode, 0, true); assert(mapNode(theXercesNode) == theBridgeNode); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } return theBridgeNode; } XalanDocumentType* XercesDocumentBridge::getDoctype() const { return m_doctype; } XalanDOMImplementation* XercesDocumentBridge::getImplementation() const { return m_domImplementation.get(); } XalanElement* XercesDocumentBridge::getDocumentElement() const { // If we're working in mapping mode, m_documentElement will // be null, so we'll have to map the node... return m_documentElement != 0 ? m_documentElement : mapNode(m_xercesDocument.getDocumentElement()); } XalanNodeList* XercesDocumentBridge::getElementsByTagName(const XalanDOMString& /* tagname */) const { // Not supported throw XercesDOMException(XercesDOMException::NOT_SUPPORTED_ERR); // Dummy return value... return 0; } XalanNode* XercesDocumentBridge::importNode( XalanNode* /* importedNode */, bool /* deep */) { throw XercesDOMException(XercesDOMException::NOT_SUPPORTED_ERR); // Dummy return value... return 0; } XalanElement* XercesDocumentBridge::createElementNS( const XalanDOMString& namespaceURI, const XalanDOMString& qualifiedName) { XalanElement* theBridgeNode = 0; try { const DOM_ElementType theXercesNode = m_xercesDocument.createElementNS(namespaceURI.c_str(), qualifiedName.c_str()); assert(theXercesNode.isNull() == false); theBridgeNode = createBridgeNode(theXercesNode, 0, true); assert(mapNode(theXercesNode) == theBridgeNode); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } return theBridgeNode; } XalanAttr* XercesDocumentBridge::createAttributeNS( const XalanDOMString& namespaceURI, const XalanDOMString& qualifiedName) { XalanAttr* theBridgeNode = 0; try { const DOM_AttrType theXercesNode = m_xercesDocument.createAttributeNS(namespaceURI.c_str(), qualifiedName.c_str()); assert(theXercesNode.isNull() == false); theBridgeNode = createBridgeNode(theXercesNode, 0, true); assert(mapNode(theXercesNode) == theBridgeNode); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } return theBridgeNode; } XalanNodeList* XercesDocumentBridge::getElementsByTagNameNS( const XalanDOMString& /* namespaceURI */, const XalanDOMString& /* localName */) const { throw XercesDOMException(XercesDOMException::NOT_SUPPORTED_ERR); // Dummy return value... return 0; } XalanElement* XercesDocumentBridge::getElementById(const XalanDOMString& elementId) const { // $$$ ToDo: This is because DOM_Document::getElementById() is not // const... const DOM_NodeType theXercesNode(m_xercesDocument.getElementById(elementId.c_str())); return theXercesNode.isNull() == true ? 0 : static_cast(mapNode(theXercesNode)); } void XercesDocumentBridge::buildBridgeNodes() { const DOM_NodeType theStartChild = m_xercesDocument.getFirstChild(); if (theStartChild.isNull() == false) { assert(m_navigator != 0); assert(m_navigators.size() == 1); m_navigator->setIndex(1); m_navigator->setFirstChild(0); BuildBridgeTreeWalker theTreeWalker( this, &m_navigators.back(), m_navigators, 2); theTreeWalker.traverse(theStartChild, m_xercesDocument); } // OK, now set m_documentElement... XalanNode* theChild = m_navigator->getFirstChild(); while(theChild != 0 && theChild->getNodeType() != XalanNode::ELEMENT_NODE) { theChild = theChild->getNextSibling(); } m_documentElement = static_cast(theChild); m_indexValid = true; m_mappingMode = false; } XercesDocumentBridge::BuildBridgeTreeWalker::BuildBridgeTreeWalker( XercesDocumentBridge* theDocument, XercesBridgeNavigator* theDocumentNavigator, NavigatorBridgeVectorType& theNavigators, IndexType theStartIndex) : m_document(theDocument), m_navigators(theNavigators), m_currentIndex(theStartIndex), m_parentNavigatorStack(), m_siblingNavigatorStack() { assert(theDocument != 0 && theDocumentNavigator != 0); // Reserve some space... m_parentNavigatorStack.reserve(100); m_parentNavigatorStack.reserve(100); // The document navigator is the last navigator on the stack... m_parentNavigatorStack.push_back(NavigatorStackEntryType(theDocumentNavigator, theDocument)); // There is no previous sibling... m_siblingNavigatorStack.push_back(NavigatorStackEntryType(0, 0)); } XercesDocumentBridge::BuildBridgeTreeWalker::~BuildBridgeTreeWalker() { } void XercesDocumentBridge::BuildBridgeTreeWalker::startNode(const DOM_NodeType& node) { XalanNode* const theBridgeNode = m_document->createBridgeNode(node, m_currentIndex, false); XercesBridgeNavigator& theCurrentNodeNavigator = m_navigators.back(); assert(m_parentNavigatorStack.empty() == false); assert(m_siblingNavigatorStack.empty() == false); // Get the two navigators... NavigatorStackEntryType& theParentEntry = m_parentNavigatorStack.back(); NavigatorStackEntryType& theSiblingEntry = m_siblingNavigatorStack.back(); theCurrentNodeNavigator.setParentNode(theParentEntry.m_node); // If the first child has not been set, then set it // now... if (theParentEntry.m_navigator->getFirstChild() == 0) { assert(theSiblingEntry.m_node == 0); theParentEntry.m_navigator->setFirstChild(theBridgeNode); } // Always set the last child... theParentEntry.m_navigator->setLastChild(theBridgeNode); theCurrentNodeNavigator.setPreviousSibling(theSiblingEntry.m_node); if (theSiblingEntry.m_navigator != 0) { theSiblingEntry.m_navigator->setNextSibling(theBridgeNode); } // Build an entry for the stacks... const NavigatorStackEntryType theCurrentEntry(&theCurrentNodeNavigator, theBridgeNode); // My child nodes will now be visited, so push the current // context on the parent stack... m_parentNavigatorStack.push_back(theCurrentEntry); // My siblings will also need to know about me as well... m_siblingNavigatorStack.push_back(theCurrentEntry); // This will serve to mark the sibling context for my first child, // since it has no previous sibling. This will be popped off // when endNode() is called. m_siblingNavigatorStack.push_back(NavigatorStackEntryType(0, 0)); // Finally, increment the index counter... ++m_currentIndex; const short theType = node.getNodeType(); if (theType == DOM_NodeType::DOCUMENT_TYPE_NODE) { // Special case for doctype -- we have to build its entities... const DOM_DocumentType_Type& theDoctype = static_cast(node); const DOM_NamedNodeMapType theEntities = theDoctype.getEntities(); const unsigned int theLength = theEntities.getLength(); for (unsigned int i = 0; i < theLength; ++i) { // Build it, but don't index it... m_document->createBridgeNode(theEntities.item(i), m_currentIndex++, true); } } else if (theType == DOM_NodeType::ELEMENT_NODE) { // Special case for element nodes -- we have to build the attributes... const DOM_ElementType& theElement = static_cast(node); const DOM_NamedNodeMapType theAttributes = theElement.getAttributes(); const unsigned int theLength = theAttributes.getLength(); XercesBridgeNavigator* thePreviousAttrNavigator = 0; XalanNode* thePreviousAttr = 0; for (unsigned int i = 0; i < theLength; ++i) { // Get the attribute from the node map... const DOM_NodeType theAttr = theAttributes.item(i); assert(theAttr.isNull() == false); // Create a bridge node. XalanNode* const theCurrentAttr = m_document->createBridgeNode(theAttr, m_currentIndex, false); assert(theCurrentAttr != 0); // Get the attribute node's navigator... XercesBridgeNavigator& theCurrentAttrNavigator = m_navigators.back(); // Set the parent node... theCurrentAttrNavigator.setParentNode(theBridgeNode); if (thePreviousAttr != 0) { assert(thePreviousAttrNavigator != 0); // Link in the previous attribute... theCurrentAttrNavigator.setPreviousSibling(thePreviousAttr); thePreviousAttrNavigator->setNextSibling(theCurrentAttr); } // Update the pointers so they point to this attribute... thePreviousAttr = theCurrentAttr; thePreviousAttrNavigator = &theCurrentAttrNavigator; // Finally, increment the index... ++m_currentIndex; } } } void XercesDocumentBridge::BuildBridgeTreeWalker::endNode(const DOM_NodeType& /* node */) { assert(m_parentNavigatorStack.empty() == false); assert(m_siblingNavigatorStack.empty() == false); // I have to pop my entry, since my children are finished... m_parentNavigatorStack.pop_back(); // Pop any sibling navigators my child pushed... while(m_siblingNavigatorStack.back().m_navigator != 0) { assert(m_siblingNavigatorStack.back().m_node != 0); m_siblingNavigatorStack.pop_back(); } // There must be a context marker... assert(m_siblingNavigatorStack.back().m_navigator == 0 && m_siblingNavigatorStack.back().m_node == 0); // Pop the context marker... m_siblingNavigatorStack.pop_back(); } const XalanDOMString& XercesDocumentBridge::getPooledString(const XalanDOMString& theString) const { return m_stringPool->get(theString); } const XalanDOMString& XercesDocumentBridge::getPooledString( const XalanDOMChar* theString, XalanDOMString::size_type theLength) const { return m_stringPool->get(theString, theLength); } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesProcessingInstructionBridge.cpp0000664000175000000640000001433211731656102031573 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) #include "XercesProcessingInstructionBridge.hpp" #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN XercesProcessingInstructionBridge::XercesProcessingInstructionBridge( const DOM_ProcessingInstructionType& theXercesDOMProcessingInstruction, const XercesBridgeNavigator& theNavigator) : XalanProcessingInstruction(), m_xercesNode(theXercesDOMProcessingInstruction), m_navigator(theNavigator) { } XercesProcessingInstructionBridge::~XercesProcessingInstructionBridge() { } const XalanDOMString& XercesProcessingInstructionBridge::getNodeName() const { return m_navigator.getPooledString(m_xercesNode.getNodeName()); } const XalanDOMString& XercesProcessingInstructionBridge::getNodeValue() const { return m_navigator.getPooledString(m_xercesNode.getNodeValue()); } XercesProcessingInstructionBridge::NodeType XercesProcessingInstructionBridge::getNodeType() const { return PROCESSING_INSTRUCTION_NODE; } XalanNode* XercesProcessingInstructionBridge::getParentNode() const { return m_navigator.getParentNode(m_xercesNode); } const XalanNodeList* XercesProcessingInstructionBridge::getChildNodes() const { return 0; } XalanNode* XercesProcessingInstructionBridge::getFirstChild() const { return 0; } XalanNode* XercesProcessingInstructionBridge::getLastChild() const { return 0; } XalanNode* XercesProcessingInstructionBridge::getPreviousSibling() const { return m_navigator.getPreviousSibling(m_xercesNode); } XalanNode* XercesProcessingInstructionBridge::getNextSibling() const { return m_navigator.getNextSibling(m_xercesNode); } const XalanNamedNodeMap* XercesProcessingInstructionBridge::getAttributes() const { return 0; } XalanDocument* XercesProcessingInstructionBridge::getOwnerDocument() const { return m_navigator.getOwnerDocument(); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) XalanNode* #else XercesProcessingInstructionBridge* #endif XercesProcessingInstructionBridge::cloneNode(bool deep) const { #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) return m_navigator.cloneNode(this, m_xercesNode, deep); #else XercesProcessingInstructionBridge* const theBridge = static_cast(m_navigator.cloneNode(this, m_xercesNode, deep)); return theBridge; #endif } XalanNode* XercesProcessingInstructionBridge::insertBefore( XalanNode* /* newChild */, XalanNode* /* refChild */) { throw XercesDOMException(XercesDOMException::HIERARCHY_REQUEST_ERR); return 0; } XalanNode* XercesProcessingInstructionBridge::replaceChild( XalanNode* /* newChild */, XalanNode* /* oldChild */) { throw XercesDOMException(XercesDOMException::HIERARCHY_REQUEST_ERR); return 0; } XalanNode* XercesProcessingInstructionBridge::removeChild(XalanNode* /* oldChild */) { throw XercesDOMException(XercesDOMException::HIERARCHY_REQUEST_ERR); return 0; } XalanNode* XercesProcessingInstructionBridge::appendChild(XalanNode* /* newChild */) { throw XercesDOMException(XercesDOMException::HIERARCHY_REQUEST_ERR); return 0; } bool XercesProcessingInstructionBridge::hasChildNodes() const { return false; } void XercesProcessingInstructionBridge::setNodeValue(const XalanDOMString& nodeValue) { XercesBridgeHelper::setNodeValue(m_xercesNode, nodeValue); } void XercesProcessingInstructionBridge::normalize() { XercesBridgeHelper::normalize(m_xercesNode); } bool XercesProcessingInstructionBridge::isSupported( const XalanDOMString& feature, const XalanDOMString& version) const { return m_xercesNode.isSupported( XercesBridgeHelper::XalanDOMStringToXercesDOMString(feature), XercesBridgeHelper::XalanDOMStringToXercesDOMString(version)); } const XalanDOMString& XercesProcessingInstructionBridge::getNamespaceURI() const { return m_navigator.getPooledString(m_xercesNode.getNamespaceURI()); } const XalanDOMString& XercesProcessingInstructionBridge::getPrefix() const { return m_navigator.getPooledString(m_xercesNode.getPrefix()); } const XalanDOMString& XercesProcessingInstructionBridge::getLocalName() const { return m_navigator.getPooledString(m_xercesNode.getLocalName()); } void XercesProcessingInstructionBridge::setPrefix(const XalanDOMString& prefix) { XercesBridgeHelper::setPrefix(m_xercesNode, prefix); } bool XercesProcessingInstructionBridge::isIndexed() const { return m_navigator.getOwnerDocument()->isIndexed(); } XercesProcessingInstructionBridge::IndexType XercesProcessingInstructionBridge::getIndex() const { return m_navigator.getIndex(); } const XalanDOMString& XercesProcessingInstructionBridge::getTarget() const { return m_navigator.getPooledString(m_xercesNode.getTarget()); } const XalanDOMString& XercesProcessingInstructionBridge::getData() const { return m_navigator.getPooledString(m_xercesNode.getData()); } void XercesProcessingInstructionBridge::setData(const XalanDOMString& data) { XercesBridgeHelper::setNodeValue(m_xercesNode, data); } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesAttrBridge.hpp0000664000175000000640000003764411731656102026147 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESATTRBRIDGE_HEADER_GUARD_1357924680) #define XERCESATTRBRIDGE_HEADER_GUARD_1357924680 #include #if XERCES_VERSION_MAJOR >= 2 #include #else #include #endif #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesBridgeNavigator; class XalanElement; /** * This class is deprecated. * * @deprecated This class is part of the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesAttrBridge : public XalanAttr { public: XercesAttrBridge( const DOM_AttrType& theXercesAttr, const XercesBridgeNavigator& theNavigator); virtual ~XercesAttrBridge(); // These interfaces are inherited from XalanNode... virtual const XalanDOMString& getNodeName() const; /** * Gets the value of this node, depending on its type. */ virtual const XalanDOMString& getNodeValue() const; /** * An enum value representing the type of the underlying object. */ virtual NodeType getNodeType() const; /** * Gets the parent of this node. * * All nodes, except Document, * DocumentFragment, and Attr may have a parent. * However, if a node has just been created and not yet added to the tree, * or if it has been removed from the tree, a null DOM_Node * is returned. */ virtual XalanNode* getParentNode() const; /** * Gets a NodeList that contains all children of this node. * * If there * are no children, this is a NodeList containing no nodes. * The content of the returned NodeList is "live" in the sense * that, for instance, changes to the children of the node object that * it was created from are immediately reflected in the nodes returned by * the NodeList accessors; it is not a static snapshot of the * content of the node. This is true for every NodeList, * including the ones returned by the getElementsByTagName * method. */ virtual const XalanNodeList* getChildNodes() const; /** * Gets the first child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getFirstChild() const; /** * Gets the last child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getLastChild() const; /** * Gets the node immediately preceding this node. * * If there is no such node, this returns null. */ virtual XalanNode* getPreviousSibling() const; /** * Gets the node immediately following this node. * * If there is no such node, this returns null. */ virtual XalanNode* getNextSibling() const; /** * Gets a NamedNodeMap containing the attributes of this node (if it * is an Element) or null otherwise. */ virtual const XalanNamedNodeMap* getAttributes() const; /** * Gets the DOM_Document object associated with this node. * * This is also * the DOM_Document object used to create new nodes. When this * node is a DOM_Document or a DOM_DocumentType * which is not used with any DOM_Document yet, this is * null. */ virtual XalanDocument* getOwnerDocument() const; //@} /** @name Cloning function. */ //@{ /** * Returns a duplicate of this node. * * This function serves as a generic copy constructor for nodes. * * The duplicate node has no parent ( * parentNode returns null.). *
    Cloning an Element copies all attributes and their * values, including those generated by the XML processor to represent * defaulted attributes, but this method does not copy any text it contains * unless it is a deep clone, since the text is contained in a child * Text node. Cloning any other type of node simply returns a * copy of this node. * @param deep If true, recursively clone the subtree under the * specified node; if false, clone only the node itself (and * its attributes, if it is an Element). * @return The duplicate node. */ #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual XalanNode* #else virtual XercesAttrBridge* #endif cloneNode(bool deep) const; //@} /** @name Functions to modify the DOM Node. */ //@{ /** * Inserts the node newChild before the existing child node * refChild. * * If refChild is null, * insert newChild at the end of the list of children. *
    If newChild is a DocumentFragment object, * all of its children are inserted, in the same order, before * refChild. If the newChild is already in the * tree, it is first removed. Note that a DOM_Node that * has never been assigned to refer to an actual node is == null. * @param newChild The node to insert. * @param refChild The reference node, i.e., the node before which the new * node must be inserted. * @return The node being inserted. */ virtual XalanNode* insertBefore( XalanNode* newChild, XalanNode* refChild); /** * Replaces the child node oldChild with newChild * in the list of children, and returns the oldChild node. * * If newChild is a DOM_DocumentFragment object, * oldChild is replaced by all of the DOM_DocumentFragment * children, which are inserted in the same order. * * If the newChild is already in the tree, it is first removed. * @param newChild The new node to put in the child list. * @param oldChild The node being replaced in the list. * @return The node replaced. */ virtual XalanNode* replaceChild( XalanNode* newChild, XalanNode* oldChild); /** * Removes the child node indicated by oldChild from the list * of children, and returns it. * * @param oldChild The node being removed. * @return The node removed. */ virtual XalanNode* removeChild(XalanNode* oldChild); /** * Adds the node newChild to the end of the list of children of * this node. * * If the newChild is already in the tree, it is * first removed. * @param newChild The node to add.If it is a DocumentFragment * object, the entire contents of the document fragment are moved into * the child list of this node * @return The node added. */ virtual XalanNode* appendChild(XalanNode* newChild); //@} /** @name Query functions. */ //@{ /** * This is a convenience method to allow easy determination of whether a * node has any children. * * @return true if the node has any children, * false if the node has no children. */ virtual bool hasChildNodes() const; //@} /** @name Set functions. */ //@{ /** * Sets the value of the node. * * Any node which can have a nodeValue (@see getNodeValue) will * also accept requests to set it to a string. The exact response to * this varies from node to node -- Attribute, for example, stores * its values in its children and has to replace them with a new Text * holding the replacement value. * * For most types of Node, value is null and attempting to set it * will throw DOMException(NO_MODIFICATION_ALLOWED_ERR). This will * also be thrown if the node is read-only. */ virtual void setNodeValue(const XalanDOMString& nodeValue); //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * Puts all DOM_Text * nodes in the full depth of the sub-tree underneath this DOM_Node, * including attribute nodes, into a "normal" form where only markup (e.g., * tags, comments, processing instructions, CDATA sections, and entity * references) separates DOM_Text * nodes, i.e., there are no adjacent DOM_Text * nodes. This can be used to ensure that the DOM view of a document is the * same as if it were saved and re-loaded, and is useful when operations * (such as XPointer lookups) that depend on a particular document tree * structure are to be used. *

    Note: In cases where the document contains DOM_CDATASections, * the normalize operation alone may not be sufficient, since XPointers do * not differentiate between DOM_Text * nodes and DOM_CDATASection nodes.

    */ virtual void normalize(); /** * Tests whether the DOM implementation implements a specific * feature and that feature is supported by this node. * @param feature The string of the feature to test. This is the same * name as what can be passed to the method hasFeature on * DOMImplementation. * @param version This is the version number of the feature to test. In * Level 2, version 1, this is the string "2.0". If the version is not * specified, supporting any version of the feature will cause the * method to return true. * @return Returns true if the specified feature is supported * on this node, false otherwise. */ virtual bool isSupported( const XalanDOMString& feature, const XalanDOMString& version) const; /** * Get the namespace URI of * this node, or null if it is unspecified. *

    * This is not a computed value that is the result of a namespace lookup * based on an examination of the namespace declarations in scope. It is * merely the namespace URI given at creation time. *

    * For nodes of any type other than ELEMENT_NODE and * ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, * such as createElement from the Document * interface, this is always null. */ virtual const XalanDOMString& getNamespaceURI() const; /** * Get the namespace prefix * of this node, or null if it is unspecified. */ virtual const XalanDOMString& getPrefix() const; /** * Returns the local part of the qualified name of this node. *

    * For nodes created with a DOM Level 1 method, such as * createElement from the DOM_Document interface, * it is null. */ virtual const XalanDOMString& getLocalName() const; /** * Set the namespace prefix of this node. *

    * Note that setting this attribute, when permitted, changes * the nodeName attribute, which holds the qualified * name, as well as the tagName and name * attributes of the DOM_Element and DOM_Attr * interfaces, when applicable. *

    * Note also that changing the prefix of an * attribute, that is known to have a default value, does not make a new * attribute with the default value and the original prefix appear, since the * namespaceURI and localName do not change. * * @param prefix The prefix of this node. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified prefix contains * an illegal character. *
    * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. *
    * NAMESPACE_ERR: Raised if the specified prefix is * malformed, if the specified prefix is "xml" and the * namespaceURI of this node is different from * "http://www.w3.org/XML/1998/namespace", if specified prefix is * "xmlns" and the namespaceURI is neither * null nor an empty string, or if the * localName is null. */ virtual void setPrefix(const XalanDOMString& prefix); virtual bool isIndexed() const; virtual IndexType getIndex() const; //@} // These interfaces are inherited from XalanAttr... /** @name Getter functions */ //@{ /** * Returns the name of this attribute. */ virtual const XalanDOMString& getName() const; /** * * Returns true if the attribute received its value explicitly in the * XML document, or if a value was assigned programatically with * the setValue function. Returns false if the attribute value * came from the default value declared in the document's DTD. */ virtual bool getSpecified() const; /** * Returns the value of the attribute. * * The value of the attribute is returned as a string. * Character and general entity references are replaced with their values. */ virtual const XalanDOMString& getValue() const; //@} /** @name Setter functions */ //@{ /** * Sets the value of the attribute. A text node with the unparsed contents * of the string will be created. * * @param value The value of the DOM attribute to be set */ virtual void setValue(const XalanDOMString& value); //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * The Element node this attribute is attached to or * null if this attribute is not in use. */ virtual XalanElement* getOwnerElement() const; //@} /** * Get the Xerces node this instance represent. * * @return The Xerces node */ DOM_AttrType getXercesNode() const { return m_xercesNode; } private: // Not implemented... XercesAttrBridge(const XercesAttrBridge& theSource); XercesAttrBridge& operator=(const XercesAttrBridge& theSource); bool operator==(const XercesAttrBridge& theRHS) const; // Data members... DOM_AttrType m_xercesNode; XercesNodeListBridge m_children; const XercesBridgeNavigator& m_navigator; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESATTRBRIDGE_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeHelper.cpp0000664000175000000640000001072511731656102026436 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) #include "XercesBridgeHelper.hpp" #if XERCES_VERSION_MAJOR >= 2 #include #else #include #endif #include XALAN_CPP_NAMESPACE_BEGIN void XercesBridgeHelper::setNodeValue( DOM_NodeType& theXercesNode, const XalanDOMString& nodeValue) { try { theXercesNode.setNodeValue(XalanDOMStringToXercesDOMString(nodeValue)); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } } void XercesBridgeHelper::normalize(DOM_NodeType& theXercesNode) { try { theXercesNode.normalize(); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } } bool XercesBridgeHelper::isSupported( const DOM_NodeType& theXercesNode, const XalanDOMString& feature, const XalanDOMString& version) { return theXercesNode.isSupported( XalanDOMStringToXercesDOMString(feature), XalanDOMStringToXercesDOMString(version)); } void XercesBridgeHelper::setPrefix( DOM_NodeType& theXercesNode, const XalanDOMString& prefix) { try { theXercesNode.setPrefix(XalanDOMStringToXercesDOMString(prefix)); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } } const XalanDOMString XercesBridgeHelper::substringData( const DOM_CharacterDataType& theXercesNode, unsigned int offset, unsigned int count) { try { const DOMStringType theString(theXercesNode.substringData(offset, count)); return XalanDOMString(theString.rawBuffer(), theString.length()); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } } void XercesBridgeHelper::appendData( DOM_CharacterDataType& theXercesNode, const XalanDOMString& arg) { try { theXercesNode.appendData(XalanDOMStringToXercesDOMString(arg)); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } } void XercesBridgeHelper::insertData( DOM_CharacterDataType& theXercesNode, unsigned int offset, const XalanDOMString& arg) { try { theXercesNode.insertData(offset, XalanDOMStringToXercesDOMString(arg)); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } } void XercesBridgeHelper::deleteData( DOM_CharacterDataType& theXercesNode, unsigned int offset, unsigned int count) { try { theXercesNode.deleteData(offset, count); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } } void XercesBridgeHelper::replaceData( DOM_CharacterDataType& theXercesNode, unsigned int offset, unsigned int count, const XalanDOMString& arg) { try { theXercesNode.replaceData(offset, count, XalanDOMStringToXercesDOMString(arg)); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesNodeListBridge.cpp0000664000175000000640000000343511731656102026740 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) #include "XercesNodeListBridge.hpp" #include #include "XercesBridgeNavigator.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesNodeListBridge::XercesNodeListBridge( const DOM_NodeListType& theXercesNodeList, const XercesBridgeNavigator& theNavigator) : XalanNodeList(), m_xercesNodeList(theXercesNodeList), m_navigator(theNavigator) { } XercesNodeListBridge::~XercesNodeListBridge() { } XercesNodeListBridge::XercesNodeListBridge(const XercesNodeListBridge& theSource) : XalanNodeList(theSource), m_xercesNodeList(theSource.m_xercesNodeList), m_navigator(theSource.m_navigator) { } XalanNode* XercesNodeListBridge::item(unsigned int index) const { return m_navigator.mapNode(m_xercesNodeList.item(index)); } unsigned int XercesNodeListBridge::getLength() const { return m_xercesNodeList.getLength(); } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentBridge.hpp0000664000175000000640000003667211731656102027013 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESDOCUMENTBRIDGE_HEADER_GUARD_1357924680) #define XERCESDOCUMENTBRIDGE_HEADER_GUARD_1357924680 #include #include #include #if XERCES_VERSION_MAJOR >= 2 #include #else #include #endif #include #if defined(XALAN_AUTO_PTR_REQUIRES_DEFINITION) #include #include #endif #include #include #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanDOMStringPool; class XercesAttrBridge; class XercesCommentBridge; class XercesCDATASectionBridge; class XercesDocumentFragmentBridge; class XercesDocumentTypeBridge; class XercesElementBridge; class XercesEntityBridge; class XercesEntityReferenceBridge; class XercesProcessingInstructionBridge; class XercesNotationBridge; class XercesTextBridge; /** * This class is deprecated. * * @deprecated This class is part of the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesDocumentBridge : public XalanDocument { public: friend class XercesBridgeNavigator; /** * * Constructor for XercesDocumentBridge. * * If the document will be shared amongst multiple threads of execution, * the parameter buildBridge must be true. Otherwise, the bridge * nodes will be built on demand, a process which is not synchronized. * This could cause serious problems if multiple threads tried to visit * an unbuilt node at the same time. * * @param theXercesDocument The Xerces document to bridge * @param threadSafe If true, the tree can safely be shared amongst multiple threads. (Also implies buildBridge == true) * @param buildBridge If true, all of the bridge nodes will be built during construction. * */ XercesDocumentBridge( const DOM_Document_Type& theXercesDocument, bool threadSafe = true, bool buildBridge = true); virtual ~XercesDocumentBridge(); // These interfaces are inherited from XalanNode... virtual const XalanDOMString& getNodeName() const; virtual const XalanDOMString& getNodeValue() const; virtual NodeType getNodeType() const; virtual XalanNode* getParentNode() const; virtual const XalanNodeList* getChildNodes() const; virtual XalanNode* getFirstChild() const; virtual XalanNode* getLastChild() const; virtual XalanNode* getPreviousSibling() const; virtual XalanNode* getNextSibling() const; virtual const XalanNamedNodeMap* getAttributes() const; virtual XalanDocument* getOwnerDocument() const; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual XalanNode* #else virtual XercesDocumentBridge* #endif cloneNode(bool deep) const; virtual XalanNode* insertBefore( XalanNode* newChild, XalanNode* refChild); virtual XalanNode* replaceChild( XalanNode* newChild, XalanNode* oldChild); virtual XalanNode* removeChild(XalanNode* oldChild); virtual XalanNode* appendChild(XalanNode* newChild); virtual bool hasChildNodes() const; virtual void setNodeValue(const XalanDOMString& nodeValue); virtual void normalize(); virtual bool isSupported( const XalanDOMString& feature, const XalanDOMString& version) const; virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; virtual void setPrefix(const XalanDOMString& prefix); virtual bool isIndexed() const; virtual IndexType getIndex() const; virtual XalanElement* createElement(const XalanDOMString& tagName); virtual XalanDocumentFragment* createDocumentFragment(); virtual XalanText* createTextNode(const XalanDOMString& data); virtual XalanComment* createComment(const XalanDOMString& data); virtual XalanCDATASection* createCDATASection(const XalanDOMString& data); virtual XalanProcessingInstruction* createProcessingInstruction( const XalanDOMString& target, const XalanDOMString& data); virtual XalanAttr* createAttribute(const XalanDOMString& name); virtual XalanEntityReference* createEntityReference(const XalanDOMString& name); virtual XalanDocumentType* getDoctype() const; virtual XalanDOMImplementation* getImplementation() const; virtual XalanElement* getDocumentElement() const; virtual XalanNodeList* getElementsByTagName(const XalanDOMString& tagname) const; virtual XalanNode* importNode( XalanNode* importedNode, bool deep); virtual XalanElement* createElementNS( const XalanDOMString& namespaceURI, const XalanDOMString& qualifiedName); virtual XalanAttr* createAttributeNS( const XalanDOMString& namespaceURI, const XalanDOMString& qualifiedName); virtual XalanNodeList* getElementsByTagNameNS( const XalanDOMString& namespaceURI, const XalanDOMString& localName) const; virtual XalanElement* getElementById(const XalanDOMString& elementId) const; // These are some special interfaces to manage relationships between // our nodes and Xerces nodes. /** * Destroy the entire bridge structure that connects * the Xerces document to this XercesDocumentBridge * instance. This will invalidate any pointers to * any nodes in the document (except, of course, the * document itself). */ void destroyBridge(); /** * Rebuild the entire bridge structure that connects * the Xerces document to this XercesDocumentBridge * instance. This destroys the bridge before * rebuilding. */ void rebuildBridge(); XalanNode* mapNode(const DOM_NodeType& theXercesNode) const; XalanAttr* mapNode(const DOM_AttrType& theXercesNode) const; XalanElement* mapNode(const DOM_ElementType& theXercesNode) const; DOM_NodeType mapNode(const XalanNode* theXalanNode) const; DOM_AttrType mapNode(const XalanAttr* theXalanNode) const; NodeImplType* mapNodeToImpl(const XalanNode* theXalanNode) const; /** * * Get the Xerces DOM_Document that this XercesDocument represents. * * @return the Xerces DOM_Document instance. * */ DOM_Document_Type getXercesDocument() const { return m_xercesDocument; } /** * Build the entire bridge structure. This should be done before any * processing begins, if the tree will be shared amongst multiple * threads. */ void buildBridgeNodes(); typedef XalanDeque NavigatorBridgeVectorType; typedef XalanDeque NodeVectorType; // Helper class to walk the tree and build everything... class BuildBridgeTreeWalker : public XercesTreeWalker { public: typedef NavigatorBridgeVectorType NavigatorBridgeVectorInnerType; BuildBridgeTreeWalker( XercesDocumentBridge* theDocument, XercesBridgeNavigator* theDocumentNavigator, NavigatorBridgeVectorInnerType& theNavigators, IndexType theStartIndex); virtual ~BuildBridgeTreeWalker(); struct NavigatorStackEntryType { NavigatorStackEntryType( XercesBridgeNavigator* theNavigator = 0, XalanNode* theNode = 0) : m_navigator(theNavigator), m_node(theNode) { } XercesBridgeNavigator* m_navigator; XalanNode* m_node; }; typedef XalanVector NavigatorStackType; protected: virtual void startNode(const DOM_NodeType& node); virtual void endNode(const DOM_NodeType& node); private: XercesDocumentBridge* m_document; NavigatorBridgeVectorInnerType& m_navigators; IndexType m_currentIndex; NavigatorStackType m_parentNavigatorStack; NavigatorStackType m_siblingNavigatorStack; }; /** * Get a pooled string. If the string is not in the pool, * add it. * * @param theString The string to pool. * @return A const reference to the pooled string. */ const XalanDOMString& getPooledString(const XalanDOMString& theString) const; /** * Get a pooled string. If the string is not in the pool, * add it. * * @param theString The string to pool. * @param theLength The length of the string. If XalanDOMString::npos, the string is assumed to be null-terminated. * @return A const reference to the pooled string. */ const XalanDOMString& getPooledString( const XalanDOMChar* theString, XalanDOMString::size_type theLength /* = XalanDOMString::npos */) const; private: XalanNode* mapNode(NodeImplType* theXercesNodeImpl) const; // Destruction API... void destroyBridgeNode(XalanNode* theNode); // Not implemented... XercesDocumentBridge(const XercesDocumentBridge& theSource); XercesDocumentBridge& operator=(const XercesDocumentBridge& theRHS); bool operator==(const XercesDocumentBridge& theRHS) const; // Private delete function... void destroyNode(XalanNode* theNode); // More internal implementation stuff... XalanNode* internalCloneNode( const XalanNode* theXalanNode, const DOM_NodeType& theXercesNode, bool deep); // Factory methods for our implementation nodes... XalanNode* createBridgeNode( const DOM_NodeType& theXercesNode, IndexType theIndex, bool mapNode) const; XercesDocumentTypeBridge* createBridgeNode( const DOM_DocumentType_Type& theDoctype, IndexType theIndex, bool mapNode) const; XercesElementBridge* createBridgeNode( const DOM_ElementType& theXercesNode, IndexType theIndex, bool mapNode) const; XercesDocumentFragmentBridge* createBridgeNode( const DOM_DocumentFragmentType& theXercesNode, IndexType theIndex, bool mapNode) const; XercesTextBridge* createBridgeNode( const DOM_TextType& theXercesNode, IndexType theIndex, bool mapNode) const; XercesCommentBridge* createBridgeNode( const DOM_CommentType& theXercesNode, IndexType theIndex, bool mapNode) const; XercesCDATASectionBridge* createBridgeNode( const DOM_CDATASectionType& theXercesNode, IndexType theIndex, bool mapNode) const; XercesProcessingInstructionBridge* createBridgeNode( const DOM_ProcessingInstructionType& theXercesNode, IndexType theIndex, bool mapNode) const; XercesAttrBridge* createBridgeNode( const DOM_AttrType& theXercesNode, IndexType theIndex, bool mapNode) const; XercesEntityBridge* createBridgeNode( const DOM_EntityType& theXercesNode, IndexType theIndex, bool mapNode) const; XercesEntityReferenceBridge* createBridgeNode( const DOM_EntityReferenceType& theXercesNode, IndexType theIndex, bool mapNode) const; XercesNotationBridge* createBridgeNode( const DOM_NotationType& theXercesNode, IndexType theIndex, bool mapNode) const; XercesBridgeNavigator& pushNavigator(bool mappingMode) const; // This is a private helper class for building the tree... friend class BuildBridgeTreeWalker; // $$$ ToDo: This is because DOM_Document::getElementById() is not // const... mutable DOM_Document_Type m_xercesDocument; XalanElement* m_documentElement; mutable XercesToXalanNodeMap m_nodeMap; XalanAutoPtr m_domImplementation; mutable NavigatorBridgeVectorType m_navigators; // Our navigator will be the first entry in m_navigators, // but we'll cache this so access is faster... XercesBridgeNavigator* m_navigator; XercesNodeListBridge m_children; mutable NodeVectorType m_nodes; mutable XercesDocumentTypeBridge* m_doctype; bool m_mappingMode; bool m_indexValid; mutable XercesElementBridgeAllocator m_elementAllocator; mutable XercesTextBridgeAllocator m_textAllocator; mutable XercesAttributeBridgeAllocator m_attributeAllocator; const XalanAutoPtr m_stringPool; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESDOCUMENTBRIDGE_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesProcessingInstructionBridge.hpp0000664000175000000640000003752511731656102031611 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESPROCESSINGINSTRUCTIONBRIDGE_HEADER_GUARD_1357924680) #define XERCESPROCESSINGINSTRUCTIONBRIDGE_HEADER_GUARD_1357924680 #include #if XERCES_VERSION_MAJOR >= 2 #include #else #include #endif #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesBridgeNavigator; /** * This class is deprecated. * * @deprecated This class is part of the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesProcessingInstructionBridge : public XalanProcessingInstruction { public: XercesProcessingInstructionBridge( const DOM_ProcessingInstructionType& theXercesDOMProcessingInstruction, const XercesBridgeNavigator& theNavigator); virtual ~XercesProcessingInstructionBridge(); // These interfaces are inherited from XalanNode... virtual const XalanDOMString& getNodeName() const; /** * Gets the value of this node, depending on its type. */ virtual const XalanDOMString& getNodeValue() const; /** * An enum value representing the type of the underlying object. */ virtual NodeType getNodeType() const; /** * Gets the parent of this node. * * All nodes, except Document, * DocumentFragment, and Attr may have a parent. * However, if a node has just been created and not yet added to the tree, * or if it has been removed from the tree, a null DOM_Node * is returned. */ virtual XalanNode* getParentNode() const; /** * Gets a NodeList that contains all children of this node. * * If there * are no children, this is a NodeList containing no nodes. * The content of the returned NodeList is "live" in the sense * that, for instance, changes to the children of the node object that * it was created from are immediately reflected in the nodes returned by * the NodeList accessors; it is not a static snapshot of the * content of the node. This is true for every NodeList, * including the ones returned by the getElementsByTagName * method. */ virtual const XalanNodeList* getChildNodes() const; /** * Gets the first child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getFirstChild() const; /** * Gets the last child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getLastChild() const; /** * Gets the node immediately preceding this node. * * If there is no such node, this returns null. */ virtual XalanNode* getPreviousSibling() const; /** * Gets the node immediately following this node. * * If there is no such node, this returns null. */ virtual XalanNode* getNextSibling() const; /** * Gets a NamedNodeMap containing the attributes of this node (if it * is an Element) or null otherwise. */ virtual const XalanNamedNodeMap* getAttributes() const; /** * Gets the DOM_Document object associated with this node. * * This is also * the DOM_Document object used to create new nodes. When this * node is a DOM_Document or a DOM_DocumentType * which is not used with any DOM_Document yet, this is * null. */ virtual XalanDocument* getOwnerDocument() const; //@} /** @name Cloning function. */ //@{ /** * Returns a duplicate of this node. * * This function serves as a generic copy constructor for nodes. * * The duplicate node has no parent ( * parentNode returns null.). *
    Cloning an Element copies all attributes and their * values, including those generated by the XML processor to represent * defaulted attributes, but this method does not copy any text it contains * unless it is a deep clone, since the text is contained in a child * Text node. Cloning any other type of node simply returns a * copy of this node. * @param deep If true, recursively clone the subtree under the * specified node; if false, clone only the node itself (and * its attributes, if it is an Element). * @return The duplicate node. */ #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual XalanNode* #else virtual XercesProcessingInstructionBridge* #endif cloneNode(bool deep) const; //@} /** @name Functions to modify the DOM Node. */ //@{ /** * Inserts the node newChild before the existing child node * refChild. * * If refChild is null, * insert newChild at the end of the list of children. *
    If newChild is a DocumentFragment object, * all of its children are inserted, in the same order, before * refChild. If the newChild is already in the * tree, it is first removed. Note that a DOM_Node that * has never been assigned to refer to an actual node is == null. * @param newChild The node to insert. * @param refChild The reference node, i.e., the node before which the new * node must be inserted. * @return The node being inserted. */ virtual XalanNode* insertBefore( XalanNode* newChild, XalanNode* refChild); /** * Replaces the child node oldChild with newChild * in the list of children, and returns the oldChild node. * * If newChild is a DOM_DocumentFragment object, * oldChild is replaced by all of the DOM_DocumentFragment * children, which are inserted in the same order. * * If the newChild is already in the tree, it is first removed. * @param newChild The new node to put in the child list. * @param oldChild The node being replaced in the list. * @return The node replaced. */ virtual XalanNode* replaceChild( XalanNode* newChild, XalanNode* oldChild); /** * Removes the child node indicated by oldChild from the list * of children, and returns it. * * @param oldChild The node being removed. * @return The node removed. */ virtual XalanNode* removeChild(XalanNode* oldChild); /** * Adds the node newChild to the end of the list of children of * this node. * * If the newChild is already in the tree, it is * first removed. * @param newChild The node to add.If it is a DocumentFragment * object, the entire contents of the document fragment are moved into * the child list of this node * @return The node added. */ virtual XalanNode* appendChild(XalanNode* newChild); //@} /** @name Query functions. */ //@{ /** * This is a convenience method to allow easy determination of whether a * node has any children. * * @return true if the node has any children, * false if the node has no children. */ virtual bool hasChildNodes() const; //@} /** @name Set functions. */ //@{ /** * Sets the value of the node. * * Any node which can have a nodeValue (@see getNodeValue) will * also accept requests to set it to a string. The exact response to * this varies from node to node -- Attribute, for example, stores * its values in its children and has to replace them with a new Text * holding the replacement value. * * For most types of Node, value is null and attempting to set it * will throw DOMException(NO_MODIFICATION_ALLOWED_ERR). This will * also be thrown if the node is read-only. */ virtual void setNodeValue(const XalanDOMString& nodeValue); //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * Puts all DOM_Text * nodes in the full depth of the sub-tree underneath this DOM_Node, * including attribute nodes, into a "normal" form where only markup (e.g., * tags, comments, processing instructions, CDATA sections, and entity * references) separates DOM_Text * nodes, i.e., there are no adjacent DOM_Text * nodes. This can be used to ensure that the DOM view of a document is the * same as if it were saved and re-loaded, and is useful when operations * (such as XPointer lookups) that depend on a particular document tree * structure are to be used. *

    Note: In cases where the document contains DOM_CDATASections, * the normalize operation alone may not be sufficient, since XPointers do * not differentiate between DOM_Text * nodes and DOM_CDATASection nodes.

    */ virtual void normalize(); /** * Tests whether the DOM implementation implements a specific * feature and that feature is supported by this node. * @param feature The string of the feature to test. This is the same * name as what can be passed to the method hasFeature on * DOMImplementation. * @param version This is the version number of the feature to test. In * Level 2, version 1, this is the string "2.0". If the version is not * specified, supporting any version of the feature will cause the * method to return true. * @return Returns true if the specified feature is supported * on this node, false otherwise. */ virtual bool isSupported( const XalanDOMString& feature, const XalanDOMString& version) const; /** * Get the namespace URI of * this node, or null if it is unspecified. *

    * This is not a computed value that is the result of a namespace lookup * based on an examination of the namespace declarations in scope. It is * merely the namespace URI given at creation time. *

    * For nodes of any type other than ELEMENT_NODE and * ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, * such as createElement from the Document * interface, this is always null. */ virtual const XalanDOMString& getNamespaceURI() const; /** * Get the namespace prefix * of this node, or null if it is unspecified. */ virtual const XalanDOMString& getPrefix() const; /** * Returns the local part of the qualified name of this node. *

    * For nodes created with a DOM Level 1 method, such as * createElement from the DOM_Document interface, * it is null. */ virtual const XalanDOMString& getLocalName() const; /** * Set the namespace prefix of this node. *

    * Note that setting this attribute, when permitted, changes * the nodeName attribute, which holds the qualified * name, as well as the tagName and name * attributes of the DOM_Element and DOM_Attr * interfaces, when applicable. *

    * Note also that changing the prefix of an * attribute, that is known to have a default value, does not make a new * attribute with the default value and the original prefix appear, since the * namespaceURI and localName do not change. * * @param prefix The prefix of this node. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified prefix contains * an illegal character. *
    * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. *
    * NAMESPACE_ERR: Raised if the specified prefix is * malformed, if the specified prefix is "xml" and the * namespaceURI of this node is different from * "http://www.w3.org/XML/1998/namespace", if specified prefix is * "xmlns" and the namespaceURI is neither * null nor an empty string, or if the * localName is null. */ virtual void setPrefix(const XalanDOMString& prefix); virtual bool isIndexed() const; virtual IndexType getIndex() const; //@} // These interfaces are inherited from XalanProcessingInstruction... //@} /** @name Get functions. */ //@{ /** * The target of this processing instruction. * * XML defines this as being the * first token following the markup that begins the processing instruction. */ virtual const XalanDOMString& getTarget() const; /** * The content of this processing instruction. * * This is from the first non * white space character after the target to the character immediately * preceding the ?>. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly. */ virtual const XalanDOMString& getData() const; //@} /** @name Set functions. */ //@{ /** * Sets the content of this processing instruction. * * This is from the first non * white space character after the target to the character immediately * preceding the ?>. * @param data The string containing the processing instruction */ virtual void setData(const XalanDOMString& data); //@} /** * Get the Xerces node this instance represent. * * @return The Xerces node */ DOM_ProcessingInstructionType getXercesNode() const { return m_xercesNode; } private: // Not implemented... XercesProcessingInstructionBridge(const XercesProcessingInstructionBridge& theSource); XercesProcessingInstructionBridge& operator=(const XercesProcessingInstructionBridge& theSource); bool operator==(const XercesProcessingInstructionBridge& theRHS) const; // Data members... DOM_ProcessingInstructionType m_xercesNode; const XercesBridgeNavigator& m_navigator; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESPROCESSINGINSTRUCTIONBRIDGE_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeHelper.hpp0000664000175000000640000000673711731656102026453 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESBRIDGEHELPER_HEADER_GUARD_1357924680) #define XERCESBRIDGEHELPER_HEADER_GUARD_1357924680 #include #include #if XERCES_VERSION_MAJOR >= 2 #include #else #include #endif #include #include #include XALAN_DECLARE_XERCES_CLASS(DOM_CharacterData) XALAN_CPP_NAMESPACE_BEGIN /** * This class is deprecated. * * @deprecated This class is part of the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesBridgeHelper { public: typedef unsigned int XercesStringLengthType; static const DOMStringType XalanDOMStringToXercesDOMString(const XalanDOMString& theString) { assert(XercesStringLengthType(theString.length()) == theString.length()); return DOMStringType(&theString[0], XercesStringLengthType(theString.length())); } static void setNodeValue( DOM_NodeType& theXercesNode, const XalanDOMString& nodeValue); static void normalize(DOM_NodeType& theXercesNode); static bool isSupported( const DOM_NodeType& theXercesNode, const XalanDOMString& feature, const XalanDOMString& version); static void setPrefix( DOM_NodeType& theXercesNode, const XalanDOMString& prefix); static const XalanDOMString substringData( const DOM_CharacterDataType& theXercesNode, unsigned int offset, unsigned int count); static void appendData( DOM_CharacterDataType& theXercesNode, const XalanDOMString& arg); static void insertData( DOM_CharacterDataType& theXercesNode, unsigned int offset, const XalanDOMString& arg); static void deleteData( DOM_CharacterDataType& theXercesNode, unsigned int offset, unsigned int count); static void replaceData( DOM_CharacterDataType& theXercesNode, unsigned int offset, unsigned int count, const XalanDOMString& arg); private: // Not implemented... XercesBridgeHelper(); XercesBridgeHelper(const XercesBridgeHelper&); }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESBRIDGEHELPER_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesDOMImplementationBridge.cpp0000664000175000000640000000507111731656102030542 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) #include "XercesDOMImplementationBridge.hpp" #if XERCES_VERSION_MAJOR >= 2 #include #else #include #endif #include #include XALAN_CPP_NAMESPACE_BEGIN XercesDOMImplementationBridge::XercesDOMImplementationBridge(DOM_DOMImplementationType& theXercesDOMImplementation) : XalanDOMImplementation(), m_xercesNode(theXercesDOMImplementation) { } XercesDOMImplementationBridge::~XercesDOMImplementationBridge() { } XercesDOMImplementationBridge::XercesDOMImplementationBridge(const XercesDOMImplementationBridge& theSource) : XalanDOMImplementation(theSource), m_xercesNode(theSource.m_xercesNode) { } bool XercesDOMImplementationBridge::hasFeature( const XalanDOMString& feature, const XalanDOMString& version) { return m_xercesNode.hasFeature(feature.c_str(), version.c_str()); } XalanDocumentType* XercesDOMImplementationBridge::createDocumentType( const XalanDOMString& /* qualifiedName */, const XalanDOMString& /* publicId */, const XalanDOMString& /* systemId */) { throw XercesDOMException(XercesDOMException::NOT_SUPPORTED_ERR); return 0; } XalanDocument* XercesDOMImplementationBridge::createDocument( const XalanDOMString& /* namespaceURI */, const XalanDOMString& /* qualifiedName */, const XalanDocumentType& /* doctype */) { throw XercesDOMException(XercesDOMException::NOT_SUPPORTED_ERR); return 0; } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesNodeListBridge.hpp0000664000175000000640000000571611731656102026751 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESNODELISTBRIDGE_HEADER_GUARD_1357924680) #define XERCESNODELISTBRIDGE_HEADER_GUARD_1357924680 #include #if XERCES_VERSION_MAJOR >= 2 #include #else #include #endif #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesBridgeNavigator; /** * This class is deprecated. * * @deprecated This class is part of the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesNodeListBridge : public XalanNodeList { public: XercesNodeListBridge( const DOM_NodeListType& theXercesNodeList, const XercesBridgeNavigator& theNavigator); XercesNodeListBridge(const XercesNodeListBridge& theSource); virtual ~XercesNodeListBridge(); bool operator==(const XercesNodeListBridge& theRHS) const { return m_xercesNodeList == theRHS.m_xercesNodeList ? true : false; } /** @name Get functions. */ //@{ /** * Returns the indexth item in the collection. * * If index is greater than or equal to the number of nodes in * the list, this returns null. * * @param index Index into the collection. * @return The node at the indexth position in the * NodeList, or null if that is not a valid * index. */ virtual XalanNode* item(unsigned int index) const; /** * Returns the number of nodes in the list. * * The range of valid child node indices is 0 to length-1 inclusive. */ virtual unsigned int getLength() const; private: // Not implemented... XercesNodeListBridge& operator=(const XercesNodeListBridge& theRHS); // Data members... DOM_NodeListType m_xercesNodeList; const XercesBridgeNavigator& m_navigator; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESNODELISTBRIDGE_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesNamedNodeMapBridge.cpp0000664000175000000640000001266311731656102027512 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) #include "XercesNamedNodeMapBridge.hpp" #include #include #if XERCES_VERSION_MAJOR >= 2 #include #else #include #endif #include #include #include XALAN_CPP_NAMESPACE_BEGIN XercesNamedNodeMapBridge::XercesNamedNodeMapBridge( const DOM_NamedNodeMapType& theXercesNamedNodeMap, const XercesBridgeNavigator& theNavigator) : m_xercesNamedNodeMap(theXercesNamedNodeMap), m_navigator(theNavigator) { assert(m_xercesNamedNodeMap != (const XERCES_CPP_NAMESPACE_QUALIFIER DOM_NullPtr*)0); } XercesNamedNodeMapBridge::~XercesNamedNodeMapBridge() { } XalanNode* XercesNamedNodeMapBridge::setNamedItem(XalanNode* arg) { assert(arg != 0); XalanNode* theXalanNode = 0; // Find the DOM_Node that corresponds to the bridge node... const DOM_NodeType theNode = m_navigator.mapNode(arg); if (theNode.isNull() == true) { // Doesn't belong to this doc, so throw... throw XercesDOMException(XercesDOMException::WRONG_DOCUMENT_ERR); } try { const DOM_NodeType theOldXercesNode = m_xercesNamedNodeMap.setNamedItem(theNode); if (theNode.isNull() == false) { // A node was replaced, so map the replacement... theXalanNode = m_navigator.mapNode(theOldXercesNode); assert(theXalanNode != 0); } } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } return theXalanNode; } XalanNode* XercesNamedNodeMapBridge::item(unsigned int index) const { return m_navigator.mapNode(m_xercesNamedNodeMap.item(index)); } XalanNode* XercesNamedNodeMapBridge::getNamedItem(const XalanDOMString& name) const { return m_navigator.mapNode(m_xercesNamedNodeMap.getNamedItem(name.c_str())); } unsigned int XercesNamedNodeMapBridge::getLength() const { return m_xercesNamedNodeMap.getLength(); } XalanNode* XercesNamedNodeMapBridge::removeNamedItem(const XalanDOMString& name) { XalanNode* theXalanNode = 0; try { const DOM_NodeType theXercesNode = m_xercesNamedNodeMap.removeNamedItem(name.c_str()); // A node was removed, so get it corresponding XalanNode... theXalanNode = m_navigator.mapNode(theXercesNode); assert(theXalanNode != 0); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } return theXalanNode; } XalanNode* XercesNamedNodeMapBridge::getNamedItemNS( const XalanDOMString& namespaceURI, const XalanDOMString& localName) const { return m_navigator.mapNode(m_xercesNamedNodeMap.getNamedItemNS(namespaceURI.c_str(), localName.c_str())); } XalanNode* XercesNamedNodeMapBridge::setNamedItemNS(XalanNode* arg) { assert(arg != 0); XalanNode* theXalanNode = 0; // Find the DOM_Node that corresponds to the bridge node... const DOM_NodeType theNode = m_navigator.mapNode(arg); if (theNode.isNull() == true) { // Doesn't belong to this doc, so throw... throw XercesDOMException(XercesDOMException::WRONG_DOCUMENT_ERR); } try { const DOM_NodeType theOldXercesNode = m_xercesNamedNodeMap.setNamedItemNS(theNode); if (theNode.isNull() == false) { // A node was replaced, so map the replacement... theXalanNode = m_navigator.mapNode(theOldXercesNode); assert(theXalanNode != 0); } } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } return theXalanNode; } XalanNode* XercesNamedNodeMapBridge::removeNamedItemNS( const XalanDOMString& namespaceURI, const XalanDOMString& localName) { XalanNode* theXalanNode = 0; try { const DOM_NodeType theXercesNode = m_xercesNamedNodeMap.removeNamedItemNS(namespaceURI.c_str(), localName.c_str()); // A node was removed, so get it corresponding XalanNode... theXalanNode = m_navigator.mapNode(theXercesNode); assert(theXalanNode != 0); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } return theXalanNode; } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesTreeWalker.cpp0000664000175000000640000000502411731656102026143 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) // Class header file. #include "XercesTreeWalker.hpp" // Xerces header files... #if XERCES_VERSION_MAJOR >= 2 #include #else #include #endif XALAN_CPP_NAMESPACE_BEGIN XercesTreeWalker::XercesTreeWalker() { } XercesTreeWalker::~XercesTreeWalker() { } void XercesTreeWalker::traverse(const DOM_NodeType& pos) { DOM_NodeType thePos(pos); while(thePos != 0) { startNode(thePos); DOM_NodeType nextNode = thePos.getFirstChild(); while(nextNode == 0) { endNode(thePos); nextNode = thePos.getNextSibling(); if(nextNode == 0) { thePos = thePos.getParentNode(); if(thePos == 0) { nextNode = thePos; break; } } } thePos = nextNode; } } void XercesTreeWalker::traverse( const DOM_NodeType& pos, const DOM_NodeType& parent) { DOM_NodeType thePos(pos); while(parent != thePos) { startNode(thePos); DOM_NodeType nextNode = thePos.getFirstChild(); while(nextNode == 0) { endNode(thePos); nextNode = thePos.getNextSibling(); if(nextNode == 0) { thePos = thePos.getParentNode(); if(parent == thePos) { nextNode = thePos; break; } } } thePos = nextNode; } } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeNavigator.cpp0000664000175000000640000001772211731656102027155 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) #include "XercesBridgeNavigator.hpp" #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN // This is used to distinguish between null nodes, which are valid, and // an uninitialized cached node address. static XalanNode* const invalidNodeAddress = reinterpret_cast(1); XercesBridgeNavigator::XercesBridgeNavigator( XercesDocumentBridge* theOwnerDocument, bool mappingMode) : m_ownerDocument(theOwnerDocument), m_parentNode(mappingMode == true ? invalidNodeAddress : 0), m_previousSibling(mappingMode == true ? invalidNodeAddress : 0), m_nextSibling(mappingMode == true ? invalidNodeAddress : 0), m_firstChild(mappingMode == true ? invalidNodeAddress : 0), m_lastChild(mappingMode == true ? invalidNodeAddress : 0), m_index(0) { } XercesBridgeNavigator::XercesBridgeNavigator(const XercesBridgeNavigator& theSource) : m_ownerDocument(theSource.m_ownerDocument), m_parentNode(theSource.m_parentNode), m_previousSibling(theSource.m_previousSibling), m_nextSibling(theSource.m_nextSibling), m_firstChild(theSource.m_firstChild), m_lastChild(theSource.m_lastChild), m_index(theSource.m_index) { } XercesBridgeNavigator::~XercesBridgeNavigator() { } XalanNode* XercesBridgeNavigator::mapNode(const DOM_NodeType& theXercesNode) const { return m_ownerDocument->mapNode(theXercesNode); } XalanAttr* XercesBridgeNavigator::mapNode(const DOM_AttrType& theXercesNode) const { return m_ownerDocument->mapNode(theXercesNode); } DOM_NodeType XercesBridgeNavigator::mapNode(const XalanNode* theXalanNode) const { return m_ownerDocument->mapNode(theXalanNode); } DOM_AttrType XercesBridgeNavigator::mapNode(const XalanAttr* theXalanNode) const { return m_ownerDocument->mapNode(theXalanNode); } XalanNode* XercesBridgeNavigator::getParentNode(const DOM_NodeType& theXercesNode) const { if (m_parentNode == invalidNodeAddress) { m_parentNode = m_ownerDocument->mapNode(theXercesNode.getParentNode()); } return m_parentNode; } XalanNode* XercesBridgeNavigator::getPreviousSibling(const DOM_NodeType& theXercesNode) const { if (m_previousSibling == invalidNodeAddress) { m_previousSibling = m_ownerDocument->mapNode(theXercesNode.getPreviousSibling()); } return m_previousSibling; } XalanNode* XercesBridgeNavigator::getNextSibling(const DOM_NodeType& theXercesNode) const { if (m_nextSibling == invalidNodeAddress) { m_nextSibling = m_ownerDocument->mapNode(theXercesNode.getNextSibling()); } return m_nextSibling; } XalanNode* XercesBridgeNavigator::getFirstChild(const DOM_NodeType& theXercesNode) const { if (m_firstChild == invalidNodeAddress) { m_firstChild = m_ownerDocument->mapNode(theXercesNode.getFirstChild()); } return m_firstChild; } XalanNode* XercesBridgeNavigator::getLastChild(const DOM_NodeType& theXercesNode) const { if (m_lastChild == invalidNodeAddress) { m_lastChild = m_ownerDocument->mapNode(theXercesNode.getLastChild()); } return m_lastChild; } XalanNode* XercesBridgeNavigator::insertBefore( DOM_NodeType& theXercesParent, XalanNode* newChild, XalanNode* refChild) const { assert(newChild != 0); // Get the corresponding Xerces nodes... const DOM_NodeType theNewChild = m_ownerDocument->mapNode(newChild); const DOM_NodeType theRefChild = m_ownerDocument->mapNode(refChild); try { const DOM_NodeType theXercesResult = theXercesParent.insertBefore(theNewChild, theRefChild); assert(m_ownerDocument->mapNode(theXercesResult) == newChild); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } return newChild; } XalanNode* XercesBridgeNavigator:: replaceChild( DOM_NodeType& theXercesParent, XalanNode* newChild, XalanNode* oldChild) const { assert(newChild != 0); assert(oldChild != 0); // Get the corresponding Xerces nodes... const DOM_NodeType theNewChild = m_ownerDocument->mapNode(newChild); const DOM_NodeType theOldChild = m_ownerDocument->mapNode(oldChild); try { const DOM_NodeType theXercesResult = theXercesParent.replaceChild(theNewChild, theOldChild); assert(m_ownerDocument->mapNode(theXercesResult) == oldChild); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } return oldChild; } XalanNode* XercesBridgeNavigator::removeChild( DOM_NodeType& theXercesParent, XalanNode* oldChild) const { assert(oldChild != 0); // Get the corresponding Xerces nodes... const DOM_NodeType theOldChild = m_ownerDocument->mapNode(oldChild); try { const DOM_NodeType theXercesResult = theXercesParent.removeChild(theOldChild); assert(m_ownerDocument->mapNode(theXercesResult) == oldChild); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } return oldChild; } XalanNode* XercesBridgeNavigator::appendChild( DOM_NodeType& theXercesParent, XalanNode* newChild) const { return insertBefore(theXercesParent, newChild, 0); } XalanElement* XercesBridgeNavigator::getOwnerElement(const DOM_AttrType& theXercesAttr) const { if (m_parentNode != invalidNodeAddress) { assert(m_parentNode->getNodeType() == XalanNode::ELEMENT_NODE); return static_cast(m_parentNode); } else { return m_ownerDocument->mapNode(theXercesAttr.getOwnerElement()); } } XalanNode* XercesBridgeNavigator::cloneNode( const XalanNode* theXalanNode, const DOM_NodeType& theXercesNode, bool deep) const { return m_ownerDocument->internalCloneNode(theXalanNode, theXercesNode, deep); } XalanText* XercesBridgeNavigator::splitText( DOM_TextType& theXercesText, unsigned int offset) const { XalanText* theXalanText = 0; try { DOM_TextType theNewXercesText = theXercesText.splitText(offset); assert(theXercesText.isNull() == false); theXalanText = m_ownerDocument->createBridgeNode(theNewXercesText, 0, true); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } return theXalanText; } const XalanDOMString& XercesBridgeNavigator:: getPooledString(const DOMStringType& theString) const { return m_ownerDocument->getPooledString(theString.rawBuffer(), theString.length()); } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesDOMImplementationBridge.hpp0000664000175000000640000001200411731656102030541 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESDOMIMPLEMENTATIONBRIDGE_HEADER_GUARD_1357924680) #define XERCESDOMIMPLEMENTATIONBRIDGE_HEADER_GUARD_1357924680 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesBridgeNavigator; /** * This class is deprecated. * * @deprecated This class is part of the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesDOMImplementationBridge : public XalanDOMImplementation { public: XercesDOMImplementationBridge(DOM_DOMImplementationType& theXercesDOMImplementation); virtual ~XercesDOMImplementationBridge(); /** @name Getter functions */ //@{ /** * Test if the DOM implementation implements a specific feature. * * @param feature The string of the feature to test (case-insensitive). The legal * values are defined throughout this specification. The string must be * an XML name (see also Compliance). * @param version This is the version number of the package name to test. * In Level 1, this is the string "1.0". If the version is not specified, * supporting any version of the feature will cause the method to return * true. * @return true if the feature is implemented in the specified * version, false otherwise. */ virtual bool hasFeature( const XalanDOMString& feature, const XalanDOMString& version); //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * Creates an empty DOM_DocumentType node. * Entity declarations and notations are not made available. * Entity reference expansions and default attribute additions * do not occur. It is expected that a future version of the DOM * will provide a way for populating a DOM_DocumentType. * @param qualifiedName The qualified name * of the document type to be created. * @param publicId The external subset public identifier. * @param systemId The external subset system identifier. * @return A new DocumentType node with * Node.ownerDocument set to null. */ virtual XalanDocumentType* createDocumentType( const XalanDOMString& qualifiedName, const XalanDOMString& publicId, const XalanDOMString& systemId); /** * Creates an XML DOM_Document object of the specified type * with its document element. * @param namespaceURI The namespace URI of * the document element to create, or null. * @param qualifiedName The qualified name * of the document element to be created. * @param doctype The type of document to be created or null. *

    When doctype is not null, its * Node.ownerDocument attribute is set to the document * being created. * @return A new Document object. * @exception DOMException * WRONG_DOCUMENT_ERR: Raised if doctype has already * been used with a different document. */ virtual XalanDocument* createDocument( const XalanDOMString& namespaceURI, const XalanDOMString& qualifiedName, const XalanDocumentType& doctype); /** * Get the Xerces node this instance represent. * * @return The Xerces node */ DOM_DOMImplementationType& getXercesNode() const { return m_xercesNode; } //@} private: // These are not defined... XercesDOMImplementationBridge(const XercesDOMImplementationBridge& theSource); XercesDOMImplementationBridge& operator=(const XercesDOMImplementationBridge& theSource); bool operator==(const XercesDOMImplementationBridge& theRHS) const; // Data members... DOM_DOMImplementationType& m_xercesNode; }; XALAN_CPP_NAMESPACE_END #endif // !defined (XERCESDOMIMPLEMENTATIONBRIDGE_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridgeAllocator.cpp0000664000175000000640000000327611731656102030454 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) // Class header file. #include "XercesElementBridgeAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesElementBridgeAllocator::XercesElementBridgeAllocator(size_type theBlockCount) : m_allocator(theBlockCount) { } XercesElementBridgeAllocator::~XercesElementBridgeAllocator() { } XercesElementBridgeAllocator::ObjectType* XercesElementBridgeAllocator::create( const DOM_ElementType& theXercesElement, const XercesBridgeNavigator& theNavigator) { ObjectType* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); new(theBlock) ObjectType(theXercesElement, theNavigator); m_allocator.commitAllocation(theBlock); return theBlock; } void XercesElementBridgeAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityReferenceBridge.cpp0000664000175000000640000001274211731656102030313 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) #include "XercesEntityReferenceBridge.hpp" #include #include "XercesBridgeHelper.hpp" #include "XercesDocumentBridge.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesEntityReferenceBridge::XercesEntityReferenceBridge( const DOM_EntityReferenceType& theXercesDOMEntityReference, const XercesBridgeNavigator& theNavigator) : XalanEntityReference(), m_xercesNode(theXercesDOMEntityReference), m_navigator(theNavigator), m_children(theXercesDOMEntityReference.getChildNodes(), theNavigator) { } XercesEntityReferenceBridge::~XercesEntityReferenceBridge() { } const XalanDOMString& XercesEntityReferenceBridge::getNodeName() const { return m_navigator.getPooledString(m_xercesNode.getNodeName()); } const XalanDOMString& XercesEntityReferenceBridge::getNodeValue() const { return m_navigator.getPooledString(m_xercesNode.getNodeValue()); } XercesEntityReferenceBridge::NodeType XercesEntityReferenceBridge::getNodeType() const { return ENTITY_REFERENCE_NODE; } XalanNode* XercesEntityReferenceBridge::getParentNode() const { return m_navigator.getParentNode(m_xercesNode); } const XalanNodeList* XercesEntityReferenceBridge::getChildNodes() const { return &m_children; } XalanNode* XercesEntityReferenceBridge::getFirstChild() const { return m_navigator.getFirstChild(m_xercesNode); } XalanNode* XercesEntityReferenceBridge::getLastChild() const { return m_navigator.getLastChild(m_xercesNode); } XalanNode* XercesEntityReferenceBridge::getPreviousSibling() const { return m_navigator.getPreviousSibling(m_xercesNode); } XalanNode* XercesEntityReferenceBridge::getNextSibling() const { return m_navigator.getNextSibling(m_xercesNode); } const XalanNamedNodeMap* XercesEntityReferenceBridge::getAttributes() const { return 0; } XalanDocument* XercesEntityReferenceBridge::getOwnerDocument() const { return m_navigator.getOwnerDocument(); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) XalanNode* #else XercesEntityReferenceBridge* #endif XercesEntityReferenceBridge::cloneNode(bool deep) const { #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) return m_navigator.cloneNode(this, m_xercesNode, deep); #else XercesEntityReferenceBridge* const theBridge = static_cast(m_navigator.cloneNode(this, m_xercesNode, deep)); return theBridge; #endif } XalanNode* XercesEntityReferenceBridge::insertBefore( XalanNode* newChild, XalanNode* refChild) { return m_navigator.insertBefore(m_xercesNode, newChild, refChild); } XalanNode* XercesEntityReferenceBridge::replaceChild( XalanNode* newChild, XalanNode* oldChild) { return m_navigator.replaceChild(m_xercesNode, newChild, oldChild); } XalanNode* XercesEntityReferenceBridge::removeChild(XalanNode* oldChild) { return m_navigator.removeChild(m_xercesNode, oldChild); } XalanNode* XercesEntityReferenceBridge::appendChild(XalanNode* newChild) { return m_navigator.appendChild(m_xercesNode, newChild); } bool XercesEntityReferenceBridge::hasChildNodes() const { return m_xercesNode.hasChildNodes(); } void XercesEntityReferenceBridge::setNodeValue(const XalanDOMString& nodeValue) { XercesBridgeHelper::setNodeValue(m_xercesNode, nodeValue); } void XercesEntityReferenceBridge::normalize() { XercesBridgeHelper::normalize(m_xercesNode); } bool XercesEntityReferenceBridge::isSupported( const XalanDOMString& feature, const XalanDOMString& version) const { return m_xercesNode.isSupported( XercesBridgeHelper::XalanDOMStringToXercesDOMString(feature), XercesBridgeHelper::XalanDOMStringToXercesDOMString(version)); } const XalanDOMString& XercesEntityReferenceBridge::getNamespaceURI() const { return m_navigator.getPooledString(m_xercesNode.getNamespaceURI()); } const XalanDOMString& XercesEntityReferenceBridge::getPrefix() const { return m_navigator.getPooledString(m_xercesNode.getPrefix()); } const XalanDOMString& XercesEntityReferenceBridge::getLocalName() const { return m_navigator.getPooledString(m_xercesNode.getLocalName()); } void XercesEntityReferenceBridge::setPrefix(const XalanDOMString& prefix) { XercesBridgeHelper::setPrefix(m_xercesNode, prefix); } bool XercesEntityReferenceBridge::isIndexed() const { return m_navigator.getOwnerDocument()->isIndexed(); } XercesEntityReferenceBridge::IndexType XercesEntityReferenceBridge::getIndex() const { return m_navigator.getIndex(); } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesTreeWalker.hpp0000664000175000000640000000357511731656102026161 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESTREEWALKER_HEADER_GUARD_1357924680) #define XERCESTREEWALKER_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN /** * This class is deprecated. * * @deprecated This class works with the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesTreeWalker { public: /** * Constructor. */ XercesTreeWalker(); virtual ~XercesTreeWalker(); /** * Perform a pre-order traversal non-recursive style. */ virtual void traverse(const DOM_NodeType& pos); /** * Perform a pre-order traversal non-recursive style. */ virtual void traverse( const DOM_NodeType& pos, const DOM_NodeType& parent); protected: virtual void startNode(const DOM_NodeType& node) = 0; virtual void endNode(const DOM_NodeType& node) = 0; }; XALAN_CPP_NAMESPACE_END #endif // XERCESTREEWALKER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesNamedNodeMapBridge.hpp0000664000175000000640000002122411731656102027510 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESNAMEDNODEMAPBRIDGE_HEADER_GUARD_1357924680) #define XERCESNAMEDNODEMAPBRIDGE_HEADER_GUARD_1357924680 #include #if XERCES_VERSION_MAJOR >= 2 #include #else #include #endif #include XALAN_CPP_NAMESPACE_BEGIN class XercesBridgeNavigator; class XercesNodeBridge; /** * This class is deprecated. * * @deprecated This class is part of the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesNamedNodeMapBridge : public XalanNamedNodeMap { public: typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_NamedNodeMap DOM_NamedNodeMapType; XercesNamedNodeMapBridge( const DOM_NamedNodeMapType& theXercesNamedNodeMap, const XercesBridgeNavigator& theNavigator); virtual ~XercesNamedNodeMapBridge(); /** @name Set functions. */ //@{ /** * Adds a node using its nodeName attribute. * *
    As the nodeName attribute is used to derive the name * which the node must be stored under, multiple nodes of certain types * (those that have a "special" string value) cannot be stored as the names * would clash. This is seen as preferable to allowing nodes to be aliased. * @param arg A node to store in a named node map. The node will later be * accessible using the value of the nodeName attribute of * the node. If a node with that name is already present in the map, it * is replaced by the new one. * @return If the new Node replaces an existing node the * replaced Node is returned, * otherwise null is returned. * @exception DOMException * WRONG_DOCUMENT_ERR: Raised if arg was created from a * different document than the one that created the * NamedNodeMap. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this * NamedNodeMap is readonly. *
    INUSE_ATTRIBUTE_ERR: Raised if arg is an * Attr that is already an attribute of another * Element object. The DOM user must explicitly clone * Attr nodes to re-use them in other elements. */ virtual XalanNode* setNamedItem(XalanNode* arg); /** * Returns the indexth item in the map. * * If index * is greater than or equal to the number of nodes in the map, this returns * null. * @param index Index into the map. * @return The node at the indexth position in the * NamedNodeMap, or null if that is not a valid * index. */ virtual XalanNode* item(unsigned int index) const; //@} /** @name Get functions. */ //@{ /** * Retrieves a node specified by name. * * @param name The nodeName of a node to retrieve. * @return A DOM_Node (of any type) with the specified nodeName, or * null if it does not identify any node in * the map. */ virtual XalanNode* getNamedItem(const XalanDOMString& name) const; /** * The number of nodes in the map. * * The range of valid child node indices is * 0 to length-1 inclusive. */ virtual unsigned int getLength() const; //@} /** @name Functions to change the node collection. */ //@{ /** * Removes a node specified by name. * * If the removed node is an * Attr with a default value it is immediately replaced. * @param name The nodeName of a node to remove. * @return The node removed from the map or null if no node * with such a name exists. * @exception DOMException * NOT_FOUND_ERR: Raised if there is no node named name in * the map. *
    * NO_MODIFICATION_ALLOWED_ERR: Raised if this NamedNodeMap * is readonly. */ virtual XalanNode* removeNamedItem(const XalanDOMString& name); //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * Retrieves a node specified by local name and namespace URI. * * @param namespaceURI The namespace URI of * the node to retrieve. * @param localName The local name of the node to retrieve. * @return A DOM_Node (of any type) with the specified * local name and namespace URI, or null if they do not * identify any node in the map. */ virtual XalanNode* getNamedItemNS( const XalanDOMString& namespaceURI, const XalanDOMString& localName) const; /** * Adds a node using its namespaceURI and localName. * @param arg A node to store in a named node map. The node will later be * accessible using the value of the namespaceURI and * localName attribute of the node. If a node with those * namespace URI and local name is already present in the map, it is * replaced by the new one. * @return If the new Node replaces an existing node the * replaced Node is returned, * otherwise null is returned. * @exception DOMException * WRONG_DOCUMENT_ERR: Raised if arg was created from a * different document than the one that created the * NamedNodeMap. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this * NamedNodeMap is readonly. *
    INUSE_ATTRIBUTE_ERR: Raised if arg is an * Attr that is already an attribute of another * Element object. The DOM user must explicitly clone * Attr nodes to re-use them in other elements. */ virtual XalanNode* setNamedItemNS(XalanNode* arg); /** * Removes a node specified by local name and namespace URI. * * @param namespaceURI The namespace URI of * the node to remove. * @param localName The local name of the * node to remove. When this DOM_NamedNodeMap contains the * attributes attached to an element, as returned by the attributes * attribute of the DOM_Node interface, if the removed * attribute is known to have a default value, an attribute * immediately appears containing the default value * as well as the corresponding namespace URI, local name, and prefix. * @return The node removed from the map if a node with such a local name * and namespace URI exists. * @exception DOMException * NOT_FOUND_ERR: Raised if there is no node named name in * the map. *
    * NO_MODIFICATION_ALLOWED_ERR: Raised if this NamedNodeMap * is readonly. */ virtual XalanNode* removeNamedItemNS( const XalanDOMString& namespaceURI, const XalanDOMString& localName); //@} private: // Not implemented... XercesNamedNodeMapBridge(const XercesNamedNodeMapBridge& theSource); XercesNamedNodeMapBridge& operator=(const XercesNamedNodeMapBridge& theRHS); bool operator==(const XercesNamedNodeMapBridge& theRHS) const; // $$$ ToDo: Eventually, this will not need to be mutable. mutable DOM_NamedNodeMapType m_xercesNamedNodeMap; const XercesBridgeNavigator& m_navigator; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESNAMEDNODEMAPBRIDGE_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeNavigator.hpp0000664000175000000640000001273311731656102027157 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESBRIDGENAVIGATOR_HEADER_GUARD_1357924680) #define XERCESBRIDGENAVIGATOR_HEADER_GUARD_1357924680 #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesDocumentBridge; class XalanAttr; class XalanElement; class XalanText; /** * This class is deprecated. * * @deprecated This class is part of the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesBridgeNavigator { public: typedef XalanNode::IndexType IndexType; explicit XercesBridgeNavigator( XercesDocumentBridge* theOwnerDocument = 0, bool mappingMode = true); XercesBridgeNavigator(const XercesBridgeNavigator& theSource); virtual ~XercesBridgeNavigator(); XercesDocumentBridge* getOwnerDocument() const { return m_ownerDocument; } void setOwnerDocument(XercesDocumentBridge* theDocument) { m_ownerDocument = theDocument; } XalanNode* mapNode(const DOM_NodeType& theXercesNode) const; XalanAttr* mapNode(const DOM_AttrType& theXercesNode) const; DOM_NodeType mapNode(const XalanNode* theXalanNode) const; DOM_AttrType mapNode(const XalanAttr* theXercesNode) const; IndexType getIndex() const { return m_index; } void setIndex(IndexType theIndex) { m_index = theIndex; } XalanNode* getParentNode(const DOM_NodeType& theXercesNode) const; XalanNode* getParentNode() const { return m_parentNode; } void setParentNode(XalanNode* theParent) { m_parentNode = theParent; } XalanNode* getPreviousSibling(const DOM_NodeType& theXercesNode) const; XalanNode* getPreviousSibling() const { return m_previousSibling; } void setPreviousSibling(XalanNode* thePreviousSibling) { m_previousSibling = thePreviousSibling; } XalanNode* getNextSibling(const DOM_NodeType& theXercesNode) const; XalanNode* getNextSibling() const { return m_nextSibling; } void setNextSibling(XalanNode* theNextSibling) { m_nextSibling = theNextSibling; } XalanNode* getFirstChild(const DOM_NodeType& theXercesNode) const; XalanNode* getFirstChild() const { return m_firstChild; } void setFirstChild(XalanNode* theFirstChild) { m_firstChild = theFirstChild; } XalanNode* getLastChild(const DOM_NodeType& theXercesNode) const; XalanNode* getLastChild() const { return m_lastChild; } void setLastChild(XalanNode* theLastChild) { m_lastChild = theLastChild; } XalanNode* insertBefore( DOM_NodeType& theXercesParent, XalanNode* newChild, XalanNode* refChild) const; XalanNode* replaceChild( DOM_NodeType& theXercesParent, XalanNode* newChild, XalanNode* oldChild) const; XalanNode* removeChild( DOM_NodeType& theXercesParent, XalanNode* oldChild) const; XalanNode* appendChild( DOM_NodeType& theXercesParent, XalanNode* newChild) const; XalanElement* getOwnerElement(const DOM_AttrType& theXercesAttr) const; XalanNode* cloneNode( const XalanNode* theXalanNode, const DOM_NodeType& theXercesNode, bool deep) const; XalanText* splitText( DOM_TextType& theXercesText, unsigned int offset) const; /** * Get a pooled string. If the string is not in the pool, * add it. * * @param theString The string to pool. * @return A const reference to the pooled string. */ const XalanDOMString& getPooledString(const DOMStringType& theString) const; private: // Not implemented... bool operator==(const XercesBridgeNavigator& theRHS) const; // Data members... XercesDocumentBridge* m_ownerDocument; mutable XalanNode* m_parentNode; mutable XalanNode* m_previousSibling; mutable XalanNode* m_nextSibling; mutable XalanNode* m_firstChild; mutable XalanNode* m_lastChild; IndexType m_index; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESBRIDGENAVIGATOR_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridgeAllocator.hpp0000664000175000000640000000636011731656102030456 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESELEMENTBRIDGEALLOCATOR_INCLUDE_GUARD_12455133) #define XERCESELEMENTBRIDGEALLOCATOR_INCLUDE_GUARD_12455133 #include #include #include XALAN_CPP_NAMESPACE_BEGIN /** * This class is deprecated. * * @deprecated This class is part of the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesElementBridgeAllocator { public: typedef XercesElementBridge ObjectType; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XercesElementBridgeAllocator(size_type theBlockCount); ~XercesElementBridgeAllocator(); /** * Create a XercesElementBridge instance. * * @param theXercesElement The Xerces element node * @param theNavigator The navigator for this instance. * * @return pointer to the instance */ ObjectType* create( const DOM_ElementType& theXercesElement, const XercesBridgeNavigator& theNavigator); /** * Delete all objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XercesElementBridgeAllocator(const XercesElementBridgeAllocator&); XercesElementBridgeAllocator& operator=(const XercesElementBridgeAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XERCESELEMENTBRIDGEALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityReferenceBridge.hpp0000664000175000000640000003530311731656102030316 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESENTITYREFERENCEBRIDGE_HEADER_GUARD_1357924680) #define XERCESENTITYREFERENCEBRIDGE_HEADER_GUARD_1357924680 #include #if XERCES_VERSION_MAJOR >= 2 #include #else #include #endif #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesBridgeNavigator; /** * This class is deprecated. * * @deprecated This class is part of the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesEntityReferenceBridge : public XalanEntityReference { public: XercesEntityReferenceBridge( const DOM_EntityReferenceType& theXercesDOMEntityReference, const XercesBridgeNavigator& theNavigator); virtual ~XercesEntityReferenceBridge(); // These interfaces are inherited from XalanNode... virtual const XalanDOMString& getNodeName() const; /** * Gets the value of this node, depending on its type. */ virtual const XalanDOMString& getNodeValue() const; /** * An enum value representing the type of the underlying object. */ virtual NodeType getNodeType() const; /** * Gets the parent of this node. * * All nodes, except Document, * DocumentFragment, and Attr may have a parent. * However, if a node has just been created and not yet added to the tree, * or if it has been removed from the tree, a null DOM_Node * is returned. */ virtual XalanNode* getParentNode() const; /** * Gets a NodeList that contains all children of this node. * * If there * are no children, this is a NodeList containing no nodes. * The content of the returned NodeList is "live" in the sense * that, for instance, changes to the children of the node object that * it was created from are immediately reflected in the nodes returned by * the NodeList accessors; it is not a static snapshot of the * content of the node. This is true for every NodeList, * including the ones returned by the getElementsByTagName * method. */ virtual const XalanNodeList* getChildNodes() const; /** * Gets the first child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getFirstChild() const; /** * Gets the last child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getLastChild() const; /** * Gets the node immediately preceding this node. * * If there is no such node, this returns null. */ virtual XalanNode* getPreviousSibling() const; /** * Gets the node immediately following this node. * * If there is no such node, this returns null. */ virtual XalanNode* getNextSibling() const; /** * Gets a NamedNodeMap containing the attributes of this node (if it * is an Element) or null otherwise. */ virtual const XalanNamedNodeMap* getAttributes() const; /** * Gets the DOM_Document object associated with this node. * * This is also * the DOM_Document object used to create new nodes. When this * node is a DOM_Document or a DOM_DocumentType * which is not used with any DOM_Document yet, this is * null. */ virtual XalanDocument* getOwnerDocument() const; //@} /** @name Cloning function. */ //@{ /** * Returns a duplicate of this node. * * This function serves as a generic copy constructor for nodes. * * The duplicate node has no parent ( * parentNode returns null.). *
    Cloning an Element copies all attributes and their * values, including those generated by the XML processor to represent * defaulted attributes, but this method does not copy any text it contains * unless it is a deep clone, since the text is contained in a child * Text node. Cloning any other type of node simply returns a * copy of this node. * @param deep If true, recursively clone the subtree under the * specified node; if false, clone only the node itself (and * its attributes, if it is an Element). * @return The duplicate node. */ #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual XalanNode* #else virtual XercesEntityReferenceBridge* #endif cloneNode(bool deep) const; //@} /** @name Functions to modify the DOM Node. */ //@{ /** * Inserts the node newChild before the existing child node * refChild. * * If refChild is null, * insert newChild at the end of the list of children. *
    If newChild is a DocumentFragment object, * all of its children are inserted, in the same order, before * refChild. If the newChild is already in the * tree, it is first removed. Note that a DOM_Node that * has never been assigned to refer to an actual node is == null. * @param newChild The node to insert. * @param refChild The reference node, i.e., the node before which the new * node must be inserted. * @return The node being inserted. */ virtual XalanNode* insertBefore( XalanNode* newChild, XalanNode* refChild); /** * Replaces the child node oldChild with newChild * in the list of children, and returns the oldChild node. * * If newChild is a DOM_DocumentFragment object, * oldChild is replaced by all of the DOM_DocumentFragment * children, which are inserted in the same order. * * If the newChild is already in the tree, it is first removed. * @param newChild The new node to put in the child list. * @param oldChild The node being replaced in the list. * @return The node replaced. */ virtual XalanNode* replaceChild( XalanNode* newChild, XalanNode* oldChild); /** * Removes the child node indicated by oldChild from the list * of children, and returns it. * * @param oldChild The node being removed. * @return The node removed. */ virtual XalanNode* removeChild(XalanNode* oldChild); /** * Adds the node newChild to the end of the list of children of * this node. * * If the newChild is already in the tree, it is * first removed. * @param newChild The node to add.If it is a DocumentFragment * object, the entire contents of the document fragment are moved into * the child list of this node * @return The node added. */ virtual XalanNode* appendChild(XalanNode* newChild); //@} /** @name Query functions. */ //@{ /** * This is a convenience method to allow easy determination of whether a * node has any children. * * @return true if the node has any children, * false if the node has no children. */ virtual bool hasChildNodes() const; //@} /** @name Set functions. */ //@{ /** * Sets the value of the node. * * Any node which can have a nodeValue (@see getNodeValue) will * also accept requests to set it to a string. The exact response to * this varies from node to node -- Attribute, for example, stores * its values in its children and has to replace them with a new Text * holding the replacement value. * * For most types of Node, value is null and attempting to set it * will throw DOMException(NO_MODIFICATION_ALLOWED_ERR). This will * also be thrown if the node is read-only. */ virtual void setNodeValue(const XalanDOMString& nodeValue); //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * Puts all DOM_Text * nodes in the full depth of the sub-tree underneath this DOM_Node, * including attribute nodes, into a "normal" form where only markup (e.g., * tags, comments, processing instructions, CDATA sections, and entity * references) separates DOM_Text * nodes, i.e., there are no adjacent DOM_Text * nodes. This can be used to ensure that the DOM view of a document is the * same as if it were saved and re-loaded, and is useful when operations * (such as XPointer lookups) that depend on a particular document tree * structure are to be used. *

    Note: In cases where the document contains DOM_CDATASections, * the normalize operation alone may not be sufficient, since XPointers do * not differentiate between DOM_Text * nodes and DOM_CDATASection nodes.

    */ virtual void normalize(); /** * Tests whether the DOM implementation implements a specific * feature and that feature is supported by this node. * @param feature The string of the feature to test. This is the same * name as what can be passed to the method hasFeature on * DOMImplementation. * @param version This is the version number of the feature to test. In * Level 2, version 1, this is the string "2.0". If the version is not * specified, supporting any version of the feature will cause the * method to return true. * @return Returns true if the specified feature is supported * on this node, false otherwise. */ virtual bool isSupported( const XalanDOMString& feature, const XalanDOMString& version) const; /** * Get the namespace URI of * this node, or null if it is unspecified. *

    * This is not a computed value that is the result of a namespace lookup * based on an examination of the namespace declarations in scope. It is * merely the namespace URI given at creation time. *

    * For nodes of any type other than ELEMENT_NODE and * ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, * such as createElement from the Document * interface, this is always null. */ virtual const XalanDOMString& getNamespaceURI() const; /** * Get the namespace prefix * of this node, or null if it is unspecified. */ virtual const XalanDOMString& getPrefix() const; /** * Returns the local part of the qualified name of this node. *

    * For nodes created with a DOM Level 1 method, such as * createElement from the DOM_Document interface, * it is null. */ virtual const XalanDOMString& getLocalName() const; /** * Set the namespace prefix of this node. *

    * Note that setting this attribute, when permitted, changes * the nodeName attribute, which holds the qualified * name, as well as the tagName and name * attributes of the DOM_Element and DOM_Attr * interfaces, when applicable. *

    * Note also that changing the prefix of an * attribute, that is known to have a default value, does not make a new * attribute with the default value and the original prefix appear, since the * namespaceURI and localName do not change. * * @param prefix The prefix of this node. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified prefix contains * an illegal character. *
    * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. *
    * NAMESPACE_ERR: Raised if the specified prefix is * malformed, if the specified prefix is "xml" and the * namespaceURI of this node is different from * "http://www.w3.org/XML/1998/namespace", if specified prefix is * "xmlns" and the namespaceURI is neither * null nor an empty string, or if the * localName is null. */ virtual void setPrefix(const XalanDOMString& prefix); virtual bool isIndexed() const; virtual IndexType getIndex() const; /** * Get the Xerces node this instance represent. * * @return The Xerces node */ DOM_EntityReferenceType getXercesNode() const { return m_xercesNode; } //@} private: // Not implemented... XercesEntityReferenceBridge(const XercesEntityReferenceBridge& theSource); XercesEntityReferenceBridge& operator=(const XercesEntityReferenceBridge& theSource); bool operator==(const XercesEntityReferenceBridge& theRHS) const; // Data members... DOM_EntityReferenceType m_xercesNode; const XercesBridgeNavigator& m_navigator; XercesNodeListBridge m_children; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESENTITYREFERENCEBRIDGE_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesCDATASectionBridge.cpp0000664000175000000640000001556011731656102027362 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) #include "XercesCDATASectionBridge.hpp" #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN XercesCDATASectionBridge::XercesCDATASectionBridge( const DOM_CDATASectionType& theXercesCDATASection, const XercesBridgeNavigator& theNavigator) : XalanCDATASection(), m_xercesNode(theXercesCDATASection), m_navigator(theNavigator) { } XercesCDATASectionBridge::~XercesCDATASectionBridge() { } const XalanDOMString& XercesCDATASectionBridge::getNodeName() const { return m_navigator.getPooledString(m_xercesNode.getNodeName()); } const XalanDOMString& XercesCDATASectionBridge::getNodeValue() const { return m_navigator.getPooledString(m_xercesNode.getNodeValue()); } XercesCDATASectionBridge::NodeType XercesCDATASectionBridge::getNodeType() const { return CDATA_SECTION_NODE; } XalanNode* XercesCDATASectionBridge::getParentNode() const { return m_navigator.getParentNode(m_xercesNode); } const XalanNodeList* XercesCDATASectionBridge::getChildNodes() const { return 0; } XalanNode* XercesCDATASectionBridge::getFirstChild() const { return 0; } XalanNode* XercesCDATASectionBridge::getLastChild() const { return 0; } XalanNode* XercesCDATASectionBridge::getPreviousSibling() const { return m_navigator.getPreviousSibling(m_xercesNode); } XalanNode* XercesCDATASectionBridge::getNextSibling() const { return m_navigator.getNextSibling(m_xercesNode); } const XalanNamedNodeMap* XercesCDATASectionBridge::getAttributes() const { return 0; } XalanDocument* XercesCDATASectionBridge::getOwnerDocument() const { return m_navigator.getOwnerDocument(); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) XalanNode* #else XercesCDATASectionBridge* #endif XercesCDATASectionBridge::cloneNode(bool deep) const { #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) return m_navigator.cloneNode(this, m_xercesNode, deep); #else XercesCDATASectionBridge* const theBridge = static_cast(m_navigator.cloneNode(this, m_xercesNode, deep)); return theBridge; #endif } XalanNode* XercesCDATASectionBridge::insertBefore( XalanNode* /* newChild */, XalanNode* /* refChild */) { throw XercesDOMException(XercesDOMException::HIERARCHY_REQUEST_ERR); return 0; } XalanNode* XercesCDATASectionBridge::replaceChild( XalanNode* /* newChild */, XalanNode* /* oldChild */) { throw XercesDOMException(XercesDOMException::HIERARCHY_REQUEST_ERR); return 0; } XalanNode* XercesCDATASectionBridge::removeChild(XalanNode* /* oldChild */) { throw XercesDOMException(XercesDOMException::HIERARCHY_REQUEST_ERR); return 0; } XalanNode* XercesCDATASectionBridge::appendChild(XalanNode* /* newChild */) { throw XercesDOMException(XercesDOMException::HIERARCHY_REQUEST_ERR); return 0; } bool XercesCDATASectionBridge::hasChildNodes() const { return false; } void XercesCDATASectionBridge::setNodeValue(const XalanDOMString& nodeValue) { XercesBridgeHelper::setNodeValue(m_xercesNode, nodeValue); } void XercesCDATASectionBridge::normalize() { XercesBridgeHelper::normalize(m_xercesNode); } bool XercesCDATASectionBridge::isSupported( const XalanDOMString& feature, const XalanDOMString& version) const { return m_xercesNode.isSupported( XercesBridgeHelper::XalanDOMStringToXercesDOMString(feature), XercesBridgeHelper::XalanDOMStringToXercesDOMString(version)); } const XalanDOMString& XercesCDATASectionBridge::getNamespaceURI() const { return m_navigator.getPooledString(m_xercesNode.getNamespaceURI()); } const XalanDOMString& XercesCDATASectionBridge::getPrefix() const { return m_navigator.getPooledString(m_xercesNode.getPrefix()); } const XalanDOMString& XercesCDATASectionBridge::getLocalName() const { return m_navigator.getPooledString(m_xercesNode.getLocalName()); } void XercesCDATASectionBridge::setPrefix(const XalanDOMString& prefix) { XercesBridgeHelper::setPrefix(m_xercesNode, prefix); } bool XercesCDATASectionBridge::isIndexed() const { return m_navigator.getOwnerDocument()->isIndexed(); } XercesCDATASectionBridge::IndexType XercesCDATASectionBridge::getIndex() const { return m_navigator.getIndex(); } const XalanDOMString& XercesCDATASectionBridge::getData() const { return m_navigator.getPooledString(m_xercesNode.getData()); } unsigned int XercesCDATASectionBridge::getLength() const { return m_xercesNode.getLength(); } XalanDOMString XercesCDATASectionBridge::substringData( unsigned int offset, unsigned int count) const { return XercesBridgeHelper::substringData(m_xercesNode, offset, count); } void XercesCDATASectionBridge::appendData(const XalanDOMString& arg) { XercesBridgeHelper::appendData(m_xercesNode, arg); } void XercesCDATASectionBridge::insertData( unsigned int offset, const XalanDOMString& arg) { XercesBridgeHelper::insertData(m_xercesNode, offset, arg); } void XercesCDATASectionBridge::deleteData( unsigned int offset, unsigned int count) { XercesBridgeHelper::deleteData(m_xercesNode, offset, count); } void XercesCDATASectionBridge::replaceData( unsigned int offset, unsigned int count, const XalanDOMString& arg) { XercesBridgeHelper::replaceData(m_xercesNode, offset, count, arg); } XalanText* XercesCDATASectionBridge::splitText(unsigned int offset) { return m_navigator.splitText(m_xercesNode, offset); } bool XercesCDATASectionBridge::isWhitespace() const { return isXMLWhitespace(getData()); } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesCommentBridge.cpp0000664000175000000640000001457311731656102026626 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) #include "XercesCommentBridge.hpp" #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN XercesCommentBridge::XercesCommentBridge( const DOM_CommentType& theXercesComment, const XercesBridgeNavigator& theNavigator) : XalanComment(), m_xercesNode(theXercesComment), m_navigator(theNavigator) { } XercesCommentBridge::~XercesCommentBridge() { } const XalanDOMString& XercesCommentBridge::getNodeName() const { return m_navigator.getPooledString(m_xercesNode.getNodeName()); } const XalanDOMString& XercesCommentBridge::getNodeValue() const { return m_navigator.getPooledString(m_xercesNode.getNodeValue()); } XercesCommentBridge::NodeType XercesCommentBridge::getNodeType() const { return COMMENT_NODE; } XalanNode* XercesCommentBridge::getParentNode() const { return m_navigator.getParentNode(m_xercesNode); } const XalanNodeList* XercesCommentBridge::getChildNodes() const { return 0; } XalanNode* XercesCommentBridge::getFirstChild() const { return 0; } XalanNode* XercesCommentBridge::getLastChild() const { return 0; } XalanNode* XercesCommentBridge::getPreviousSibling() const { return m_navigator.getPreviousSibling(m_xercesNode); } XalanNode* XercesCommentBridge::getNextSibling() const { return m_navigator.getNextSibling(m_xercesNode); } const XalanNamedNodeMap* XercesCommentBridge::getAttributes() const { return 0; } XalanDocument* XercesCommentBridge::getOwnerDocument() const { return m_navigator.getOwnerDocument(); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) XalanNode* #else XercesCommentBridge* #endif XercesCommentBridge::cloneNode(bool deep) const { #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) return m_navigator.cloneNode(this, m_xercesNode, deep); #else XercesCommentBridge* const theBridge = static_cast(m_navigator.cloneNode(this, m_xercesNode, deep)); return theBridge; #endif } XalanNode* XercesCommentBridge::insertBefore( XalanNode* /* newChild */, XalanNode* /* refChild */) { throw XercesDOMException(XercesDOMException::HIERARCHY_REQUEST_ERR); return 0; } XalanNode* XercesCommentBridge::replaceChild( XalanNode* /* newChild */, XalanNode* /* oldChild */) { throw XercesDOMException(XercesDOMException::HIERARCHY_REQUEST_ERR); return 0; } XalanNode* XercesCommentBridge::removeChild(XalanNode* /* oldChild */) { throw XercesDOMException(XercesDOMException::HIERARCHY_REQUEST_ERR); return 0; } XalanNode* XercesCommentBridge::appendChild(XalanNode* /* newChild */) { throw XercesDOMException(XercesDOMException::HIERARCHY_REQUEST_ERR); return 0; } bool XercesCommentBridge::hasChildNodes() const { return false; } void XercesCommentBridge::setNodeValue(const XalanDOMString& nodeValue) { XercesBridgeHelper::setNodeValue(m_xercesNode, nodeValue); } void XercesCommentBridge::normalize() { XercesBridgeHelper::normalize(m_xercesNode); } bool XercesCommentBridge::isSupported( const XalanDOMString& feature, const XalanDOMString& version) const { return m_xercesNode.isSupported( XercesBridgeHelper::XalanDOMStringToXercesDOMString(feature), XercesBridgeHelper::XalanDOMStringToXercesDOMString(version)); } const XalanDOMString& XercesCommentBridge::getNamespaceURI() const { return m_navigator.getPooledString(m_xercesNode.getNamespaceURI()); } const XalanDOMString& XercesCommentBridge::getPrefix() const { return m_navigator.getPooledString(m_xercesNode.getPrefix()); } const XalanDOMString& XercesCommentBridge::getLocalName() const { return m_navigator.getPooledString(m_xercesNode.getLocalName()); } void XercesCommentBridge::setPrefix(const XalanDOMString& prefix) { XercesBridgeHelper::setPrefix(m_xercesNode, prefix); } bool XercesCommentBridge::isIndexed() const { return m_navigator.getOwnerDocument()->isIndexed(); } XercesCommentBridge::IndexType XercesCommentBridge::getIndex() const { return m_navigator.getIndex(); } const XalanDOMString& XercesCommentBridge::getData() const { return m_navigator.getPooledString(m_xercesNode.getData()); } unsigned int XercesCommentBridge::getLength() const { return m_xercesNode.getLength(); } XalanDOMString XercesCommentBridge::substringData( unsigned int offset, unsigned int count) const { return XercesBridgeHelper::substringData(m_xercesNode, offset, count); } void XercesCommentBridge::appendData(const XalanDOMString& arg) { XercesBridgeHelper::appendData(m_xercesNode, arg); } void XercesCommentBridge::insertData( unsigned int offset, const XalanDOMString& arg) { XercesBridgeHelper::insertData(m_xercesNode, offset, arg); } void XercesCommentBridge::deleteData( unsigned int offset, unsigned int count) { XercesBridgeHelper::deleteData(m_xercesNode, offset, count); } void XercesCommentBridge::replaceData( unsigned int offset, unsigned int count, const XalanDOMString& arg) { XercesBridgeHelper::replaceData(m_xercesNode, offset, count, arg); } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesAttributeBridgeAllocator.cpp0000664000175000000640000000331011731656102031013 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) // Class header file. #include "XercesAttributeBridgeAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesAttributeBridgeAllocator::XercesAttributeBridgeAllocator(size_type theBlockCount) : m_allocator(theBlockCount) { } XercesAttributeBridgeAllocator::~XercesAttributeBridgeAllocator() { } XercesAttributeBridgeAllocator::ObjectType* XercesAttributeBridgeAllocator::create( const DOM_AttrType& theXercesAttr, const XercesBridgeNavigator& theNavigator) { ObjectType* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); new(theBlock) ObjectType(theXercesAttr, theNavigator); m_allocator.commitAllocation(theBlock); return theBlock; } void XercesAttributeBridgeAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesCDATASectionBridge.hpp0000664000175000000640000005140411731656102027364 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESCDATASECTIONBRIDGE_HEADER_GUARD_1357924680) #define XERCESCDATASECTIONBRIDGE_HEADER_GUARD_1357924680 #include #if XERCES_VERSION_MAJOR >= 2 #include #else #include #endif #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesBridgeNavigator; /** * This class is deprecated. * * @deprecated This class is part of the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesCDATASectionBridge : public XalanCDATASection { public: XercesCDATASectionBridge( const DOM_CDATASectionType& theXercesCDATASection, const XercesBridgeNavigator& theNavigator); virtual ~XercesCDATASectionBridge(); /** * Gets the name of this node. */ virtual const XalanDOMString& getNodeName() const; /** * Gets the value of this node, depending on its type. */ virtual const XalanDOMString& getNodeValue() const; /** * An enum value representing the type of the underlying object. */ virtual NodeType getNodeType() const; /** * Gets the parent of this node. * * All nodes, except Document, * DocumentFragment, and Attr may have a parent. * However, if a node has just been created and not yet added to the tree, * or if it has been removed from the tree, a null DOM_Node * is returned. */ virtual XalanNode* getParentNode() const; /** * Gets a NodeList that contains all children of this node. * * If there * are no children, this is a NodeList containing no nodes. * The content of the returned NodeList is "live" in the sense * that, for instance, changes to the children of the node object that * it was created from are immediately reflected in the nodes returned by * the NodeList accessors; it is not a static snapshot of the * content of the node. This is true for every NodeList, * including the ones returned by the getElementsByTagName * method. */ virtual const XalanNodeList* getChildNodes() const; /** * Gets the first child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getFirstChild() const; /** * Gets the last child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getLastChild() const; /** * Gets the node immediately preceding this node. * * If there is no such node, this returns null. */ virtual XalanNode* getPreviousSibling() const; /** * Gets the node immediately following this node. * * If there is no such node, this returns null. */ virtual XalanNode* getNextSibling() const; /** * Gets a NamedNodeMap containing the attributes of this node (if it * is an Element) or null otherwise. */ virtual const XalanNamedNodeMap* getAttributes() const; /** * Gets the DOM_Document object associated with this node. * * This is also * the DOM_Document object used to create new nodes. When this * node is a DOM_Document or a DOM_DocumentType * which is not used with any DOM_Document yet, this is * null. */ virtual XalanDocument* getOwnerDocument() const; //@} /** @name Cloning function. */ //@{ /** * Returns a duplicate of this node. * * This function serves as a generic copy constructor for nodes. * * The duplicate node has no parent ( * parentNode returns null.). *
    Cloning an Element copies all attributes and their * values, including those generated by the XML processor to represent * defaulted attributes, but this method does not copy any text it contains * unless it is a deep clone, since the text is contained in a child * Text node. Cloning any other type of node simply returns a * copy of this node. * @param deep If true, recursively clone the subtree under the * specified node; if false, clone only the node itself (and * its attributes, if it is an Element). * @return The duplicate node. */ #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual XalanNode* #else virtual XercesCDATASectionBridge* #endif cloneNode(bool deep) const; //@} /** @name Functions to modify the DOM Node. */ //@{ /** * Inserts the node newChild before the existing child node * refChild. * * If refChild is null, * insert newChild at the end of the list of children. *
    If newChild is a DocumentFragment object, * all of its children are inserted, in the same order, before * refChild. If the newChild is already in the * tree, it is first removed. Note that a DOM_Node that * has never been assigned to refer to an actual node is == null. * @param newChild The node to insert. * @param refChild The reference node, i.e., the node before which the new * node must be inserted. * @return The node being inserted. */ virtual XalanNode* insertBefore( XalanNode* newChild, XalanNode* refChild); /** * Replaces the child node oldChild with newChild * in the list of children, and returns the oldChild node. * * If newChild is a DOM_DocumentFragment object, * oldChild is replaced by all of the DOM_DocumentFragment * children, which are inserted in the same order. * * If the newChild is already in the tree, it is first removed. * @param newChild The new node to put in the child list. * @param oldChild The node being replaced in the list. * @return The node replaced. */ virtual XalanNode* replaceChild( XalanNode* newChild, XalanNode* oldChild); /** * Removes the child node indicated by oldChild from the list * of children, and returns it. * * @param oldChild The node being removed. * @return The node removed. */ virtual XalanNode* removeChild(XalanNode* oldChild); /** * Adds the node newChild to the end of the list of children of * this node. * * If the newChild is already in the tree, it is * first removed. * @param newChild The node to add.If it is a DocumentFragment * object, the entire contents of the document fragment are moved into * the child list of this node * @return The node added. */ virtual XalanNode* appendChild(XalanNode* newChild); //@} /** @name Query functions. */ //@{ /** * This is a convenience method to allow easy determination of whether a * node has any children. * * @return true if the node has any children, * false if the node has no children. */ virtual bool hasChildNodes() const; //@} /** @name Set functions. */ //@{ /** * Sets the value of the node. * * Any node which can have a nodeValue (@see getNodeValue) will * also accept requests to set it to a string. The exact response to * this varies from node to node -- Attribute, for example, stores * its values in its children and has to replace them with a new Text * holding the replacement value. * * For most types of Node, value is null and attempting to set it * will throw DOMException(NO_MODIFICATION_ALLOWED_ERR). This will * also be thrown if the node is read-only. */ virtual void setNodeValue(const XalanDOMString& nodeValue); //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * Puts all DOM_Text * nodes in the full depth of the sub-tree underneath this DOM_Node, * including attribute nodes, into a "normal" form where only markup (e.g., * tags, comments, processing instructions, CDATA sections, and entity * references) separates DOM_Text * nodes, i.e., there are no adjacent DOM_Text * nodes. This can be used to ensure that the DOM view of a document is the * same as if it were saved and re-loaded, and is useful when operations * (such as XPointer lookups) that depend on a particular document tree * structure are to be used. *

    Note: In cases where the document contains DOM_CDATASections, * the normalize operation alone may not be sufficient, since XPointers do * not differentiate between DOM_Text * nodes and DOM_CDATASection nodes.

    */ virtual void normalize(); /** * Tests whether the DOM implementation implements a specific * feature and that feature is supported by this node. * @param feature The string of the feature to test. This is the same * name as what can be passed to the method hasFeature on * DOMImplementation. * @param version This is the version number of the feature to test. In * Level 2, version 1, this is the string "2.0". If the version is not * specified, supporting any version of the feature will cause the * method to return true. * @return Returns true if the specified feature is supported * on this node, false otherwise. */ virtual bool isSupported( const XalanDOMString& feature, const XalanDOMString& version) const; /** * Get the namespace URI of * this node, or null if it is unspecified. *

    * This is not a computed value that is the result of a namespace lookup * based on an examination of the namespace declarations in scope. It is * merely the namespace URI given at creation time. *

    * For nodes of any type other than ELEMENT_NODE and * ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, * such as createElement from the Document * interface, this is always null. */ virtual const XalanDOMString& getNamespaceURI() const; /** * Get the namespace prefix * of this node, or null if it is unspecified. */ virtual const XalanDOMString& getPrefix() const; /** * Returns the local part of the qualified name of this node. *

    * For nodes created with a DOM Level 1 method, such as * createElement from the DOM_Document interface, * it is null. */ virtual const XalanDOMString& getLocalName() const; /** * Set the namespace prefix of this node. *

    * Note that setting this attribute, when permitted, changes * the nodeName attribute, which holds the qualified * name, as well as the tagName and name * attributes of the DOM_Element and DOM_Attr * interfaces, when applicable. *

    * Note also that changing the prefix of an * attribute, that is known to have a default value, does not make a new * attribute with the default value and the original prefix appear, since the * namespaceURI and localName do not change. * * @param prefix The prefix of this node. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified prefix contains * an illegal character. *
    * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. *
    * NAMESPACE_ERR: Raised if the specified prefix is * malformed, if the specified prefix is "xml" and the * namespaceURI of this node is different from * "http://www.w3.org/XML/1998/namespace", if specified prefix is * "xmlns" and the namespaceURI is neither * null nor an empty string, or if the * localName is null. */ virtual void setPrefix(const XalanDOMString& prefix); virtual bool isIndexed() const; virtual IndexType getIndex() const; //@} // These interfaces are inherited from XalanCDATASection... /** @name Getter functions. */ //@{ /** * Returns the character data of the node that implements this interface. * * The DOM implementation may not put arbitrary limits on the amount of data that * may be stored in a CharacterData node. However, * implementation limits may mean that the entirety of a node's data may * not fit into a single DOMString. In such cases, the user * may call substringData to retrieve the data in * appropriately sized pieces. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly. * @exception DOMException * DOMSTRING_SIZE_ERR: Raised when it would return more characters than * fit in a DOMString variable on the implementation * platform. */ virtual const XalanDOMString& getData() const; /** * Returns the number of characters that are available through data and * the substringData method below. * * This may have the value * zero, i.e., CharacterData nodes may be empty. */ virtual unsigned int getLength() const; /** * Extracts a range of data from the node. * * @param offset Start offset of substring to extract. * @param count The number of characters to extract. * @return The specified substring. If the sum of offset and * count exceeds the length, then all * characters to the end of the data are returned. * @exception DOMException * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater * than the number of characters in data, or if the * specified count is negative. *
    DOMSTRING_SIZE_ERR: Raised if the specified range of text does not * fit into a DOMString. */ virtual XalanDOMString substringData( unsigned int offset, unsigned int count) const; //@} /** @name Functions that set or change data. */ //@{ /** * Append the string to the end of the character data of the node. * * Upon success, data provides access to the concatenation of * data and the DOMString specified. * @param arg The DOMString to append. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. */ virtual void appendData(const XalanDOMString& arg); /** * Insert a string at the specified character offset. * * @param offset The character offset at which to insert. * @param arg The DOMString to insert. * @exception DOMException * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater * than the number of characters in data. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. */ virtual void insertData( unsigned int offset, const XalanDOMString& arg); /** * Remove a range of characters from the node. * * Upon success, * data and length reflect the change. * @param offset The offset from which to remove characters. * @param count The number of characters to delete. If the sum of * offset and count exceeds length * then all characters from offset to the end of the data * are deleted. * @exception DOMException * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater * than the number of characters in data, or if the * specified count is negative. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. */ virtual void deleteData( unsigned int offset, unsigned int count); /** * Replace the characters starting at the specified character offset with * the specified string. * * @param offset The offset from which to start replacing. * @param count The number of characters to replace. If the sum of * offset and count exceeds length * , then all characters to the end of the data are replaced (i.e., the * effect is the same as a remove method call with the same * range, followed by an append method invocation). * @param arg The DOMString with which the range must be * replaced. * @exception DOMException * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater * than the number of characters in data, or if the * specified count is negative. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. */ virtual void replaceData( unsigned int offset, unsigned int count, const XalanDOMString& arg); //@} //@} /** @name Functions to modify the Text node. */ //@{ /** * Breaks this node into two nodes at the specified * offset, keeping both in the tree as siblings. * * This node then only * contains all the content up to the offset point. And a new * node of the same nodeType, which is inserted as the next sibling of this * node, contains all the content at and after the offset * point. When the offset is equal to the lenght of this node, * the new node has no data. * @param offset The offset at which to split, starting from 0. * @return The new Text node. * @exception DOMException * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater * than the number of characters in data. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. */ virtual XalanText* splitText(unsigned int offset); //@} virtual bool isWhitespace() const; /** * Get the Xerces node this instance represent. * * @return The Xerces node */ DOM_CDATASectionType getXercesNode() const { return m_xercesNode; } private: // Not implemented... XercesCDATASectionBridge(const XercesCDATASectionBridge& theSource); XercesCDATASectionBridge& operator=(const XercesCDATASectionBridge& theSource); bool operator==(const XercesCDATASectionBridge& theRHS) const; // Data members... DOM_CDATASectionType m_xercesNode; const XercesBridgeNavigator& m_navigator; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESCDATASECTIONBRIDGE_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesCommentBridge.hpp0000664000175000000640000004720111731656102026625 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESCOMMENTBRIDGE_HEADER_GUARD_1357924680) #define XERCESCOMMENTBRIDGE_HEADER_GUARD_1357924680 #include #if XERCES_VERSION_MAJOR >= 2 #include #else #include #endif #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesBridgeNavigator; /** * This class is deprecated. * * @deprecated This class is part of the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesCommentBridge : public XalanComment { public: XercesCommentBridge( const DOM_CommentType& theXercesComment, const XercesBridgeNavigator& theNavigator); virtual ~XercesCommentBridge(); /** * Gets the name of this node. */ virtual const XalanDOMString& getNodeName() const; /** * Gets the value of this node, depending on its type. */ virtual const XalanDOMString& getNodeValue() const; /** * An enum value representing the type of the underlying object. */ virtual NodeType getNodeType() const; /** * Gets the parent of this node. * * All nodes, except Document, * DocumentFragment, and Attr may have a parent. * However, if a node has just been created and not yet added to the tree, * or if it has been removed from the tree, a null DOM_Node * is returned. */ virtual XalanNode* getParentNode() const; /** * Gets a NodeList that contains all children of this node. * * If there * are no children, this is a NodeList containing no nodes. * The content of the returned NodeList is "live" in the sense * that, for instance, changes to the children of the node object that * it was created from are immediately reflected in the nodes returned by * the NodeList accessors; it is not a static snapshot of the * content of the node. This is true for every NodeList, * including the ones returned by the getElementsByTagName * method. */ virtual const XalanNodeList* getChildNodes() const; /** * Gets the first child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getFirstChild() const; /** * Gets the last child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getLastChild() const; /** * Gets the node immediately preceding this node. * * If there is no such node, this returns null. */ virtual XalanNode* getPreviousSibling() const; /** * Gets the node immediately following this node. * * If there is no such node, this returns null. */ virtual XalanNode* getNextSibling() const; /** * Gets a NamedNodeMap containing the attributes of this node (if it * is an Element) or null otherwise. */ virtual const XalanNamedNodeMap* getAttributes() const; /** * Gets the DOM_Document object associated with this node. * * This is also * the DOM_Document object used to create new nodes. When this * node is a DOM_Document or a DOM_DocumentType * which is not used with any DOM_Document yet, this is * null. */ virtual XalanDocument* getOwnerDocument() const; //@} /** @name Cloning function. */ //@{ /** * Returns a duplicate of this node. * * This function serves as a generic copy constructor for nodes. * * The duplicate node has no parent ( * parentNode returns null.). *
    Cloning an Element copies all attributes and their * values, including those generated by the XML processor to represent * defaulted attributes, but this method does not copy any text it contains * unless it is a deep clone, since the text is contained in a child * Text node. Cloning any other type of node simply returns a * copy of this node. * @param deep If true, recursively clone the subtree under the * specified node; if false, clone only the node itself (and * its attributes, if it is an Element). * @return The duplicate node. */ #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual XalanNode* #else virtual XercesCommentBridge* #endif cloneNode(bool deep) const; //@} /** @name Functions to modify the DOM Node. */ //@{ /** * Inserts the node newChild before the existing child node * refChild. * * If refChild is null, * insert newChild at the end of the list of children. *
    If newChild is a DocumentFragment object, * all of its children are inserted, in the same order, before * refChild. If the newChild is already in the * tree, it is first removed. Note that a DOM_Node that * has never been assigned to refer to an actual node is == null. * @param newChild The node to insert. * @param refChild The reference node, i.e., the node before which the new * node must be inserted. * @return The node being inserted. */ virtual XalanNode* insertBefore( XalanNode* newChild, XalanNode* refChild); /** * Replaces the child node oldChild with newChild * in the list of children, and returns the oldChild node. * * If newChild is a DOM_DocumentFragment object, * oldChild is replaced by all of the DOM_DocumentFragment * children, which are inserted in the same order. * * If the newChild is already in the tree, it is first removed. * @param newChild The new node to put in the child list. * @param oldChild The node being replaced in the list. * @return The node replaced. */ virtual XalanNode* replaceChild( XalanNode* newChild, XalanNode* oldChild); /** * Removes the child node indicated by oldChild from the list * of children, and returns it. * * @param oldChild The node being removed. * @return The node removed. */ virtual XalanNode* removeChild(XalanNode* oldChild); /** * Adds the node newChild to the end of the list of children of * this node. * * If the newChild is already in the tree, it is * first removed. * @param newChild The node to add.If it is a DocumentFragment * object, the entire contents of the document fragment are moved into * the child list of this node * @return The node added. */ virtual XalanNode* appendChild(XalanNode* newChild); //@} /** @name Query functions. */ //@{ /** * This is a convenience method to allow easy determination of whether a * node has any children. * * @return true if the node has any children, * false if the node has no children. */ virtual bool hasChildNodes() const; //@} /** @name Set functions. */ //@{ /** * Sets the value of the node. * * Any node which can have a nodeValue (@see getNodeValue) will * also accept requests to set it to a string. The exact response to * this varies from node to node -- Attribute, for example, stores * its values in its children and has to replace them with a new Text * holding the replacement value. * * For most types of Node, value is null and attempting to set it * will throw DOMException(NO_MODIFICATION_ALLOWED_ERR). This will * also be thrown if the node is read-only. */ virtual void setNodeValue(const XalanDOMString& nodeValue); //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * Puts all DOM_Text * nodes in the full depth of the sub-tree underneath this DOM_Node, * including attribute nodes, into a "normal" form where only markup (e.g., * tags, comments, processing instructions, CDATA sections, and entity * references) separates DOM_Text * nodes, i.e., there are no adjacent DOM_Text * nodes. This can be used to ensure that the DOM view of a document is the * same as if it were saved and re-loaded, and is useful when operations * (such as XPointer lookups) that depend on a particular document tree * structure are to be used. *

    Note: In cases where the document contains DOM_CDATASections, * the normalize operation alone may not be sufficient, since XPointers do * not differentiate between DOM_Text * nodes and DOM_CDATASection nodes.

    */ virtual void normalize(); /** * Tests whether the DOM implementation implements a specific * feature and that feature is supported by this node. * @param feature The string of the feature to test. This is the same * name as what can be passed to the method hasFeature on * DOMImplementation. * @param version This is the version number of the feature to test. In * Level 2, version 1, this is the string "2.0". If the version is not * specified, supporting any version of the feature will cause the * method to return true. * @return Returns true if the specified feature is supported * on this node, false otherwise. */ virtual bool isSupported( const XalanDOMString& feature, const XalanDOMString& version) const; /** * Get the namespace URI of * this node, or null if it is unspecified. *

    * This is not a computed value that is the result of a namespace lookup * based on an examination of the namespace declarations in scope. It is * merely the namespace URI given at creation time. *

    * For nodes of any type other than ELEMENT_NODE and * ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, * such as createElement from the Document * interface, this is always null. */ virtual const XalanDOMString& getNamespaceURI() const; /** * Get the namespace prefix * of this node, or null if it is unspecified. */ virtual const XalanDOMString& getPrefix() const; /** * Returns the local part of the qualified name of this node. *

    * For nodes created with a DOM Level 1 method, such as * createElement from the DOM_Document interface, * it is null. */ virtual const XalanDOMString& getLocalName() const; /** * Set the namespace prefix of this node. *

    * Note that setting this attribute, when permitted, changes * the nodeName attribute, which holds the qualified * name, as well as the tagName and name * attributes of the DOM_Element and DOM_Attr * interfaces, when applicable. *

    * Note also that changing the prefix of an * attribute, that is known to have a default value, does not make a new * attribute with the default value and the original prefix appear, since the * namespaceURI and localName do not change. * * @param prefix The prefix of this node. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified prefix contains * an illegal character. *
    * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. *
    * NAMESPACE_ERR: Raised if the specified prefix is * malformed, if the specified prefix is "xml" and the * namespaceURI of this node is different from * "http://www.w3.org/XML/1998/namespace", if specified prefix is * "xmlns" and the namespaceURI is neither * null nor an empty string, or if the * localName is null. */ virtual void setPrefix(const XalanDOMString& prefix); virtual bool isIndexed() const; virtual IndexType getIndex() const; //@} // These interfaces are inherited from XalanCDATASection... /** @name Getter functions. */ //@{ /** * Returns the character data of the node that implements this interface. * * The DOM implementation may not put arbitrary limits on the amount of data that * may be stored in a CharacterData node. However, * implementation limits may mean that the entirety of a node's data may * not fit into a single DOMString. In such cases, the user * may call substringData to retrieve the data in * appropriately sized pieces. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly. * @exception DOMException * DOMSTRING_SIZE_ERR: Raised when it would return more characters than * fit in a DOMString variable on the implementation * platform. */ virtual const XalanDOMString& getData() const; /** * Returns the number of characters that are available through data and * the substringData method below. * * This may have the value * zero, i.e., CharacterData nodes may be empty. */ virtual unsigned int getLength() const; /** * Extracts a range of data from the node. * * @param offset Start offset of substring to extract. * @param count The number of characters to extract. * @return The specified substring. If the sum of offset and * count exceeds the length, then all * characters to the end of the data are returned. * @exception DOMException * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater * than the number of characters in data, or if the * specified count is negative. *
    DOMSTRING_SIZE_ERR: Raised if the specified range of text does not * fit into a DOMString. */ virtual XalanDOMString substringData( unsigned int offset, unsigned int count) const; //@} /** @name Functions that set or change data. */ //@{ /** * Append the string to the end of the character data of the node. * * Upon success, data provides access to the concatenation of * data and the DOMString specified. * @param arg The DOMString to append. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. */ virtual void appendData(const XalanDOMString& arg); /** * Insert a string at the specified character offset. * * @param offset The character offset at which to insert. * @param arg The DOMString to insert. * @exception DOMException * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater * than the number of characters in data. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. */ virtual void insertData( unsigned int offset, const XalanDOMString& arg); /** * Remove a range of characters from the node. * * Upon success, * data and length reflect the change. * @param offset The offset from which to remove characters. * @param count The number of characters to delete. If the sum of * offset and count exceeds length * then all characters from offset to the end of the data * are deleted. * @exception DOMException * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater * than the number of characters in data, or if the * specified count is negative. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. */ virtual void deleteData( unsigned int offset, unsigned int count); /** * Replace the characters starting at the specified character offset with * the specified string. * * @param offset The offset from which to start replacing. * @param count The number of characters to replace. If the sum of * offset and count exceeds length * , then all characters to the end of the data are replaced (i.e., the * effect is the same as a remove method call with the same * range, followed by an append method invocation). * @param arg The DOMString with which the range must be * replaced. * @exception DOMException * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater * than the number of characters in data, or if the * specified count is negative. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. */ virtual void replaceData( unsigned int offset, unsigned int count, const XalanDOMString& arg); /** * Get the Xerces node this instance represent. * * @return The Xerces node */ DOM_CommentType getXercesNode() const { return m_xercesNode; } //@} private: // Not implemented... XercesCommentBridge(const XercesCommentBridge& theSource); XercesCommentBridge& operator=(const XercesCommentBridge& theSource); bool operator==(const XercesCommentBridge& theRHS) const; // Data members... DOM_CommentType m_xercesNode; const XercesBridgeNavigator& m_navigator; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESCOMMENTBRIDGE_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesAttributeBridgeAllocator.hpp0000664000175000000640000000641211731656102031026 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESATTRIBUTEBRIDGEALLOCATOR_INCLUDE_GUARD_12455133) #define XERCESATTRIBUTEBRIDGEALLOCATOR_INCLUDE_GUARD_12455133 #include #include #include XALAN_CPP_NAMESPACE_BEGIN /** * This class is deprecated. * * @deprecated This class is part of the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesAttributeBridgeAllocator { public: typedef XercesAttrBridge ObjectType; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XercesAttributeBridgeAllocator(size_type theBlockCount); ~XercesAttributeBridgeAllocator(); /** * Create a XercesAttrBridge instance. * * @param theXercesAttr The Xerces attribute node * @param theNavigator The navigator for this instance. * * @return pointer to the instance */ ObjectType* create( const DOM_AttrType& theXercesAttr, const XercesBridgeNavigator& theNavigator); /** * Delete all objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XercesAttributeBridgeAllocator(const XercesAttributeBridgeAllocator&); XercesAttributeBridgeAllocator& operator=(const XercesAttributeBridgeAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XERCESATTRIBUTEBRIDGEALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/FormatterToDeprecatedXercesDOM.cpp0000664000175000000640000002367411731656102030700 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) // Class header file. #include "FormatterToDeprecatedXercesDOM.hpp" #include #include #if XERCES_VERSION_MAJOR >= 2 #include #include #include #include #include #else #include #include #include #include #include #endif #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN const XalanDOMString FormatterToDeprecatedXercesDOM::s_emptyString; FormatterToDeprecatedXercesDOM::FormatterToDeprecatedXercesDOM( DOM_Document_Type& doc, DOM_DocumentFragmentType& docFrag, DOM_ElementType& currentElement) : FormatterListener(OUTPUT_METHOD_DOM), m_doc(doc), m_docFrag(docFrag), m_currentElem(currentElement), m_elemStack(), m_buffer(), m_textBuffer() { assert(m_doc != 0 && m_docFrag != 0); } FormatterToDeprecatedXercesDOM::FormatterToDeprecatedXercesDOM( DOM_Document_Type& doc, DOM_ElementType& elem) : FormatterListener(OUTPUT_METHOD_DOM), m_doc(doc), m_docFrag(), m_currentElem(elem), m_elemStack(), m_buffer(), m_textBuffer() { assert(m_doc != 0); } FormatterToDeprecatedXercesDOM::FormatterToDeprecatedXercesDOM( DOM_Document_Type& doc) : FormatterListener(OUTPUT_METHOD_DOM), m_doc(doc), m_docFrag(), m_currentElem(), m_elemStack(), m_buffer(), m_textBuffer() { assert(m_doc != 0); } FormatterToDeprecatedXercesDOM::~FormatterToDeprecatedXercesDOM() { } void FormatterToDeprecatedXercesDOM::setDocumentLocator(const Locator* const /* locator */) { // No action for the moment. } void FormatterToDeprecatedXercesDOM::startDocument() { // No action for the moment. } void FormatterToDeprecatedXercesDOM::endDocument() { // No action for the moment. } void FormatterToDeprecatedXercesDOM::startElement( const XMLCh* const name, AttributeListType& attrs) { try { processAccumulatedText(); DOM_ElementType elem = createElement(name, attrs); append(elem); m_elemStack.push_back(m_currentElem); m_currentElem = elem; } catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException& theException) { throw XercesDOMException(theException); } } void FormatterToDeprecatedXercesDOM::endElement(const XMLCh* const /* name */) { try { processAccumulatedText(); if(m_elemStack.empty() == false) { m_currentElem = m_elemStack.back(); m_elemStack.pop_back(); } else { m_currentElem = 0; } } catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException& theException) { throw XercesDOMException(theException); } } void FormatterToDeprecatedXercesDOM::characters( const XMLCh* const chars, const unsigned int length) { m_textBuffer.append(chars, length); } void FormatterToDeprecatedXercesDOM::charactersRaw( const XMLCh* const chars, const unsigned int length) { try { processAccumulatedText(); cdata(chars, length); } catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException& theException) { throw XercesDOMException(theException); } } void FormatterToDeprecatedXercesDOM::entityReference(const XMLCh* const name) { try { processAccumulatedText(); DOM_EntityReferenceType theXercesNode = m_doc.createEntityReference(name); assert(theXercesNode.isNull() == false); append(theXercesNode); } catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException& theException) { throw XercesDOMException(theException); } } void FormatterToDeprecatedXercesDOM::ignorableWhitespace( const XMLCh* const chars, const unsigned int length) { try { processAccumulatedText(); assign(m_buffer, chars, length); DOM_TextType theXercesNode = m_doc.createTextNode(m_buffer.c_str()); assert(theXercesNode.isNull() == false); append(theXercesNode); } catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException& theException) { throw XercesDOMException(theException); } } void FormatterToDeprecatedXercesDOM::processingInstruction( const XMLCh* const target, const XMLCh* const data) { try { processAccumulatedText(); DOM_ProcessingInstructionType theXercesNode = m_doc.createProcessingInstruction(target, data); assert(theXercesNode.isNull() == false); append(theXercesNode); } catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException& theException) { throw XercesDOMException(theException); } } void FormatterToDeprecatedXercesDOM::resetDocument() { } void FormatterToDeprecatedXercesDOM::comment(const XMLCh* const data) { try { processAccumulatedText(); DOM_CommentType theXercesNode = m_doc.createComment(data); assert(theXercesNode.isNull() == false); append(theXercesNode); } catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException& theException) { throw XercesDOMException(theException); } } void FormatterToDeprecatedXercesDOM::cdata( const XMLCh* const ch, const unsigned int length) { try { processAccumulatedText(); assign(m_buffer, ch, length); DOM_CDATASectionType theXercesNode = m_doc.createCDATASection(m_buffer.c_str()); assert(theXercesNode.isNull() == false); append(theXercesNode); } catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException& theException) { throw XercesDOMException(theException); } } void FormatterToDeprecatedXercesDOM::append(DOM_NodeType &newNode) { assert(newNode != 0); if(m_currentElem.isNull() == false) { m_currentElem.appendChild(newNode); } else if(m_docFrag.isNull() == false) { m_docFrag.appendChild(newNode); } else { m_doc.appendChild(newNode); } } DOM_ElementType FormatterToDeprecatedXercesDOM::createElement( const XalanDOMChar* theElementName, AttributeListType& attrs) { DOM_ElementType theElement; if (m_prefixResolver == 0) { theElement = m_doc.createElement(theElementName); addAttributes(theElement, attrs); } else { // Check for the namespace... const XalanDOMString* const theNamespace = DOMServices::getNamespaceForPrefix(theElementName, *m_prefixResolver, false , m_buffer); if (theNamespace == 0 || length(*theNamespace) == 0) { theElement = m_doc.createElement(theElementName); } else { theElement = m_doc.createElementNS(theNamespace->c_str(), theElementName); } addAttributes(theElement, attrs); } return theElement; } void FormatterToDeprecatedXercesDOM::addAttributes( DOM_ElementType& theElement, AttributeListType& attrs) { const unsigned int nAtts = attrs.getLength(); if (m_prefixResolver == 0) { for(unsigned int i = 0; i < nAtts; i++) { theElement.setAttribute(attrs.getName(i), attrs.getValue(i)); } } else { for(unsigned int i = 0; i < nAtts; i++) { const XalanDOMChar* const theName = attrs.getName(i); assert(theName != 0); // Check for the namespace... const XalanDOMString* const theNamespace = DOMServices::getNamespaceForPrefix(theName, *m_prefixResolver, true, m_buffer); if (theNamespace == 0 || length(*theNamespace) == 0) { theElement.setAttribute(theName, attrs.getValue(i)); } else { theElement.setAttributeNS(theNamespace->c_str(), theName, attrs.getValue(i)); } } } } void FormatterToDeprecatedXercesDOM::processAccumulatedText() { if (m_textBuffer.empty() == false) { DOM_TextType theXercesNode = m_doc.createTextNode(m_textBuffer.c_str()); assert(theXercesNode.isNull() == false); append(theXercesNode); clear(m_textBuffer); } } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityBridge.cpp0000664000175000000640000001306311731656102026471 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) #include "XercesEntityBridge.hpp" #include #include "XercesBridgeHelper.hpp" #include "XercesBridgeNavigator.hpp" #include "XercesDocumentBridge.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesEntityBridge::XercesEntityBridge( const DOM_EntityType& theXercesDOMEntity, const XercesBridgeNavigator& theNavigator) : XalanEntity(), m_xercesNode(theXercesDOMEntity), m_navigator(theNavigator), m_children(m_xercesNode.getChildNodes(), theNavigator) { } XercesEntityBridge::~XercesEntityBridge() { } const XalanDOMString& XercesEntityBridge::getNodeName() const { return m_navigator.getPooledString(m_xercesNode.getNodeName()); } const XalanDOMString& XercesEntityBridge::getNodeValue() const { return m_navigator.getPooledString(m_xercesNode.getNodeValue()); } XercesEntityBridge::NodeType XercesEntityBridge::getNodeType() const { return ENTITY_NODE; } XalanNode* XercesEntityBridge::getParentNode() const { return m_navigator.getParentNode(m_xercesNode); } const XalanNodeList* XercesEntityBridge::getChildNodes() const { return &m_children; } XalanNode* XercesEntityBridge::getFirstChild() const { return m_navigator.getFirstChild(m_xercesNode); } XalanNode* XercesEntityBridge::getLastChild() const { return m_navigator.getLastChild(m_xercesNode); } XalanNode* XercesEntityBridge::getPreviousSibling() const { return m_navigator.getPreviousSibling(m_xercesNode); } XalanNode* XercesEntityBridge::getNextSibling() const { return m_navigator.getNextSibling(m_xercesNode); } const XalanNamedNodeMap* XercesEntityBridge::getAttributes() const { return 0; } XalanDocument* XercesEntityBridge::getOwnerDocument() const { return m_navigator.getOwnerDocument(); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) XalanNode* #else XercesEntityBridge* #endif XercesEntityBridge::cloneNode(bool deep) const { #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) return m_navigator.cloneNode(this, m_xercesNode, deep); #else XercesEntityBridge* const theBridge = static_cast(m_navigator.cloneNode(this, m_xercesNode, deep)); return theBridge; #endif } XalanNode* XercesEntityBridge::insertBefore( XalanNode* newChild, XalanNode* refChild) { return m_navigator.insertBefore(m_xercesNode, newChild, refChild); } XalanNode* XercesEntityBridge::replaceChild( XalanNode* newChild, XalanNode* oldChild) { return m_navigator.replaceChild(m_xercesNode, newChild, oldChild); } XalanNode* XercesEntityBridge::removeChild(XalanNode* oldChild) { return m_navigator.removeChild(m_xercesNode, oldChild); } XalanNode* XercesEntityBridge::appendChild(XalanNode* newChild) { return m_navigator.appendChild(m_xercesNode, newChild); } bool XercesEntityBridge::hasChildNodes() const { return m_xercesNode.hasChildNodes(); } void XercesEntityBridge::setNodeValue(const XalanDOMString& nodeValue) { XercesBridgeHelper::setNodeValue(m_xercesNode, nodeValue); } void XercesEntityBridge::normalize() { XercesBridgeHelper::normalize(m_xercesNode); } bool XercesEntityBridge::isSupported( const XalanDOMString& feature, const XalanDOMString& version) const { return m_xercesNode.isSupported( XercesBridgeHelper::XalanDOMStringToXercesDOMString(feature), XercesBridgeHelper::XalanDOMStringToXercesDOMString(version)); } const XalanDOMString& XercesEntityBridge::getNamespaceURI() const { return m_navigator.getPooledString(m_xercesNode.getNamespaceURI()); } const XalanDOMString& XercesEntityBridge::getPrefix() const { return m_navigator.getPooledString(m_xercesNode.getPrefix()); } const XalanDOMString& XercesEntityBridge::getLocalName() const { return m_navigator.getPooledString(m_xercesNode.getLocalName()); } void XercesEntityBridge::setPrefix(const XalanDOMString& prefix) { XercesBridgeHelper::setPrefix(m_xercesNode, prefix); } bool XercesEntityBridge::isIndexed() const { return m_navigator.getOwnerDocument()->isIndexed(); } XercesEntityBridge::IndexType XercesEntityBridge::getIndex() const { return m_navigator.getIndex(); } const XalanDOMString& XercesEntityBridge::getPublicId() const { return m_navigator.getPooledString(m_xercesNode.getPublicId()); } const XalanDOMString& XercesEntityBridge::getSystemId() const { return m_navigator.getPooledString(m_xercesNode.getSystemId()); } const XalanDOMString& XercesEntityBridge::getNotationName() const { return m_navigator.getPooledString(m_xercesNode.getNotationName()); } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/FormatterToDeprecatedXercesDOM.hpp0000664000175000000640000001471311731656102030677 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FORMATTERTODEPRECATEDXERCESDOM_HEADER_GUARD_1357924680) #define FORMATTERTODEPRECATEDXERCESDOM_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include // Base class header file. #include #include #include // Required Xerces headers #if XERCES_VERSION_MAJOR >= 2 #include #include #include #else #include #include #include #endif XALAN_CPP_NAMESPACE_BEGIN /** * This class takes SAX events (in addition to some extra events that SAX * doesn't handle yet) and adds the result to a document or document fragment. * * It is provided as assist developers transition away from the deprecated DOM. * * @deprecated The Xerces DOM bridge is deprecated. */ class XALAN_XERCESPARSERLIAISON_EXPORT FormatterToDeprecatedXercesDOM : public FormatterListener { public: /** * Construct a FormatterToDeprecatedXercesDOM instance. it will add the DOM nodes * to the document fragment. * * @deprecated This API is deprecated and is only provided as a transition tool * @param doc document for nodes * @param docFrag document fragment for nodes * @param currentElement current element for nodes */ FormatterToDeprecatedXercesDOM( DOM_Document_Type &doc, DOM_DocumentFragmentType &docFrag, DOM_ElementType ¤tElement); /** * Construct a FormatterToDeprecatedXerces DOM instance. it will add the DOM nodes * to the document. * * @deprecated This API is deprecated and is only provided as a transition tool * @param doc document for nodes * @param elem current element for nodes */ FormatterToDeprecatedXercesDOM( DOM_Document_Type &doc, DOM_ElementType ¤tElement); /** * Construct a FormatterToDeprecatedXercesDOM instance. it will add the DOM nodes * to the document. * * @deprecated This API is deprecated and is only provided as a transition tool * @param doc document for nodes */ FormatterToDeprecatedXercesDOM( DOM_Document_Type &doc); virtual ~FormatterToDeprecatedXercesDOM(); // These methods are inherited from DocumentHandler ... virtual void charactersRaw( const XMLCh* const chars, const unsigned int length); virtual void comment(const XMLCh* const data); virtual void cdata( const XMLCh* const ch, const unsigned int length); virtual void entityReference(const XMLCh* const name); virtual void setDocumentLocator(const Locator* const locator); virtual void startDocument(); virtual void endDocument(); virtual void startElement( const XMLCh* const name, AttributeListType& attrs); virtual void endElement(const XMLCh* const name); virtual void characters( const XMLCh* const chars, const unsigned int length); virtual void ignorableWhitespace( const XMLCh* const chars, const unsigned int length); virtual void processingInstruction( const XMLCh* const target, const XMLCh* const data); virtual void resetDocument(); DOM_Document_Type getDocument() const { return m_doc; } void setDocument(DOM_Document_Type &theDocument) { m_doc = theDocument; } DOM_DocumentFragmentType getDocumentFragment() const { return m_docFrag; } void setDocumentFragment(DOM_DocumentFragmentType &theDocumentFragment) { m_docFrag = theDocumentFragment; } DOM_ElementType getCurrentElement() const { return m_currentElem; } void setCurrentElement(DOM_ElementType &theElement) { m_currentElem = theElement; } private: /** * Process any accumulated text and create a node for it. */ void processAccumulatedText(); /** * Append a node to the current container. */ void append(DOM_NodeType &newNode); /** * Create the appropriate element, complete with attributes set. * * @param theElementName The name for the new element * @param attrs The SAX AttributeList for the new attributes. * @return A pointer to the new instance. */ DOM_ElementType createElement( const XalanDOMChar* theElementName, AttributeListType& attrs); void addAttributes( DOM_ElementType &theElement, AttributeListType& attrs); // Data members... DOM_Document_Type m_doc; DOM_DocumentFragmentType m_docFrag; DOM_ElementType m_currentElem; typedef XalanVector ElementStackType; ElementStackType m_elemStack; XalanDOMString m_buffer; XalanDOMString m_textBuffer; static const XalanDOMString s_emptyString; }; XALAN_CPP_NAMESPACE_END #endif // FORMATTERTODEPRECATEDXERCESDOM_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentTypeBridge.cpp0000664000175000000640000001467111731656102027643 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) #include "XercesDocumentTypeBridge.hpp" #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN XercesDocumentTypeBridge::XercesDocumentTypeBridge( const DOM_DocumentType_Type& theXercesDOMDocumentType, const XercesBridgeNavigator& theNavigator) : XalanDocumentType(), m_xercesNode(theXercesDOMDocumentType), m_entities(m_xercesNode.getEntities(), theNavigator), m_notations(m_xercesNode.getNotations(), theNavigator), m_navigator(theNavigator) { } XercesDocumentTypeBridge::~XercesDocumentTypeBridge() { } const XalanDOMString& XercesDocumentTypeBridge::getNodeName() const { return m_navigator.getPooledString(m_xercesNode.getNodeName()); } const XalanDOMString& XercesDocumentTypeBridge::getNodeValue() const { return m_navigator.getPooledString(m_xercesNode.getNodeValue()); } XercesDocumentTypeBridge::NodeType XercesDocumentTypeBridge::getNodeType() const { return DOCUMENT_TYPE_NODE; } XalanNode* XercesDocumentTypeBridge::getParentNode() const { return m_navigator.getParentNode(m_xercesNode); } const XalanNodeList* XercesDocumentTypeBridge::getChildNodes() const { return 0; } XalanNode* XercesDocumentTypeBridge::getFirstChild() const { return 0; } XalanNode* XercesDocumentTypeBridge::getLastChild() const { return 0; } XalanNode* XercesDocumentTypeBridge::getPreviousSibling() const { return m_navigator.getPreviousSibling(m_xercesNode); } XalanNode* XercesDocumentTypeBridge::getNextSibling() const { return m_navigator.getNextSibling(m_xercesNode); } const XalanNamedNodeMap* XercesDocumentTypeBridge::getAttributes() const { return 0; } XalanDocument* XercesDocumentTypeBridge::getOwnerDocument() const { return m_navigator.getOwnerDocument(); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) XalanNode* #else XercesDocumentTypeBridge* #endif XercesDocumentTypeBridge::cloneNode(bool deep) const { // $$$ ToDo: Fix this!! XercesDocumentType nodes can't be cloned yet... assert(false); #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) return m_navigator.cloneNode(this, m_xercesNode, deep); #else XercesDocumentTypeBridge* const theBridge = static_cast(m_navigator.cloneNode(this, m_xercesNode, deep)); return theBridge; #endif } XalanNode* XercesDocumentTypeBridge::insertBefore( XalanNode* /* newChild */, XalanNode* /* refChild */) { throw XercesDOMException(XercesDOMException::HIERARCHY_REQUEST_ERR); return 0; } XalanNode* XercesDocumentTypeBridge::replaceChild( XalanNode* /* newChild */, XalanNode* /* oldChild */) { throw XercesDOMException(XercesDOMException::HIERARCHY_REQUEST_ERR); return 0; } XalanNode* XercesDocumentTypeBridge::removeChild(XalanNode* /* oldChild */) { throw XercesDOMException(XercesDOMException::HIERARCHY_REQUEST_ERR); return 0; } XalanNode* XercesDocumentTypeBridge::appendChild(XalanNode* /* newChild */) { throw XercesDOMException(XercesDOMException::HIERARCHY_REQUEST_ERR); return 0; } bool XercesDocumentTypeBridge::hasChildNodes() const { return false; } void XercesDocumentTypeBridge::setNodeValue(const XalanDOMString& nodeValue) { XercesBridgeHelper::setNodeValue(m_xercesNode, nodeValue); } void XercesDocumentTypeBridge::normalize() { XercesBridgeHelper::normalize(m_xercesNode); } bool XercesDocumentTypeBridge::isSupported( const XalanDOMString& feature, const XalanDOMString& version) const { return m_xercesNode.isSupported( XercesBridgeHelper::XalanDOMStringToXercesDOMString(feature), XercesBridgeHelper::XalanDOMStringToXercesDOMString(version)); } const XalanDOMString& XercesDocumentTypeBridge::getNamespaceURI() const { return m_navigator.getPooledString(m_xercesNode.getNamespaceURI()); } const XalanDOMString& XercesDocumentTypeBridge::getPrefix() const { return m_navigator.getPooledString(m_xercesNode.getPrefix()); } const XalanDOMString& XercesDocumentTypeBridge::getLocalName() const { return m_navigator.getPooledString(m_xercesNode.getLocalName()); } void XercesDocumentTypeBridge::setPrefix(const XalanDOMString& prefix) { XercesBridgeHelper::setPrefix(m_xercesNode, prefix); } bool XercesDocumentTypeBridge::isIndexed() const { return m_navigator.getOwnerDocument()->isIndexed(); } XercesDocumentTypeBridge::IndexType XercesDocumentTypeBridge::getIndex() const { return m_navigator.getIndex(); } const XalanDOMString& XercesDocumentTypeBridge::getName() const { return m_navigator.getPooledString(m_xercesNode.getName()); } const XalanNamedNodeMap* XercesDocumentTypeBridge::getEntities() const { return &m_entities; } const XalanNamedNodeMap* XercesDocumentTypeBridge::getNotations() const { return &m_notations; } const XalanDOMString& XercesDocumentTypeBridge::getPublicId() const { return m_navigator.getPooledString(m_xercesNode.getPublicId()); } const XalanDOMString& XercesDocumentTypeBridge::getSystemId() const { return m_navigator.getPooledString(m_xercesNode.getSystemId()); } const XalanDOMString& XercesDocumentTypeBridge::getInternalSubset() const { return m_navigator.getPooledString(m_xercesNode.getInternalSubset()); } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityBridge.hpp0000664000175000000640000003733111731656102026502 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESENTITYBRIDGE_HEADER_GUARD_1357924680) #define XERCESENTITYBRIDGE_HEADER_GUARD_1357924680 #include #if XERCES_VERSION_MAJOR >= 2 #include #else #include #endif #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesBridgeNavigator; /** * This class is deprecated. * * @deprecated This class is part of the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesEntityBridge : public XalanEntity { public: typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Entity DOM_EntityType; XercesEntityBridge( const DOM_EntityType& theXercesDOMEntity, const XercesBridgeNavigator& theNavigator); virtual ~XercesEntityBridge(); // These interfaces are inherited from XalanNode... virtual const XalanDOMString& getNodeName() const; /** * Gets the value of this node, depending on its type. */ virtual const XalanDOMString& getNodeValue() const; /** * An enum value representing the type of the underlying object. */ virtual NodeType getNodeType() const; /** * Gets the parent of this node. * * All nodes, except Document, * DocumentFragment, and Attr may have a parent. * However, if a node has just been created and not yet added to the tree, * or if it has been removed from the tree, a null DOM_Node * is returned. */ virtual XalanNode* getParentNode() const; /** * Gets a NodeList that contains all children of this node. * * If there * are no children, this is a NodeList containing no nodes. * The content of the returned NodeList is "live" in the sense * that, for instance, changes to the children of the node object that * it was created from are immediately reflected in the nodes returned by * the NodeList accessors; it is not a static snapshot of the * content of the node. This is true for every NodeList, * including the ones returned by the getElementsByTagName * method. */ virtual const XalanNodeList* getChildNodes() const; /** * Gets the first child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getFirstChild() const; /** * Gets the last child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getLastChild() const; /** * Gets the node immediately preceding this node. * * If there is no such node, this returns null. */ virtual XalanNode* getPreviousSibling() const; /** * Gets the node immediately following this node. * * If there is no such node, this returns null. */ virtual XalanNode* getNextSibling() const; /** * Gets a NamedNodeMap containing the attributes of this node (if it * is an Element) or null otherwise. */ virtual const XalanNamedNodeMap* getAttributes() const; /** * Gets the DOM_Document object associated with this node. * * This is also * the DOM_Document object used to create new nodes. When this * node is a DOM_Document or a DOM_DocumentType * which is not used with any DOM_Document yet, this is * null. */ virtual XalanDocument* getOwnerDocument() const; //@} /** @name Cloning function. */ //@{ /** * Returns a duplicate of this node. * * This function serves as a generic copy constructor for nodes. * * The duplicate node has no parent ( * parentNode returns null.). *
    Cloning an Element copies all attributes and their * values, including those generated by the XML processor to represent * defaulted attributes, but this method does not copy any text it contains * unless it is a deep clone, since the text is contained in a child * Text node. Cloning any other type of node simply returns a * copy of this node. * @param deep If true, recursively clone the subtree under the * specified node; if false, clone only the node itself (and * its attributes, if it is an Element). * @return The duplicate node. */ #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual XalanNode* #else virtual XercesEntityBridge* #endif cloneNode(bool deep) const; //@} /** @name Functions to modify the DOM Node. */ //@{ /** * Inserts the node newChild before the existing child node * refChild. * * If refChild is null, * insert newChild at the end of the list of children. *
    If newChild is a DocumentFragment object, * all of its children are inserted, in the same order, before * refChild. If the newChild is already in the * tree, it is first removed. Note that a DOM_Node that * has never been assigned to refer to an actual node is == null. * @param newChild The node to insert. * @param refChild The reference node, i.e., the node before which the new * node must be inserted. * @return The node being inserted. */ virtual XalanNode* insertBefore( XalanNode* newChild, XalanNode* refChild); /** * Replaces the child node oldChild with newChild * in the list of children, and returns the oldChild node. * * If newChild is a DOM_DocumentFragment object, * oldChild is replaced by all of the DOM_DocumentFragment * children, which are inserted in the same order. * * If the newChild is already in the tree, it is first removed. * @param newChild The new node to put in the child list. * @param oldChild The node being replaced in the list. * @return The node replaced. */ virtual XalanNode* replaceChild( XalanNode* newChild, XalanNode* oldChild); /** * Removes the child node indicated by oldChild from the list * of children, and returns it. * * @param oldChild The node being removed. * @return The node removed. */ virtual XalanNode* removeChild(XalanNode* oldChild); /** * Adds the node newChild to the end of the list of children of * this node. * * If the newChild is already in the tree, it is * first removed. * @param newChild The node to add.If it is a DocumentFragment * object, the entire contents of the document fragment are moved into * the child list of this node * @return The node added. */ virtual XalanNode* appendChild(XalanNode* newChild); //@} /** @name Query functions. */ //@{ /** * This is a convenience method to allow easy determination of whether a * node has any children. * * @return true if the node has any children, * false if the node has no children. */ virtual bool hasChildNodes() const; //@} /** @name Set functions. */ //@{ /** * Sets the value of the node. * * Any node which can have a nodeValue (@see getNodeValue) will * also accept requests to set it to a string. The exact response to * this varies from node to node -- Attribute, for example, stores * its values in its children and has to replace them with a new Text * holding the replacement value. * * For most types of Node, value is null and attempting to set it * will throw DOMException(NO_MODIFICATION_ALLOWED_ERR). This will * also be thrown if the node is read-only. */ virtual void setNodeValue(const XalanDOMString& nodeValue); //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * Puts all DOM_Text * nodes in the full depth of the sub-tree underneath this DOM_Node, * including attribute nodes, into a "normal" form where only markup (e.g., * tags, comments, processing instructions, CDATA sections, and entity * references) separates DOM_Text * nodes, i.e., there are no adjacent DOM_Text * nodes. This can be used to ensure that the DOM view of a document is the * same as if it were saved and re-loaded, and is useful when operations * (such as XPointer lookups) that depend on a particular document tree * structure are to be used. *

    Note: In cases where the document contains DOM_CDATASections, * the normalize operation alone may not be sufficient, since XPointers do * not differentiate between DOM_Text * nodes and DOM_CDATASection nodes.

    */ virtual void normalize(); /** * Tests whether the DOM implementation implements a specific * feature and that feature is supported by this node. * @param feature The string of the feature to test. This is the same * name as what can be passed to the method hasFeature on * DOMImplementation. * @param version This is the version number of the feature to test. In * Level 2, version 1, this is the string "2.0". If the version is not * specified, supporting any version of the feature will cause the * method to return true. * @return Returns true if the specified feature is supported * on this node, false otherwise. */ virtual bool isSupported( const XalanDOMString& feature, const XalanDOMString& version) const; /** * Get the namespace URI of * this node, or null if it is unspecified. *

    * This is not a computed value that is the result of a namespace lookup * based on an examination of the namespace declarations in scope. It is * merely the namespace URI given at creation time. *

    * For nodes of any type other than ELEMENT_NODE and * ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, * such as createElement from the Document * interface, this is always null. */ virtual const XalanDOMString& getNamespaceURI() const; /** * Get the namespace prefix * of this node, or null if it is unspecified. */ virtual const XalanDOMString& getPrefix() const; /** * Returns the local part of the qualified name of this node. *

    * For nodes created with a DOM Level 1 method, such as * createElement from the DOM_Document interface, * it is null. */ virtual const XalanDOMString& getLocalName() const; /** * Set the namespace prefix of this node. *

    * Note that setting this attribute, when permitted, changes * the nodeName attribute, which holds the qualified * name, as well as the tagName and name * attributes of the DOM_Element and DOM_Attr * interfaces, when applicable. *

    * Note also that changing the prefix of an * attribute, that is known to have a default value, does not make a new * attribute with the default value and the original prefix appear, since the * namespaceURI and localName do not change. * * @param prefix The prefix of this node. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified prefix contains * an illegal character. *
    * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. *
    * NAMESPACE_ERR: Raised if the specified prefix is * malformed, if the specified prefix is "xml" and the * namespaceURI of this node is different from * "http://www.w3.org/XML/1998/namespace", if specified prefix is * "xmlns" and the namespaceURI is neither * null nor an empty string, or if the * localName is null. */ virtual void setPrefix(const XalanDOMString& prefix); virtual bool isIndexed() const; virtual IndexType getIndex() const; //@} // These interfaces are inherited from XalanEntity... /** * Get the public identifier of this notation. * * If the public identifier was not * specified, this is null. * @return Returns the public identifier of the notation */ virtual const XalanDOMString& getPublicId() const; /** * Get the system identifier of this notation. * * If the system identifier was not * specified, this is null. * @return Returns the system identifier of the notation */ virtual const XalanDOMString& getSystemId() const; /** * For unparsed entities, the name of the notation for the entity. * * For parsed entities, this is null. */ virtual const XalanDOMString& getNotationName() const; /** * Get the Xerces node this instance represent. * * @return The Xerces node */ DOM_EntityType getXercesNode() const { return m_xercesNode; } private: // Not implemented... XercesEntityBridge(const XercesEntityBridge& theSource); XercesEntityBridge& operator=(const XercesEntityBridge& theSource); bool operator==(const XercesEntityBridge& theRHS) const; // Data members... // $$$ Note that there is an order dependency here, // due do a code generation bug with MSVC 6.0. The // call to construct the XercesNodeListBridge uses // the m_xercesNode data member instead of the // constructor parameter. I have no idea why MSVC // generate bogus code when using the parameter, but // it does... DOM_EntityType m_xercesNode; const XercesBridgeNavigator& m_navigator; XercesNodeListBridge m_children; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESENTITYBRIDGE_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridge.cpp0000664000175000000640000001514711731656102026146 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) #include "XercesTextBridge.hpp" #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN XercesTextBridge::XercesTextBridge( const DOM_TextType& theXercesText, const XercesBridgeNavigator& theNavigator) : XalanText(), m_xercesNode(theXercesText), m_navigator(theNavigator) { assert(m_xercesNode.isNull() == false); } XercesTextBridge::~XercesTextBridge() { } const XalanDOMString& XercesTextBridge::getNodeName() const { return m_navigator.getPooledString(m_xercesNode.getNodeName()); } const XalanDOMString& XercesTextBridge::getNodeValue() const { return m_navigator.getPooledString(m_xercesNode.getNodeValue()); } XercesTextBridge::NodeType XercesTextBridge::getNodeType() const { return TEXT_NODE; } XalanNode* XercesTextBridge::getParentNode() const { return m_navigator.getParentNode(m_xercesNode); } const XalanNodeList* XercesTextBridge::getChildNodes() const { return 0; } XalanNode* XercesTextBridge::getFirstChild() const { return 0; } XalanNode* XercesTextBridge::getLastChild() const { return 0; } XalanNode* XercesTextBridge::getPreviousSibling() const { return m_navigator.getPreviousSibling(m_xercesNode); } XalanNode* XercesTextBridge::getNextSibling() const { return m_navigator.getNextSibling(m_xercesNode); } const XalanNamedNodeMap* XercesTextBridge::getAttributes() const { return 0; } XalanDocument* XercesTextBridge::getOwnerDocument() const { return m_navigator.getOwnerDocument(); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) XalanNode* #else XercesTextBridge* #endif XercesTextBridge::cloneNode(bool deep) const { #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) return m_navigator.cloneNode(this, m_xercesNode, deep); #else XercesTextBridge* const theBridge = static_cast(m_navigator.cloneNode(this, m_xercesNode, deep)); return theBridge; #endif } XalanNode* XercesTextBridge::insertBefore( XalanNode* /* newChild */, XalanNode* /* refChild */) { throw XercesDOMException(XercesDOMException::HIERARCHY_REQUEST_ERR); return 0; } XalanNode* XercesTextBridge::replaceChild( XalanNode* /* newChild */, XalanNode* /* oldChild */) { throw XercesDOMException(XercesDOMException::HIERARCHY_REQUEST_ERR); return 0; } XalanNode* XercesTextBridge::removeChild(XalanNode* /* oldChild */) { throw XercesDOMException(XercesDOMException::HIERARCHY_REQUEST_ERR); return 0; } XalanNode* XercesTextBridge::appendChild(XalanNode* /* newChild */) { throw XercesDOMException(XercesDOMException::HIERARCHY_REQUEST_ERR); return 0; } bool XercesTextBridge::hasChildNodes() const { return false; } void XercesTextBridge::setNodeValue(const XalanDOMString& nodeValue) { XercesBridgeHelper::setNodeValue(m_xercesNode, nodeValue); } void XercesTextBridge::normalize() { XercesBridgeHelper::normalize(m_xercesNode); } bool XercesTextBridge::isSupported( const XalanDOMString& feature, const XalanDOMString& version) const { return m_xercesNode.isSupported( XercesBridgeHelper::XalanDOMStringToXercesDOMString(feature), XercesBridgeHelper::XalanDOMStringToXercesDOMString(version)); } const XalanDOMString& XercesTextBridge::getNamespaceURI() const { return m_navigator.getPooledString(m_xercesNode.getNamespaceURI()); } const XalanDOMString& XercesTextBridge::getPrefix() const { return m_navigator.getPooledString(m_xercesNode.getPrefixImpl()); } const XalanDOMString& XercesTextBridge::getLocalName() const { return m_navigator.getPooledString(m_xercesNode.getLocalNameImpl()); } void XercesTextBridge::setPrefix(const XalanDOMString& prefix) { XercesBridgeHelper::setPrefix(m_xercesNode, prefix); } bool XercesTextBridge::isIndexed() const { return m_navigator.getOwnerDocument()->isIndexed(); } XercesTextBridge::IndexType XercesTextBridge::getIndex() const { return m_navigator.getIndex(); } const XalanDOMString& XercesTextBridge::getData() const { return m_navigator.getPooledString(m_xercesNode.getDataImpl()); } unsigned int XercesTextBridge::getLength() const { return m_xercesNode.getLength(); } XalanDOMString XercesTextBridge::substringData( unsigned int offset, unsigned int count) const { return XercesBridgeHelper::substringData(m_xercesNode, offset, count); } void XercesTextBridge::appendData(const XalanDOMString& arg) { XercesBridgeHelper::appendData(m_xercesNode, arg); } void XercesTextBridge::insertData( unsigned int offset, const XalanDOMString& arg) { XercesBridgeHelper::insertData(m_xercesNode, offset, arg); } void XercesTextBridge::deleteData( unsigned int offset, unsigned int count) { XercesBridgeHelper::deleteData(m_xercesNode, offset, count); } void XercesTextBridge::replaceData( unsigned int offset, unsigned int count, const XalanDOMString& arg) { XercesBridgeHelper::replaceData(m_xercesNode, offset, count, arg); } XalanText* XercesTextBridge::splitText(unsigned int offset) { return m_navigator.splitText(m_xercesNode, offset); } bool XercesTextBridge::isWhitespace() const { return isXMLWhitespace(getData()); } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentTypeBridge.hpp0000664000175000000640000004025011731656102027640 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESDOCUMENTTYPEBRIDGE_HEADER_GUARD_1357924680) #define XERCESDOCUMENTTYPEBRIDGE_HEADER_GUARD_1357924680 #include #if XERCES_VERSION_MAJOR >= 2 #include #else #include #endif #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesBridgeNavigator; class XercesDocumentBridge; /** * This class is deprecated. * * @deprecated This class is part of the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesDocumentTypeBridge : public XalanDocumentType { public: XercesDocumentTypeBridge( const DOM_DocumentType_Type& theXercesDOMDocumentType, const XercesBridgeNavigator& theNavigator); virtual ~XercesDocumentTypeBridge(); // These interfaces are inherited from XalanNode... virtual const XalanDOMString& getNodeName() const; /** * Gets the value of this node, depending on its type. */ virtual const XalanDOMString& getNodeValue() const; /** * An enum value representing the type of the underlying object. */ virtual NodeType getNodeType() const; /** * Gets the parent of this node. * * All nodes, except Document, * DocumentFragment, and Attr may have a parent. * However, if a node has just been created and not yet added to the tree, * or if it has been removed from the tree, a null DOM_Node * is returned. */ virtual XalanNode* getParentNode() const; /** * Gets a NodeList that contains all children of this node. * * If there * are no children, this is a NodeList containing no nodes. * The content of the returned NodeList is "live" in the sense * that, for instance, changes to the children of the node object that * it was created from are immediately reflected in the nodes returned by * the NodeList accessors; it is not a static snapshot of the * content of the node. This is true for every NodeList, * including the ones returned by the getElementsByTagName * method. */ virtual const XalanNodeList* getChildNodes() const; /** * Gets the first child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getFirstChild() const; /** * Gets the last child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getLastChild() const; /** * Gets the node immediately preceding this node. * * If there is no such node, this returns null. */ virtual XalanNode* getPreviousSibling() const; /** * Gets the node immediately following this node. * * If there is no such node, this returns null. */ virtual XalanNode* getNextSibling() const; /** * Gets a NamedNodeMap containing the attributes of this node (if it * is an Element) or null otherwise. */ virtual const XalanNamedNodeMap* getAttributes() const; /** * Gets the DOM_Document object associated with this node. * * This is also * the DOM_Document object used to create new nodes. When this * node is a DOM_Document or a DOM_DocumentType * which is not used with any DOM_Document yet, this is * null. */ virtual XalanDocument* getOwnerDocument() const; //@} /** @name Cloning function. */ //@{ /** * Returns a duplicate of this node. * * This function serves as a generic copy constructor for nodes. * * The duplicate node has no parent ( * parentNode returns null.). *
    Cloning an Element copies all attributes and their * values, including those generated by the XML processor to represent * defaulted attributes, but this method does not copy any text it contains * unless it is a deep clone, since the text is contained in a child * Text node. Cloning any other type of node simply returns a * copy of this node. * @param deep If true, recursively clone the subtree under the * specified node; if false, clone only the node itself (and * its attributes, if it is an Element). * @return The duplicate node. */ #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual XalanNode* #else virtual XercesDocumentTypeBridge* #endif cloneNode(bool deep) const; //@} /** @name Functions to modify the DOM Node. */ //@{ /** * Inserts the node newChild before the existing child node * refChild. * * If refChild is null, * insert newChild at the end of the list of children. *
    If newChild is a DocumentFragment object, * all of its children are inserted, in the same order, before * refChild. If the newChild is already in the * tree, it is first removed. Note that a DOM_Node that * has never been assigned to refer to an actual node is == null. * @param newChild The node to insert. * @param refChild The reference node, i.e., the node before which the new * node must be inserted. * @return The node being inserted. */ virtual XalanNode* insertBefore( XalanNode* newChild, XalanNode* refChild); /** * Replaces the child node oldChild with newChild * in the list of children, and returns the oldChild node. * * If newChild is a DOM_DocumentFragment object, * oldChild is replaced by all of the DOM_DocumentFragment * children, which are inserted in the same order. * * If the newChild is already in the tree, it is first removed. * @param newChild The new node to put in the child list. * @param oldChild The node being replaced in the list. * @return The node replaced. */ virtual XalanNode* replaceChild( XalanNode* newChild, XalanNode* oldChild); /** * Removes the child node indicated by oldChild from the list * of children, and returns it. * * @param oldChild The node being removed. * @return The node removed. */ virtual XalanNode* removeChild(XalanNode* oldChild); /** * Adds the node newChild to the end of the list of children of * this node. * * If the newChild is already in the tree, it is * first removed. * @param newChild The node to add.If it is a DocumentFragment * object, the entire contents of the document fragment are moved into * the child list of this node * @return The node added. */ virtual XalanNode* appendChild(XalanNode* newChild); //@} /** @name Query functions. */ //@{ /** * This is a convenience method to allow easy determination of whether a * node has any children. * * @return true if the node has any children, * false if the node has no children. */ virtual bool hasChildNodes() const; //@} /** @name Set functions. */ //@{ /** * Sets the value of the node. * * Any node which can have a nodeValue (@see getNodeValue) will * also accept requests to set it to a string. The exact response to * this varies from node to node -- Attribute, for example, stores * its values in its children and has to replace them with a new Text * holding the replacement value. * * For most types of Node, value is null and attempting to set it * will throw DOMException(NO_MODIFICATION_ALLOWED_ERR). This will * also be thrown if the node is read-only. */ virtual void setNodeValue(const XalanDOMString& nodeValue); //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * Puts all DOM_Text * nodes in the full depth of the sub-tree underneath this DOM_Node, * including attribute nodes, into a "normal" form where only markup (e.g., * tags, comments, processing instructions, CDATA sections, and entity * references) separates DOM_Text * nodes, i.e., there are no adjacent DOM_Text * nodes. This can be used to ensure that the DOM view of a document is the * same as if it were saved and re-loaded, and is useful when operations * (such as XPointer lookups) that depend on a particular document tree * structure are to be used. *

    Note: In cases where the document contains DOM_CDATASections, * the normalize operation alone may not be sufficient, since XPointers do * not differentiate between DOM_Text * nodes and DOM_CDATASection nodes.

    */ virtual void normalize(); /** * Tests whether the DOM implementation implements a specific * feature and that feature is supported by this node. * @param feature The string of the feature to test. This is the same * name as what can be passed to the method hasFeature on * DOMImplementation. * @param version This is the version number of the feature to test. In * Level 2, version 1, this is the string "2.0". If the version is not * specified, supporting any version of the feature will cause the * method to return true. * @return Returns true if the specified feature is supported * on this node, false otherwise. */ virtual bool isSupported( const XalanDOMString& feature, const XalanDOMString& version) const; /** * Get the namespace URI of * this node, or null if it is unspecified. *

    * This is not a computed value that is the result of a namespace lookup * based on an examination of the namespace declarations in scope. It is * merely the namespace URI given at creation time. *

    * For nodes of any type other than ELEMENT_NODE and * ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, * such as createElement from the Document * interface, this is always null. */ virtual const XalanDOMString& getNamespaceURI() const; /** * Get the namespace prefix * of this node, or null if it is unspecified. */ virtual const XalanDOMString& getPrefix() const; /** * Returns the local part of the qualified name of this node. *

    * For nodes created with a DOM Level 1 method, such as * createElement from the DOM_Document interface, * it is null. */ virtual const XalanDOMString& getLocalName() const; /** * Set the namespace prefix of this node. *

    * Note that setting this attribute, when permitted, changes * the nodeName attribute, which holds the qualified * name, as well as the tagName and name * attributes of the DOM_Element and DOM_Attr * interfaces, when applicable. *

    * Note also that changing the prefix of an * attribute, that is known to have a default value, does not make a new * attribute with the default value and the original prefix appear, since the * namespaceURI and localName do not change. * * @param prefix The prefix of this node. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified prefix contains * an illegal character. *
    * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. *
    * NAMESPACE_ERR: Raised if the specified prefix is * malformed, if the specified prefix is "xml" and the * namespaceURI of this node is different from * "http://www.w3.org/XML/1998/namespace", if specified prefix is * "xmlns" and the namespaceURI is neither * null nor an empty string, or if the * localName is null. */ virtual void setPrefix(const XalanDOMString& prefix); virtual bool isIndexed() const; virtual IndexType getIndex() const; //@} // These interfaces are inherited from XalanDocumentType... /** @name Getter functions. */ //@{ /** * The name of DTD; i.e., the name immediately following the * DOCTYPE keyword in an XML source document. */ virtual const XalanDOMString& getName() const; /** * This function returns a NamedNodeMap containing the general entities, both * external and internal, declared in the DTD. Parameter entities are not contained. * Duplicates are discarded. */ virtual const XalanNamedNodeMap* getEntities() const; /** * This function returns a named node map containing an entry for * each notation declared in a document's DTD. Duplicates are discarded. */ virtual const XalanNamedNodeMap* getNotations() const; //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * Get the public identifier of the external subset. * @return The public identifier of the external subset. */ virtual const XalanDOMString& getPublicId() const; /** * Get the system identifier of the external subset. * @return The system identifier of the external subset. */ virtual const XalanDOMString& getSystemId() const; /** * Get the internal subset as a string. * @return The internal subset as a string. */ virtual const XalanDOMString& getInternalSubset() const; /** * Get the Xerces node this instance represent. * * @return The Xerces node */ DOM_DocumentType_Type getXercesNode() const { return m_xercesNode; } //@} private: // Not implemented... XercesDocumentTypeBridge(const XercesDocumentTypeBridge& theSource); XercesDocumentTypeBridge& operator=(const XercesDocumentTypeBridge& theSource); bool operator==(const XercesDocumentTypeBridge& theRHS) const; // Data members... DOM_DocumentType_Type m_xercesNode; XercesNamedNodeMapBridge m_entities; XercesNamedNodeMapBridge m_notations; const XercesBridgeNavigator& m_navigator; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESDOCUMENTTYPEBRIDGE_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridgeAllocator.cpp0000664000175000000640000000323611731656102030003 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) // Class header file. #include "XercesTextBridgeAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesTextBridgeAllocator::XercesTextBridgeAllocator(size_type theBlockCount) : m_allocator(theBlockCount) { } XercesTextBridgeAllocator::~XercesTextBridgeAllocator() { } XercesTextBridgeAllocator::ObjectType* XercesTextBridgeAllocator::create( const DOM_TextType& theXercesText, const XercesBridgeNavigator& theNavigator) { ObjectType* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); new(theBlock) ObjectType(theXercesText, theNavigator); m_allocator.commitAllocation(theBlock); return theBlock; } void XercesTextBridgeAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridge.cpp0000664000175000000640000002436511731656102026615 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) #include "XercesElementBridge.hpp" #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN XercesElementBridge::XercesElementBridge( const DOM_ElementType& theXercesElement, const XercesBridgeNavigator& theNavigator) : XalanElement(), m_xercesNode(theXercesElement), m_navigator(theNavigator), m_children(theXercesElement.getChildNodes(), theNavigator), m_attributes(theXercesElement.getAttributes(), theNavigator) { } XercesElementBridge::~XercesElementBridge() { } const XalanDOMString& XercesElementBridge::getNodeName() const { return m_navigator.getPooledString(m_xercesNode.getNodeNameImpl()); } const XalanDOMString& XercesElementBridge::getNodeValue() const { return m_navigator.getPooledString(m_xercesNode.getNodeValueImpl()); } XercesElementBridge::NodeType XercesElementBridge::getNodeType() const { return ELEMENT_NODE; } XalanNode* XercesElementBridge::getParentNode() const { return m_navigator.getParentNode(m_xercesNode); } const XalanNodeList* XercesElementBridge::getChildNodes() const { return &m_children; } XalanNode* XercesElementBridge::getFirstChild() const { return m_navigator.getFirstChild(m_xercesNode); } XalanNode* XercesElementBridge::getLastChild() const { return m_navigator.getLastChild(m_xercesNode); } XalanNode* XercesElementBridge::getPreviousSibling() const { return m_navigator.getPreviousSibling(m_xercesNode); } XalanNode* XercesElementBridge::getNextSibling() const { return m_navigator.getNextSibling(m_xercesNode); } const XalanNamedNodeMap* XercesElementBridge::getAttributes() const { return &m_attributes; } XalanDocument* XercesElementBridge::getOwnerDocument() const { return m_navigator.getOwnerDocument(); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) XalanNode* #else XercesElementBridge* #endif XercesElementBridge::cloneNode(bool deep) const { #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) return m_navigator.cloneNode(this, m_xercesNode, deep); #else XercesElementBridge* const theBridge = static_cast(m_navigator.cloneNode(this, m_xercesNode, deep)); return theBridge; #endif } XalanNode* XercesElementBridge::insertBefore( XalanNode* newChild, XalanNode* refChild) { return m_navigator.insertBefore(m_xercesNode, newChild, refChild); } XalanNode* XercesElementBridge::replaceChild( XalanNode* newChild, XalanNode* oldChild) { return m_navigator.replaceChild(m_xercesNode, newChild, oldChild); } XalanNode* XercesElementBridge::removeChild(XalanNode* oldChild) { return m_navigator.removeChild(m_xercesNode, oldChild); } XalanNode* XercesElementBridge::appendChild(XalanNode* newChild) { return m_navigator.appendChild(m_xercesNode, newChild); } bool XercesElementBridge::hasChildNodes() const { return m_xercesNode.hasChildNodes(); } void XercesElementBridge::setNodeValue(const XalanDOMString& nodeValue) { XercesBridgeHelper::setNodeValue(m_xercesNode, nodeValue); } void XercesElementBridge::normalize() { XercesBridgeHelper::normalize(m_xercesNode); } bool XercesElementBridge::isSupported( const XalanDOMString& feature, const XalanDOMString& version) const { return m_xercesNode.isSupported( XercesBridgeHelper::XalanDOMStringToXercesDOMString(feature), XercesBridgeHelper::XalanDOMStringToXercesDOMString(version)); } const XalanDOMString& XercesElementBridge::getNamespaceURI() const { return m_navigator.getPooledString(m_xercesNode.getNamespaceURIImpl()); } const XalanDOMString& XercesElementBridge::getPrefix() const { return m_navigator.getPooledString(m_xercesNode.getPrefixImpl()); } const XalanDOMString& XercesElementBridge::getLocalName() const { return m_navigator.getPooledString(m_xercesNode.getLocalNameImpl()); } void XercesElementBridge::setPrefix(const XalanDOMString& prefix) { XercesBridgeHelper::setPrefix(m_xercesNode, prefix); } bool XercesElementBridge::isIndexed() const { return m_navigator.getOwnerDocument()->isIndexed(); } XercesElementBridge::IndexType XercesElementBridge::getIndex() const { return m_navigator.getIndex(); } const XalanDOMString& XercesElementBridge::getTagName() const { return m_navigator.getPooledString(m_xercesNode.getTagNameImpl()); } const XalanDOMString& XercesElementBridge::getAttribute(const XalanDOMString& name) const { return m_navigator.getPooledString(m_xercesNode.getAttributeImpl(name.c_str())); } XalanAttr* XercesElementBridge::getAttributeNode(const XalanDOMString& name) const { return static_cast(m_attributes.getNamedItem(name)); } XalanNodeList* XercesElementBridge::getElementsByTagName(const XalanDOMString& /* name */) const { // Not supported... return 0; } void XercesElementBridge::setAttribute( const XalanDOMString& name, const XalanDOMString& value) { try { m_xercesNode.setAttribute(name.c_str(), value.c_str()); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } } XalanAttr* XercesElementBridge::setAttributeNode(XalanAttr* newAttr) { assert(newAttr != 0); const DOM_AttrType theXercesAttrNode = m_navigator.mapNode(newAttr); assert(theXercesAttrNode.isNull() == false); XalanAttr* theXalanAttrResult = 0; try { const DOM_AttrType theXercesAttrResult = m_xercesNode.setAttributeNode(theXercesAttrNode); theXalanAttrResult = m_navigator.mapNode(theXercesAttrResult); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } return theXalanAttrResult; } XalanAttr* XercesElementBridge::removeAttributeNode(XalanAttr* oldAttr) { assert(oldAttr != 0); const DOM_AttrType theXercesAttrNode = m_navigator.mapNode(oldAttr); assert(theXercesAttrNode.isNull() == false); XalanAttr* theXalanAttrResult = 0; try { const DOM_AttrType theXercesAttrResult = m_xercesNode.removeAttributeNode(theXercesAttrNode); theXalanAttrResult = m_navigator.mapNode(theXercesAttrResult); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } return theXalanAttrResult; } void XercesElementBridge::removeAttribute(const XalanDOMString& name) { try { m_xercesNode.removeAttribute(name.c_str()); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } } const XalanDOMString& XercesElementBridge::getAttributeNS( const XalanDOMString& namespaceURI, const XalanDOMString& localName) const { return m_navigator.getPooledString(m_xercesNode.getAttributeNSImpl(namespaceURI.c_str(), localName.c_str())); } void XercesElementBridge::setAttributeNS( const XalanDOMString& namespaceURI, const XalanDOMString& qualifiedName, const XalanDOMString& value) { try { m_xercesNode.setAttributeNS(namespaceURI.c_str(), qualifiedName.c_str(), value.c_str()); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } } void XercesElementBridge::removeAttributeNS( const XalanDOMString& namespaceURI, const XalanDOMString& localName) { try { m_xercesNode.removeAttributeNS(namespaceURI.c_str(), localName.c_str()); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } } XalanAttr* XercesElementBridge::getAttributeNodeNS( const XalanDOMString& namespaceURI, const XalanDOMString& localName) const { const DOM_AttrType theAttrNode = m_xercesNode.getAttributeNodeNS(namespaceURI.c_str(), localName.c_str()); if (theAttrNode.isNull() == true) { return 0; } else { return m_navigator.mapNode(theAttrNode); } } XalanAttr* XercesElementBridge::setAttributeNodeNS(XalanAttr* newAttr) { assert(newAttr != 0); const DOM_AttrType theXercesAttrNode = m_navigator.mapNode(newAttr); assert(theXercesAttrNode.isNull() == false); XalanAttr* theXalanAttrResult = 0; try { const DOM_AttrType theXercesAttrResult = m_xercesNode.setAttributeNodeNS(theXercesAttrNode); theXalanAttrResult = m_navigator.mapNode(theXercesAttrResult); } catch(const DOM_DOMExceptionType& theException) { throw XercesDOMException(theException); } return theXalanAttrResult; } XalanNodeList* XercesElementBridge::getElementsByTagNameNS( const XalanDOMString& /* namespaceURI */, const XalanDOMString& /* localName */) const { // Not supported... return 0; } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridge.hpp0000664000175000000640000005125711731656102026155 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESTEXTBRIDGE_HEADER_GUARD_1357924680) #define XERCESTEXTBRIDGE_HEADER_GUARD_1357924680 #include #if XERCES_VERSION_MAJOR >= 2 #include #else #include #endif #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesBridgeNavigator; /** * This class is deprecated. * * @deprecated This class is part of the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesTextBridge : public XalanText { public: typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Text DOM_TextType; XercesTextBridge( const DOM_TextType& theXercesText, const XercesBridgeNavigator& theNavigator); virtual ~XercesTextBridge(); /** * Gets the name of this node. */ virtual const XalanDOMString& getNodeName() const; /** * Gets the value of this node, depending on its type. */ virtual const XalanDOMString& getNodeValue() const; /** * An enum value representing the type of the underlying object. */ virtual NodeType getNodeType() const; /** * Gets the parent of this node. * * All nodes, except Document, * DocumentFragment, and Attr may have a parent. * However, if a node has just been created and not yet added to the tree, * or if it has been removed from the tree, a null DOM_Node * is returned. */ virtual XalanNode* getParentNode() const; /** * Gets a NodeList that contains all children of this node. * * If there * are no children, this is a NodeList containing no nodes. * The content of the returned NodeList is "live" in the sense * that, for instance, changes to the children of the node object that * it was created from are immediately reflected in the nodes returned by * the NodeList accessors; it is not a static snapshot of the * content of the node. This is true for every NodeList, * including the ones returned by the getElementsByTagName * method. */ virtual const XalanNodeList* getChildNodes() const; /** * Gets the first child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getFirstChild() const; /** * Gets the last child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getLastChild() const; /** * Gets the node immediately preceding this node. * * If there is no such node, this returns null. */ virtual XalanNode* getPreviousSibling() const; /** * Gets the node immediately following this node. * * If there is no such node, this returns null. */ virtual XalanNode* getNextSibling() const; /** * Gets a NamedNodeMap containing the attributes of this node (if it * is an Element) or null otherwise. */ virtual const XalanNamedNodeMap* getAttributes() const; /** * Gets the DOM_Document object associated with this node. * * This is also * the DOM_Document object used to create new nodes. When this * node is a DOM_Document or a DOM_DocumentType * which is not used with any DOM_Document yet, this is * null. */ virtual XalanDocument* getOwnerDocument() const; //@} /** @name Cloning function. */ //@{ /** * Returns a duplicate of this node. * * This function serves as a generic copy constructor for nodes. * * The duplicate node has no parent ( * parentNode returns null.). *
    Cloning an Element copies all attributes and their * values, including those generated by the XML processor to represent * defaulted attributes, but this method does not copy any text it contains * unless it is a deep clone, since the text is contained in a child * Text node. Cloning any other type of node simply returns a * copy of this node. * @param deep If true, recursively clone the subtree under the * specified node; if false, clone only the node itself (and * its attributes, if it is an Element). * @return The duplicate node. */ #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual XalanNode* #else virtual XercesTextBridge* #endif cloneNode(bool deep) const; //@} /** @name Functions to modify the DOM Node. */ //@{ /** * Inserts the node newChild before the existing child node * refChild. * * If refChild is null, * insert newChild at the end of the list of children. *
    If newChild is a DocumentFragment object, * all of its children are inserted, in the same order, before * refChild. If the newChild is already in the * tree, it is first removed. Note that a DOM_Node that * has never been assigned to refer to an actual node is == null. * @param newChild The node to insert. * @param refChild The reference node, i.e., the node before which the new * node must be inserted. * @return The node being inserted. */ virtual XalanNode* insertBefore( XalanNode* newChild, XalanNode* refChild); /** * Replaces the child node oldChild with newChild * in the list of children, and returns the oldChild node. * * If newChild is a DOM_DocumentFragment object, * oldChild is replaced by all of the DOM_DocumentFragment * children, which are inserted in the same order. * * If the newChild is already in the tree, it is first removed. * @param newChild The new node to put in the child list. * @param oldChild The node being replaced in the list. * @return The node replaced. */ virtual XalanNode* replaceChild( XalanNode* newChild, XalanNode* oldChild); /** * Removes the child node indicated by oldChild from the list * of children, and returns it. * * @param oldChild The node being removed. * @return The node removed. */ virtual XalanNode* removeChild(XalanNode* oldChild); /** * Adds the node newChild to the end of the list of children of * this node. * * If the newChild is already in the tree, it is * first removed. * @param newChild The node to add.If it is a DocumentFragment * object, the entire contents of the document fragment are moved into * the child list of this node * @return The node added. */ virtual XalanNode* appendChild(XalanNode* newChild); //@} /** @name Query functions. */ //@{ /** * This is a convenience method to allow easy determination of whether a * node has any children. * * @return true if the node has any children, * false if the node has no children. */ virtual bool hasChildNodes() const; //@} /** @name Set functions. */ //@{ /** * Sets the value of the node. * * Any node which can have a nodeValue (@see getNodeValue) will * also accept requests to set it to a string. The exact response to * this varies from node to node -- Attribute, for example, stores * its values in its children and has to replace them with a new Text * holding the replacement value. * * For most types of Node, value is null and attempting to set it * will throw DOMException(NO_MODIFICATION_ALLOWED_ERR). This will * also be thrown if the node is read-only. */ virtual void setNodeValue(const XalanDOMString& nodeValue); //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * Puts all DOM_Text * nodes in the full depth of the sub-tree underneath this DOM_Node, * including attribute nodes, into a "normal" form where only markup (e.g., * tags, comments, processing instructions, CDATA sections, and entity * references) separates DOM_Text * nodes, i.e., there are no adjacent DOM_Text * nodes. This can be used to ensure that the DOM view of a document is the * same as if it were saved and re-loaded, and is useful when operations * (such as XPointer lookups) that depend on a particular document tree * structure are to be used. *

    Note: In cases where the document contains DOM_CDATASections, * the normalize operation alone may not be sufficient, since XPointers do * not differentiate between DOM_Text * nodes and DOM_CDATASection nodes.

    */ virtual void normalize(); /** * Tests whether the DOM implementation implements a specific * feature and that feature is supported by this node. * @param feature The string of the feature to test. This is the same * name as what can be passed to the method hasFeature on * DOMImplementation. * @param version This is the version number of the feature to test. In * Level 2, version 1, this is the string "2.0". If the version is not * specified, supporting any version of the feature will cause the * method to return true. * @return Returns true if the specified feature is supported * on this node, false otherwise. */ virtual bool isSupported( const XalanDOMString& feature, const XalanDOMString& version) const; /** * Get the namespace URI of * this node, or null if it is unspecified. *

    * This is not a computed value that is the result of a namespace lookup * based on an examination of the namespace declarations in scope. It is * merely the namespace URI given at creation time. *

    * For nodes of any type other than ELEMENT_NODE and * ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, * such as createElement from the Document * interface, this is always null. */ virtual const XalanDOMString& getNamespaceURI() const; /** * Get the namespace prefix * of this node, or null if it is unspecified. */ virtual const XalanDOMString& getPrefix() const; /** * Returns the local part of the qualified name of this node. *

    * For nodes created with a DOM Level 1 method, such as * createElement from the DOM_Document interface, * it is null. */ virtual const XalanDOMString& getLocalName() const; /** * Set the namespace prefix of this node. *

    * Note that setting this attribute, when permitted, changes * the nodeName attribute, which holds the qualified * name, as well as the tagName and name * attributes of the DOM_Element and DOM_Attr * interfaces, when applicable. *

    * Note also that changing the prefix of an * attribute, that is known to have a default value, does not make a new * attribute with the default value and the original prefix appear, since the * namespaceURI and localName do not change. * * @param prefix The prefix of this node. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified prefix contains * an illegal character. *
    * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. *
    * NAMESPACE_ERR: Raised if the specified prefix is * malformed, if the specified prefix is "xml" and the * namespaceURI of this node is different from * "http://www.w3.org/XML/1998/namespace", if specified prefix is * "xmlns" and the namespaceURI is neither * null nor an empty string, or if the * localName is null. */ virtual void setPrefix(const XalanDOMString& prefix); virtual bool isIndexed() const; virtual IndexType getIndex() const; //@} // These interfaces are inherited from XalanText... /** @name Getter functions. */ //@{ /** * Returns the character data of the node that implements this interface. * * The DOM implementation may not put arbitrary limits on the amount of data that * may be stored in a CharacterData node. However, * implementation limits may mean that the entirety of a node's data may * not fit into a single DOMString. In such cases, the user * may call substringData to retrieve the data in * appropriately sized pieces. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly. * @exception DOMException * DOMSTRING_SIZE_ERR: Raised when it would return more characters than * fit in a DOMString variable on the implementation * platform. */ virtual const XalanDOMString& getData() const; /** * Returns the number of characters that are available through data and * the substringData method below. * * This may have the value * zero, i.e., CharacterData nodes may be empty. */ virtual unsigned int getLength() const; /** * Extracts a range of data from the node. * * @param offset Start offset of substring to extract. * @param count The number of characters to extract. * @return The specified substring. If the sum of offset and * count exceeds the length, then all * characters to the end of the data are returned. * @exception DOMException * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater * than the number of characters in data, or if the * specified count is negative. *
    DOMSTRING_SIZE_ERR: Raised if the specified range of text does not * fit into a DOMString. */ virtual XalanDOMString substringData( unsigned int offset, unsigned int count) const; //@} /** @name Functions that set or change data. */ //@{ /** * Append the string to the end of the character data of the node. * * Upon success, data provides access to the concatenation of * data and the DOMString specified. * @param arg The DOMString to append. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. */ virtual void appendData(const XalanDOMString& arg); /** * Insert a string at the specified character offset. * * @param offset The character offset at which to insert. * @param arg The DOMString to insert. * @exception DOMException * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater * than the number of characters in data. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. */ virtual void insertData( unsigned int offset, const XalanDOMString& arg); /** * Remove a range of characters from the node. * * Upon success, * data and length reflect the change. * @param offset The offset from which to remove characters. * @param count The number of characters to delete. If the sum of * offset and count exceeds length * then all characters from offset to the end of the data * are deleted. * @exception DOMException * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater * than the number of characters in data, or if the * specified count is negative. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. */ virtual void deleteData( unsigned int offset, unsigned int count); /** * Replace the characters starting at the specified character offset with * the specified string. * * @param offset The offset from which to start replacing. * @param count The number of characters to replace. If the sum of * offset and count exceeds length * , then all characters to the end of the data are replaced (i.e., the * effect is the same as a remove method call with the same * range, followed by an append method invocation). * @param arg The DOMString with which the range must be * replaced. * @exception DOMException * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater * than the number of characters in data, or if the * specified count is negative. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. */ virtual void replaceData( unsigned int offset, unsigned int count, const XalanDOMString& arg); //@} //@} /** @name Functions to modify the Text node. */ //@{ /** * Breaks this node into two nodes at the specified * offset, keeping both in the tree as siblings. * * This node then only * contains all the content up to the offset point. And a new * node of the same nodeType, which is inserted as the next sibling of this * node, contains all the content at and after the offset * point. When the offset is equal to the lenght of this node, * the new node has no data. * @param offset The offset at which to split, starting from 0. * @return The new Text node. * @exception DOMException * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater * than the number of characters in data. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. */ virtual XalanText* splitText(unsigned int offset); //@} virtual bool isWhitespace() const; /** * Get the Xerces node this instance represent. * * @return The Xerces node */ DOM_TextType getXercesNode() const { return m_xercesNode; } private: // Not implemented... XercesTextBridge(const XercesTextBridge& theSource); XercesTextBridge& operator=(const XercesTextBridge& theSource); bool operator==(const XercesTextBridge& theRHS) const; // Data members... XercesDOM_TextHack m_xercesNode; const XercesBridgeNavigator& m_navigator; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESTEXTBRIDGE_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridgeAllocator.hpp0000664000175000000640000000630511731656102030010 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESTEXTBRIDGEALLOCATOR_INCLUDE_GUARD_12455133) #define XERCESTEXTBRIDGEALLOCATOR_INCLUDE_GUARD_12455133 #include #include #include XALAN_CPP_NAMESPACE_BEGIN /** * This class is deprecated. * * @deprecated This class works with the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesTextBridgeAllocator { public: typedef XercesTextBridge ObjectType; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XercesTextBridgeAllocator(size_type theBlockCount); ~XercesTextBridgeAllocator(); /** * Create a XercesTextBridge instance. * * @param theXercesText The Xerces text node * @param theNavigator The navigator for this instance. * * @return pointer to the instance */ ObjectType* create( const DOM_TextType& theXercesText, const XercesBridgeNavigator& theNavigator); /** * Delete all objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XercesTextBridgeAllocator(const XercesTextBridgeAllocator&); XercesTextBridgeAllocator& operator=(const XercesTextBridgeAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XERCESTEXTBRIDGEALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesNotationBridge.cpp0000664000175000000640000001244211731656102027010 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) #include "XercesNotationBridge.hpp" #include #include "XercesBridgeHelper.hpp" #include "XercesDocumentBridge.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesNotationBridge::XercesNotationBridge( const DOM_NotationType& theXercesDOMNotation, const XercesBridgeNavigator& theNavigator) : XalanNotation(), m_xercesNode(theXercesDOMNotation), m_navigator(theNavigator) { } XercesNotationBridge::~XercesNotationBridge() { } const XalanDOMString& XercesNotationBridge::getNodeName() const { return m_navigator.getPooledString(m_xercesNode.getNodeName()); } const XalanDOMString& XercesNotationBridge::getNodeValue() const { return m_navigator.getPooledString(m_xercesNode.getNodeValue()); } XercesNotationBridge::NodeType XercesNotationBridge::getNodeType() const { return NOTATION_NODE; } XalanNode* XercesNotationBridge::getParentNode() const { return m_navigator.getParentNode(m_xercesNode); } const XalanNodeList* XercesNotationBridge::getChildNodes() const { return 0; } XalanNode* XercesNotationBridge::getFirstChild() const { return 0; } XalanNode* XercesNotationBridge::getLastChild() const { return 0; } XalanNode* XercesNotationBridge::getPreviousSibling() const { return m_navigator.getPreviousSibling(m_xercesNode); } XalanNode* XercesNotationBridge::getNextSibling() const { return m_navigator.getNextSibling(m_xercesNode); } const XalanNamedNodeMap* XercesNotationBridge::getAttributes() const { return 0; } XalanDocument* XercesNotationBridge::getOwnerDocument() const { return m_navigator.getOwnerDocument(); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) XalanNode* #else XercesNotationBridge* #endif XercesNotationBridge::cloneNode(bool deep) const { #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) return m_navigator.cloneNode(this, m_xercesNode, deep); #else XercesNotationBridge* const theBridge = static_cast(m_navigator.cloneNode(this, m_xercesNode, deep)); return theBridge; #endif } XalanNode* XercesNotationBridge::insertBefore( XalanNode* newChild, XalanNode* refChild) { return m_navigator.insertBefore(m_xercesNode, newChild, refChild); } XalanNode* XercesNotationBridge::replaceChild( XalanNode* newChild, XalanNode* oldChild) { return m_navigator.replaceChild(m_xercesNode, newChild, oldChild); } XalanNode* XercesNotationBridge::removeChild(XalanNode* oldChild) { return m_navigator.removeChild(m_xercesNode, oldChild); } XalanNode* XercesNotationBridge::appendChild(XalanNode* newChild) { return m_navigator.appendChild(m_xercesNode, newChild); } bool XercesNotationBridge::hasChildNodes() const { return false; } void XercesNotationBridge::setNodeValue(const XalanDOMString& nodeValue) { XercesBridgeHelper::setNodeValue(m_xercesNode, nodeValue); } void XercesNotationBridge::normalize() { XercesBridgeHelper::normalize(m_xercesNode); } bool XercesNotationBridge::isSupported( const XalanDOMString& feature, const XalanDOMString& version) const { return m_xercesNode.isSupported( XercesBridgeHelper::XalanDOMStringToXercesDOMString(feature), XercesBridgeHelper::XalanDOMStringToXercesDOMString(version)); } const XalanDOMString& XercesNotationBridge::getNamespaceURI() const { return m_navigator.getPooledString(m_xercesNode.getNamespaceURI()); } const XalanDOMString& XercesNotationBridge::getPrefix() const { return m_navigator.getPooledString(m_xercesNode.getPrefix()); } const XalanDOMString& XercesNotationBridge::getLocalName() const { return m_navigator.getPooledString(m_xercesNode.getLocalName()); } void XercesNotationBridge::setPrefix(const XalanDOMString& prefix) { XercesBridgeHelper::setPrefix(m_xercesNode, prefix); } bool XercesNotationBridge::isIndexed() const { return m_navigator.getOwnerDocument()->isIndexed(); } XercesNotationBridge::IndexType XercesNotationBridge::getIndex() const { return m_navigator.getIndex(); } const XalanDOMString& XercesNotationBridge::getPublicId() const { return m_navigator.getPooledString(m_xercesNode.getPublicId()); } const XalanDOMString& XercesNotationBridge::getSystemId() const { return m_navigator.getPooledString(m_xercesNode.getSystemId()); } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesToXalanNodeMap.cpp0000664000175000000640000000434211731656102026712 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) #include "XercesToXalanNodeMap.hpp" #include #include #include #if XERCES_VERSION_MAJOR >= 2 #include #else #include #endif #include #include XALAN_CPP_NAMESPACE_BEGIN XercesToXalanNodeMap::XercesToXalanNodeMap() : m_xalanMap(), m_xercesMap() { } XercesToXalanNodeMap::~XercesToXalanNodeMap() { } void XercesToXalanNodeMap::addAssociation( const DOM_NodeType& theXercesNode, XalanNode* theXalanNode) { NodeImplType* const theImpl = XercesDOM_NodeHack::getImpl(theXercesNode); m_xercesMap.insert(XercesNodeMapType::value_type(theImpl, theXalanNode)); } void XercesToXalanNodeMap::clear() { m_xalanMap.clear(); m_xercesMap.clear(); } XercesToXalanNodeMap::NodeImplType* XercesToXalanNodeMap::getNodeImpl(const XalanNode* theXalanNode) const { XALAN_USING_STD(find_if) const XercesNodeMapType::const_iterator i = find_if( m_xercesMap.begin(), m_xercesMap.end(), NameMapEqualsFunctor(theXalanNode)); if (i != m_xercesMap.end()) { return (*i).first; } else { return 0; } } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridge.hpp0000664000175000000640000006560011731656102026617 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESELEMENTBRIDGE_HEADER_GUARD_1357924680) #define XERCESELEMENTBRIDGE_HEADER_GUARD_1357924680 #include #if XERCES_VERSION_MAJOR >= 2 #include #else #include #endif #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesBridgeNavigator; /** * This class is deprecated. * * @deprecated This class is part of the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesElementBridge : public XalanElement { public: typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Element DOM_ElementType; XercesElementBridge( const DOM_ElementType& theXercesElement, const XercesBridgeNavigator& theNavigator); virtual ~XercesElementBridge(); /** * Gets the name of this node. */ virtual const XalanDOMString& getNodeName() const; /** * Gets the value of this node, depending on its type. */ virtual const XalanDOMString& getNodeValue() const; /** * An enum value representing the type of the underlying object. */ virtual NodeType getNodeType() const; /** * Gets the parent of this node. * * All nodes, except Document, * DocumentFragment, and Attr may have a parent. * However, if a node has just been created and not yet added to the tree, * or if it has been removed from the tree, a null DOM_Node * is returned. */ virtual XalanNode* getParentNode() const; /** * Gets a NodeList that contains all children of this node. * * If there * are no children, this is a NodeList containing no nodes. * The content of the returned NodeList is "live" in the sense * that, for instance, changes to the children of the node object that * it was created from are immediately reflected in the nodes returned by * the NodeList accessors; it is not a static snapshot of the * content of the node. This is true for every NodeList, * including the ones returned by the getElementsByTagName * method. */ virtual const XalanNodeList* getChildNodes() const; /** * Gets the first child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getFirstChild() const; /** * Gets the last child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getLastChild() const; /** * Gets the node immediately preceding this node. * * If there is no such node, this returns null. */ virtual XalanNode* getPreviousSibling() const; /** * Gets the node immediately following this node. * * If there is no such node, this returns null. */ virtual XalanNode* getNextSibling() const; /** * Gets a NamedNodeMap containing the attributes of this node (if it * is an Element) or null otherwise. */ virtual const XalanNamedNodeMap* getAttributes() const; /** * Gets the DOM_Document object associated with this node. * * This is also * the DOM_Document object used to create new nodes. When this * node is a DOM_Document or a DOM_DocumentType * which is not used with any DOM_Document yet, this is * null. */ virtual XalanDocument* getOwnerDocument() const; //@} /** @name Cloning function. */ //@{ /** * Returns a duplicate of this node. * * This function serves as a generic copy constructor for nodes. * * The duplicate node has no parent ( * parentNode returns null.). *
    Cloning an Element copies all attributes and their * values, including those generated by the XML processor to represent * defaulted attributes, but this method does not copy any text it contains * unless it is a deep clone, since the text is contained in a child * Text node. Cloning any other type of node simply returns a * copy of this node. * @param deep If true, recursively clone the subtree under the * specified node; if false, clone only the node itself (and * its attributes, if it is an Element). * @return The duplicate node. */ #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual XalanNode* #else virtual XercesElementBridge* #endif cloneNode(bool deep) const; //@} /** @name Functions to modify the DOM Node. */ //@{ /** * Inserts the node newChild before the existing child node * refChild. * * If refChild is null, * insert newChild at the end of the list of children. *
    If newChild is a DocumentFragment object, * all of its children are inserted, in the same order, before * refChild. If the newChild is already in the * tree, it is first removed. Note that a DOM_Node that * has never been assigned to refer to an actual node is == null. * @param newChild The node to insert. * @param refChild The reference node, i.e., the node before which the new * node must be inserted. * @return The node being inserted. */ virtual XalanNode* insertBefore( XalanNode* newChild, XalanNode* refChild); /** * Replaces the child node oldChild with newChild * in the list of children, and returns the oldChild node. * * If newChild is a DOM_DocumentFragment object, * oldChild is replaced by all of the DOM_DocumentFragment * children, which are inserted in the same order. * * If the newChild is already in the tree, it is first removed. * @param newChild The new node to put in the child list. * @param oldChild The node being replaced in the list. * @return The node replaced. */ virtual XalanNode* replaceChild( XalanNode* newChild, XalanNode* oldChild); /** * Removes the child node indicated by oldChild from the list * of children, and returns it. * * @param oldChild The node being removed. * @return The node removed. */ virtual XalanNode* removeChild(XalanNode* oldChild); /** * Adds the node newChild to the end of the list of children of * this node. * * If the newChild is already in the tree, it is * first removed. * @param newChild The node to add.If it is a DocumentFragment * object, the entire contents of the document fragment are moved into * the child list of this node * @return The node added. */ virtual XalanNode* appendChild(XalanNode* newChild); //@} /** @name Query functions. */ //@{ /** * This is a convenience method to allow easy determination of whether a * node has any children. * * @return true if the node has any children, * false if the node has no children. */ virtual bool hasChildNodes() const; //@} /** @name Set functions. */ //@{ /** * Sets the value of the node. * * Any node which can have a nodeValue (@see getNodeValue) will * also accept requests to set it to a string. The exact response to * this varies from node to node -- Attribute, for example, stores * its values in its children and has to replace them with a new Text * holding the replacement value. * * For most types of Node, value is null and attempting to set it * will throw DOMException(NO_MODIFICATION_ALLOWED_ERR). This will * also be thrown if the node is read-only. */ virtual void setNodeValue(const XalanDOMString& nodeValue); //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * Puts all DOM_Text * nodes in the full depth of the sub-tree underneath this DOM_Node, * including attribute nodes, into a "normal" form where only markup (e.g., * tags, comments, processing instructions, CDATA sections, and entity * references) separates DOM_Text * nodes, i.e., there are no adjacent DOM_Text * nodes. This can be used to ensure that the DOM view of a document is the * same as if it were saved and re-loaded, and is useful when operations * (such as XPointer lookups) that depend on a particular document tree * structure are to be used. *

    Note: In cases where the document contains DOM_CDATASections, * the normalize operation alone may not be sufficient, since XPointers do * not differentiate between DOM_Text * nodes and DOM_CDATASection nodes.

    */ virtual void normalize(); /** * Tests whether the DOM implementation implements a specific * feature and that feature is supported by this node. * @param feature The string of the feature to test. This is the same * name as what can be passed to the method hasFeature on * DOMImplementation. * @param version This is the version number of the feature to test. In * Level 2, version 1, this is the string "2.0". If the version is not * specified, supporting any version of the feature will cause the * method to return true. * @return Returns true if the specified feature is supported * on this node, false otherwise. */ virtual bool isSupported( const XalanDOMString& feature, const XalanDOMString& version) const; /** * Get the namespace URI of * this node, or null if it is unspecified. *

    * This is not a computed value that is the result of a namespace lookup * based on an examination of the namespace declarations in scope. It is * merely the namespace URI given at creation time. *

    * For nodes of any type other than ELEMENT_NODE and * ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, * such as createElement from the Document * interface, this is always null. */ virtual const XalanDOMString& getNamespaceURI() const; /** * Get the namespace prefix * of this node, or null if it is unspecified. */ virtual const XalanDOMString& getPrefix() const; /** * Returns the local part of the qualified name of this node. *

    * For nodes created with a DOM Level 1 method, such as * createElement from the DOM_Document interface, * it is null. */ virtual const XalanDOMString& getLocalName() const; /** * Set the namespace prefix of this node. *

    * Note that setting this attribute, when permitted, changes * the nodeName attribute, which holds the qualified * name, as well as the tagName and name * attributes of the DOM_Element and DOM_Attr * interfaces, when applicable. *

    * Note also that changing the prefix of an * attribute, that is known to have a default value, does not make a new * attribute with the default value and the original prefix appear, since the * namespaceURI and localName do not change. * * @param prefix The prefix of this node. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified prefix contains * an illegal character. *
    * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. *
    * NAMESPACE_ERR: Raised if the specified prefix is * malformed, if the specified prefix is "xml" and the * namespaceURI of this node is different from * "http://www.w3.org/XML/1998/namespace", if specified prefix is * "xmlns" and the namespaceURI is neither * null nor an empty string, or if the * localName is null. */ virtual void setPrefix(const XalanDOMString& prefix); virtual bool isIndexed() const; virtual IndexType getIndex() const; //@} // These interfaces are inherited from XalanElement... /** * The name of the element. * * For example, in: <elementExample * id="demo"> ... </elementExample> , tagName has * the value "elementExample". Note that this is * case-preserving in XML, as are all of the operations of the DOM. */ virtual const XalanDOMString& getTagName() const; /** * Retrieves an attribute value by name. * * @param name The name of the attribute to retrieve. * @return The DOM_Attr value as a string, or the empty string if * that attribute does not have a specified or default value. */ virtual const XalanDOMString& getAttribute(const XalanDOMString& name) const; /** * Retrieves an DOM_Attr node by name. * * @param name The name (nodeName) of the attribute to retrieve. * @return The DOM_Attr node with the specified name (nodeName) or * null if there is no such attribute. */ virtual XalanAttr* getAttributeNode(const XalanDOMString& name) const; /** * Returns a NodeList of all descendant elements with a given * tag name, in the order in which they would be encountered in a preorder * traversal of the DOM_Element tree. Caller is * responsible for deleting the XalanNodeList instance. * * @param name The name of the tag to match on. The special value "*" * matches all tags. * @return A list of matching DOM_Element nodes. */ virtual XalanNodeList* getElementsByTagName(const XalanDOMString& name) const; //@} /** @name Set functions. */ //@{ /** * Adds a new attribute. * * If an attribute with that name is already present * in the element, its value is changed to be that of the value parameter. * This value is a simple string, it is not parsed as it is being set. So * any markup (such as syntax to be recognized as an entity reference) is * treated as literal text, and needs to be appropriately escaped by the * implementation when it is written out. In order to assign an attribute * value that contains entity references, the user must create an * DOM_Attr node plus any Text and * EntityReference nodes, build the appropriate subtree, and * use setAttributeNode to assign it as the value of an * attribute. * @param name The name of the attribute to create or alter. * @param value Value to set in string form. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified name contains an * illegal character. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. */ virtual void setAttribute( const XalanDOMString& name, const XalanDOMString& value); /** * Adds a new attribute. * * If an attribute with that name (nodeName) is already present * in the element, it is replaced by the new one. * @param newAttr The DOM_Attr node to add to the attribute list. * @return If the newAttr attribute replaces an existing * attribute, the replaced * DOM_Attr node is returned, otherwise null is * returned. * @exception DOMException * WRONG_DOCUMENT_ERR: Raised if newAttr was created from a * different document than the one that created the element. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. *
    INUSE_ATTRIBUTE_ERR: Raised if newAttr is already an * attribute of another DOM_Element object. The DOM user must * explicitly clone DOM_Attr nodes to re-use them in other * elements. */ virtual XalanAttr* setAttributeNode(XalanAttr* newAttr); //@} /** @name Functions which modify the Element. */ //@{ /** * Removes the specified attribute node. * If the removed DOM_Attr * has a default value it is immediately replaced. The replacing attribute * has the same namespace URI and local name, as well as the original prefix, * when applicable. * * @param oldAttr The DOM_Attr node to remove from the attribute * list. * @return The DOM_Attr node that was removed. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. *
    NOT_FOUND_ERR: Raised if oldAttr is not an attribute * of the element. */ virtual XalanAttr* removeAttributeNode(XalanAttr* oldAttr); /** * Removes an attribute by name. * * If the removed attribute * is known to have a default value, an attribute immediately appears * containing the default value as well as the corresponding namespace URI, * local name, and prefix when applicable.
    To remove an attribute by local * name and namespace URI, use the removeAttributeNS method. * @param name The name of the attribute to remove. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. */ virtual void removeAttribute(const XalanDOMString& name); //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * Retrieves an attribute value by local name and namespace URI. * * @param namespaceURI The namespace URI of * the attribute to retrieve. * @param localName The local name of the * attribute to retrieve. * @return The DOM_Attr value as a string, or an empty string if * that attribute does not have a specified or default value. */ virtual const XalanDOMString& getAttributeNS( const XalanDOMString& namespaceURI, const XalanDOMString& localName) const; /** * Adds a new attribute. If the given * namespaceURI is null or an empty string and the * qualifiedName has a prefix that is "xml", the new attribute * is bound to the predefined namespace * "http://www.w3.org/XML/1998/namespace". * If an attribute with the same local name and namespace URI is already * present on the element, its prefix is changed to be the prefix part of the * qualifiedName, and its value is changed to be the * value parameter. * This value is a simple string, it is * not parsed as it is being set. So any markup (such as syntax to be * recognized as an entity reference) is treated as literal text, and * needs to be appropriately escaped by the implementation when it is * written out. In order to assign an attribute value that contains entity * references, the user must create a DOM_Attr node plus any * DOM_Text and DOM_EntityReference nodes, build the * appropriate subtree, and use setAttributeNodeNS or * setAttributeNode to assign it as the value of an * attribute. * @param namespaceURI The namespace URI of * the attribute to create or alter. * @param localName The local name of the * attribute to create or alter. * @param value The value to set in string form. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified qualified name contains an * illegal character. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. *
    * NAMESPACE_ERR: Raised if the qualifiedName is * malformed, if the qualifiedName has a prefix that is * "xml" and the namespaceURI is neither null * nor an empty string nor "http://www.w3.org/XML/1998/namespace", or * if the qualifiedName has a prefix that is "xmlns" but * the namespaceURI is neither null nor an * empty string, or if if the qualifiedName has a prefix * different from "xml" and "xmlns" and the namespaceURI * is null or an empty string. */ virtual void setAttributeNS( const XalanDOMString& namespaceURI, const XalanDOMString& qualifiedName, const XalanDOMString& value); /** * Removes an attribute by local name and namespace URI. If the * removed attribute has a default value it is immediately replaced. * The replacing attribute has the same namespace URI and local name, as well as * the original prefix.
    HTML-only DOM implementations do not need to * implement this method. * * @param namespaceURI The namespace URI of * the attribute to remove. * @param localName The local name of the * attribute to remove. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. */ virtual void removeAttributeNS( const XalanDOMString& namespaceURI, const XalanDOMString& localName); /** * Retrieves an DOM_Attr node by local name and namespace URI. * * @param namespaceURI The namespace URI of * the attribute to retrieve. * @param localName The local name of the * attribute to retrieve. * @return The DOM_Attr node with the specified attribute local * name and namespace URI or null if there is no such attribute. */ virtual XalanAttr* getAttributeNodeNS( const XalanDOMString& namespaceURI, const XalanDOMString& localName) const; /** * Adds a new attribute. * * If an attribute with that local name and namespace URI is already present * in the element, it is replaced by the new one. * @param newAttr The DOM_Attr node to add to the attribute list. * @return If the newAttr attribute replaces an existing * attribute with the same local name and namespace URI, * the replaced DOM_Attr node is * returned, otherwise null is returned. * @exception DOMException * WRONG_DOCUMENT_ERR: Raised if newAttr was created from a * different document than the one that created the element. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. *
    INUSE_ATTRIBUTE_ERR: Raised if newAttr is already an * attribute of another DOM_Element object. The DOM user must * explicitly clone DOM_Attr nodes to re-use them in other * elements. */ virtual XalanAttr* setAttributeNodeNS(XalanAttr* newAttr); /** * Returns a DOM_NodeList of all the DOM_Elements * with a given local name and namespace URI in the order in which they * would be encountered in a preorder traversal of the * DOM_Document tree, starting from this node. Caller is * responsible for deleting the XalanNodeList instance. * * @param namespaceURI The namespace URI of * the elements to match on. The special value "*" matches all * namespaces. * @param localName The local name of the * elements to match on. The special value "*" matches all local names. * @return A new DOM_NodeList object containing all the matched * Elements. */ virtual XalanNodeList* getElementsByTagNameNS( const XalanDOMString& namespaceURI, const XalanDOMString& localName) const; /** * Get the Xerces node this instance represent. * * @return The Xerces node */ DOM_ElementType getXercesNode() const { return m_xercesNode; } //@} private: // Not implemented... XercesElementBridge(const XercesElementBridge& theSource); XalanNode& operator=(const XalanNode& theSource); bool operator==(const XercesElementBridge& theRHS) const; // Data members... XercesDOM_ElementHack m_xercesNode; const XercesBridgeNavigator& m_navigator; XercesNodeListBridge m_children; XercesNamedNodeMapBridge m_attributes; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESELEMENTBRIDGE_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesDOM_NodeHack.cpp0000664000175000000640000001155411731656102026256 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) #include "XercesDOM_NodeHack.hpp" #if defined(XALAN_USE_XERCES_INTERNAL_CLASSES) #include #include #endif XALAN_CPP_NAMESPACE_BEGIN XercesDOM_NodeHack::XercesDOM_NodeHack(NodeImplType* theImpl) : DOM_Node(theImpl) { } XercesDOM_NodeHack::~XercesDOM_NodeHack() { } XercesDOM_AttrHack::XercesDOM_AttrHack(AttrImplType* theImpl) : ParentType(theImpl) { } XercesDOM_AttrHack::XercesDOM_AttrHack(const ParentType& theSource) : ParentType(theSource) { } XercesDOM_AttrHack::~XercesDOM_AttrHack() { } XercesDOM_ElementHack::XercesDOM_ElementHack(ElementImplType* theImpl) : ParentType(theImpl) { } XercesDOM_ElementHack::XercesDOM_ElementHack(const ParentType& theSource) : ParentType(theSource) { } XercesDOM_ElementHack::~XercesDOM_ElementHack() { } const DOMStringType XercesDOM_ElementHack::getNodeNameImpl() const { #if defined(XALAN_USE_XERCES_INTERNAL_CLASSES) return getImpl()->getNodeName(); #else return getNodeName(); #endif } const DOMStringType XercesDOM_ElementHack::getNodeValueImpl() const { #if defined(XALAN_USE_XERCES_INTERNAL_CLASSES) return getImpl()->getNodeValue(); #else return getNodeValue(); #endif } const DOMStringType XercesDOM_ElementHack:: getNamespaceURIImpl() const { #if defined(XALAN_USE_XERCES_INTERNAL_CLASSES) return getImpl()->getNamespaceURI(); #else return getNamespaceURI(); #endif } const DOMStringType XercesDOM_ElementHack::getPrefixImpl() const { #if defined(XALAN_USE_XERCES_INTERNAL_CLASSES) return getImpl()->getPrefix(); #else return getPrefix(); #endif } const DOMStringType XercesDOM_ElementHack::getLocalNameImpl() const { #if defined(XALAN_USE_XERCES_INTERNAL_CLASSES) return getImpl()->getLocalName(); #else return getLocalName(); #endif } const DOMStringType XercesDOM_ElementHack::getTagNameImpl() const { #if defined(XALAN_USE_XERCES_INTERNAL_CLASSES) return getImpl()->getTagName(); #else return getTagName(); #endif } const DOMStringType XercesDOM_ElementHack::getAttributeImpl(const DOMStringType& name) const { #if defined(XALAN_USE_XERCES_INTERNAL_CLASSES) return getImpl()->getAttribute(name); #else return getAttribute(name); #endif } const DOMStringType XercesDOM_ElementHack::getAttributeNSImpl( const DOMStringType& namespaceURI, const DOMStringType& localName) const { #if defined(XALAN_USE_XERCES_INTERNAL_CLASSES) return getImpl()->getAttributeNS(namespaceURI, localName); #else return getAttributeNS(namespaceURI, localName); #endif } XercesDOM_TextHack::XercesDOM_TextHack(TextImplType* theImpl) : ParentType(theImpl) { } XercesDOM_TextHack::XercesDOM_TextHack(const ParentType& theSource) : ParentType(theSource) { } XercesDOM_TextHack::~XercesDOM_TextHack() { } const DOMStringType XercesDOM_TextHack::getNodeNameImpl() const { #if defined(XALAN_USE_XERCES_INTERNAL_CLASSES) return getImpl()->getNodeName(); #else return getNodeName(); #endif } const DOMStringType XercesDOM_TextHack::getNodeValueImpl() const { #if defined(XALAN_USE_XERCES_INTERNAL_CLASSES) return getImpl()->getNodeValue(); #else return getNodeValue(); #endif } const DOMStringType XercesDOM_TextHack::getNamespaceURIImpl() const { #if defined(XALAN_USE_XERCES_INTERNAL_CLASSES) return getImpl()->getNamespaceURI(); #else return getNamespaceURI(); #endif } const DOMStringType XercesDOM_TextHack::getPrefixImpl() const { #if defined(XALAN_USE_XERCES_INTERNAL_CLASSES) return getImpl()->getPrefix(); #else return getPrefix(); #endif } const DOMStringType XercesDOM_TextHack::getLocalNameImpl() const { #if defined(XALAN_USE_XERCES_INTERNAL_CLASSES) return getImpl()->getLocalName(); #else return getLocalName(); #endif } const DOMStringType XercesDOM_TextHack::getDataImpl() const { #if defined(XALAN_USE_XERCES_INTERNAL_CLASSES) return getImpl()->getData(); #else return getData(); #endif } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesNotationBridge.hpp0000664000175000000640000003610611731656102027020 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESNOTATIONBRIDGE_HEADER_GUARD_1357924680) #define XERCESNOTATIONBRIDGE_HEADER_GUARD_1357924680 #include #if XERCES_VERSION_MAJOR >= 2 #include #else #include #endif #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesBridgeNavigator; /** * This class is deprecated. * * @deprecated This class is part of the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesNotationBridge : public XalanNotation { public: XercesNotationBridge( const DOM_NotationType& theXercesDOMNotation, const XercesBridgeNavigator& theNavigator); virtual ~XercesNotationBridge(); // These interfaces are inherited from XalanNode... virtual const XalanDOMString& getNodeName() const; /** * Gets the value of this node, depending on its type. */ virtual const XalanDOMString& getNodeValue() const; /** * An enum value representing the type of the underlying object. */ virtual NodeType getNodeType() const; /** * Gets the parent of this node. * * All nodes, except Document, * DocumentFragment, and Attr may have a parent. * However, if a node has just been created and not yet added to the tree, * or if it has been removed from the tree, a null DOM_Node * is returned. */ virtual XalanNode* getParentNode() const; /** * Gets a NodeList that contains all children of this node. * * If there * are no children, this is a NodeList containing no nodes. * The content of the returned NodeList is "live" in the sense * that, for instance, changes to the children of the node object that * it was created from are immediately reflected in the nodes returned by * the NodeList accessors; it is not a static snapshot of the * content of the node. This is true for every NodeList, * including the ones returned by the getElementsByTagName * method. */ virtual const XalanNodeList* getChildNodes() const; /** * Gets the first child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getFirstChild() const; /** * Gets the last child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getLastChild() const; /** * Gets the node immediately preceding this node. * * If there is no such node, this returns null. */ virtual XalanNode* getPreviousSibling() const; /** * Gets the node immediately following this node. * * If there is no such node, this returns null. */ virtual XalanNode* getNextSibling() const; /** * Gets a NamedNodeMap containing the attributes of this node (if it * is an Element) or null otherwise. */ virtual const XalanNamedNodeMap* getAttributes() const; /** * Gets the DOM_Document object associated with this node. * * This is also * the DOM_Document object used to create new nodes. When this * node is a DOM_Document or a DOM_DocumentType * which is not used with any DOM_Document yet, this is * null. */ virtual XalanDocument* getOwnerDocument() const; //@} /** @name Cloning function. */ //@{ /** * Returns a duplicate of this node. * * This function serves as a generic copy constructor for nodes. * * The duplicate node has no parent ( * parentNode returns null.). *
    Cloning an Element copies all attributes and their * values, including those generated by the XML processor to represent * defaulted attributes, but this method does not copy any text it contains * unless it is a deep clone, since the text is contained in a child * Text node. Cloning any other type of node simply returns a * copy of this node. * @param deep If true, recursively clone the subtree under the * specified node; if false, clone only the node itself (and * its attributes, if it is an Element). * @return The duplicate node. */ #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual XalanNode* #else virtual XercesNotationBridge* #endif cloneNode(bool deep) const; //@} /** @name Functions to modify the DOM Node. */ //@{ /** * Inserts the node newChild before the existing child node * refChild. * * If refChild is null, * insert newChild at the end of the list of children. *
    If newChild is a DocumentFragment object, * all of its children are inserted, in the same order, before * refChild. If the newChild is already in the * tree, it is first removed. Note that a DOM_Node that * has never been assigned to refer to an actual node is == null. * @param newChild The node to insert. * @param refChild The reference node, i.e., the node before which the new * node must be inserted. * @return The node being inserted. */ virtual XalanNode* insertBefore( XalanNode* newChild, XalanNode* refChild); /** * Replaces the child node oldChild with newChild * in the list of children, and returns the oldChild node. * * If newChild is a DOM_DocumentFragment object, * oldChild is replaced by all of the DOM_DocumentFragment * children, which are inserted in the same order. * * If the newChild is already in the tree, it is first removed. * @param newChild The new node to put in the child list. * @param oldChild The node being replaced in the list. * @return The node replaced. */ virtual XalanNode* replaceChild( XalanNode* newChild, XalanNode* oldChild); /** * Removes the child node indicated by oldChild from the list * of children, and returns it. * * @param oldChild The node being removed. * @return The node removed. */ virtual XalanNode* removeChild(XalanNode* oldChild); /** * Adds the node newChild to the end of the list of children of * this node. * * If the newChild is already in the tree, it is * first removed. * @param newChild The node to add.If it is a DocumentFragment * object, the entire contents of the document fragment are moved into * the child list of this node * @return The node added. */ virtual XalanNode* appendChild(XalanNode* newChild); //@} /** @name Query functions. */ //@{ /** * This is a convenience method to allow easy determination of whether a * node has any children. * * @return true if the node has any children, * false if the node has no children. */ virtual bool hasChildNodes() const; //@} /** @name Set functions. */ //@{ /** * Sets the value of the node. * * Any node which can have a nodeValue (@see getNodeValue) will * also accept requests to set it to a string. The exact response to * this varies from node to node -- Attribute, for example, stores * its values in its children and has to replace them with a new Text * holding the replacement value. * * For most types of Node, value is null and attempting to set it * will throw DOMException(NO_MODIFICATION_ALLOWED_ERR). This will * also be thrown if the node is read-only. */ virtual void setNodeValue(const XalanDOMString& nodeValue); //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * Puts all DOM_Text * nodes in the full depth of the sub-tree underneath this DOM_Node, * including attribute nodes, into a "normal" form where only markup (e.g., * tags, comments, processing instructions, CDATA sections, and entity * references) separates DOM_Text * nodes, i.e., there are no adjacent DOM_Text * nodes. This can be used to ensure that the DOM view of a document is the * same as if it were saved and re-loaded, and is useful when operations * (such as XPointer lookups) that depend on a particular document tree * structure are to be used. *

    Note: In cases where the document contains DOM_CDATASections, * the normalize operation alone may not be sufficient, since XPointers do * not differentiate between DOM_Text * nodes and DOM_CDATASection nodes.

    */ virtual void normalize(); /** * Tests whether the DOM implementation implements a specific * feature and that feature is supported by this node. * @param feature The string of the feature to test. This is the same * name as what can be passed to the method hasFeature on * DOMImplementation. * @param version This is the version number of the feature to test. In * Level 2, version 1, this is the string "2.0". If the version is not * specified, supporting any version of the feature will cause the * method to return true. * @return Returns true if the specified feature is supported * on this node, false otherwise. */ virtual bool isSupported( const XalanDOMString& feature, const XalanDOMString& version) const; /** * Get the namespace URI of * this node, or null if it is unspecified. *

    * This is not a computed value that is the result of a namespace lookup * based on an examination of the namespace declarations in scope. It is * merely the namespace URI given at creation time. *

    * For nodes of any type other than ELEMENT_NODE and * ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, * such as createElement from the Document * interface, this is always null. */ virtual const XalanDOMString& getNamespaceURI() const; /** * Get the namespace prefix * of this node, or null if it is unspecified. */ virtual const XalanDOMString& getPrefix() const; /** * Returns the local part of the qualified name of this node. *

    * For nodes created with a DOM Level 1 method, such as * createElement from the DOM_Document interface, * it is null. */ virtual const XalanDOMString& getLocalName() const; /** * Set the namespace prefix of this node. *

    * Note that setting this attribute, when permitted, changes * the nodeName attribute, which holds the qualified * name, as well as the tagName and name * attributes of the DOM_Element and DOM_Attr * interfaces, when applicable. *

    * Note also that changing the prefix of an * attribute, that is known to have a default value, does not make a new * attribute with the default value and the original prefix appear, since the * namespaceURI and localName do not change. * * @param prefix The prefix of this node. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified prefix contains * an illegal character. *
    * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. *
    * NAMESPACE_ERR: Raised if the specified prefix is * malformed, if the specified prefix is "xml" and the * namespaceURI of this node is different from * "http://www.w3.org/XML/1998/namespace", if specified prefix is * "xmlns" and the namespaceURI is neither * null nor an empty string, or if the * localName is null. */ virtual void setPrefix(const XalanDOMString& prefix); virtual bool isIndexed() const; virtual IndexType getIndex() const; //@} // These interfaces are inherited from XalanNotation... /** * Get the public identifier of this notation. * * If the public identifier was not * specified, this is null. * @return Returns the public identifier of the notation */ virtual const XalanDOMString& getPublicId() const; /** * Get the system identifier of this notation. * * If the system identifier was not * specified, this is null. * @return Returns the system identifier of the notation */ virtual const XalanDOMString& getSystemId() const; /** * Get the Xerces node this instance represent. * * @return The Xerces node */ DOM_NotationType getXercesNode() const { return m_xercesNode; } private: // Not implemented... XercesNotationBridge(const XercesNotationBridge& theSource); XercesNotationBridge& operator=(const XercesNotationBridge& theSource); bool operator==(const XercesNotationBridge& theRHS) const; // Data members... DOM_NotationType m_xercesNode; const XercesBridgeNavigator& m_navigator; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESNOTATIONBRIDGE_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentFragmentBridge.cpp0000664000175000000640000001271411731656102030461 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) #include "XercesDocumentFragmentBridge.hpp" #include #include #include "XercesBridgeHelper.hpp" #include "XercesDocumentBridge.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesDocumentFragmentBridge::XercesDocumentFragmentBridge( const DOM_DocumentFragmentType& theXercesDOMDocumentFragment, const XercesBridgeNavigator& theNavigator) : XalanDocumentFragment(), m_xercesNode(theXercesDOMDocumentFragment), m_children(theXercesDOMDocumentFragment.getChildNodes(), theNavigator), m_navigator(theNavigator) { } XercesDocumentFragmentBridge::~XercesDocumentFragmentBridge() { } const XalanDOMString& XercesDocumentFragmentBridge::getNodeName() const { return m_navigator.getPooledString(m_xercesNode.getNodeName()); } const XalanDOMString& XercesDocumentFragmentBridge::getNodeValue() const { return m_navigator.getPooledString(m_xercesNode.getNodeValue()); } XercesDocumentFragmentBridge::NodeType XercesDocumentFragmentBridge::getNodeType() const { return DOCUMENT_FRAGMENT_NODE; } XalanNode* XercesDocumentFragmentBridge::getParentNode() const { return 0; } const XalanNodeList* XercesDocumentFragmentBridge::getChildNodes() const { return &m_children; } XalanNode* XercesDocumentFragmentBridge::getFirstChild() const { return m_navigator.getFirstChild(m_xercesNode); } XalanNode* XercesDocumentFragmentBridge::getLastChild() const { return m_navigator.getLastChild(m_xercesNode); } XalanNode* XercesDocumentFragmentBridge::getPreviousSibling() const { return 0; } XalanNode* XercesDocumentFragmentBridge::getNextSibling() const { return 0; } const XalanNamedNodeMap* XercesDocumentFragmentBridge::getAttributes() const { return 0; } XalanDocument* XercesDocumentFragmentBridge::getOwnerDocument() const { return m_navigator.getOwnerDocument(); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) XalanNode* #else XercesDocumentFragmentBridge* #endif XercesDocumentFragmentBridge::cloneNode(bool deep) const { #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) return m_navigator.cloneNode(this, m_xercesNode, deep); #else XercesDocumentFragmentBridge* const theBridge = static_cast(m_navigator.cloneNode(this, m_xercesNode, deep)); return theBridge; #endif } XalanNode* XercesDocumentFragmentBridge::insertBefore( XalanNode* newChild, XalanNode* refChild) { return m_navigator.insertBefore(m_xercesNode, newChild, refChild); } XalanNode* XercesDocumentFragmentBridge::replaceChild( XalanNode* newChild, XalanNode* oldChild) { return m_navigator.replaceChild(m_xercesNode, newChild, oldChild); } XalanNode* XercesDocumentFragmentBridge::removeChild(XalanNode* oldChild) { return m_navigator.removeChild(m_xercesNode, oldChild); } XalanNode* XercesDocumentFragmentBridge::appendChild(XalanNode* newChild) { return m_navigator.appendChild(m_xercesNode, newChild); } bool XercesDocumentFragmentBridge::hasChildNodes() const { return m_xercesNode.hasChildNodes(); } void XercesDocumentFragmentBridge::setNodeValue(const XalanDOMString& nodeValue) { XercesBridgeHelper::setNodeValue(m_xercesNode, nodeValue); } void XercesDocumentFragmentBridge::normalize() { XercesBridgeHelper::normalize(m_xercesNode); } bool XercesDocumentFragmentBridge::isSupported( const XalanDOMString& feature, const XalanDOMString& version) const { return m_xercesNode.isSupported( XercesBridgeHelper::XalanDOMStringToXercesDOMString(feature), XercesBridgeHelper::XalanDOMStringToXercesDOMString(version)); } const XalanDOMString& XercesDocumentFragmentBridge::getNamespaceURI() const { return m_navigator.getPooledString(m_xercesNode.getNamespaceURI()); } const XalanDOMString& XercesDocumentFragmentBridge::getPrefix() const { return m_navigator.getPooledString(m_xercesNode.getPrefix()); } const XalanDOMString& XercesDocumentFragmentBridge::getLocalName() const { return m_navigator.getPooledString(m_xercesNode.getLocalName()); } void XercesDocumentFragmentBridge::setPrefix(const XalanDOMString& prefix) { XercesBridgeHelper::setPrefix(m_xercesNode, prefix); } bool XercesDocumentFragmentBridge::isIndexed() const { // $$$ ToDo: Are document fragments ever indexed? // I don't think so... return false; } XercesDocumentFragmentBridge::IndexType XercesDocumentFragmentBridge::getIndex() const { return 0; } XALAN_CPP_NAMESPACE_END #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesToXalanNodeMap.hpp0000664000175000000640000000705411731656102026722 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESTOXALANNODEMAP_HEADER_GUARD_1357924680) #define XERCESTOXALANNODEMAP_HEADER_GUARD_1357924680 #include #include #if XERCES_VERSION_MAJOR >= 2 #include #else #include #endif #include XALAN_DECLARE_XERCES_CLASS(NodeImpl) XALAN_CPP_NAMESPACE_BEGIN class XalanNode; /** * This class is deprecated. * * @deprecated This class works with the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesToXalanNodeMap { public: typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Node DOM_NodeType; typedef XERCES_CPP_NAMESPACE_QUALIFIER NodeImpl NodeImplType; #if defined(XALAN_NO_STD_NAMESPACE) typedef map > XalanNodeMapType; typedef map > XercesNodeMapType; #else typedef std::map XalanNodeMapType; typedef std::map XercesNodeMapType; #endif XercesToXalanNodeMap(); ~XercesToXalanNodeMap(); void addAssociation( const DOM_NodeType& theXercesNode, XalanNode* theXalanNode); void clear(); XalanNode* getNode(const DOM_NodeType& theXercesNode) const { return getNode(XercesDOM_NodeHack::getImpl(theXercesNode)); } XalanNode* getNode(NodeImplType* theXercesNodeImpl) const { const XercesNodeMapType::const_iterator i = m_xercesMap.find(theXercesNodeImpl); if (i == m_xercesMap.end()) { return 0; } else { return (*i).second; } } DOM_NodeType getNode(const XalanNode* theXalanNode) const { return XercesDOM_NodeHack(getNodeImpl(theXalanNode)); } NodeImplType* getNodeImpl(const XalanNode* theXalanNode) const; class NameMapEqualsFunctor { public: NameMapEqualsFunctor(const XalanNode* theXalanNode) : m_value(theXalanNode) { } bool operator()(const XercesNodeMapType::value_type& thePair) const { return m_value == thePair.second; } private: const XalanNode* m_value; }; NodeImplType* getNodeImpl(const DOM_NodeType& theXercesNode) const { return XercesDOM_NodeHack::getImpl(theXercesNode); } private: XalanNodeMapType m_xalanMap; XercesNodeMapType m_xercesMap; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESTOXALANNODEMAP_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/Deprecated/XercesDOM_NodeHack.hpp0000664000175000000640000001116211731656102026256 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESDOM_NODEHACK_HEADER_GUARD_1357924680) #define XERCESDOM_NODEHACK_HEADER_GUARD_1357924680 #include #if XERCES_VERSION_MAJOR >= 2 #include #include #include #include #else #include #include #include #include #endif #include XALAN_CPP_NAMESPACE_BEGIN /** * This class is deprecated. * * An evil class to hack the Xerces smart-pointer class. I'm * only doing this because I have to... * * @deprecated This class is part of the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesDOM_NodeHack : public XERCES_CPP_NAMESPACE_QUALIFIER DOM_Node { public: typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Node ParentType; XercesDOM_NodeHack(NodeImplType* theImpl = 0); ~XercesDOM_NodeHack(); NodeImplType* getImpl() const { return fImpl; } static NodeImplType* getImpl(const ParentType& theNode) { return static_cast(theNode).getImpl(); } }; class XALAN_XERCESPARSERLIAISON_EXPORT XercesDOM_AttrHack : public XERCES_CPP_NAMESPACE_QUALIFIER DOM_Attr { public: typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Attr ParentType; XercesDOM_AttrHack(AttrImplType* theImpl = 0); XercesDOM_AttrHack(const ParentType& theSource); ~XercesDOM_AttrHack(); }; class XALAN_XERCESPARSERLIAISON_EXPORT XercesDOM_ElementHack : public XERCES_CPP_NAMESPACE_QUALIFIER DOM_Element { public: typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Element ParentType; XercesDOM_ElementHack(ElementImplType* theImpl = 0); XercesDOM_ElementHack(const ParentType& theSource); ~XercesDOM_ElementHack(); const DOMStringType getNodeNameImpl() const; const DOMStringType getNodeValueImpl() const; const DOMStringType getNamespaceURIImpl() const; const DOMStringType getPrefixImpl() const; const DOMStringType getLocalNameImpl() const; const DOMStringType getTagNameImpl() const; const DOMStringType getAttributeImpl(const DOMStringType& name) const; const DOMStringType getAttributeNSImpl( const DOMStringType& namespaceURI, const DOMStringType& localName) const; ElementImplType* getImpl() const { return reinterpret_cast(fImpl); } static ElementImplType* getImpl(const ParentType& theNode) { return static_cast(theNode).getImpl(); } }; class XALAN_XERCESPARSERLIAISON_EXPORT XercesDOM_TextHack : public XERCES_CPP_NAMESPACE_QUALIFIER DOM_Text { public: typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Text ParentType; XercesDOM_TextHack(TextImplType* theImpl = 0); XercesDOM_TextHack(const ParentType& theSource); ~XercesDOM_TextHack(); const DOMStringType getNodeNameImpl() const; const DOMStringType getNodeValueImpl() const; const DOMStringType getNamespaceURIImpl() const; const DOMStringType getPrefixImpl() const; const DOMStringType getLocalNameImpl() const; const DOMStringType getDataImpl() const; TextImplType* getImpl() const { return reinterpret_cast(fImpl); } static TextImplType* getImpl(const ParentType& theNode) { return static_cast(theNode).getImpl(); } }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESDOM_NODEHACK_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesTextWrapper.cpp0000664000175000000640000000661311731656102024330 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesTextWrapper.hpp" #include #include #include #include "XercesWrapperHelper.hpp" #include "XercesWrapperNavigator.hpp" #include "XercesDOMWrapperException.hpp" #include "XercesDocumentWrapper.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesTextWrapper::XercesTextWrapper( const DOMTextType* theXercesText, const XercesWrapperNavigator& theNavigator) : XalanText(), m_xercesNode(theXercesText), m_navigator(theNavigator) { assert(m_xercesNode != 0); } XercesTextWrapper::~XercesTextWrapper() { } const XalanDOMString& XercesTextWrapper::getNodeName() const { return m_navigator.getPooledString(m_xercesNode->getNodeName()); } const XalanDOMString& XercesTextWrapper::getNodeValue() const { return m_navigator.getPooledString(m_xercesNode->getNodeValue()); } XercesTextWrapper::NodeType XercesTextWrapper::getNodeType() const { return TEXT_NODE; } XalanNode* XercesTextWrapper::getParentNode() const { return m_navigator.getParentNode(m_xercesNode); } const XalanNodeList* XercesTextWrapper::getChildNodes() const { return 0; } XalanNode* XercesTextWrapper::getFirstChild() const { return 0; } XalanNode* XercesTextWrapper::getLastChild() const { return 0; } XalanNode* XercesTextWrapper::getPreviousSibling() const { return m_navigator.getPreviousSibling(m_xercesNode); } XalanNode* XercesTextWrapper::getNextSibling() const { return m_navigator.getNextSibling(m_xercesNode); } const XalanNamedNodeMap* XercesTextWrapper::getAttributes() const { return 0; } XalanDocument* XercesTextWrapper::getOwnerDocument() const { return m_navigator.getOwnerDocument(); } const XalanDOMString& XercesTextWrapper::getNamespaceURI() const { return m_navigator.getPooledString(m_xercesNode->getNamespaceURI()); } const XalanDOMString& XercesTextWrapper::getPrefix() const { return m_navigator.getPooledString(m_xercesNode->getPrefix()); } const XalanDOMString& XercesTextWrapper::getLocalName() const { return m_navigator.getPooledString(m_xercesNode->getLocalName()); } bool XercesTextWrapper::isIndexed() const { return m_navigator.getOwnerDocument()->isIndexed(); } XercesTextWrapper::IndexType XercesTextWrapper::getIndex() const { return m_navigator.getIndex(); } const XalanDOMString& XercesTextWrapper::getData() const { return m_navigator.getPooledString(m_xercesNode->getData()); } bool XercesTextWrapper::isWhitespace() const { return isXMLWhitespace(getData()); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesWrapperHelper.hpp0000664000175000000640000000344711731656102024632 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESWRAPPERHELPER_HEADER_GUARD_1357924680) #define XERCESWRAPPERHELPER_HEADER_GUARD_1357924680 #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XERCESPARSERLIAISON_EXPORT XercesWrapperHelper { public: typedef XalanSize_t XercesStringLengthType; static const XMLCh* XalanDOMStringToXercesDOMString(const XalanDOMString& theString) { assert(XercesStringLengthType(theString.length()) == theString.length()); return theString.c_str(); } private: // Not implemented... XercesWrapperHelper(); XercesWrapperHelper(const XercesWrapperHelper&); XercesWrapperHelper& operator=(const XercesWrapperHelper&); }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESWRAPPERHELPER_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesDocumentTypeWrapper.hpp0000664000175000000640000000763611731656102026037 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESDOCUMENTTYPEWRAPPER_HEADER_GUARD_1357924680) #define XERCESDOCUMENTTYPEWRAPPER_HEADER_GUARD_1357924680 #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesWrapperNavigator; class XercesDocumentWrapper; class XALAN_XERCESPARSERLIAISON_EXPORT XercesDocumentTypeWrapper : public XalanDocumentType { public: XercesDocumentTypeWrapper( const DOMDocumentType_Type* theXercesDOMDocumentType, const XercesWrapperNavigator& theNavigator); static XercesDocumentTypeWrapper* create( MemoryManager& theManager, const DOMDocumentType_Type* theXercesDOMDocumentType, const XercesWrapperNavigator& theNavigator); virtual ~XercesDocumentTypeWrapper(); // These interfaces are inherited from XalanDocumentType... virtual const XalanDOMString& getNodeName() const; virtual const XalanDOMString& getNodeValue() const; virtual NodeType getNodeType() const; virtual XalanNode* getParentNode() const; virtual const XalanNodeList* getChildNodes() const; virtual XalanNode* getFirstChild() const; virtual XalanNode* getLastChild() const; virtual XalanNode* getPreviousSibling() const; virtual XalanNode* getNextSibling() const; virtual const XalanNamedNodeMap* getAttributes() const; virtual XalanDocument* getOwnerDocument() const; virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; virtual bool isIndexed() const; virtual IndexType getIndex() const; virtual const XalanDOMString& getName() const; virtual const XalanNamedNodeMap* getEntities() const; virtual const XalanNamedNodeMap* getNotations() const; virtual const XalanDOMString& getPublicId() const; virtual const XalanDOMString& getSystemId() const; virtual const XalanDOMString& getInternalSubset() const; /** * Get the Xerces node this instance represent. * * @return The Xerces node */ const DOMDocumentType_Type* getXercesNode() const { return m_xercesNode; } //@} private: // Not implemented... XercesDocumentTypeWrapper(const XercesDocumentTypeWrapper& theSource); XercesDocumentTypeWrapper& operator=(const XercesDocumentTypeWrapper& theSource); bool operator==(const XercesDocumentTypeWrapper& theRHS) const; // Data members... const DOMDocumentType_Type* const m_xercesNode; XercesNamedNodeMapWrapper m_entities; XercesNamedNodeMapWrapper m_notations; const XercesWrapperNavigator& m_navigator; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESDOCUMENTTYPEWRAPPER_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesDOMImplementationWrapper.cpp0000664000175000000640000000560311731656102026727 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesDOMImplementationWrapper.hpp" #include #include #include "XercesDOMException.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesDOMImplementationWrapper::XercesDOMImplementationWrapper(DOMImplementationType* theXercesDOMImplementation) : XalanDOMImplementation(), m_xercesNode(theXercesDOMImplementation) { assert(theXercesDOMImplementation != 0); } XercesDOMImplementationWrapper::~XercesDOMImplementationWrapper() { } XercesDOMImplementationWrapper::XercesDOMImplementationWrapper(const XercesDOMImplementationWrapper& theSource) : XalanDOMImplementation(theSource), m_xercesNode(theSource.m_xercesNode) { } XercesDOMImplementationWrapper* XercesDOMImplementationWrapper::create( MemoryManager& theManager, DOMImplementationType* theXercesDOMImplementation) { typedef XercesDOMImplementationWrapper ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType(theXercesDOMImplementation); theGuard.release(); return theResult; } bool XercesDOMImplementationWrapper::hasFeature( const XalanDOMString& feature, const XalanDOMString& version) { return m_xercesNode->hasFeature(feature.c_str(), version.c_str()); } XalanDocumentType* XercesDOMImplementationWrapper::createDocumentType( const XalanDOMString& /* qualifiedName */, const XalanDOMString& /* publicId */, const XalanDOMString& /* systemId */) { throw XercesDOMException(XercesDOMException::NO_MODIFICATION_ALLOWED_ERR); return 0; } XalanDocument* XercesDOMImplementationWrapper::createDocument( const XalanDOMString& /* namespaceURI */, const XalanDOMString& /* qualifiedName */, const XalanDocumentType& /* doctype */) { throw XercesDOMException(XercesDOMException::NO_MODIFICATION_ALLOWED_ERR); return 0; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesTextWrapperAllocator.cpp0000664000175000000640000000315511731656102026167 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XercesTextWrapperAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesTextWrapperAllocator::XercesTextWrapperAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XercesTextWrapperAllocator::~XercesTextWrapperAllocator() { } XercesTextWrapperAllocator::ObjectType* XercesTextWrapperAllocator::create( const DOMTextType* theXercesText, const XercesWrapperNavigator& theNavigator) { ObjectType* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); new(theBlock) ObjectType(theXercesText, theNavigator); m_allocator.commitAllocation(theBlock); return theBlock; } void XercesTextWrapperAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesNodeListWrapper.hpp0000664000175000000640000000423311731656102025126 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESNODELISTWRAPPER_HEADER_GUARD_1357924680) #define XERCESNODELISTWRAPPER_HEADER_GUARD_1357924680 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesWrapperNavigator; class XALAN_XERCESPARSERLIAISON_EXPORT XercesNodeListWrapper : public XalanNodeList { public: XercesNodeListWrapper( const DOMNodeListType* theXercesNodeList, const XercesWrapperNavigator& theNavigator); XercesNodeListWrapper(const XercesNodeListWrapper& theSource); virtual ~XercesNodeListWrapper(); bool operator==(const XercesNodeListWrapper& theRHS) const { return m_xercesNodeList == theRHS.m_xercesNodeList ? true : false; } // These interfaces are inherited from XalanNodeList... virtual XalanNode* item(XalanSize_t index) const; virtual XalanSize_t getLength() const; private: // Not implemented... XercesNodeListWrapper& operator=(const XercesNodeListWrapper& theRHS); // Data members... const DOMNodeListType* m_xercesNodeList; const XercesWrapperNavigator& m_navigator; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESNODELISTWRAPPER_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesTextWrapper.hpp0000664000175000000640000000605511731656102024335 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESTEXTWRAPPER_HEADER_GUARD_1357924680) #define XERCESTEXTWRAPPER_HEADER_GUARD_1357924680 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesWrapperNavigator; class XALAN_XERCESPARSERLIAISON_EXPORT XercesTextWrapper : public XalanText { public: XercesTextWrapper( const DOMTextType* theXercesText, const XercesWrapperNavigator& theNavigator); virtual ~XercesTextWrapper(); // These interfaces are inherited from XalanText virtual const XalanDOMString& getNodeName() const; virtual const XalanDOMString& getNodeValue() const; virtual NodeType getNodeType() const; virtual XalanNode* getParentNode() const; virtual const XalanNodeList* getChildNodes() const; virtual XalanNode* getFirstChild() const; virtual XalanNode* getLastChild() const; virtual XalanNode* getPreviousSibling() const; virtual XalanNode* getNextSibling() const; virtual const XalanNamedNodeMap* getAttributes() const; virtual XalanDocument* getOwnerDocument() const; virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; virtual bool isIndexed() const; virtual IndexType getIndex() const; virtual const XalanDOMString& getData() const; virtual bool isWhitespace() const; /** * Get the Xerces node this instance represent. * * @return The Xerces node */ const DOMTextType* getXercesNode() const { return m_xercesNode; } private: // Not implemented... XercesTextWrapper(const XercesTextWrapper& theSource); XercesTextWrapper& operator=(const XercesTextWrapper& theSource); bool operator==(const XercesTextWrapper& theRHS) const; // Data members... const DOMTextType* const m_xercesNode; const XercesWrapperNavigator& m_navigator; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESTEXTWRAPPER_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesElementWrapperAllocator.cpp0000664000175000000640000000321111731656102026625 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XercesElementWrapperAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesElementWrapperAllocator::XercesElementWrapperAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XercesElementWrapperAllocator::~XercesElementWrapperAllocator() { } XercesElementWrapperAllocator::ObjectType* XercesElementWrapperAllocator::create( const DOMElementType* theXercesElement, const XercesWrapperNavigator& theNavigator) { ObjectType* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); new(theBlock) ObjectType(theXercesElement, theNavigator); m_allocator.commitAllocation(theBlock); return theBlock; } void XercesElementWrapperAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesDOMImplementationWrapper.hpp0000664000175000000640000001211611731656102026731 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESDOMIMPLEMENTATIONWRAPPER_HEADER_GUARD_1357924680) #define XERCESDOMIMPLEMENTATIONWRAPPER_HEADER_GUARD_1357924680 #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesWrapperNavigator; class XALAN_XERCESPARSERLIAISON_EXPORT XercesDOMImplementationWrapper : public XalanDOMImplementation { public: XercesDOMImplementationWrapper(DOMImplementationType* theXercesDOMImplementation); static XercesDOMImplementationWrapper* create(MemoryManager& theManager, DOMImplementationType* theXercesDOMImplementation); virtual ~XercesDOMImplementationWrapper(); /** @name Getter functions */ //@{ /** * Test if the DOM implementation implements a specific feature. * * @param feature The string of the feature to test (case-insensitive). The legal * values are defined throughout this specification. The string must be * an XML name (see also Compliance). * @param version This is the version number of the package name to test. * In Level 1, this is the string "1.0". If the version is not specified, * supporting any version of the feature will cause the method to return * true. * @return true if the feature is implemented in the specified * version, false otherwise. */ virtual bool hasFeature( const XalanDOMString& feature, const XalanDOMString& version); //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * Creates an empty DOMDocumentType node. * Entity declarations and notations are not made available. * Entity reference expansions and default attribute additions * do not occur. It is expected that a future version of the DOM * will provide a way for populating a DOMDocumentType. * @param qualifiedName The qualified name * of the document type to be created. * @param publicId The external subset public identifier. * @param systemId The external subset system identifier. * @return A new DocumentType node with * Node.ownerDocument set to null. */ virtual XalanDocumentType* createDocumentType( const XalanDOMString& qualifiedName, const XalanDOMString& publicId, const XalanDOMString& systemId); /** * Creates an XML DOMDocument object of the specified type * with its document element. * @param namespaceURI The namespace URI of * the document element to create, or null. * @param qualifiedName The qualified name * of the document element to be created. * @param doctype The type of document to be created or null. *

    When doctype is not null, its * Node.ownerDocument attribute is set to the document * being created. * @return A new Document object. * @exception DOMException * WRONG_DOCUMENT_ERR: Raised if doctype has already * been used with a different document. */ virtual XalanDocument* createDocument( const XalanDOMString& namespaceURI, const XalanDOMString& qualifiedName, const XalanDocumentType& doctype); /** * Get the Xerces node this instance represent. * * @return The Xerces node */ DOMImplementationType* getXercesNode() const { return m_xercesNode; } //@} private: // These are not defined... XercesDOMImplementationWrapper(const XercesDOMImplementationWrapper& theSource); XercesDOMImplementationWrapper& operator=(const XercesDOMImplementationWrapper& theSource); bool operator==(const XercesDOMImplementationWrapper& theRHS) const; // Data members... DOMImplementationType* const m_xercesNode; }; XALAN_CPP_NAMESPACE_END #endif // !defined (XERCESDOMIMPLEMENTATIONWRAPPER_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesTextWrapperAllocator.hpp0000664000175000000640000000627711731656102026204 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESTEXTWRAPPERALLOCATOR_INCLUDE_GUARD_12455133) #define XERCESTEXTWRAPPERALLOCATOR_INCLUDE_GUARD_12455133 #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XERCESPARSERLIAISON_EXPORT XercesTextWrapperAllocator { public: typedef XercesTextWrapper ObjectType; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XercesTextWrapperAllocator(MemoryManager& theManager, size_type theBlockCount); ~XercesTextWrapperAllocator(); /** * Create a XercesTextWrapper instance. * * @param theXercesText The Xerces text node * @param theNavigator The navigator for this instance. * * @return pointer to the instance */ ObjectType* create( const DOMTextType* theXercesText, const XercesWrapperNavigator& theNavigator); /** * Delete all objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XercesTextWrapperAllocator(const XercesTextWrapperAllocator&); XercesTextWrapperAllocator& operator=(const XercesTextWrapperAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XERCESTEXTWRAPPERALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesWrapperNavigator.cpp0000664000175000000640000001052011731656102025326 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesWrapperNavigator.hpp" #include #include #include "XercesAttrWrapper.hpp" #include "XercesDocumentWrapper.hpp" #include "XercesTextWrapper.hpp" #include "XercesDOMWrapperException.hpp" XALAN_CPP_NAMESPACE_BEGIN const XalanDOMString XercesWrapperNavigator::s_emptyString(XalanMemMgrs::getDummyMemMgr()); XercesWrapperNavigator::XercesWrapperNavigator( XercesDocumentWrapper* theOwnerDocument) : m_ownerDocument(theOwnerDocument), m_parentNode(0), m_previousSibling(0), m_nextSibling(0), m_firstChild(0), m_lastChild(0), m_index(0) { assert(theOwnerDocument != 0); } XercesWrapperNavigator::XercesWrapperNavigator(const XercesWrapperNavigator& theSource) : m_ownerDocument(theSource.m_ownerDocument), m_parentNode(theSource.m_parentNode), m_previousSibling(theSource.m_previousSibling), m_nextSibling(theSource.m_nextSibling), m_firstChild(theSource.m_firstChild), m_lastChild(theSource.m_lastChild), m_index(theSource.m_index) { } XercesWrapperNavigator::~XercesWrapperNavigator() { } XalanNode* XercesWrapperNavigator::mapNode(const DOMNodeType* theXercesNode) const { return m_ownerDocument->mapNode(theXercesNode); } XalanAttr* XercesWrapperNavigator::mapNode(const DOMAttrType* theXercesNode) const { return m_ownerDocument->mapNode(theXercesNode); } const DOMNodeType* XercesWrapperNavigator::mapNode(XalanNode* theXalanNode) const { return m_ownerDocument->mapNode(theXalanNode); } XalanNode* XercesWrapperNavigator::getParentNode(const DOMNodeType* theXercesNode) const { if (m_parentNode == 0) { return m_ownerDocument->mapNode(theXercesNode->getParentNode()); } else { return m_parentNode; } } XalanNode* XercesWrapperNavigator::getPreviousSibling(const DOMNodeType* theXercesNode) const { if (m_previousSibling == 0) { return m_ownerDocument->mapNode(theXercesNode->getPreviousSibling()); } else { return m_previousSibling; } } XalanNode* XercesWrapperNavigator::getNextSibling(const DOMNodeType* theXercesNode) const { if (m_nextSibling == 0) { return m_ownerDocument->mapNode(theXercesNode->getNextSibling()); } else { return m_nextSibling; } } XalanNode* XercesWrapperNavigator::getFirstChild(const DOMNodeType* theXercesNode) const { if (m_firstChild == 0) { return m_ownerDocument->mapNode(theXercesNode->getFirstChild()); } else { return m_firstChild; } } XalanNode* XercesWrapperNavigator::getLastChild(const DOMNodeType* theXercesNode) const { if (m_lastChild == 0) { return m_ownerDocument->mapNode(theXercesNode->getLastChild()); } else { return m_lastChild; } } XalanElement* XercesWrapperNavigator::getOwnerElement(const DOMAttrType* theXercesAttr) const { assert(theXercesAttr != 0); if (m_parentNode != 0) { assert(m_parentNode->getNodeType() == XalanNode::ELEMENT_NODE); return static_cast(m_parentNode); } else { return m_ownerDocument->mapNode(theXercesAttr->getOwnerElement()); } } const XalanDOMString& XercesWrapperNavigator::getPooledString(const XMLCh* theString) const { if (theString == 0) { return s_emptyString; } else { return m_ownerDocument->getPooledString(theString, XalanDOMString::length(theString)); } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesEntityReferenceWrapper.cpp0000664000175000000640000001042211731656102026470 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesEntityReferenceWrapper.hpp" #include #include #include "XercesWrapperHelper.hpp" #include "XercesWrapperNavigator.hpp" #include "XercesDocumentWrapper.hpp" #include "XercesDOMWrapperException.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesEntityReferenceWrapper::XercesEntityReferenceWrapper( const DOMEntityReferenceType* theXercesDOMEntityReference, const XercesWrapperNavigator& theNavigator) : XalanEntityReference(), m_xercesNode(theXercesDOMEntityReference), m_navigator(theNavigator), m_children(theXercesDOMEntityReference->getChildNodes(), theNavigator) { assert(theXercesDOMEntityReference != 0); } XercesEntityReferenceWrapper* XercesEntityReferenceWrapper::create( MemoryManager& theManager, const DOMEntityReferenceType* theXercesDOMEntityReference, const XercesWrapperNavigator& theNavigator) { typedef XercesEntityReferenceWrapper ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( theXercesDOMEntityReference, theNavigator); theGuard.release(); return theResult; } XercesEntityReferenceWrapper::~XercesEntityReferenceWrapper() { } const XalanDOMString& XercesEntityReferenceWrapper::getNodeName() const { return m_navigator.getPooledString(m_xercesNode->getNodeName()); } const XalanDOMString& XercesEntityReferenceWrapper::getNodeValue() const { return m_navigator.getPooledString(m_xercesNode->getNodeValue()); } XercesEntityReferenceWrapper::NodeType XercesEntityReferenceWrapper::getNodeType() const { return ENTITY_REFERENCE_NODE; } XalanNode* XercesEntityReferenceWrapper::getParentNode() const { return m_navigator.getParentNode(m_xercesNode); } const XalanNodeList* XercesEntityReferenceWrapper::getChildNodes() const { return &m_children; } XalanNode* XercesEntityReferenceWrapper::getFirstChild() const { return m_navigator.getFirstChild(m_xercesNode); } XalanNode* XercesEntityReferenceWrapper::getLastChild() const { return m_navigator.getLastChild(m_xercesNode); } XalanNode* XercesEntityReferenceWrapper::getPreviousSibling() const { return m_navigator.getPreviousSibling(m_xercesNode); } XalanNode* XercesEntityReferenceWrapper::getNextSibling() const { return m_navigator.getNextSibling(m_xercesNode); } const XalanNamedNodeMap* XercesEntityReferenceWrapper::getAttributes() const { return 0; } XalanDocument* XercesEntityReferenceWrapper::getOwnerDocument() const { return m_navigator.getOwnerDocument(); } const XalanDOMString& XercesEntityReferenceWrapper::getNamespaceURI() const { return m_navigator.getPooledString(m_xercesNode->getNamespaceURI()); } const XalanDOMString& XercesEntityReferenceWrapper::getPrefix() const { return m_navigator.getPooledString(m_xercesNode->getPrefix()); } const XalanDOMString& XercesEntityReferenceWrapper::getLocalName() const { return m_navigator.getPooledString(m_xercesNode->getLocalName()); } bool XercesEntityReferenceWrapper::isIndexed() const { return m_navigator.getOwnerDocument()->isIndexed(); } XercesEntityReferenceWrapper::IndexType XercesEntityReferenceWrapper::getIndex() const { return m_navigator.getIndex(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesWrapperNavigatorAllocator.cpp0000664000175000000640000000307411731656102027175 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XercesWrapperNavigatorAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesWrapperNavigatorAllocator::XercesWrapperNavigatorAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XercesWrapperNavigatorAllocator::~XercesWrapperNavigatorAllocator() { } XercesWrapperNavigatorAllocator::ObjectType* XercesWrapperNavigatorAllocator::create(XercesDocumentWrapper* theOwnerDocument) { ObjectType* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); new(theBlock) ObjectType(theOwnerDocument); m_allocator.commitAllocation(theBlock); return theBlock; } void XercesWrapperNavigatorAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesDOMWrapperException.cpp0000664000175000000640000000632311731656102025700 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesDOMWrapperException.hpp" #include XALAN_CPP_NAMESPACE_BEGIN XercesDOMWrapperException::XercesDOMWrapperException(ExceptionCode code) : XalanDOMException(code) { } XercesDOMWrapperException::XercesDOMWrapperException(const DOMExceptionType& theException) : XalanDOMException(translateErrorCode(theException.code)) { } XercesDOMWrapperException::XercesDOMWrapperException(const XercesDOMWrapperException& theSource) : XalanDOMException(theSource) { } XercesDOMWrapperException::~XercesDOMWrapperException() { } XercesDOMWrapperException::ExceptionCode XercesDOMWrapperException::translateErrorCode(DOMExceptionType::ExceptionCode theCode) { ExceptionCode theXalanCode = UNKNOWN_ERR; switch(theCode) { case DOMExceptionType::INDEX_SIZE_ERR: theXalanCode = INDEX_SIZE_ERR; break; case DOMExceptionType::DOMSTRING_SIZE_ERR: theXalanCode = DOMSTRING_SIZE_ERR; break; case DOMExceptionType::HIERARCHY_REQUEST_ERR: theXalanCode = HIERARCHY_REQUEST_ERR; break; case DOMExceptionType::WRONG_DOCUMENT_ERR: theXalanCode = WRONG_DOCUMENT_ERR; break; case DOMExceptionType::INVALID_CHARACTER_ERR: theXalanCode = INVALID_CHARACTER_ERR; break; case DOMExceptionType::NO_DATA_ALLOWED_ERR: theXalanCode = NO_DATA_ALLOWED_ERR; break; case DOMExceptionType::NO_MODIFICATION_ALLOWED_ERR: theXalanCode = NO_MODIFICATION_ALLOWED_ERR; break; case DOMExceptionType::NOT_FOUND_ERR: theXalanCode = NOT_FOUND_ERR; break; case DOMExceptionType::NOT_SUPPORTED_ERR: theXalanCode = INDEX_SIZE_ERR; break; case DOMExceptionType::INUSE_ATTRIBUTE_ERR: theXalanCode = INUSE_ATTRIBUTE_ERR; break; case DOMExceptionType::INVALID_STATE_ERR: theXalanCode = INVALID_STATE_ERR; break; case DOMExceptionType::SYNTAX_ERR: theXalanCode = SYNTAX_ERR; break; case DOMExceptionType::INVALID_MODIFICATION_ERR: theXalanCode = INVALID_MODIFICATION_ERR; break; case DOMExceptionType::NAMESPACE_ERR: theXalanCode = NAMESPACE_ERR; break; case DOMExceptionType::INVALID_ACCESS_ERR: theXalanCode = INVALID_ACCESS_ERR; break; default: assert(false); break; }; return theXalanCode; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesElementWrapperAllocator.hpp0000664000175000000640000000634211731656102026642 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESELEMENTWRAPPERALLOCATOR_INCLUDE_GUARD_12455133) #define XERCESELEMENTWRAPPERALLOCATOR_INCLUDE_GUARD_12455133 #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XERCESPARSERLIAISON_EXPORT XercesElementWrapperAllocator { public: typedef XercesElementWrapper ObjectType; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XercesElementWrapperAllocator(MemoryManager& theManager, size_type theBlockCount); ~XercesElementWrapperAllocator(); /** * Create a XercesElementWrapper instance. * * @param theXercesElement The Xerces element node * @param theNavigator The navigator for this instance. * * @return pointer to the instance */ ObjectType* create( const DOMElementType* theXercesElement, const XercesWrapperNavigator& theNavigator); /** * Delete all objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XercesElementWrapperAllocator(const XercesElementWrapperAllocator&); XercesElementWrapperAllocator& operator=(const XercesElementWrapperAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XERCESELEMENTWRAPPERALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesWrapperNavigator.hpp0000664000175000000640000001071711731656102025343 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESWRAPPERNAVIGATOR_HEADER_GUARD_1357924680) #define XERCESWRAPPERNAVIGATOR_HEADER_GUARD_1357924680 #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesDocumentWrapper; class XalanAttr; class XalanElement; class XalanText; class XALAN_XERCESPARSERLIAISON_EXPORT XercesWrapperNavigator { public: typedef XalanNode::IndexType IndexType; explicit XercesWrapperNavigator(XercesDocumentWrapper* theOwnerDocument = 0); XercesWrapperNavigator(const XercesWrapperNavigator& theSource); virtual ~XercesWrapperNavigator(); XercesDocumentWrapper* getOwnerDocument() const { return m_ownerDocument; } void setOwnerDocument(XercesDocumentWrapper* theDocument) { m_ownerDocument = theDocument; } XalanNode* mapNode(const DOMNodeType* theXercesNode) const; XalanAttr* mapNode(const DOMAttrType* theXercesNode) const; const DOMNodeType* mapNode(XalanNode* theXalanNode) const; IndexType getIndex() const { return m_index; } void setIndex(IndexType theIndex) { m_index = theIndex; } XalanNode* getParentNode(const DOMNodeType* theXercesNode) const; XalanNode* getParentNode() const { return m_parentNode; } void setParentNode(XalanNode* theParent) { m_parentNode = theParent; } XalanNode* getPreviousSibling(const DOMNodeType* theXercesNode) const; XalanNode* getPreviousSibling() const { return m_previousSibling; } void setPreviousSibling(XalanNode* thePreviousSibling) { m_previousSibling = thePreviousSibling; } XalanNode* getNextSibling(const DOMNodeType* theXercesNode) const; XalanNode* getNextSibling() const { return m_nextSibling; } void setNextSibling(XalanNode* theNextSibling) { m_nextSibling = theNextSibling; } XalanNode* getFirstChild(const DOMNodeType* theXercesNode) const; XalanNode* getFirstChild() const { return m_firstChild; } void setFirstChild(XalanNode* theFirstChild) { m_firstChild = theFirstChild; } XalanNode* getLastChild(const DOMNodeType* theXercesNode) const; XalanNode* getLastChild() const { return m_lastChild; } void setLastChild(XalanNode* theLastChild) { m_lastChild = theLastChild; } XalanElement* getOwnerElement(const DOMAttrType* theXercesAttr) const; /** * Get a pooled string. If the string is not in the pool, * add it. * * @param theString The string to pool. * @return A const reference to the pooled string. */ const XalanDOMString& getPooledString(const XMLCh* theString) const; private: // Not implemented... bool operator==(const XercesWrapperNavigator& theRHS) const; // Data members... XercesDocumentWrapper* m_ownerDocument; XalanNode* m_parentNode; XalanNode* m_previousSibling; XalanNode* m_nextSibling; XalanNode* m_firstChild; XalanNode* m_lastChild; IndexType m_index; static const XalanDOMString s_emptyString; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESWRAPPERNAVIGATOR_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesWrapperNavigatorAllocator.hpp0000664000175000000640000000620411731656102027200 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESWRAPPERNAVIGATORALLOCATOR_INCLUDE_GUARD_12455133) #define XERCESWRAPPERNAVIGATORALLOCATOR_INCLUDE_GUARD_12455133 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XERCESPARSERLIAISON_EXPORT XercesWrapperNavigatorAllocator { public: typedef XercesWrapperNavigator ObjectType; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XercesWrapperNavigatorAllocator(MemoryManager& theManager, size_type theBlockCount); ~XercesWrapperNavigatorAllocator(); /** * Create a XercesWrapperNavigator instance. * * @param theOwnerDocument The XercesDocumentWrappter instance for this instance. * * @return pointer to the instance */ ObjectType* create(XercesDocumentWrapper* theOwnerDocument); /** * Delete all objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XercesWrapperNavigatorAllocator(const XercesWrapperNavigatorAllocator&); XercesWrapperNavigatorAllocator& operator=(const XercesWrapperNavigatorAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XERCESWRAPPERNAVIGATORALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesEntityReferenceWrapper.hpp0000664000175000000640000000704111731656102026500 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESENTITYREFERENCEWRAPPER_HEADER_GUARD_1357924680) #define XERCESENTITYREFERENCEWRAPPER_HEADER_GUARD_1357924680 #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesWrapperNavigator; class XALAN_XERCESPARSERLIAISON_EXPORT XercesEntityReferenceWrapper : public XalanEntityReference { public: XercesEntityReferenceWrapper( const DOMEntityReferenceType* theXercesDOMEntityReference, const XercesWrapperNavigator& theNavigator); static XercesEntityReferenceWrapper* create( MemoryManager& theManager, const DOMEntityReferenceType* theXercesDOMEntityReference, const XercesWrapperNavigator& theNavigator); virtual ~XercesEntityReferenceWrapper(); // These interfaces are inherited from XalanEntityReference... virtual const XalanDOMString& getNodeName() const; virtual const XalanDOMString& getNodeValue() const; virtual NodeType getNodeType() const; virtual XalanNode* getParentNode() const; virtual const XalanNodeList* getChildNodes() const; virtual XalanNode* getFirstChild() const; virtual XalanNode* getLastChild() const; virtual XalanNode* getPreviousSibling() const; virtual XalanNode* getNextSibling() const; virtual const XalanNamedNodeMap* getAttributes() const; virtual XalanDocument* getOwnerDocument() const; virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; virtual bool isIndexed() const; virtual IndexType getIndex() const; /** * Get the Xerces node this instance represent. * * @return The Xerces node */ const DOMEntityReferenceType* getXercesNode() const { return m_xercesNode; } //@} private: // Not implemented... XercesEntityReferenceWrapper(const XercesEntityReferenceWrapper& theSource); XercesEntityReferenceWrapper& operator=(const XercesEntityReferenceWrapper& theSource); bool operator==(const XercesEntityReferenceWrapper& theRHS) const; // Data members... const DOMEntityReferenceType* const m_xercesNode; const XercesWrapperNavigator& m_navigator; XercesNodeListWrapper m_children; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESENTITYREFERENCEWRAPPER_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesCDATASectionWrapper.cpp0000664000175000000640000001036211731656102025541 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesCDATASectionWrapper.hpp" #include #include #include #include "XercesWrapperHelper.hpp" #include "XercesWrapperNavigator.hpp" #include "XercesDOMWrapperException.hpp" #include "XercesDocumentWrapper.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesCDATASectionWrapper::XercesCDATASectionWrapper( const DOMCDATASectionType* theXercesCDATASection, const XercesWrapperNavigator& theNavigator) : XalanCDATASection(), m_xercesNode(theXercesCDATASection), m_navigator(theNavigator) { assert(theXercesCDATASection != 0); } XercesCDATASectionWrapper* XercesCDATASectionWrapper::create( MemoryManager& theManager, const DOMCDATASectionType* theXercesCDATASection, const XercesWrapperNavigator& theNavigator) { typedef XercesCDATASectionWrapper ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( theXercesCDATASection, theNavigator); theGuard.release(); return theResult; } XercesCDATASectionWrapper::~XercesCDATASectionWrapper() { } const XalanDOMString& XercesCDATASectionWrapper::getNodeName() const { return m_navigator.getPooledString(m_xercesNode->getNodeName()); } const XalanDOMString& XercesCDATASectionWrapper::getNodeValue() const { return m_navigator.getPooledString(m_xercesNode->getNodeValue()); } XercesCDATASectionWrapper::NodeType XercesCDATASectionWrapper::getNodeType() const { return CDATA_SECTION_NODE; } XalanNode* XercesCDATASectionWrapper::getParentNode() const { return m_navigator.getParentNode(m_xercesNode); } const XalanNodeList* XercesCDATASectionWrapper::getChildNodes() const { return 0; } XalanNode* XercesCDATASectionWrapper::getFirstChild() const { return 0; } XalanNode* XercesCDATASectionWrapper::getLastChild() const { return 0; } XalanNode* XercesCDATASectionWrapper::getPreviousSibling() const { return m_navigator.getPreviousSibling(m_xercesNode); } XalanNode* XercesCDATASectionWrapper::getNextSibling() const { return m_navigator.getNextSibling(m_xercesNode); } const XalanNamedNodeMap* XercesCDATASectionWrapper::getAttributes() const { return 0; } XalanDocument* XercesCDATASectionWrapper::getOwnerDocument() const { return m_navigator.getOwnerDocument(); } const XalanDOMString& XercesCDATASectionWrapper::getNamespaceURI() const { return m_navigator.getPooledString(m_xercesNode->getNamespaceURI()); } const XalanDOMString& XercesCDATASectionWrapper::getPrefix() const { return m_navigator.getPooledString(m_xercesNode->getPrefix()); } const XalanDOMString& XercesCDATASectionWrapper::getLocalName() const { return m_navigator.getPooledString(m_xercesNode->getLocalName()); } bool XercesCDATASectionWrapper::isIndexed() const { return m_navigator.getOwnerDocument()->isIndexed(); } XercesCDATASectionWrapper::IndexType XercesCDATASectionWrapper::getIndex() const { return m_navigator.getIndex(); } const XalanDOMString& XercesCDATASectionWrapper::getData() const { return m_navigator.getPooledString(m_xercesNode->getData()); } bool XercesCDATASectionWrapper::isWhitespace() const { return isXMLWhitespace(getData()); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesDOMWrapperException.hpp0000664000175000000640000000476411731656102025714 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESDOMWRAPPEREXCEPTION_HEADER_GUARD_1357924680) #define XERCESDOMWRAPPEREXCEPTION_HEADER_GUARD_1357924680 #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XERCESPARSERLIAISON_EXPORT XercesDOMWrapperException : public XalanDOMException { public: /** @name Constructors and assignment operator */ //@{ /** * Constructor which takes an error code. * * @param code The error code which indicates the exception */ explicit XercesDOMWrapperException(ExceptionCode code = UNKNOWN_ERR); /** * Constructor which takes a Xerces exception and * translates it into a XercesDOMException. * * @param code The Xerces DOMException instance. */ XercesDOMWrapperException(const DOMExceptionType& theException); /** * Copy constructor. * * @param other The object to be copied. */ XercesDOMWrapperException(const XercesDOMWrapperException& theSource); //@} /** @name Destructor. */ //@{ /** * Destructor for XercesDOMException. */ virtual ~XercesDOMWrapperException(); //@} private: static ExceptionCode translateErrorCode(DOMExceptionType::ExceptionCode theCode); static ExceptionCode translateErrorCode(short theCode) { return translateErrorCode(static_cast(theCode)); } }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESDOMWRAPPEREXCEPTION_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesCDATASectionWrapper.hpp0000664000175000000640000000665611731656102025561 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESCDATASECTIONWRAPPER_HEADER_GUARD_1357924680) #define XERCESCDATASECTIONWRAPPER_HEADER_GUARD_1357924680 #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesWrapperNavigator; class XALAN_XERCESPARSERLIAISON_EXPORT XercesCDATASectionWrapper : public XalanCDATASection { public: XercesCDATASectionWrapper( const DOMCDATASectionType* theXercesCDATASection, const XercesWrapperNavigator& theNavigator); static XercesCDATASectionWrapper* create( MemoryManager& theManager, const DOMCDATASectionType* theXercesCDATASection, const XercesWrapperNavigator& theNavigator); virtual ~XercesCDATASectionWrapper(); // These interfaces are inherited from XalanCDATASection... virtual const XalanDOMString& getNodeName() const; virtual const XalanDOMString& getNodeValue() const; virtual NodeType getNodeType() const; virtual XalanNode* getParentNode() const; virtual const XalanNodeList* getChildNodes() const; virtual XalanNode* getFirstChild() const; virtual XalanNode* getLastChild() const; virtual XalanNode* getPreviousSibling() const; virtual XalanNode* getNextSibling() const; virtual const XalanNamedNodeMap* getAttributes() const; virtual XalanDocument* getOwnerDocument() const; virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; virtual bool isIndexed() const; virtual IndexType getIndex() const; virtual const XalanDOMString& getData() const; virtual bool isWhitespace() const; /** * Get the Xerces node this instance represent. * * @return The Xerces node */ const DOMCDATASectionType* getXercesNode() const { return m_xercesNode; } private: // Not implemented... XercesCDATASectionWrapper(const XercesCDATASectionWrapper& theSource); XercesCDATASectionWrapper& operator=(const XercesCDATASectionWrapper& theSource); bool operator==(const XercesCDATASectionWrapper& theRHS) const; // Data members... const DOMCDATASectionType* m_xercesNode; const XercesWrapperNavigator& m_navigator; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESCDATASECTIONWRAPPER_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesNamedNodeMapAttributeList.cpp0000664000175000000640000000572211731656102027053 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesNamedNodeMapAttributeList.hpp" #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN const XMLCh XercesNamedNodeMapAttributeList::s_typeString[] = { XalanUnicode::charLetter_C, XalanUnicode::charLetter_D, XalanUnicode::charLetter_A, XalanUnicode::charLetter_T, XalanUnicode::charLetter_A, 0 }; XercesNamedNodeMapAttributeList::XercesNamedNodeMapAttributeList(const DOMNamedNodeMapType* theMap) : ParentType(), m_nodeMap(theMap), m_attrCount(theMap->getLength()) { } XercesNamedNodeMapAttributeList::~XercesNamedNodeMapAttributeList() { } XalanSize_t XercesNamedNodeMapAttributeList::getLength() const { return m_attrCount; } const XMLCh* XercesNamedNodeMapAttributeList::getName(const XalanSize_t index) const { if (m_attrCount == 0) return 0; if (index >= m_attrCount) return 0; const DOMNodeType* const theAttribute = m_nodeMap->item(index); return theAttribute->getNodeName(); } const XMLCh* XercesNamedNodeMapAttributeList::getType(const XalanSize_t /* index */) const { assert(length(s_typeString) > 0); return s_typeString; } const XMLCh* XercesNamedNodeMapAttributeList::getValue(const XalanSize_t index) const { if (m_attrCount == 0) return 0; if (index >= m_attrCount) return 0; const DOMNodeType* const theAttribute = m_nodeMap->item(index); return theAttribute->getNodeValue(); } const XMLCh* XercesNamedNodeMapAttributeList::getType(const XMLCh* const /* name */) const { assert(length(s_typeString) > 0); return s_typeString; } const XMLCh* XercesNamedNodeMapAttributeList::getValue(const XMLCh* const name) const { const DOMNodeType* theNode = m_nodeMap->getNamedItem(name); if (theNode == 0) { return 0; } else { return theNode->getNodeValue(); } } const XMLCh* XercesNamedNodeMapAttributeList::getValue(const char* const /*name*/) const { assert(false); return 0; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesParserLiaison.cpp0000664000175000000640000004170311731656102024615 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesParserLiaison.hpp" #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) #include #endif #include #include XALAN_CPP_NAMESPACE_BEGIN XercesParserLiaison::XercesParserLiaison( XercesDOMSupport& /* theSupport */, MemoryManager& theManager) : m_indent(-1), m_useValidation(false), m_includeIgnorableWhitespace(true), m_doNamespaces(true), m_exitOnFirstFatalError(true), m_entityResolver(0), m_xmlEntityResolver(0), m_errorHandler(this), m_externalSchemaLocation(theManager), m_externalNoNamespaceSchemaLocation(theManager), m_documentMap(theManager), m_buildWrapper(true), m_buildBridge(true), m_threadSafe(false), m_buildMaps(false), m_executionContext(0), m_domParser(0) { } XercesParserLiaison::XercesParserLiaison(MemoryManager& theManager) : m_indent(-1), m_useValidation(false), m_includeIgnorableWhitespace(true), m_doNamespaces(true), m_exitOnFirstFatalError(true), m_entityResolver(0), m_xmlEntityResolver(0), m_errorHandler(this), m_externalSchemaLocation(theManager), m_externalNoNamespaceSchemaLocation(theManager), m_documentMap(theManager), m_buildWrapper(true), m_buildBridge(true), m_threadSafe(false), m_buildMaps(false), m_executionContext(0), m_domParser(0) { } XercesParserLiaison::~XercesParserLiaison() { reset(); delete m_domParser; } void XercesParserLiaison::reset() { // Delete any live documents... for(DocumentMapType::iterator i = m_documentMap.begin(); i != m_documentMap.end(); ++i) { if ((*i).second.isDeprecated() == false && (*i).second.isOwned() == true) { delete (*i).second.m_wrapper->getXercesDocument(); } XalanDocument* docToDelete = const_cast((*i).first); if(docToDelete != 0) { docToDelete->~XalanDocument(); getMemoryManager().deallocate((void*)docToDelete); } } m_documentMap.clear(); m_executionContext = 0; } ExecutionContext* XercesParserLiaison::getExecutionContext() const { return m_executionContext; } void XercesParserLiaison::setExecutionContext(ExecutionContext& theContext) { m_executionContext = &theContext; } void XercesParserLiaison::ensureDOMParser() { if (m_domParser == 0) { m_domParser = createDOMParser(); } m_domParser->setValidationScheme(m_useValidation == true ? DOMParserType::Val_Auto : DOMParserType::Val_Never); m_domParser->setIncludeIgnorableWhitespace(m_includeIgnorableWhitespace); m_domParser->setDoNamespaces(m_doNamespaces); m_domParser->setExitOnFirstFatalError(m_exitOnFirstFatalError); if (m_entityResolver != 0) { m_domParser->setEntityResolver(m_entityResolver); } else { m_domParser->setXMLEntityResolver(m_xmlEntityResolver); } m_domParser->setErrorHandler(m_errorHandler); if (m_externalSchemaLocation.length() > 0) { m_domParser->setExternalSchemaLocation(m_externalSchemaLocation.c_str()); } if (m_externalNoNamespaceSchemaLocation.length() > 0) { m_domParser->setExternalNoNamespaceSchemaLocation(m_externalNoNamespaceSchemaLocation.c_str()); } } void XercesParserLiaison::parseXMLStream( const InputSource& inputSource, DocumentHandler& handler, const XalanDOMString& /* identifier */) { XalanAutoPtr theParser(createSAXParser()); theParser->setExitOnFirstFatalError(m_exitOnFirstFatalError); if (m_entityResolver != 0) { theParser->setEntityResolver(m_entityResolver); } else { theParser->setXMLEntityResolver(m_xmlEntityResolver); } theParser->setErrorHandler(m_errorHandler); theParser->setDocumentHandler(&handler); theParser->parse(inputSource); } XalanDocument* XercesParserLiaison::parseXMLStream( const InputSource& inputSource, const XalanDOMString& /* identifier */) { ensureDOMParser(); m_domParser->parse(inputSource); DOMDocument_Type* const theXercesDocument = m_domParser->getDocument(); theXercesDocument->normalize(); XercesDocumentWrapper* theNewDocument = 0; if (theXercesDocument != 0) { theNewDocument = doCreateDocument(theXercesDocument, m_threadSafe, m_buildWrapper, m_buildMaps, true); m_domParser->adoptDocument(); } return theNewDocument; } void XercesParserLiaison::destroyDocument(XalanDocument* theDocument) { const DocumentMapType::iterator i = m_documentMap.find(theDocument); if (i != m_documentMap.end()) { const XalanMemMgrAutoPtr theGuard( m_documentMap.getMemoryManager(), theDocument); m_documentMap.erase(i); } } int XercesParserLiaison::getIndent() const { return m_indent; } void XercesParserLiaison::setIndent(int i) { m_indent = i; } bool XercesParserLiaison::getUseValidation() const { return m_useValidation; } void XercesParserLiaison::setUseValidation(bool b) { m_useValidation = b; } const XalanDOMString& XercesParserLiaison::getParserDescription(XalanDOMString& theResult) const { theResult.assign("Xerces"); return theResult; } DOMDocument_Type* XercesParserLiaison::createDOMFactory() { DOMDocument_Type* const theXercesDocument = DOMImplementationType::getImplementation()->createDocument(); createDocument(theXercesDocument, false, false); return theXercesDocument; } void XercesParserLiaison::destroyDocument(DOMDocument_Type* theDocument) { // Delete any live documents... for(DocumentMapType::iterator i = m_documentMap.begin(); i != m_documentMap.end(); ++i) { if ((*i).second.isDeprecated() == false && (*i).second.m_wrapper->getXercesDocument() == theDocument) { destroyDocument((XalanDocument*)(*i).first); } } } bool XercesParserLiaison::getIncludeIgnorableWhitespace() const { return m_includeIgnorableWhitespace; } void XercesParserLiaison::setIncludeIgnorableWhitespace(bool include) { m_includeIgnorableWhitespace = include; } ErrorHandler* XercesParserLiaison::getErrorHandler() const { return m_errorHandler; } void XercesParserLiaison::setErrorHandler(ErrorHandler* handler) { if (handler == 0) { m_errorHandler = this; } else { m_errorHandler = handler; } } bool XercesParserLiaison::getDoNamespaces() const { return m_doNamespaces; } void XercesParserLiaison::setDoNamespaces(bool newState) { m_doNamespaces = newState; } bool XercesParserLiaison::getExitOnFirstFatalError() const { return m_exitOnFirstFatalError; } void XercesParserLiaison::setExitOnFirstFatalError(bool newState) { m_exitOnFirstFatalError = newState; } EntityResolver* XercesParserLiaison::getEntityResolver() const { return m_entityResolver; } void XercesParserLiaison::setEntityResolver(EntityResolver* resolver) { m_entityResolver = resolver; } XMLEntityResolver* XercesParserLiaison::getXMLEntityResolver() const { return m_xmlEntityResolver; } void XercesParserLiaison::setXMLEntityResolver(XMLEntityResolver* resolver) { m_xmlEntityResolver = resolver; } const XalanDOMChar* XercesParserLiaison::getExternalSchemaLocation() const { return m_externalSchemaLocation.length() == 0 ? 0 : m_externalSchemaLocation.c_str(); } void XercesParserLiaison::setExternalSchemaLocation(const XalanDOMChar* location) { if (location == 0) { m_externalSchemaLocation.clear(); } else { m_externalSchemaLocation = location; } } const XalanDOMChar* XercesParserLiaison::getExternalNoNamespaceSchemaLocation() const { return m_externalNoNamespaceSchemaLocation.length() == 0 ? 0 : m_externalNoNamespaceSchemaLocation.c_str(); } void XercesParserLiaison::setExternalNoNamespaceSchemaLocation(const XalanDOMChar* location) { if (location == 0) { m_externalNoNamespaceSchemaLocation.clear(); } else { m_externalNoNamespaceSchemaLocation= location; } } #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) XalanDocument* XercesParserLiaison::createDocument( const DOM_Document_Type& theXercesDocument, bool threadSafe, bool buildBridge) { return doCreateDocument(theXercesDocument, threadSafe, buildBridge); } #endif XalanDocument* XercesParserLiaison::createDocument( const DOMDocument_Type* theXercesDocument, bool threadSafe, bool buildWrapper, bool buildMaps) { // As we did not create the underlying DOMDocument - ensure we don't // delete it later. return doCreateDocument(theXercesDocument, threadSafe, buildWrapper, buildMaps, false); } #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) XercesDocumentBridge* XercesParserLiaison::mapDocument(const XalanDocument* theDocument) const { const DocumentMapType::const_iterator i = m_documentMap.find(theDocument); return i != m_documentMap.end() ? (*i).second.m_isDeprecated == true ? (*i).second.m_bridge : 0 : 0; } #endif XercesDocumentWrapper* XercesParserLiaison::mapDocumentToWrapper(const XalanDocument* theDocument) const { const DocumentMapType::const_iterator i = m_documentMap.find(theDocument); return i != m_documentMap.end() ? (*i).second.isDeprecated() == false ? (*i).second.m_wrapper : 0 : 0; } #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) DOM_Document_Type XercesParserLiaison::mapXercesDocument(const XalanDocument* theDocument) const { const DocumentMapType::const_iterator i = m_documentMap.find(theDocument); return i != m_documentMap.end() ? (*i).second.isDeprecated() == true ? (*i).second.m_bridge->getXercesDocument() : DOM_Document_Type() : DOM_Document_Type(); } #endif const DOMDocument_Type* XercesParserLiaison::mapToXercesDocument(const XalanDocument* theDocument) const { const DocumentMapType::const_iterator i = m_documentMap.find(theDocument); return i != m_documentMap.end() ? (*i).second.isDeprecated() == false ? (*i).second.m_wrapper->getXercesDocument() : 0 : 0; } void XercesParserLiaison::fatalError(const SAXParseExceptionType& e) { XalanDOMString theMessage(getMemoryManager()); XalanMessageLoader::getMessage( theMessage, XalanMessages::FatalError); formatErrorMessage(e, theMessage); if (m_executionContext != 0) { // We call warning() because we don't want the execution // context to potentially throw an exception. m_executionContext->problem( ExecutionContext::eXMLParser, ExecutionContext::eWarning, theMessage, 0); } else { XALAN_USING_STD(cerr) XALAN_USING_STD(endl) cerr << endl << theMessage << endl; } throw e; } void XercesParserLiaison::error(const SAXParseExceptionType& e) { XalanDOMString theMessage(getMemoryManager()); XalanMessageLoader::getMessage( theMessage, XalanMessages::Error2); formatErrorMessage(e, theMessage); if (m_executionContext != 0) { // We call warn() because we don't want the execution // context to potentially throw an exception. m_executionContext->problem( ExecutionContext::eXMLParser, ExecutionContext::eWarning, theMessage, 0); } else { XALAN_USING_STD(cerr) XALAN_USING_STD(endl) cerr << endl << theMessage << endl; } if (m_useValidation == true) { throw e; } } void XercesParserLiaison::warning(const SAXParseExceptionType& e) { XalanDOMString theMessage(getMemoryManager()); XalanMessageLoader::getMessage( theMessage, XalanMessages::Warning2); formatErrorMessage(e, theMessage); if (m_executionContext != 0) { m_executionContext->problem( ExecutionContext::eXMLParser, ExecutionContext::eWarning, theMessage, 0); } else { XALAN_USING_STD(cerr) XALAN_USING_STD(endl) cerr << endl << theMessage << endl; } } void XercesParserLiaison::formatErrorMessage( const SAXParseExceptionType& e, XalanDOMString& theMessage) { XalanDOMString theErrorBuffer(theMessage.getMemoryManager()); const XalanDOMChar* const theExceptionMessage = e.getMessage(); assert(theExceptionMessage != 0); const XalanDOMChar* const theSystemID = e.getSystemId(); XSLException::defaultFormat( theExceptionMessage, length(theExceptionMessage), theSystemID, theSystemID == 0 ? 0 : length(theSystemID), e.getLineNumber(), e.getColumnNumber(), 0, 0, theMessage); } void XercesParserLiaison::resetErrors() { } XercesParserLiaison::DOMParserType* XercesParserLiaison::createDOMParser() { MemoryManager& theMemoryManager = getMemoryManager(); DOMParserType* const theParser = new (&theMemoryManager) DOMParserType(0, &theMemoryManager); #if XERCES_VERSION_MAJOR < 3 theParser->setExpandEntityReferences(true); #else theParser->setCreateEntityReferenceNodes(false); #endif theParser->setDoNamespaces(m_doNamespaces); return theParser; } XercesParserLiaison::SAXParserType* XercesParserLiaison::createSAXParser() { MemoryManager& theMemoryManager = getMemoryManager(); SAXParserType* const theParser = new (&theMemoryManager) SAXParserType(0, &theMemoryManager); #if XERCES_VERSION_MAJOR < 3 theParser->setDoValidation(false); #else theParser->setValidationScheme(SAXParserType::Val_Never); #endif theParser->setDoNamespaces(false); return theParser; } #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) XercesDocumentBridge* XercesParserLiaison::doCreateDocument( const DOM_Document_Type& theXercesDocument, bool threadSafe, bool buildBridge) { XercesDocumentBridge* const theNewDocument = new XercesDocumentBridge(theXercesDocument, threadSafe, buildBridge); m_documentMap[theNewDocument] = theNewDocument; return theNewDocument; } #endif XercesDocumentWrapper* XercesParserLiaison::doCreateDocument( const DOMDocument_Type* theXercesDocument, bool threadSafe, bool buildWrapper, bool buildMaps, bool isOwned) { XercesDocumentWrapper* const theNewDocument = XercesDocumentWrapper::create(getMemoryManager(),theXercesDocument, threadSafe, buildWrapper, buildMaps); DocumentEntry& theEntry = m_documentMap[theNewDocument]; theEntry = theNewDocument; theEntry.m_isOwned = isOwned; return theNewDocument; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesAttrWrapper.cpp0000664000175000000640000000726611731656102024323 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesAttrWrapper.hpp" #include #include #include #include "XercesWrapperHelper.hpp" #include "XercesWrapperNavigator.hpp" #include "XercesDOMWrapperException.hpp" #include "XercesDocumentWrapper.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesAttrWrapper::XercesAttrWrapper( const DOMAttrType* theXercesAttr, const XercesWrapperNavigator& theNavigator) : XalanAttr(), m_xercesNode(theXercesAttr), m_children(theXercesAttr->getChildNodes(), theNavigator), m_navigator(theNavigator) { assert(theXercesAttr != 0); } XercesAttrWrapper::~XercesAttrWrapper() { } const XalanDOMString& XercesAttrWrapper::getNodeName() const { return m_navigator.getPooledString(m_xercesNode->getNodeName()); } const XalanDOMString& XercesAttrWrapper::getNodeValue() const { return m_navigator.getPooledString(m_xercesNode->getNodeValue()); } XercesAttrWrapper::NodeType XercesAttrWrapper::getNodeType() const { return ATTRIBUTE_NODE; } XalanNode* XercesAttrWrapper::getParentNode() const { return 0; } const XalanNodeList* XercesAttrWrapper::getChildNodes() const { return &m_children; } XalanNode* XercesAttrWrapper::getFirstChild() const { return m_navigator.getFirstChild(m_xercesNode); } XalanNode* XercesAttrWrapper::getLastChild() const { return m_navigator.getLastChild(m_xercesNode); } XalanNode* XercesAttrWrapper::getPreviousSibling() const { return 0; } XalanNode* XercesAttrWrapper::getNextSibling() const { return 0; } const XalanNamedNodeMap* XercesAttrWrapper::getAttributes() const { return 0; } XalanDocument* XercesAttrWrapper::getOwnerDocument() const { return m_navigator.getOwnerDocument(); } const XalanDOMString& XercesAttrWrapper::getNamespaceURI() const { return m_navigator.getPooledString(m_xercesNode->getNamespaceURI()); } const XalanDOMString& XercesAttrWrapper::getPrefix() const { return m_navigator.getPooledString(m_xercesNode->getPrefix()); } const XalanDOMString& XercesAttrWrapper::getLocalName() const { return m_navigator.getPooledString(m_xercesNode->getLocalName()); } bool XercesAttrWrapper::isIndexed() const { return m_navigator.getOwnerDocument()->isIndexed(); } XercesAttrWrapper::IndexType XercesAttrWrapper::getIndex() const { return m_navigator.getIndex(); } const XalanDOMString& XercesAttrWrapper::getName() const { return m_navigator.getPooledString(m_xercesNode->getName()); } bool XercesAttrWrapper::getSpecified() const { return m_xercesNode->getSpecified(); } const XalanDOMString& XercesAttrWrapper::getValue() const { return m_navigator.getPooledString(m_xercesNode->getValue()); } XalanElement* XercesAttrWrapper::getOwnerElement() const { return m_navigator.getOwnerElement(m_xercesNode); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesParserLiaisonDefinitions.hpp0000664000175000000640000000265311731656102027017 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XercesPARSERLIAISONDEFINITIONS_HEADER_GUARD_1357924680) #define XercesPARSERLIAISONDEFINITIONS_HEADER_GUARD_1357924680 #include #include #if defined(XALAN_BUILD_DLL) #define XALAN_XERCESPARSERLIAISON_EXPORT XALAN_PLATFORM_EXPORT #define XALAN_XERCESPARSERLIAISON_EXPORT_FUNCTION(T) XALAN_PLATFORM_EXPORT_FUNCTION(T) #else #define XALAN_XERCESPARSERLIAISON_EXPORT XALAN_PLATFORM_IMPORT #define XALAN_XERCESPARSERLIAISON_EXPORT_FUNCTION(T) XALAN_PLATFORM_IMPORT_FUNCTION(T) #endif #endif // XercesPARSERLIAISONDEFINITIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesAttrWrapperAllocator.cpp0000664000175000000640000000315511731656102026155 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XercesAttrWrapperAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesAttrWrapperAllocator::XercesAttrWrapperAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XercesAttrWrapperAllocator::~XercesAttrWrapperAllocator() { } XercesAttrWrapperAllocator::ObjectType* XercesAttrWrapperAllocator::create( const DOMAttrType* theXercesAttr, const XercesWrapperNavigator& theNavigator) { ObjectType* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); new(theBlock) ObjectType(theXercesAttr, theNavigator); m_allocator.commitAllocation(theBlock); return theBlock; } void XercesAttrWrapperAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesDOMSupport.cpp0000664000175000000640000001030711731656102024052 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesDOMSupport.hpp" #include "xercesc/dom/DOMDocument.hpp" #include "xercesc/dom/DOMDocumentType.hpp" #include "xercesc/dom/DOMEntity.hpp" #include "xercesc/dom/DOMNamedNodeMap.hpp" #include "xalanc/DOMSupport/DOMServices.hpp" #include "xalanc/XercesParserLiaison/XercesDocumentWrapper.hpp" #include "xalanc/XercesParserLiaison/XercesParserLiaison.hpp" XALAN_CPP_NAMESPACE_BEGIN static const XalanDOMString s_emptyString(XalanMemMgrs::getDummyMemMgr()); XercesDOMSupport::XercesDOMSupport(XercesParserLiaison& theLiaison) : DOMSupport(), m_liaison(theLiaison) { } XercesDOMSupport::~XercesDOMSupport() { } void XercesDOMSupport::reset() { } const XalanDOMString& XercesDOMSupport::getUnparsedEntityURI( const XalanDOMString& theName, const XalanDocument& theDocument) const { const XercesDocumentWrapper* const theWrapper = m_liaison.mapDocumentToWrapper(&theDocument); if (theWrapper != 0) { XALAN_USING_XERCES(DOMDocument) XALAN_USING_XERCES(DOMDocumentType) XALAN_USING_XERCES(DOMEntity) XALAN_USING_XERCES(DOMNamedNodeMap) XALAN_USING_XERCES(DOMNode) const DOMDocument* const theDOMDocument = theWrapper->getXercesDocument(); assert(theDOMDocument != 0); const DOMDocumentType* const theDoctype = theDOMDocument->getDoctype(); if (theDoctype != 0) { const DOMNamedNodeMap* const theEntities = theDoctype->getEntities(); if (theEntities != 0) { const DOMNode* const theNode = theEntities->getNamedItem(theName.c_str()); if (theNode != 0 && theNode->getNodeType() == DOMNode::ENTITY_NODE) { const DOMEntity* const theEntity = static_cast(theNode); if(length(theEntity->getNotationName()) != 0) // then it's unparsed { // The draft says: "The XSLT processor may use the public // identifier to generate a URI for the entity instead of the URI // specified in the system identifier. If the XSLT processor does // not use the public identifier to generate the URI, it must use // the system identifier; if the system identifier is a relative // URI, it must be resolved into an absolute URI using the URI of // the resource containing the entity declaration as the base // URI [RFC2396]." // So I'm falling a bit short here. const XMLCh* theURI = theEntity->getSystemId(); if(theURI == 0) { theURI = theEntity->getPublicId(); } if(theURI != 0) { return theWrapper->getPooledString(theURI); } } } } } } return s_emptyString; } bool XercesDOMSupport::isNodeAfter( const XalanNode& node1, const XalanNode& node2) const { return DOMServices::isNodeAfter(node1, node2); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesNamedNodeMapAttributeList.hpp0000664000175000000640000000473711731656102027065 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESNAMEDNODEMAPATTRIBUTELIST_HEADER_GUARD_1357924680) #define XERCESNAMEDNODEMAPATTRIBUTELIST_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XERCESPARSERLIAISON_EXPORT XercesNamedNodeMapAttributeList : public XERCES_CPP_NAMESPACE_QUALIFIER AttributeList { public: typedef XERCES_CPP_NAMESPACE_QUALIFIER AttributeList ParentType; explicit XercesNamedNodeMapAttributeList(const DOMNamedNodeMapType* theMap); virtual ~XercesNamedNodeMapAttributeList(); // These are inherited from AttributeList virtual XalanSize_t getLength() const; virtual const XMLCh* getName(const XalanSize_t index) const; virtual const XMLCh* getType(const XalanSize_t index) const; virtual const XMLCh* getValue(const XalanSize_t index) const; virtual const XMLCh* getType(const XMLCh* const name) const; virtual const XMLCh* getValue(const XMLCh* const name) const; private: virtual const XMLCh* getValue(const char* const name) const; // Not implemented... XercesNamedNodeMapAttributeList& operator=(const XercesNamedNodeMapAttributeList&); bool operator==(const XercesNamedNodeMapAttributeList&); // Data members... const DOMNamedNodeMapType* const m_nodeMap; const XalanSize_t m_attrCount; static const XMLCh s_typeString[]; }; XALAN_CPP_NAMESPACE_END #endif // XERCESNAMEDNODEMAPATTRIBUTELIST_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesProcessingInstructionWrapper.cpp0000664000175000000640000001120011731656102027746 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesProcessingInstructionWrapper.hpp" #include #include #include "XercesDOMWrapperException.hpp" #include "XercesWrapperHelper.hpp" #include "XercesWrapperNavigator.hpp" #include "XercesDocumentWrapper.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesProcessingInstructionWrapper::XercesProcessingInstructionWrapper( const DOMProcessingInstructionType* theXercesDOMProcessingInstruction, const XercesWrapperNavigator& theNavigator) : XalanProcessingInstruction(), m_xercesNode(theXercesDOMProcessingInstruction), m_navigator(theNavigator) { assert(theXercesDOMProcessingInstruction != 0); } XercesProcessingInstructionWrapper* XercesProcessingInstructionWrapper::create( MemoryManager& theManager, const DOMProcessingInstructionType* theXercesDOMProcessingInstruction, const XercesWrapperNavigator& theNavigator) { typedef XercesProcessingInstructionWrapper ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( theXercesDOMProcessingInstruction, theNavigator); theGuard.release(); return theResult; } XercesProcessingInstructionWrapper::~XercesProcessingInstructionWrapper() { } const XalanDOMString& XercesProcessingInstructionWrapper::getNodeName() const { return m_navigator.getPooledString(m_xercesNode->getNodeName()); } const XalanDOMString& XercesProcessingInstructionWrapper::getNodeValue() const { return m_navigator.getPooledString(m_xercesNode->getNodeValue()); } XercesProcessingInstructionWrapper::NodeType XercesProcessingInstructionWrapper::getNodeType() const { return PROCESSING_INSTRUCTION_NODE; } XalanNode* XercesProcessingInstructionWrapper::getParentNode() const { return m_navigator.getParentNode(m_xercesNode); } const XalanNodeList* XercesProcessingInstructionWrapper::getChildNodes() const { return 0; } XalanNode* XercesProcessingInstructionWrapper::getFirstChild() const { return 0; } XalanNode* XercesProcessingInstructionWrapper::getLastChild() const { return 0; } XalanNode* XercesProcessingInstructionWrapper::getPreviousSibling() const { return m_navigator.getPreviousSibling(m_xercesNode); } XalanNode* XercesProcessingInstructionWrapper::getNextSibling() const { return m_navigator.getNextSibling(m_xercesNode); } const XalanNamedNodeMap* XercesProcessingInstructionWrapper::getAttributes() const { return 0; } XalanDocument* XercesProcessingInstructionWrapper::getOwnerDocument() const { return m_navigator.getOwnerDocument(); } const XalanDOMString& XercesProcessingInstructionWrapper::getNamespaceURI() const { return m_navigator.getPooledString(m_xercesNode->getNamespaceURI()); } const XalanDOMString& XercesProcessingInstructionWrapper::getPrefix() const { return m_navigator.getPooledString(m_xercesNode->getPrefix()); } const XalanDOMString& XercesProcessingInstructionWrapper::getLocalName() const { return m_navigator.getPooledString(m_xercesNode->getLocalName()); } bool XercesProcessingInstructionWrapper::isIndexed() const { return m_navigator.getOwnerDocument()->isIndexed(); } XercesProcessingInstructionWrapper::IndexType XercesProcessingInstructionWrapper::getIndex() const { return m_navigator.getIndex(); } const XalanDOMString& XercesProcessingInstructionWrapper::getTarget() const { return m_navigator.getPooledString(m_xercesNode->getTarget()); } const XalanDOMString& XercesProcessingInstructionWrapper::getData() const { return m_navigator.getPooledString(m_xercesNode->getData()); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesDocumentWrapper.cpp0000664000175000000640000010237411731656102025163 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesDocumentWrapper.hpp" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "XercesAttrWrapper.hpp" #include "XercesWrapperHelper.hpp" #include "XercesCommentWrapper.hpp" #include "XercesCDATASectionWrapper.hpp" #include "XercesDOMWrapperException.hpp" #include "XercesDOMImplementationWrapper.hpp" #include "XercesDocumentTypeWrapper.hpp" #include "XercesElementWrapper.hpp" #include "XercesEntityWrapper.hpp" #include "XercesEntityReferenceWrapper.hpp" #include "XercesLiaisonXalanDOMStringPool.hpp" #include "XercesNodeListWrapper.hpp" #include "XercesNotationWrapper.hpp" #include "XercesProcessingInstructionWrapper.hpp" #include "XercesTextWrapper.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesDocumentWrapper::XercesDocumentWrapper( MemoryManager& theManager, const DOMDocument_Type* theXercesDocument, bool threadSafe, bool buildWrapper, bool buildMaps) : XalanDocument(), m_xercesDocument(theXercesDocument), m_documentElement(0), m_nodeMap(theManager), m_navigatorAllocator(theManager, 25), m_navigator(0), m_children(theXercesDocument->getChildNodes(), *m_navigator), m_nodes(theManager), m_doctype(0), m_mappingMode(threadSafe == true ? false : !buildWrapper), m_indexValid(false), m_buildMaps(m_mappingMode == true ? true : buildMaps), m_elementAllocator(theManager, 25), m_textAllocator(theManager, 25), m_attributeAllocator(theManager, 25), m_stringPool(theManager, threadSafe == true ? XercesLiaisonXalanDOMStringPool::create(theManager) : XalanDOMStringPool::create(theManager)) { assert(theXercesDocument != 0); m_navigator = m_navigatorAllocator.create(this); if (m_mappingMode == false) { // The document index is always 1... m_navigator->setIndex(1); // OK, let's build the nodes. This makes things // thread-safe, so the document can be shared... buildWrapperNodes(); } else { m_nodeMap.addAssociation(theXercesDocument, this); } } XercesDocumentWrapper* XercesDocumentWrapper::create( MemoryManager& theManager, const DOMDocument_Type* theXercesDocument, bool threadSafe, bool buildWrapper, bool buildMaps) { typedef XercesDocumentWrapper ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( theManager, theXercesDocument, threadSafe, buildWrapper, buildMaps); theGuard.release(); return theResult; } XercesDocumentWrapper::~XercesDocumentWrapper() { destroyWrapper(); } XalanNode* XercesDocumentWrapper::mapNode(const DOMNodeType* theXercesNode) const { XalanNode* theXalanNode = 0; if (theXercesNode != 0) { theXalanNode = m_nodeMap.getNode(theXercesNode); if (theXalanNode == 0) { if (theXercesNode != m_xercesDocument && theXercesNode->getOwnerDocument() != m_xercesDocument && theXercesNode->getParentNode() != static_cast(m_xercesDocument)) { throw XercesDOMWrapperException(XercesDOMWrapperException::WRONG_DOCUMENT_ERR); } else if (m_mappingMode == true) { // OK, we haven't yet created a wrapper, so go ahead and // create one. theXalanNode = createWrapperNode(theXercesNode, 0, true); assert(theXalanNode != 0); } } } return theXalanNode; } const DOMNodeType* XercesDocumentWrapper::mapNode(XalanNode* theXalanNode) const { if (static_cast(this) == theXalanNode) { return m_xercesDocument; } else if (theXalanNode == 0 || static_cast(this) != theXalanNode->getOwnerDocument()) { throw XercesDOMWrapperException(XercesDOMWrapperException::WRONG_DOCUMENT_ERR); } else { switch(theXalanNode->getNodeType()) { case XalanNode::ATTRIBUTE_NODE: return static_cast(theXalanNode)->getXercesNode(); break; case XalanNode::CDATA_SECTION_NODE: return static_cast(theXalanNode)->getXercesNode(); break; case XalanNode::COMMENT_NODE: return static_cast(theXalanNode)->getXercesNode(); break; case XalanNode::DOCUMENT_FRAGMENT_NODE: throw XercesDOMWrapperException(XercesDOMWrapperException::NOT_SUPPORTED_ERR); break; case XalanNode::ELEMENT_NODE: return static_cast(theXalanNode)->getXercesNode(); break; case XalanNode::ENTITY_NODE: return static_cast(theXalanNode)->getXercesNode(); break; case XalanNode::ENTITY_REFERENCE_NODE: return static_cast(theXalanNode)->getXercesNode(); break; case XalanNode::NOTATION_NODE: return static_cast(theXalanNode)->getXercesNode(); break; case XalanNode::PROCESSING_INSTRUCTION_NODE: return static_cast(theXalanNode)->getXercesNode(); break; case XalanNode::TEXT_NODE: return static_cast(theXalanNode)->getXercesNode(); break; case XalanNode::DOCUMENT_TYPE_NODE: return static_cast(theXalanNode)->getXercesNode(); break; default: assert(false); break; } return 0; } } XalanAttr* XercesDocumentWrapper::mapNode(const DOMAttrType* theXercesNode) const { return static_cast(mapNode(static_cast(theXercesNode))); } XalanElement* XercesDocumentWrapper::mapNode(const DOMElementType* theXercesNode) const { return static_cast(mapNode(static_cast(theXercesNode))); } void XercesDocumentWrapper::destroyWrapper() { XALAN_USING_STD(for_each) // Set this to null, since it will be deleted // by the next for_each... m_doctype = 0; // m_bridgeMap contains all of the nodes that // are still alive... for_each( m_nodes.begin(), m_nodes.end(), DeleteFunctor(m_nodes.getMemoryManager())); // Clear everything out, since we just delete everything... m_nodes.clear(); // Clear out all of the navigators, except ours... m_navigatorAllocator.reset(); m_navigator = m_navigatorAllocator.create(this); // Clear the node map... m_nodeMap.clear(); m_indexValid = false; m_mappingMode = true; m_stringPool->clear(); } void XercesDocumentWrapper::rebuildWrapper() { destroyWrapper(); buildWrapperNodes(); } XercesWrapperNavigator& XercesDocumentWrapper::createNavigator() const { return *m_navigatorAllocator.create(const_cast(this)); } XercesDocumentTypeWrapper* XercesDocumentWrapper::createWrapperNode( const DOMDocumentType_Type* theDoctype, IndexType theIndex, bool mapNode, XercesWrapperNavigator** theWrapperNodeNavigator) const { // This is a special case, since there is only one // doctype node allowed... assert(m_doctype == 0); assert(m_xercesDocument->getDoctype() != 0 && m_xercesDocument->getDoctype() == theDoctype); // Create a navigator... XercesWrapperNavigator& theNavigator = createNavigator(); theNavigator.setIndex(theIndex); // Update the member variable for the new instance. m_doctype = XercesDocumentTypeWrapper::create(getMemoryManager(), theDoctype, theNavigator); if (mapNode == true) { m_nodeMap.addAssociation(theDoctype, m_doctype); } m_nodes.push_back(m_doctype); if (theWrapperNodeNavigator != 0) { *theWrapperNodeNavigator = &theNavigator; } return m_doctype; } XercesElementWrapper* XercesDocumentWrapper::createWrapperNode( const DOMElementType* theXercesNode, IndexType theIndex, bool mapNode, XercesWrapperNavigator** theWrapperNodeNavigator) const { // Create a navigator... XercesWrapperNavigator& theNavigator = createNavigator(); theNavigator.setIndex(theIndex); XercesElementWrapper* const theWrapper = m_elementAllocator.create(theXercesNode, theNavigator); if (m_doctype != 0 || mapNode == true) { // Add it to the node map, since we my need it for getting // elements by ID, or we're in mapping mode. m_nodeMap.addAssociation(theXercesNode, theWrapper); } if (theWrapperNodeNavigator != 0) { *theWrapperNodeNavigator = &theNavigator; } return theWrapper; } XercesTextWrapper* XercesDocumentWrapper::createWrapperNode( const DOMTextType* theXercesNode, IndexType theIndex, bool mapNode, XercesWrapperNavigator** theWrapperNodeNavigator) const { // Create a navigator... XercesWrapperNavigator& theNavigator = createNavigator(); theNavigator.setIndex(theIndex); XercesTextWrapper* const theWrapper = m_textAllocator.create(theXercesNode, theNavigator); if (mapNode == true) { // Add it to the node map... m_nodeMap.addAssociation(theXercesNode, theWrapper); } if (theWrapperNodeNavigator != 0) { *theWrapperNodeNavigator = &theNavigator; } return theWrapper; } XercesCommentWrapper* XercesDocumentWrapper::createWrapperNode( const DOMCommentType* theXercesNode, IndexType theIndex, bool mapNode, XercesWrapperNavigator** theWrapperNodeNavigator) const { // Create a navigator... XercesWrapperNavigator& theNavigator = createNavigator(); theNavigator.setIndex(theIndex); XercesCommentWrapper* const theWrapper = XercesCommentWrapper::create( getMemoryManager(), theXercesNode, theNavigator); m_nodes.push_back(theWrapper); if (mapNode == true) { // Add it to the node map... m_nodeMap.addAssociation(theXercesNode, theWrapper); } if (theWrapperNodeNavigator != 0) { *theWrapperNodeNavigator = &theNavigator; } return theWrapper; } XercesCDATASectionWrapper* XercesDocumentWrapper::createWrapperNode( const DOMCDATASectionType* theXercesNode, IndexType theIndex, bool mapNode, XercesWrapperNavigator** theWrapperNodeNavigator) const { // Create a navigator... XercesWrapperNavigator& theNavigator = createNavigator(); theNavigator.setIndex(theIndex); XercesCDATASectionWrapper* const theWrapper = XercesCDATASectionWrapper::create( getMemoryManager(), theXercesNode, theNavigator); m_nodes.push_back(theWrapper); if (mapNode == true) { // Add it to the node map... m_nodeMap.addAssociation(theXercesNode, theWrapper); } if (theWrapperNodeNavigator != 0) { *theWrapperNodeNavigator = &theNavigator; } return theWrapper; } XercesProcessingInstructionWrapper* XercesDocumentWrapper::createWrapperNode( const DOMProcessingInstructionType* theXercesNode, IndexType theIndex, bool mapNode, XercesWrapperNavigator** theWrapperNodeNavigator) const { // Create a navigator... XercesWrapperNavigator& theNavigator = createNavigator(); theNavigator.setIndex(theIndex); XercesProcessingInstructionWrapper* const theWrapper = XercesProcessingInstructionWrapper::create( getMemoryManager(), theXercesNode, theNavigator); m_nodes.push_back(theWrapper); if (mapNode == true) { // Add it to the node map... m_nodeMap.addAssociation(theXercesNode, theWrapper); } if (theWrapperNodeNavigator != 0) { *theWrapperNodeNavigator = &theNavigator; } return theWrapper; } XercesAttrWrapper* XercesDocumentWrapper::createWrapperNode( const DOMAttrType* theXercesNode, IndexType theIndex, bool /* mapNode */, XercesWrapperNavigator** theWrapperNodeNavigator) const { // Create a navigator... XercesWrapperNavigator& theNavigator = createNavigator(); theNavigator.setIndex(theIndex); XercesAttrWrapper* const theWrapper = m_attributeAllocator.create(theXercesNode, theNavigator); // Add it to the node map -- attributes ALWAYS go in the map // for now... m_nodeMap.addAssociation(theXercesNode, theWrapper); if (theWrapperNodeNavigator != 0) { *theWrapperNodeNavigator = &theNavigator; } return theWrapper; } XercesEntityWrapper* XercesDocumentWrapper::createWrapperNode( const DOMEntityType* theXercesNode, IndexType theIndex, bool /* mapNode */, XercesWrapperNavigator** theWrapperNodeNavigator) const { // Create a navigator... XercesWrapperNavigator& theNavigator = createNavigator(); theNavigator.setIndex(theIndex); XercesEntityWrapper* const theWrapper = XercesEntityWrapper::create( getMemoryManager(), theXercesNode, theNavigator); m_nodes.push_back(theWrapper); // Add it to the node map -- entities ALWAYS go in the map // for now... m_nodeMap.addAssociation(theXercesNode, theWrapper); if (theWrapperNodeNavigator != 0) { *theWrapperNodeNavigator = &theNavigator; } return theWrapper; } XercesEntityReferenceWrapper* XercesDocumentWrapper::createWrapperNode( const DOMEntityReferenceType* theXercesNode, IndexType theIndex, bool mapNode, XercesWrapperNavigator** theWrapperNodeNavigator) const { // Create a navigator... XercesWrapperNavigator& theNavigator = createNavigator(); theNavigator.setIndex(theIndex); XercesEntityReferenceWrapper* const theWrapper = XercesEntityReferenceWrapper::create( getMemoryManager(), theXercesNode, theNavigator); m_nodes.push_back(theWrapper); if (mapNode == true) { // Add it to the node map... m_nodeMap.addAssociation(theXercesNode, theWrapper); } if (theWrapperNodeNavigator != 0) { *theWrapperNodeNavigator = &theNavigator; } return theWrapper; } XercesNotationWrapper* XercesDocumentWrapper::createWrapperNode( const DOMNotationType* theXercesNode, IndexType theIndex, bool /* mapNode */, XercesWrapperNavigator** theWrapperNodeNavigator) const { // Create a navigator... XercesWrapperNavigator& theNavigator = createNavigator(); theNavigator.setIndex(theIndex); XercesNotationWrapper* const theWrapper = XercesNotationWrapper::create( getMemoryManager(), theXercesNode, theNavigator); m_nodes.push_back(theWrapper); // Add it to the node map -- notations ALWAYS go in the map // for now... m_nodeMap.addAssociation(theXercesNode, theWrapper); if (theWrapperNodeNavigator != 0) { *theWrapperNodeNavigator = &theNavigator; } return theWrapper; } XalanNode* XercesDocumentWrapper::createWrapperNode( const DOMNodeType* theXercesNode, IndexType theIndex, bool mapNode, XercesWrapperNavigator** theWrapperNodeNavigator) const { assert(theXercesNode != 0); XalanNode* theNewNode = 0; switch(theXercesNode->getNodeType()) { case DOMNodeType::ATTRIBUTE_NODE: { const DOMAttrType* theAttrNode = static_cast(theXercesNode); theNewNode = createWrapperNode(theAttrNode, theIndex, mapNode, theWrapperNodeNavigator); assert(theNewNode != 0); } break; case DOMNodeType::CDATA_SECTION_NODE: { const DOMCDATASectionType* theCDATASectionNode = static_cast(theXercesNode); theNewNode = createWrapperNode(theCDATASectionNode, theIndex, mapNode, theWrapperNodeNavigator); assert(theNewNode != 0); } break; case DOMNodeType::COMMENT_NODE: { const DOMCommentType* theCommentNode = static_cast(theXercesNode); theNewNode = createWrapperNode(theCommentNode, theIndex, mapNode, theWrapperNodeNavigator); assert(theNewNode != 0); } break; case DOMNodeType::DOCUMENT_FRAGMENT_NODE: throw XercesDOMWrapperException(XercesDOMWrapperException::NOT_SUPPORTED_ERR); break; case DOMNodeType::ELEMENT_NODE: { const DOMElementType* theElementNode = static_cast(theXercesNode); theNewNode = createWrapperNode(theElementNode, theIndex, mapNode, theWrapperNodeNavigator); assert(theNewNode != 0); } break; case DOMNodeType::ENTITY_NODE: { const DOMEntityType* theEntityNode = static_cast(theXercesNode); theNewNode = createWrapperNode(theEntityNode, theIndex, mapNode, theWrapperNodeNavigator); assert(theNewNode != 0); } break; case DOMNodeType::ENTITY_REFERENCE_NODE: { const DOMEntityReferenceType* theEntityReferenceNode = static_cast(theXercesNode); theNewNode = createWrapperNode(theEntityReferenceNode, theIndex, mapNode, theWrapperNodeNavigator); assert(theNewNode != 0); } break; case DOMNodeType::NOTATION_NODE: { const DOMNotationType* theNotationNode = static_cast(theXercesNode); theNewNode = createWrapperNode(theNotationNode, theIndex, mapNode, theWrapperNodeNavigator); assert(theNewNode != 0); } break; case DOMNodeType::PROCESSING_INSTRUCTION_NODE: { const DOMProcessingInstructionType* thePINode = static_cast(theXercesNode); theNewNode = createWrapperNode(thePINode, theIndex, mapNode, theWrapperNodeNavigator); assert(theNewNode != 0); } break; case DOMNodeType::TEXT_NODE: { const DOMTextType* theTextNode = static_cast(theXercesNode); theNewNode = createWrapperNode(theTextNode, theIndex, mapNode, theWrapperNodeNavigator); assert(theNewNode != 0); } break; case DOMNodeType::DOCUMENT_TYPE_NODE: { const DOMDocumentType_Type* theDoctypeNode = static_cast(theXercesNode); theNewNode = createWrapperNode(theDoctypeNode, theIndex, mapNode, theWrapperNodeNavigator); assert(theNewNode != 0); } break; default: assert(false); break; } return theNewNode; } void XercesDocumentWrapper::destroyNode(XalanNode* theNode) { XALAN_USING_STD(find) const NodeVectorType::iterator i = find(m_nodes.begin(), m_nodes.end(), theNode); if (i == m_nodes.end()) { // Doesn't belong to this doc, so throw... throw XercesDOMWrapperException(XercesDOMWrapperException::WRONG_DOCUMENT_ERR); } else { assert(*i != 0); // Delete the node... XalanDestroy( m_nodes.getMemoryManager(), **i); // Erase it from the map... m_nodes.erase(i); } } const XalanDOMString& XercesDocumentWrapper::getNodeName() const { assert(m_navigator != 0); return m_navigator->getPooledString(m_xercesDocument->getNodeName()); } const XalanDOMString& XercesDocumentWrapper::getNodeValue() const { assert(m_navigator != 0); return m_navigator->getPooledString(m_xercesDocument->getNodeValue()); } XercesDocumentWrapper::NodeType XercesDocumentWrapper::getNodeType() const { return DOCUMENT_NODE; } XalanNode* XercesDocumentWrapper::getParentNode() const { return 0; } const XalanNodeList* XercesDocumentWrapper::getChildNodes() const { return &m_children; } XalanNode* XercesDocumentWrapper::getFirstChild() const { assert(m_navigator != 0); return m_navigator->getFirstChild(m_xercesDocument); } XalanNode* XercesDocumentWrapper::getLastChild() const { assert(m_navigator != 0); return m_navigator->getLastChild(m_xercesDocument); } XalanNode* XercesDocumentWrapper::getPreviousSibling() const { return 0; } XalanNode* XercesDocumentWrapper::getNextSibling() const { return 0; } const XalanNamedNodeMap* XercesDocumentWrapper::getAttributes() const { return 0; } XalanDocument* XercesDocumentWrapper::getOwnerDocument() const { return 0; } const XalanDOMString& XercesDocumentWrapper::getNamespaceURI() const { assert(m_navigator != 0); return m_navigator->getPooledString(m_xercesDocument->getNamespaceURI()); } const XalanDOMString& XercesDocumentWrapper::getPrefix() const { assert(m_navigator != 0); return m_navigator->getPooledString(m_xercesDocument->getPrefix()); } const XalanDOMString& XercesDocumentWrapper::getLocalName() const { assert(m_navigator != 0); return m_navigator->getPooledString(m_xercesDocument->getLocalName()); } bool XercesDocumentWrapper::isIndexed() const { return m_indexValid; } XercesDocumentWrapper::IndexType XercesDocumentWrapper::getIndex() const { assert(m_navigator != 0); assert(m_navigator->getIndex() == 1); return m_navigator->getIndex(); } XalanElement* XercesDocumentWrapper::getDocumentElement() const { // If we're working in mapping mode, m_documentElement will // be null, so we'll have to map the node... return m_documentElement != 0 ? m_documentElement : mapNode(m_xercesDocument->getDocumentElement()); } XalanElement* XercesDocumentWrapper::getElementById(const XalanDOMString& elementId) const { const DOMNodeType* const theXercesNode = m_xercesDocument->getElementById(elementId.c_str()); if (theXercesNode == 0) { return 0; } else { return static_cast(mapNode(theXercesNode)); } } void XercesDocumentWrapper::buildWrapperNodes() { const DOMNodeType* theStartChild = m_xercesDocument->getFirstChild(); if (theStartChild != 0) { assert(m_navigator != 0); m_navigator->setIndex(1); m_navigator->setFirstChild(0); BuildWrapperTreeWalker theTreeWalker( this, m_navigator, 2, m_buildMaps); theTreeWalker.traverse(theStartChild, m_xercesDocument); } // OK, now set m_documentElement... XalanNode* theChild = m_navigator->getFirstChild(); while(theChild != 0 && theChild->getNodeType() != XalanNode::ELEMENT_NODE) { theChild = theChild->getNextSibling(); } m_documentElement = static_cast(theChild); m_indexValid = true; m_mappingMode = false; } XercesDocumentWrapper::BuildWrapperTreeWalker::BuildWrapperTreeWalker( XercesDocumentWrapper* theDocument, XercesWrapperNavigator* theDocumentNavigator, IndexType theStartIndex, bool theBuildMapsFlag) : m_document(theDocument), m_currentIndex(theStartIndex), m_parentNavigatorStack(theDocument->getMemoryManager()), m_siblingNavigatorStack(theDocument->getMemoryManager()), m_buildMaps(theBuildMapsFlag) { assert(theDocument != 0 && theDocumentNavigator != 0); // Reserve some space... m_parentNavigatorStack.reserve(100); m_parentNavigatorStack.reserve(100); // The document navigator is the last navigator on the stack... m_parentNavigatorStack.push_back(NavigatorStackEntryType(theDocumentNavigator, theDocument)); // There is no previous sibling... m_siblingNavigatorStack.push_back(NavigatorStackEntryType(0, 0)); } XercesDocumentWrapper::BuildWrapperTreeWalker::~BuildWrapperTreeWalker() { } bool XercesDocumentWrapper::BuildWrapperTreeWalker::startNode(const DOMNodeType* node) { XercesWrapperNavigator* theWrapperNodeNavigator; XalanNode* const theWrapperNode = m_document->createWrapperNode( node, m_currentIndex, m_buildMaps, &theWrapperNodeNavigator); assert(theWrapperNodeNavigator != 0); assert(m_parentNavigatorStack.empty() == false); assert(m_siblingNavigatorStack.empty() == false); // Get the two navigators... NavigatorStackEntryType& theParentEntry = m_parentNavigatorStack.back(); NavigatorStackEntryType& theSiblingEntry = m_siblingNavigatorStack.back(); theWrapperNodeNavigator->setParentNode(theParentEntry.m_node); // If the first child has not been set, then set it // now... if (theParentEntry.m_navigator->getFirstChild() == 0) { assert(theSiblingEntry.m_node == 0); theParentEntry.m_navigator->setFirstChild(theWrapperNode); } // Always set the last child... theParentEntry.m_navigator->setLastChild(theWrapperNode); theWrapperNodeNavigator->setPreviousSibling(theSiblingEntry.m_node); if (theSiblingEntry.m_navigator != 0) { theSiblingEntry.m_navigator->setNextSibling(theWrapperNode); } // Build an entry for the stacks... const NavigatorStackEntryType theCurrentEntry(theWrapperNodeNavigator, theWrapperNode); // My child nodes will now be visited, so push the current // context on the parent stack... m_parentNavigatorStack.push_back(theCurrentEntry); // My siblings will also need to know about me as well... m_siblingNavigatorStack.push_back(theCurrentEntry); // This will serve to mark the sibling context for my first child, // since it has no previous sibling. This will be popped off // when endNode() is called. m_siblingNavigatorStack.push_back(NavigatorStackEntryType(0, 0)); // Finally, increment the index counter... ++m_currentIndex; if (node->getNodeType() == DOMNodeType::DOCUMENT_TYPE_NODE) { // Special case for doctype -- we have to build its entities... const DOMDocumentType_Type* const theDoctype = static_cast(node); const DOMNamedNodeMapType* const theEntities = theDoctype->getEntities(); const XalanSize_t theLength = theEntities->getLength(); for (XalanSize_t i = 0; i < theLength; ++i) { // Build it, but don't index it... m_document->createWrapperNode(theEntities->item(i), m_currentIndex++, true); } } else if (node->getNodeType() == DOMNodeType::ELEMENT_NODE) { // Special case for element nodes -- we have to build the attributes... const DOMElementType* const theElement = static_cast(node); const DOMNamedNodeMapType* const theAttributes = theElement->getAttributes(); assert(theAttributes != 0); const XalanSize_t theLength = theAttributes->getLength(); XercesWrapperNavigator* thePreviousAttrNavigator = 0; XalanNode* thePreviousAttr = 0; for (XalanSize_t i = 0; i < theLength; ++i) { // Get the attribute from the node map... const DOMNodeType* const theAttr = theAttributes->item(i); assert(theAttr != 0); XercesWrapperNavigator* theCurrentAttrNavigator; // Create a wrapper node. XalanNode* const theCurrentAttr = m_document->createWrapperNode( theAttr, m_currentIndex, m_buildMaps, &theCurrentAttrNavigator); assert(theCurrentAttr != 0 && theCurrentAttrNavigator != 0); // Set the parent node... theCurrentAttrNavigator->setParentNode(theWrapperNode); if (thePreviousAttr != 0) { assert(thePreviousAttrNavigator != 0); // Link in the previous attribute... theCurrentAttrNavigator->setPreviousSibling(thePreviousAttr); thePreviousAttrNavigator->setNextSibling(theCurrentAttr); } // Update the pointers so they point to this attribute... thePreviousAttr = theCurrentAttr; thePreviousAttrNavigator = theCurrentAttrNavigator; // Finally, increment the index... ++m_currentIndex; } } return false; } bool XercesDocumentWrapper::BuildWrapperTreeWalker::endNode(const DOMNodeType* /* node */) { assert(m_parentNavigatorStack.empty() == false); assert(m_siblingNavigatorStack.empty() == false); // I have to pop my entry, since my children are finished... m_parentNavigatorStack.pop_back(); // Pop any sibling navigators my child pushed... while(m_siblingNavigatorStack.back().m_navigator != 0) { assert(m_siblingNavigatorStack.back().m_node != 0); m_siblingNavigatorStack.pop_back(); } // There must be a context marker... assert(m_siblingNavigatorStack.back().m_navigator == 0 && m_siblingNavigatorStack.back().m_node == 0); // Pop the context marker... m_siblingNavigatorStack.pop_back(); return false; } const XalanDOMString& XercesDocumentWrapper::getPooledString(const XalanDOMString& theString) const { return m_stringPool->get(theString); } const XalanDOMString& XercesDocumentWrapper::getPooledString( const XalanDOMChar* theString, XalanDOMString::size_type theLength) const { return m_stringPool->get(theString, theLength); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesAttrWrapper.hpp0000664000175000000640000000651711731656102024326 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESATTRWRAPPER_HEADER_GUARD_1357924680) #define XERCESATTRWRAPPER_HEADER_GUARD_1357924680 #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesWrapperNavigator; class XalanElement; class XALAN_XERCESPARSERLIAISON_EXPORT XercesAttrWrapper : public XalanAttr { public: XercesAttrWrapper( const DOMAttrType* theXercesAttr, const XercesWrapperNavigator& theNavigator); virtual ~XercesAttrWrapper(); // These interfaces are inherited from XalanAttr... virtual const XalanDOMString& getNodeName() const; virtual const XalanDOMString& getNodeValue() const; virtual NodeType getNodeType() const; virtual XalanNode* getParentNode() const; virtual const XalanNodeList* getChildNodes() const; virtual XalanNode* getFirstChild() const; virtual XalanNode* getLastChild() const; virtual XalanNode* getPreviousSibling() const; virtual XalanNode* getNextSibling() const; virtual const XalanNamedNodeMap* getAttributes() const; virtual XalanDocument* getOwnerDocument() const; virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; virtual bool isIndexed() const; virtual IndexType getIndex() const; virtual const XalanDOMString& getName() const; virtual bool getSpecified() const; virtual const XalanDOMString& getValue() const; virtual XalanElement* getOwnerElement() const; /** * Get the Xerces node this instance represent. * * @return The Xerces node */ const DOMAttrType* getXercesNode() const { return m_xercesNode; } private: // Not implemented... XercesAttrWrapper(const XercesAttrWrapper& theSource); XercesAttrWrapper& operator=(const XercesAttrWrapper& theSource); bool operator==(const XercesAttrWrapper& theRHS) const; // Data members... const DOMAttrType* const m_xercesNode; XercesNodeListWrapper m_children; const XercesWrapperNavigator& m_navigator; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESATTRBRIDGE_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesParserLiaison.hpp0000664000175000000640000005444311731656102024627 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XercesPARSERLIAISON_HEADER_GUARD_1357924680) #define XercesPARSERLIAISON_HEADER_GUARD_1357924680 // Base include file. Must be first. #include // Standard Library header files. #include // Xerces DOM header files #include // Base class header file. #include #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) #include #endif #include #if XERCES_VERSION_MAJOR >= 2 XALAN_DECLARE_XERCES_CLASS(XercesDOMParser) #else XALAN_DECLARE_XERCES_CLASS(DOMParser) #endif XALAN_DECLARE_XERCES_CLASS(SAXParser) XALAN_CPP_NAMESPACE_BEGIN class XercesDOMSupport; #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) class XercesDocumentBridge; #endif class XercesDocumentWrapper; typedef XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException SAXParseExceptionType; class XALAN_XERCESPARSERLIAISON_EXPORT XercesParserLiaison : public XMLParserLiaison, public ErrorHandler { public: typedef XERCES_CPP_NAMESPACE_QUALIFIER SAXParser SAXParserType; /** * Construct a XercesParserLiaison instance. * * @param theSupport instance of DOMSupport object * * @deprecated This constructor is deprecated. Use the next constructor instead. */ XercesParserLiaison( XercesDOMSupport& theSupport, MemoryManager& theManager XALAN_DEFAULT_MEMMGR); /** * Construct a XercesParserLiaison instance. */ XercesParserLiaison(MemoryManager& theManager XALAN_DEFAULT_MEMMGR); virtual ~XercesParserLiaison(); // These interfaces are inherited from XMLParserLiaison... MemoryManager& getMemoryManager() { return m_externalSchemaLocation.getMemoryManager(); } virtual void reset(); virtual ExecutionContext* getExecutionContext() const; virtual void setExecutionContext(ExecutionContext& theContext); virtual XalanDocument* parseXMLStream( const InputSource& reader, const XalanDOMString& identifier = XalanDOMString(XalanMemMgrs::getDummyMemMgr())); virtual void parseXMLStream( const InputSource& urlInputSource, DocumentHandler& handler, const XalanDOMString& identifier = XalanDOMString(XalanMemMgrs::getDummyMemMgr())); virtual void destroyDocument(XalanDocument* theDocument); virtual int getIndent() const; virtual void setIndent(int i); virtual bool getUseValidation() const; virtual void setUseValidation(bool b); virtual const XalanDOMString& getParserDescription(XalanDOMString& theResult) const; virtual EntityResolver* getEntityResolver() const; virtual void setEntityResolver(EntityResolver* resolver); virtual XMLEntityResolver* getXMLEntityResolver() const; virtual void setXMLEntityResolver(XMLEntityResolver* resolver); virtual ErrorHandler* getErrorHandler() const; virtual void setErrorHandler(ErrorHandler* handler); // These interfaces are new to XercesParserLiaison... /** * Create an instance of the Xerces default document that * is suitable as a raw document. The new document instance * is owned by this instance and will be destroyed when this * instance goes out of scope, or by an explicit call to * destroyDocument() * * @return a pointer to the new instance */ virtual DOMDocument_Type* createDOMFactory(); /** * Destroy an instance created by a call to createDOMFactory(). * * @theDocument a pointer to the instance to be destroyed */ virtual void destroyDocument(DOMDocument_Type* theDocument); /** Get the 'include ignorable whitespace' flag. * * This method returns the state of the parser's include ignorable * whitespace flag. * * @return 'true' if the include ignorable whitespace flag is set on * the parser, 'false' otherwise. * * @see #setIncludeIgnorableWhitespace */ virtual bool getIncludeIgnorableWhitespace() const; /** Set the 'include ignorable whitespace' flag * * This method allows the user to specify whether a validating parser * should include ignorable whitespaces as text nodes. It has no effect * on non-validating parsers which always include non-markup text. *

    When set to true (also the default), ignorable whitespaces will be * added to the DOM tree as text nodes. The method * DOMText::isWhitespace will return true for those text * nodes only. *

    When set to false, all ignorable whitespace will be discarded and * no text node is added to the DOM tree. Note: applications intended * to process the "xml:space" attribute should not set this flag to false. * * @param include The new state of the include ignorable whitespace * flag. * * @see #getIncludeIgnorableWhitespace */ virtual void setIncludeIgnorableWhitespace(bool include); /** * This method returns the state of the parser's namespace * handling capability. * * @return true, if the parser is currently configured to * understand namespaces, false otherwise. * * @see #setDoNamespaces */ virtual bool getDoNamespaces() const; /** * This method allows users to enable or disable the parser's * namespace processing. When set to true, parser starts enforcing * all the constraints / rules specified by the NameSpace * specification. * *

    The parser's default state is: false.

    * *

    This flag is ignored by the underlying scanner if the installed * validator indicates that namespace constraints should be * enforced.

    * * @param newState The value specifying whether NameSpace rules should * be enforced or not. * * @see #getDoNamespaces */ virtual void setDoNamespaces(bool newState); /** * This method returns the state of the parser's * exit-on-First-Fatal-Error flag. * * @return true, if the parser is currently configured to * exit on the first fatal error, false otherwise. * * @see #setExitOnFirstFatalError */ virtual bool getExitOnFirstFatalError() const; /** * This method allows users to set the parser's behaviour when it * encounters the first fatal error. If set to true, the parser * will exit at the first fatal error. If false, then it will * report the error and continue processing. * *

    The default value is 'true' and the parser exits on the * first fatal error.

    * * @param newState The value specifying whether the parser should * continue or exit when it encounters the first * fatal error. * * @see #getExitOnFirstFatalError */ virtual void setExitOnFirstFatalError(bool newState); /** * This method returns the location for an external schema document * for parsing. * * @return A string representing the location of the external schema document */ virtual const XalanDOMChar* getExternalSchemaLocation() const; /** * This method sets the location for an external schema document * for parsing. * * @param location A string representing the location of the external schema document */ virtual void setExternalSchemaLocation(const XalanDOMChar* location); /** * This method returns the location for an external schema document * for parsing. * * @return A string representing the location of the external schema document */ virtual const XalanDOMChar* getExternalNoNamespaceSchemaLocation() const; /** * This method sets the location for an external schema document * for parsing. * * @param location A string representing the location of the external schema document */ virtual void setExternalNoNamespaceSchemaLocation(const XalanDOMChar* location); #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) /** * This API is deprecated. * * Create a XalanDocument proxy for an existing Xerces document. * The parser liaison owns the instance, and you must not delete * it. The liaison will delete it when reset() is called, or the * liaison is destroyed. * * @deprecated The Xerces DOM bridge is deprecated. * @param theXercesDocument The Xerces document. * @return a pointer to a new XalanDocument-derived instance. */ XalanDocument* createDocument(const DOM_Document_Type& theXercesDocument) { return createDocument(theXercesDocument, m_threadSafe, m_buildBridge); } /** * This API is deprecated. * * Create a XalanDocument proxy for an existing Xerces document. * The parser liaison owns the instance, and you must not delete * it. The liaison will delete it when reset() is called, or the * liaison is destroyed. * * @deprecated The Xerces DOM bridge is deprecated. * @param theXercesDocument The Xerces document. * @param threadSafe If true, read access to the tree will be thread-safe (implies buildBridge == true). * @param buildBridge If true, the entire bridge structure is built. * @return a pointer to a new XalanDocument-derived instance. */ XalanDocument* createDocument( const DOM_Document_Type& theXercesDocument, bool threadSafe, bool buildBridge); #endif /** * Create a XalanDocument proxy for an existing Xerces document. * The parser liaison owns the instance, and you must not delete * it. The liaison will delete it when reset() is called, or the * liaison is destroyed. * * @param theXercesDocument The Xerces document. * @return a pointer to a new XalanDocument-derived instance. */ XalanDocument* createDocument(const DOMDocument_Type* theXercesDocument) { return createDocument(theXercesDocument, m_threadSafe, m_buildWrapper, m_buildMaps); } /** * Create a XalanDocument proxy for an existing Xerces document. * The parser liaison owns the instance, and you must not delete * it. The liaison will delete it when reset() is called, or the * liaison is destroyed. * * @param theXercesDocument The Xerces document. * @param threadSafe If true, read access to the tree will be thread-safe (implies buildWrapper == true). * @param buildWrapper If true, the entire wrapper structure is built. * @param buildMaps If true, the map of Xerces to Xalan nodes is always built. * @return a pointer to a new XalanDocument-derived instance. */ XalanDocument* createDocument( const DOMDocument_Type* theXercesDocument, bool threadSafe, bool buildWrapper, bool buildMaps = false); #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) /** * This API is deprecated. * * Map a pointer to a XalanDocument instance to its implementation * class pointer. Normally, you should have no reason for doing * this. The liaison will return a null pointer if it did not * create the instance passed. * * @deprecated The Xerces DOM bridge has been deprecated. * @param theDocument A pointer to a XalanDocument instance. * @return A pointer to the XercesDocumentBridge instance. */ XercesDocumentBridge* mapDocument(const XalanDocument* theDocument) const; #endif /** * Map a pointer to a XalanDocument instance to its implementation * class pointer. Normally, you should have no reason for doing * this. The liaison will return a null pointer if it did not * create the instance passed. * * @param theDocument A pointer to a XalanDocument instance. * @return A pointer to the XercesDocumentWrapper instance. */ XercesDocumentWrapper* mapDocumentToWrapper(const XalanDocument* theDocument) const; #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) /** * This API is deprecated. * * Map a pointer to a XalanDocument instance to its corresponding * class pointer. Normally, you should have no reason for doing * this. The liaison will return a null pointer if it did not * create the instance passed. * * @deprecated The Xerces DOM bridge has been deprecated. * @param theDocument A pointer to a XalanDocument instance. * @return A pointer to the XercesDocumentBridge instance. */ DOM_Document_Type mapXercesDocument(const XalanDocument* theDocument) const; #endif /** * Map a pointer to a XalanDocument instance to its corresponding * class pointer. Normally, you should have no reason for doing * this. The liaison will return a null pointer if it did not * create the instance passed. * * @param theDocument A pointer to a XalanDocument instance. * @return A pointer to the XercesDocumentBridge instance. */ const DOMDocument_Type* mapToXercesDocument(const XalanDocument* theDocument) const; // Implementations for SAX ErrorHandler virtual void warning(const SAXParseExceptionType& exception); virtual void error(const SAXParseExceptionType& exception); virtual void fatalError(const SAXParseExceptionType& exception); virtual void resetErrors(); struct DocumentEntry { #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) bool m_isDeprecated; bool isDeprecated() const { return m_isDeprecated; } #else bool isDeprecated() const { return false; } #endif bool m_isOwned; bool isOwned() const { return m_isOwned; } #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) union { XercesDocumentBridge* m_bridge; XercesDocumentWrapper* m_wrapper; }; DocumentEntry& operator=(XercesDocumentBridge* theBridge) { m_isDeprecated = true; m_bridge = theBridge; m_isOwned = true; return *this; } DocumentEntry& operator=(XercesDocumentWrapper* theWrapper) { m_isDeprecated = false; m_wrapper = theWrapper; m_isOwned = true; return *this; } #else XercesDocumentWrapper* m_wrapper; DocumentEntry& operator=(XercesDocumentWrapper* theWrapper) { m_wrapper = theWrapper; m_isOwned = true; return *this; } #endif }; typedef XalanMap DocumentMapType; /** * This API is deprecated. * * This functions returns the state of the liaison's build-bridge-nodes flag. * * @deprecated The Xerces DOM bridge is deprecated. * @return true, if the bridge nodes are automatically built, false otherwise. */ bool getBuildBridgeNodes() const { return m_buildBridge; } /** * This API is deprecated. * * This functions sets the state of the liaison's build-bridge-nodes flag. * This flag must be set for the document to be thread safe. It can also be * set to true to increase performance. If this flag is set to false, then * the thread-safe flag will also be set to false. * * @deprecated The Xerces DOM bridge is deprecated. * @param newState The new state for the flag. * */ void setBuildBridgeNodes(bool newState) { m_buildBridge = newState; if (newState == false) { m_threadSafe = false; } } /** * This functions returns the state of the liaison's build-wrapper-nodes flag. * * @return true, if the wrapper nodes are automatically built, false otherwise. */ bool getBuildWrapperNodes() const { return m_buildWrapper; } /** * This functions sets the state of the liaison's build-wrapper-nodes flag. * This flag must be set for the document to be thread safe. It can also be * set to true to increase performance. If this flag is set to false, then * the thread-safe flag will also be set to false. * * @param newState The new state for the flag. * */ void setBuildWrapperNodes(bool newState) { m_buildWrapper = newState; if (newState == false) { m_threadSafe = false; } } /** * This functions returns the state of the liaison's thread-safe flag. * If true, documents created will be safe when data is read. By default, * documents are _not_ thread-safe. * * Note -- modifications are _never_ synchronized. * * @return true, if the new documents will be thread safe, false otherwise. */ bool getThreadSafe() const { return m_threadSafe; } /** * This functions sets the state of the liaison's thread-safe flag. * This flag must be set for the document to be thread safe. If this * flag is set to true, then the build-bridge-nodes flag will also be * set to true. * * @param newState The new state for the flag. * */ void setThreadSafe(bool newState) { m_threadSafe = newState; if (m_threadSafe == true) { m_buildWrapper = true; m_buildBridge = true; } } /** * This functions returns the state of the liaison's buildMaps flag. * If true, maps will be created to allow mapping of Xalan<->Xerces mapping * in both directions for XercesWrapper classes. * * @return true, if the new documents will be built with Maps */ bool getBuildMaps() const { return m_buildMaps; } /** * This functions sets the state of the liaison's buildMaps flag. * When this flag is true, maps will be built providing Xerces<->Xalan * mapping in Wrapper classes. * * @note The maps created use a large amount of memory. If only * Xalan->Xerces node mapping is required, do not set this to true. * * @param newState The new state for the flag. * */ void setBuildMaps(bool newState) { m_buildMaps = newState; } typedef XERCES_CPP_NAMESPACE_QUALIFIER XercesDOMParser DOMParserType; protected: static void formatErrorMessage( const SAXParseExceptionType& e, XalanDOMString& theMessage); #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) /** * Create a XalanDocument proxy for an existing Xerces document. * * This API is deprecated. * * @param theXercesDocument The Xerces document. * @param threadSafe If true, read access to the tree will be thread-safe (implies buildBridge == true). * @param buildBridge If true, the entire bridge structure is built. * @return a pointer to a new XercesDocumentBridge instance. */ XercesDocumentBridge* doCreateDocument( const DOM_Document_Type& theXercesDocument, bool threadSafe, bool buildBridge); #endif /** * Create a XalanDocument proxy for an existing Xerces document. * * @param theXercesDocument The Xerces document. * @param threadSafe If true, read access to the tree will be thread-safe (implies buildBridge == true). * @param buildWrapper If true, the entire bridge structure is built. * @param buildMaps If true, the map of Xerces to Xalan nodes is always built. * @return a pointer to a new XercesDocumentWrapper instance. */ XercesDocumentWrapper* doCreateDocument( const DOMDocument_Type* theXercesDocument, bool threadSafe, bool buildWrapper, bool buildMaps, bool isOwned); private: void ensureDOMParser(); DOMParserType* createDOMParser(); SAXParserType* createSAXParser(); // Data members... int m_indent; bool m_useValidation; bool m_includeIgnorableWhitespace; bool m_doNamespaces; bool m_exitOnFirstFatalError; EntityResolver* m_entityResolver; XMLEntityResolver* m_xmlEntityResolver; ErrorHandler* m_errorHandler; XalanDOMString m_externalSchemaLocation; XalanDOMString m_externalNoNamespaceSchemaLocation; DocumentMapType m_documentMap; bool m_buildWrapper; bool m_buildBridge; bool m_threadSafe; bool m_buildMaps; ExecutionContext* m_executionContext; DOMParserType* m_domParser; }; XALAN_CPP_NAMESPACE_END #endif // XercesPARSERLIAISON_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesDOMSupport.hpp0000664000175000000640000000342511731656102024062 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESDOMSUPPORT_HEADER_GUARD_1357924680) #define XERCESDOMSUPPORT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesParserLiaison; class XALAN_XERCESPARSERLIAISON_EXPORT XercesDOMSupport : public DOMSupport { public: XercesDOMSupport(XercesParserLiaison& theLiaison); virtual ~XercesDOMSupport(); // These interfaces are inherited from DOMSupport... virtual void reset(); virtual const XalanDOMString& getUnparsedEntityURI( const XalanDOMString& theName, const XalanDocument& theDocument) const; virtual bool isNodeAfter( const XalanNode& node1, const XalanNode& node2) const; private: XercesParserLiaison& m_liaison; }; XALAN_CPP_NAMESPACE_END #endif // DOMSUPPORT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesAttrWrapperAllocator.hpp0000664000175000000640000000620311731656102026157 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESATTRWRAPPERALLOCATOR_INCLUDE_GUARD_12455133) #define XERCESATTRWRAPPERALLOCATOR_INCLUDE_GUARD_12455133 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XERCESPARSERLIAISON_EXPORT XercesAttrWrapperAllocator { public: typedef XercesAttrWrapper ObjectType; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XercesAttrWrapperAllocator(MemoryManager& theManager, size_type theBlockCount); ~XercesAttrWrapperAllocator(); /** * Create a XercesAttrWrapper instance. * * @param theXercesAttr The Xerces attribute node * @param theNavigator The navigator for this instance. * * @return pointer to the instance */ ObjectType* create( const DOMAttrType* theXercesAttr, const XercesWrapperNavigator& theNavigator); /** * Delete all objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XercesAttrWrapperAllocator(const XercesAttrWrapperAllocator&); XercesAttrWrapperAllocator& operator=(const XercesAttrWrapperAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XERCESATTRWRAPPERALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesDocumentWrapper.hpp0000664000175000000640000003642511731656102025173 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESDOCUMENTWRAPPER_HEADER_GUARD_1357924680) #define XERCESDOCUMENTWRAPPER_HEADER_GUARD_1357924680 #include #include #include #if defined(XALAN_AUTO_PTR_REQUIRES_DEFINITION) #include #endif #include #include #include #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanDOMStringPool; class XercesCommentWrapper; class XercesCDATASectionWrapper; class XercesDocumentFragmentWrapper; class XercesDocumentTypeWrapper; class XercesEntityWrapper; class XercesEntityReferenceWrapper; class XercesProcessingInstructionWrapper; class XercesNotationWrapper; class XALAN_XERCESPARSERLIAISON_EXPORT XercesDocumentWrapper : public XalanDocument { public: friend class XercesWrapperNavigator; /** * * Constructor for XercesDocumentWrapper. * * If the document will be shared amongst multiple threads of execution, * the parameter buildWrapper must be true. Otherwise, the bridge * nodes will be built on demand, a process which is not synchronized. * This could cause serious problems if multiple threads tried to visit * an unbuilt node at the same time. * * @param theXercesDocument The Xerces document to bridge * @param threadSafe If true, the tree can safely be shared amongst multiple threads. (Also implies buildWrapper == true) * @param buildWrapper If true, all of the bridge nodes will be built during construction. * @param buildMaps If true, a map of Xerces to Xalan nodes will be built, even if the bridge is built * */ XercesDocumentWrapper( MemoryManager& theManager, const DOMDocument_Type* theXercesDocument, bool threadSafe = true, bool buildWrapper = true, bool buildMaps = false); static XercesDocumentWrapper* create( MemoryManager& theManager, const DOMDocument_Type* theXercesDocument, bool threadSafe, bool buildWrapper, bool buildMaps); MemoryManager& getMemoryManager() const { return m_nodeMap.getMemoryManager(); } virtual ~XercesDocumentWrapper(); // These interfaces are inherited from XalanNode... virtual const XalanDOMString& getNodeName() const; virtual const XalanDOMString& getNodeValue() const; virtual NodeType getNodeType() const; virtual XalanNode* getParentNode() const; virtual const XalanNodeList* getChildNodes() const; virtual XalanNode* getFirstChild() const; virtual XalanNode* getLastChild() const; virtual XalanNode* getPreviousSibling() const; virtual XalanNode* getNextSibling() const; virtual const XalanNamedNodeMap* getAttributes() const; virtual XalanDocument* getOwnerDocument() const; virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; virtual bool isIndexed() const; virtual IndexType getIndex() const; virtual XalanElement* getDocumentElement() const; virtual XalanElement* getElementById(const XalanDOMString& elementId) const; // These are some special interfaces to manage relationships between // our nodes and Xerces nodes. /** * Destroy the entire bridge structure that connects * the Xerces document to this XercesDocumentWrapper * instance. This will invalidate any pointers to * any nodes in the document (except, of course, the * document itself). */ void destroyWrapper(); /** * Rebuild the entire bridge structure that connects * the Xerces document to this XercesDocumentWrapper * instance. This destroys the bridge before * rebuilding. */ void rebuildWrapper(); /** * Map a Xerces node to the corresponding wrapper node. * If the constructor for the instance was called with * the threadSafe or buildWrapper parameter equal to * true, this call will fail. * * @param theXercesNode The Xerces instance to map * * @return The pointer to the corresponding XalanNode instance, or 0 if the node could not be mapped. */ XalanNode* mapNode(const DOMNodeType* theXercesNode) const; /** * Map a Xerces node to the corresponding wrapper node. * If the constructor for the instance was called with * the threadSafe or buildWrapper parameter equal to * true, this call will fail. * * @param theXercesNode The Xerces instance to map * * @return The pointer to the corresponding XalanNode instance, or 0 if the node could not be mapped. */ XalanAttr* mapNode(const DOMAttrType* theXercesNode) const; /** * Map a Xerces node to the corresponding wrapper node. * If the constructor for the instance was called with * the threadSafe or buildWrapper parameter equal to * true, this call will fail. * * @param theXercesNode The Xerces instance to map * * @return The pointer to the corresponding XalanNode instance, or 0 if the node could not be mapped. */ XalanElement* mapNode(const DOMElementType* theXercesNode) const; /** * Map a XalanNode to the corresponding Xerces node. * If the node not owned by this document, the * function will throw XalanDOMException with the code * WRONG_DOCUMENT_ERR. * * @param theXalanNode The Xalan instance to map * * @return The pointer to the corresponding XalanNode instance, or 0 if the node could not be mapped. */ const DOMNodeType* mapNode(XalanNode* theXalanNode) const; /** * * Get the Xerces DOMDocument that this XercesDocument represents. * * @return the Xerces DOMDocument instance. * */ const DOMDocument_Type* getXercesDocument() const { return m_xercesDocument; } /** * Build the entire bridge structure. This should be done before any * processing begins, if the tree will be shared amongst multiple * threads. */ void buildWrapperNodes(); typedef XalanVector NodeVectorType; // Helper class to walk the tree and build everything... class BuildWrapperTreeWalker : public XercesDOMWalker { public: typedef XercesDOMWalker ParentType; BuildWrapperTreeWalker( XercesDocumentWrapper* theDocument, XercesWrapperNavigator* theDocumentNavigator, IndexType theStartIndex, bool theBuildMapsFlag); virtual ~BuildWrapperTreeWalker(); struct NavigatorStackEntryType { NavigatorStackEntryType( XercesWrapperNavigator* theNavigator = 0, XalanNode* theNode = 0) : m_navigator(theNavigator), m_node(theNode) { } XercesWrapperNavigator* m_navigator; XalanNode* m_node; }; typedef XalanVector NavigatorStackType; protected: virtual bool startNode(const DOMNodeType* node); virtual bool endNode(const DOMNodeType* node); using ParentType::startNode; using ParentType::endNode; private: XercesDocumentWrapper* m_document; IndexType m_currentIndex; NavigatorStackType m_parentNavigatorStack; NavigatorStackType m_siblingNavigatorStack; const bool m_buildMaps; }; /** * Get a pooled string. If the string is not in the pool, * add it. * * @param theString The string to pool. * @return A const reference to the pooled string. */ const XalanDOMString& getPooledString(const XalanDOMString& theString) const; /** * Get a pooled string. If the string is not in the pool, * add it. * * @param theString The string to pool. * @param theLength The length of the string. If XalanDOMString::npos, the string is assumed to be null-terminated. * @return A const reference to the pooled string. */ const XalanDOMString& getPooledString( const XalanDOMChar* theString, XalanDOMString::size_type theLength = XalanDOMString::npos) const; bool getMappingMode() const { return m_mappingMode; } private: // Destruction API... void destroyWrapperNode(XalanNode* theNode); // Not implemented... XercesDocumentWrapper(const XercesDocumentWrapper& theSource); XercesDocumentWrapper& operator=(const XercesDocumentWrapper& theRHS); bool operator==(const XercesDocumentWrapper& theRHS) const; // Private delete function... void destroyNode(XalanNode* theNode); // More internal implementation stuff... // Factory methods for our implementation nodes... XalanNode* createWrapperNode( const DOMNodeType* theXercesNode, IndexType theIndex, bool mapNode, XercesWrapperNavigator** theWrapperNodeNavigator = 0) const; XercesDocumentTypeWrapper* createWrapperNode( const DOMDocumentType_Type* theDoctype, IndexType theIndex, bool mapNode, XercesWrapperNavigator** theWrapperNodeNavigator = 0) const; XercesElementWrapper* createWrapperNode( const DOMElementType* theXercesNode, IndexType theIndex, bool mapNode, XercesWrapperNavigator** theWrapperNodeNavigator = 0) const; XercesTextWrapper* createWrapperNode( const DOMTextType* theXercesNode, IndexType theIndex, bool mapNode, XercesWrapperNavigator** theWrapperNodeNavigator = 0) const; XercesCommentWrapper* createWrapperNode( const DOMCommentType* theXercesNode, IndexType theIndex, bool mapNode, XercesWrapperNavigator** theWrapperNodeNavigator = 0) const; XercesCDATASectionWrapper* createWrapperNode( const DOMCDATASectionType* theXercesNode, IndexType theIndex, bool mapNode, XercesWrapperNavigator** theWrapperNodeNavigator = 0) const; XercesProcessingInstructionWrapper* createWrapperNode( const DOMProcessingInstructionType* theXercesNode, IndexType theIndex, bool mapNode, XercesWrapperNavigator** theWrapperNodeNavigator = 0) const; XercesAttrWrapper* createWrapperNode( const DOMAttrType* theXercesNode, IndexType theIndex, bool mapNode, XercesWrapperNavigator** theWrapperNodeNavigator = 0) const; XercesEntityWrapper* createWrapperNode( const DOMEntityType* theXercesNode, IndexType theIndex, bool mapNode, XercesWrapperNavigator** theWrapperNodeNavigator = 0) const; XercesEntityReferenceWrapper* createWrapperNode( const DOMEntityReferenceType* theXercesNode, IndexType theIndex, bool mapNode, XercesWrapperNavigator** theWrapperNodeNavigator = 0) const; XercesNotationWrapper* createWrapperNode( const DOMNotationType* theXercesNode, IndexType theIndex, bool mapNode, XercesWrapperNavigator** theWrapperNodeNavigator = 0) const; XercesWrapperNavigator& createNavigator() const; // This is a private helper class for building the tree... friend class BuildWrapperTreeWalker; const DOMDocument_Type* const m_xercesDocument; XalanElement* m_documentElement; mutable XercesWrapperToXalanNodeMap m_nodeMap; mutable XercesWrapperNavigatorAllocator m_navigatorAllocator; // Our navigator will be the first entry in m_navigators, // but we'll cache this so access is faster... XercesWrapperNavigator* m_navigator; XercesNodeListWrapper m_children; mutable NodeVectorType m_nodes; mutable XercesDocumentTypeWrapper* m_doctype; bool m_mappingMode; bool m_indexValid; const bool m_buildMaps; mutable XercesElementWrapperAllocator m_elementAllocator; mutable XercesTextWrapperAllocator m_textAllocator; mutable XercesAttrWrapperAllocator m_attributeAllocator; const XalanMemMgrAutoPtr m_stringPool; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESDOCUMENTWRAPPER_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesProcessingInstructionWrapper.hpp0000664000175000000640000000713711731656102027771 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESPROCESSINGINSTRUCTIONWRAPPER_HEADER_GUARD_1357924680) #define XERCESPROCESSINGINSTRUCTIONWRAPPER_HEADER_GUARD_1357924680 #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesWrapperNavigator; class XALAN_XERCESPARSERLIAISON_EXPORT XercesProcessingInstructionWrapper : public XalanProcessingInstruction { public: XercesProcessingInstructionWrapper( const DOMProcessingInstructionType* theXercesDOMProcessingInstruction, const XercesWrapperNavigator& theNavigator); static XercesProcessingInstructionWrapper* create( MemoryManager& theManager, const DOMProcessingInstructionType* theXercesDOMProcessingInstruction, const XercesWrapperNavigator& theNavigator); virtual ~XercesProcessingInstructionWrapper(); // These interfaces are inherited from XalanProcessingInstruction... virtual const XalanDOMString& getNodeName() const; virtual const XalanDOMString& getNodeValue() const; virtual NodeType getNodeType() const; virtual XalanNode* getParentNode() const; virtual const XalanNodeList* getChildNodes() const; virtual XalanNode* getFirstChild() const; virtual XalanNode* getLastChild() const; virtual XalanNode* getPreviousSibling() const; virtual XalanNode* getNextSibling() const; virtual const XalanNamedNodeMap* getAttributes() const; virtual XalanDocument* getOwnerDocument() const; virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; virtual bool isIndexed() const; virtual IndexType getIndex() const; virtual const XalanDOMString& getTarget() const; virtual const XalanDOMString& getData() const; const DOMProcessingInstructionType* getXercesNode() const { return m_xercesNode; } private: // Not implemented... XercesProcessingInstructionWrapper(const XercesProcessingInstructionWrapper& theSource); XercesProcessingInstructionWrapper& operator=(const XercesProcessingInstructionWrapper& theSource); bool operator==(const XercesProcessingInstructionWrapper& theRHS) const; // Data members... const DOMProcessingInstructionType* const m_xercesNode; const XercesWrapperNavigator& m_navigator; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESPROCESSINGINSTRUCTIONWRAPPER_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesDOMWalker.cpp0000664000175000000640000001303611731656102023625 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XercesDOMWalker.hpp" #include // Xerces header files... #include XALAN_CPP_NAMESPACE_BEGIN XercesDOMWalker::XercesDOMWalker() { } XercesDOMWalker::~XercesDOMWalker() { } const DOMNodeType* XercesDOMWalker::traverse(const DOMNodeType* pos) { assert(pos != 0); const DOMNodeType* thePos = pos; bool fStop = false; while(thePos != 0 && fStop == false) { fStop = startNode(thePos); const DOMNodeType* nextNode = thePos->getFirstChild(); while(nextNode == 0) { if (fStop == false) { fStop = endNode(thePos); } else { endNode(thePos); } nextNode = thePos->getNextSibling(); if(nextNode == 0) { thePos = thePos->getParentNode(); if(thePos == 0) { nextNode = thePos; break; } } } thePos = nextNode; } return thePos; } DOMNodeType* XercesDOMWalker::traverse(DOMNodeType* pos) { assert(pos != 0); DOMNodeType* thePos = pos; bool fStop = false; while(thePos != 0 && fStop == false) { fStop = startNode(thePos); DOMNodeType* nextNode = thePos->getFirstChild(); while(nextNode == 0) { if (fStop == false) { fStop = endNode(thePos); } else { endNode(thePos); } nextNode = thePos->getNextSibling(); if(nextNode == 0) { thePos = thePos->getParentNode(); if(thePos == 0) { nextNode = thePos; break; } } } thePos = nextNode; } return thePos; } const DOMNodeType* XercesDOMWalker::traverse( const DOMNodeType* pos, const DOMNodeType* parent) { assert(pos != 0); assert(parent != 0); const DOMNodeType* thePos = pos; bool fStop = false; while(parent != thePos && fStop == false) { fStop = startNode(thePos); const DOMNodeType* nextNode = thePos->getFirstChild(); while(nextNode == 0) { if (fStop == false) { fStop = endNode(thePos); } else { endNode(thePos); } nextNode = thePos->getNextSibling(); if(nextNode == 0) { thePos = thePos->getParentNode(); if(parent == thePos) { nextNode = thePos; break; } } } thePos = nextNode; } return thePos; } DOMNodeType* XercesDOMWalker::traverse( DOMNodeType* pos, DOMNodeType* parent) { assert(pos != 0); assert(parent != 0); DOMNodeType* thePos = pos; bool fStop = false; while(parent != thePos && fStop == false) { fStop = startNode(thePos); DOMNodeType* nextNode = thePos->getFirstChild(); while(nextNode == 0) { if (fStop == false) { fStop = endNode(thePos); } else { endNode(thePos); } nextNode = thePos->getNextSibling(); if(nextNode == 0) { thePos = thePos->getParentNode(); if(parent == thePos) { nextNode = thePos; break; } } } thePos = nextNode; } return thePos; } void XercesDOMWalker::traverseSubtree(const DOMNodeType* pos) { if (pos != 0) { startNode(pos); const DOMNodeType* const theFirstChild = pos->getFirstChild(); if (theFirstChild != 0) { traverse(theFirstChild, pos); } endNode(pos); } } void XercesDOMWalker::traverseSubtree(DOMNodeType* pos) { if (pos != 0) { startNode(pos); DOMNodeType* const theFirstChild = pos->getFirstChild(); if (theFirstChild != 0) { traverse(theFirstChild, pos); } endNode(pos); } } bool XercesDOMWalker::startNode(DOMNodeType* node) { return startNode(const_cast(node)); } bool XercesDOMWalker::endNode(DOMNodeType* node) { return endNode(const_cast(node)); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesNamedNodeMapWrapper.cpp0000664000175000000640000000421411731656102025667 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesNamedNodeMapWrapper.hpp" #include #include #include #include #include "XercesWrapperNavigator.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesNamedNodeMapWrapper::XercesNamedNodeMapWrapper( const DOMNamedNodeMapType* theXercesNamedNodeMap, const XercesWrapperNavigator& theNavigator) : m_xercesNamedNodeMap(theXercesNamedNodeMap), m_navigator(theNavigator) { assert(m_xercesNamedNodeMap != 0); } XercesNamedNodeMapWrapper::~XercesNamedNodeMapWrapper() { } XalanNode* XercesNamedNodeMapWrapper::item(XalanSize_t index) const { return m_navigator.mapNode(m_xercesNamedNodeMap->item(index)); } XalanNode* XercesNamedNodeMapWrapper::getNamedItem(const XalanDOMString& name) const { return m_navigator.mapNode(m_xercesNamedNodeMap->getNamedItem(name.c_str())); } XalanSize_t XercesNamedNodeMapWrapper::getLength() const { return m_xercesNamedNodeMap->getLength(); } XalanNode* XercesNamedNodeMapWrapper::getNamedItemNS( const XalanDOMString& namespaceURI, const XalanDOMString& localName) const { return m_navigator.mapNode( m_xercesNamedNodeMap->getNamedItemNS( namespaceURI.c_str(), localName.c_str())); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesElementWrapper.cpp0000664000175000000640000001041711731656102024772 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesElementWrapper.hpp" #include #include #include #include #include "XercesWrapperHelper.hpp" #include "XercesWrapperNavigator.hpp" #include "XercesDocumentWrapper.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesElementWrapper::XercesElementWrapper( const DOMElementType* theXercesElement, const XercesWrapperNavigator& theNavigator) : XalanElement(), m_xercesNode(theXercesElement), m_navigator(theNavigator), m_attributes(theXercesElement->getAttributes(), theNavigator) { assert(theXercesElement != 0); } XercesElementWrapper::~XercesElementWrapper() { } const XalanDOMString& XercesElementWrapper::getNodeName() const { return m_navigator.getPooledString(m_xercesNode->getNodeName()); } const XalanDOMString& XercesElementWrapper::getNodeValue() const { return m_navigator.getPooledString(m_xercesNode->getNodeValue()); } XercesElementWrapper::NodeType XercesElementWrapper::getNodeType() const { return ELEMENT_NODE; } XalanNode* XercesElementWrapper::getParentNode() const { return m_navigator.getParentNode(m_xercesNode); } const XalanNodeList* XercesElementWrapper::getChildNodes() const { return this; } XalanNode* XercesElementWrapper::getFirstChild() const { return m_navigator.getFirstChild(m_xercesNode); } XalanNode* XercesElementWrapper::getLastChild() const { return m_navigator.getLastChild(m_xercesNode); } XalanNode* XercesElementWrapper::getPreviousSibling() const { return m_navigator.getPreviousSibling(m_xercesNode); } XalanNode* XercesElementWrapper::getNextSibling() const { return m_navigator.getNextSibling(m_xercesNode); } const XalanNamedNodeMap* XercesElementWrapper::getAttributes() const { return &m_attributes; } XalanDocument* XercesElementWrapper::getOwnerDocument() const { return m_navigator.getOwnerDocument(); } const XalanDOMString& XercesElementWrapper::getNamespaceURI() const { return m_navigator.getPooledString(m_xercesNode->getNamespaceURI()); } const XalanDOMString& XercesElementWrapper::getPrefix() const { return m_navigator.getPooledString(m_xercesNode->getPrefix()); } const XalanDOMString& XercesElementWrapper::getLocalName() const { return m_navigator.getPooledString(m_xercesNode->getLocalName()); } bool XercesElementWrapper::isIndexed() const { return m_navigator.getOwnerDocument()->isIndexed(); } XercesElementWrapper::IndexType XercesElementWrapper::getIndex() const { return m_navigator.getIndex(); } const XalanDOMString& XercesElementWrapper::getTagName() const { return m_navigator.getPooledString(m_xercesNode->getTagName()); } XalanNode* XercesElementWrapper::item(XalanSize_t index) const { assert(index < getLength()); if (m_navigator.getOwnerDocument()->getMappingMode() == true) { assert(m_xercesNode->getChildNodes()->item(index)); return m_navigator.mapNode(m_xercesNode->getChildNodes()->item(index)); } else { XalanNode* child = getFirstChild(); assert(child != 0); for(XalanSize_t i = 0; i < index; ++i) { child = child->getNextSibling(); assert(child != 0); } return child; } } XalanSize_t XercesElementWrapper::getLength() const { return m_xercesNode->getChildNodes()->getLength(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesDOMWalker.hpp0000664000175000000640000001334211731656102023632 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESDOMWALKER_HEADER_GUARD_1357924680) #define XERCESDOMWALKER_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XERCESPARSERLIAISON_EXPORT XercesDOMWalker { public: /** * Constructor. */ XercesDOMWalker(); virtual ~XercesDOMWalker(); /** * Perform a document-order traversal. * * Derived classes and stop the traversal by returning * true from startNode() or endNode(). If that happens, * the function will return the next node in document * order. If desired, the caller can start traversing * the tree again from that point. Note that terminal * nodes will always have startNode() and endNode() * called before the traversal terminates. * * @param pos The node in the tree with which to start the walk * * @return 0 if the traversal completes, or the next node if the traversal doesn't complete. */ const DOMNodeType* traverse(const DOMNodeType* pos); /** * Perform a document-order traversal. * * Derived classes and stop the traversal by returning * true from startNode() or endNode(). If that happens, * the function will return the next node in document * order. If desired, the caller can start traversing * the tree again from that point. Note that terminal * nodes will always have startNode() and endNode() * called before the traversal terminates. * * @param pos The node in the tree with which to start the walk * * @return 0 if the traversal completes, or the next node if the traversal doesn't complete. */ DOMNodeType* traverse(DOMNodeType* pos); /** * Perform a document-order traversal stopping at the * provided parent node. * * Derived classes and stop the traversal by returning * true from startNode() or endNode(). If that happens, * the function will return the next node in document * order. If desired, the caller can start traversing * the tree again from that point. Note that terminal * nodes will always have startNode() and endNode() * called before the traversal terminates. * * @param pos The node in the tree with which to start the walk * @param parent The parent of pos. Note that for multiple calls that continue the traversal, this node must remain the same. * * @return parent if the traversal completes, or the next node if the traversal doesn't complete. */ const DOMNodeType* traverse( const DOMNodeType* pos, const DOMNodeType* parent); /** * Perform a document-order traversal stopping at the * provided parent node. * * Derived classes and stop the traversal by returning * true from startNode() or endNode(). If that happens, * the function will return the next node in document * order. If desired, the caller can start traversing * the tree again from that point. Note that terminal * nodes will always have startNode() and endNode() * called before the traversal terminates. * * @param pos The node in the tree with which to start the walk * @param parent The parent of pos. Note that for multiple calls that continue the traversal, this node must remain the same. * * @return parent if the traversal completes, or the next node if the traversal doesn't complete. */ DOMNodeType* traverse( DOMNodeType* pos, DOMNodeType* parent); /** * Perform a pre-order traversal. * * @param pos starting node */ void traverseSubtree(const DOMNodeType* pos); /** * Perform a document-order traversal. * * @param pos starting node */ void traverseSubtree(DOMNodeType* pos); protected: /** * Called when first walking a node * * @param node The node * * @return return false if traversal should continue, or true if it should not. */ virtual bool startNode(const DOMNodeType* node) = 0; /** * Called when first walking a node * * @param node The node * * @return return false if traversal should continue, or true if it should not. */ virtual bool startNode(DOMNodeType* node); /** * Called when leaving a node * * @param node The node * * @return return false if traversal should continue, or true if it should not. */ virtual bool endNode(const DOMNodeType* node) = 0; /** * Called when leaving a node * * @param node The node * * @return return false if traversal should continue, or true if it should not. */ virtual bool endNode(DOMNodeType* node); }; XALAN_CPP_NAMESPACE_END #endif // XERCESDOMWALKER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesNotationWrapper.cpp0000664000175000000640000001021411731656102025167 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesNotationWrapper.hpp" #include #include #include "XercesDOMWrapperException.hpp" #include "XercesWrapperHelper.hpp" #include "XercesWrapperNavigator.hpp" #include "XercesDocumentWrapper.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesNotationWrapper::XercesNotationWrapper( const DOMNotationType* theXercesDOMNotation, const XercesWrapperNavigator& theNavigator) : XalanNotation(), m_xercesNode(theXercesDOMNotation), m_navigator(theNavigator) { assert(theXercesDOMNotation != 0); } XercesNotationWrapper* XercesNotationWrapper::create( MemoryManager& theManager, const DOMNotationType* theXercesDOMNotation, const XercesWrapperNavigator& theNavigator) { typedef XercesNotationWrapper ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( theXercesDOMNotation, theNavigator); theGuard.release(); return theResult; } XercesNotationWrapper::~XercesNotationWrapper() { } const XalanDOMString& XercesNotationWrapper::getNodeName() const { return m_navigator.getPooledString(m_xercesNode->getNodeName()); } const XalanDOMString& XercesNotationWrapper::getNodeValue() const { return m_navigator.getPooledString(m_xercesNode->getNodeValue()); } XercesNotationWrapper::NodeType XercesNotationWrapper::getNodeType() const { return NOTATION_NODE; } XalanNode* XercesNotationWrapper::getParentNode() const { return m_navigator.getParentNode(m_xercesNode); } const XalanNodeList* XercesNotationWrapper::getChildNodes() const { return 0; } XalanNode* XercesNotationWrapper::getFirstChild() const { return 0; } XalanNode* XercesNotationWrapper::getLastChild() const { return 0; } XalanNode* XercesNotationWrapper::getPreviousSibling() const { return m_navigator.getPreviousSibling(m_xercesNode); } XalanNode* XercesNotationWrapper::getNextSibling() const { return m_navigator.getNextSibling(m_xercesNode); } const XalanNamedNodeMap* XercesNotationWrapper::getAttributes() const { return 0; } XalanDocument* XercesNotationWrapper::getOwnerDocument() const { return m_navigator.getOwnerDocument(); } const XalanDOMString& XercesNotationWrapper::getNamespaceURI() const { return m_navigator.getPooledString(m_xercesNode->getNamespaceURI()); } const XalanDOMString& XercesNotationWrapper::getPrefix() const { return m_navigator.getPooledString(m_xercesNode->getPrefix()); } const XalanDOMString& XercesNotationWrapper::getLocalName() const { return m_navigator.getPooledString(m_xercesNode->getLocalName()); } bool XercesNotationWrapper::isIndexed() const { return m_navigator.getOwnerDocument()->isIndexed(); } XercesNotationWrapper::IndexType XercesNotationWrapper::getIndex() const { return m_navigator.getIndex(); } const XalanDOMString& XercesNotationWrapper::getPublicId() const { return m_navigator.getPooledString(m_xercesNode->getPublicId()); } const XalanDOMString& XercesNotationWrapper::getSystemId() const { return m_navigator.getPooledString(m_xercesNode->getSystemId()); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesDOMException.cpp0000664000175000000640000000723711731656102024344 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesDOMException.hpp" #include XALAN_CPP_NAMESPACE_BEGIN template static XercesDOMException::ExceptionCode translateErrorCode(ExceptionType theException) { XercesDOMException::ExceptionCode theXalanCode = XercesDOMException::UNKNOWN_ERR; switch(theException.code) { case ExceptionType::INDEX_SIZE_ERR: theXalanCode = XercesDOMException::INDEX_SIZE_ERR; break; case ExceptionType::DOMSTRING_SIZE_ERR: theXalanCode = XercesDOMException::DOMSTRING_SIZE_ERR; break; case ExceptionType::HIERARCHY_REQUEST_ERR: theXalanCode = XercesDOMException::HIERARCHY_REQUEST_ERR; break; case ExceptionType::WRONG_DOCUMENT_ERR: theXalanCode = XercesDOMException::WRONG_DOCUMENT_ERR; break; case ExceptionType::INVALID_CHARACTER_ERR: theXalanCode = XercesDOMException::INVALID_CHARACTER_ERR; break; case ExceptionType::NO_DATA_ALLOWED_ERR: theXalanCode = XercesDOMException::NO_DATA_ALLOWED_ERR; break; case ExceptionType::NO_MODIFICATION_ALLOWED_ERR: theXalanCode = XercesDOMException::NO_MODIFICATION_ALLOWED_ERR; break; case ExceptionType::NOT_FOUND_ERR: theXalanCode = XercesDOMException::NOT_FOUND_ERR; break; case ExceptionType::NOT_SUPPORTED_ERR: theXalanCode = XercesDOMException::INDEX_SIZE_ERR; break; case ExceptionType::INUSE_ATTRIBUTE_ERR: theXalanCode = XercesDOMException::INUSE_ATTRIBUTE_ERR; break; case ExceptionType::INVALID_STATE_ERR: theXalanCode = XercesDOMException::INVALID_STATE_ERR; break; case ExceptionType::SYNTAX_ERR: theXalanCode = XercesDOMException::SYNTAX_ERR; break; case ExceptionType::INVALID_MODIFICATION_ERR: theXalanCode = XercesDOMException::INVALID_MODIFICATION_ERR; break; case ExceptionType::NAMESPACE_ERR: theXalanCode = XercesDOMException::NAMESPACE_ERR; break; case ExceptionType::INVALID_ACCESS_ERR: theXalanCode = XercesDOMException::INVALID_ACCESS_ERR; break; default: assert(false); break; }; return theXalanCode; } XercesDOMException::XercesDOMException(ExceptionCode code) : XalanDOMException(code) { } #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) XercesDOMException::XercesDOMException(const DOM_DOMExceptionType& theException) : XalanDOMException(translateErrorCode(theException)) { } #endif #if XERCES_VERSION_MAJOR >= 2 XercesDOMException::XercesDOMException(const DOMExceptionType& theException) : XalanDOMException(translateErrorCode(theException)) { } #endif XercesDOMException::XercesDOMException(const XercesDOMException& theSource) : XalanDOMException(theSource) { } XercesDOMException::~XercesDOMException() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesNamedNodeMapWrapper.hpp0000664000175000000640000000452311731656102025677 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESNAMEDNODEMAPWRAPPER_HEADER_GUARD_1357924680) #define XERCESNAMEDNODEMAPWRAPPER_HEADER_GUARD_1357924680 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesWrapperNavigator; class XALAN_XERCESPARSERLIAISON_EXPORT XercesNamedNodeMapWrapper : public XalanNamedNodeMap { public: XercesNamedNodeMapWrapper( const DOMNamedNodeMapType* theXercesNamedNodeMap, const XercesWrapperNavigator& theNavigator); virtual ~XercesNamedNodeMapWrapper(); // These interfaces are inherited from XalanNamedNodeMap... virtual XalanNode* item(XalanSize_t index) const; virtual XalanNode* getNamedItem(const XalanDOMString& name) const; virtual XalanSize_t getLength() const; virtual XalanNode* getNamedItemNS( const XalanDOMString& namespaceURI, const XalanDOMString& localName) const; private: // Not implemented... XercesNamedNodeMapWrapper(const XercesNamedNodeMapWrapper& theSource); XercesNamedNodeMapWrapper& operator=(const XercesNamedNodeMapWrapper& theRHS); bool operator==(const XercesNamedNodeMapWrapper& theRHS) const; const DOMNamedNodeMapType* const m_xercesNamedNodeMap; const XercesWrapperNavigator& m_navigator; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESNAMEDNODEMAPWRAPPER_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesElementWrapper.hpp0000664000175000000640000000670611731656102025005 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESELEMENTWRAPPER_HEADER_GUARD_1357924680) #define XERCESELEMENTWRAPPER_HEADER_GUARD_1357924680 #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesWrapperNavigator; class XALAN_XERCESPARSERLIAISON_EXPORT XercesElementWrapper : public XalanElement, private XalanNodeList { public: XercesElementWrapper( const DOMElementType* theXercesElement, const XercesWrapperNavigator& theNavigator); virtual ~XercesElementWrapper(); // These interfaces are inherited from XalanElement... virtual const XalanDOMString& getNodeName() const; virtual const XalanDOMString& getNodeValue() const; virtual NodeType getNodeType() const; virtual XalanNode* getParentNode() const; virtual const XalanNodeList* getChildNodes() const; virtual XalanNode* getFirstChild() const; virtual XalanNode* getLastChild() const; virtual XalanNode* getPreviousSibling() const; virtual XalanNode* getNextSibling() const; virtual const XalanNamedNodeMap* getAttributes() const; virtual XalanDocument* getOwnerDocument() const; virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; virtual bool isIndexed() const; virtual IndexType getIndex() const; virtual const XalanDOMString& getTagName() const; /** * Get the Xerces node this instance represent. * * @return The Xerces node */ const DOMElementType* getXercesNode() const { return m_xercesNode; } //@} private: // Implementation of XalanNodeList for children. virtual XalanNode* item(XalanSize_t index) const; virtual XalanSize_t getLength() const; // Not implemented... XercesElementWrapper(const XercesElementWrapper& theSource); XalanNode& operator=(const XalanNode& theSource); bool operator==(const XercesElementWrapper& theRHS) const; // Data members... const DOMElementType* const m_xercesNode; const XercesWrapperNavigator& m_navigator; XercesNamedNodeMapWrapper m_attributes; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESELEMENTWRAPPER_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesNotationWrapper.hpp0000664000175000000640000000660411731656102025204 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESNOTATIONWRAPPER_HEADER_GUARD_1357924680) #define XERCESNOTATIONWRAPPER_HEADER_GUARD_1357924680 #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesWrapperNavigator; class XALAN_XERCESPARSERLIAISON_EXPORT XercesNotationWrapper : public XalanNotation { public: XercesNotationWrapper( const DOMNotationType* theXercesDOMNotation, const XercesWrapperNavigator& theNavigator); static XercesNotationWrapper* create( MemoryManager& theManager, const DOMNotationType* theXercesDOMNotation, const XercesWrapperNavigator& theNavigator); virtual ~XercesNotationWrapper(); // These interfaces are inherited from XalanNotation... virtual const XalanDOMString& getNodeName() const; virtual const XalanDOMString& getNodeValue() const; virtual NodeType getNodeType() const; virtual XalanNode* getParentNode() const; virtual const XalanNodeList* getChildNodes() const; virtual XalanNode* getFirstChild() const; virtual XalanNode* getLastChild() const; virtual XalanNode* getPreviousSibling() const; virtual XalanNode* getNextSibling() const; virtual const XalanNamedNodeMap* getAttributes() const; virtual XalanDocument* getOwnerDocument() const; virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; virtual bool isIndexed() const; virtual IndexType getIndex() const; virtual const XalanDOMString& getPublicId() const; virtual const XalanDOMString& getSystemId() const; /** * Get the Xerces node this instance represent. * * @return The Xerces node */ const DOMNotationType* getXercesNode() const { return m_xercesNode; } private: // Not implemented... XercesNotationWrapper(const XercesNotationWrapper& theSource); XercesNotationWrapper& operator=(const XercesNotationWrapper& theSource); bool operator==(const XercesNotationWrapper& theRHS) const; // Data members... const DOMNotationType* const m_xercesNode; const XercesWrapperNavigator& m_navigator; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESNOTATIONWRAPPER_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesCommentWrapper.cpp0000664000175000000640000000770411731656102025010 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesCommentWrapper.hpp" #include #include #include "XercesWrapperHelper.hpp" #include "XercesWrapperNavigator.hpp" #include "XercesDOMWrapperException.hpp" #include "XercesDocumentWrapper.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesCommentWrapper::XercesCommentWrapper( const DOMCommentType* theXercesComment, const XercesWrapperNavigator& theNavigator) : XalanComment(), m_xercesNode(theXercesComment), m_navigator(theNavigator) { assert(theXercesComment != 0); } XercesCommentWrapper* XercesCommentWrapper::create( MemoryManager& theManager, const DOMCommentType* theXercesComment, const XercesWrapperNavigator& theNavigator) { typedef XercesCommentWrapper ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( theXercesComment, theNavigator); theGuard.release(); return theResult; } XercesCommentWrapper::~XercesCommentWrapper() { } const XalanDOMString& XercesCommentWrapper::getNodeName() const { return m_navigator.getPooledString(m_xercesNode->getNodeName()); } const XalanDOMString& XercesCommentWrapper::getNodeValue() const { return m_navigator.getPooledString(m_xercesNode->getNodeValue()); } XercesCommentWrapper::NodeType XercesCommentWrapper::getNodeType() const { return COMMENT_NODE; } XalanNode* XercesCommentWrapper::getParentNode() const { return m_navigator.getParentNode(m_xercesNode); } const XalanNodeList* XercesCommentWrapper::getChildNodes() const { return 0; } XalanNode* XercesCommentWrapper::getFirstChild() const { return 0; } XalanNode* XercesCommentWrapper::getLastChild() const { return 0; } XalanNode* XercesCommentWrapper::getPreviousSibling() const { return m_navigator.getPreviousSibling(m_xercesNode); } XalanNode* XercesCommentWrapper::getNextSibling() const { return m_navigator.getNextSibling(m_xercesNode); } const XalanNamedNodeMap* XercesCommentWrapper::getAttributes() const { return 0; } XalanDocument* XercesCommentWrapper::getOwnerDocument() const { return m_navigator.getOwnerDocument(); } const XalanDOMString& XercesCommentWrapper::getNamespaceURI() const { return m_navigator.getPooledString(m_xercesNode->getNamespaceURI()); } const XalanDOMString& XercesCommentWrapper::getPrefix() const { return m_navigator.getPooledString(m_xercesNode->getPrefix()); } const XalanDOMString& XercesCommentWrapper::getLocalName() const { return m_navigator.getPooledString(m_xercesNode->getLocalName()); } bool XercesCommentWrapper::isIndexed() const { return m_navigator.getOwnerDocument()->isIndexed(); } XercesCommentWrapper::IndexType XercesCommentWrapper::getIndex() const { return m_navigator.getIndex(); } const XalanDOMString& XercesCommentWrapper::getData() const { return m_navigator.getPooledString(m_xercesNode->getData()); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesDOMException.hpp0000664000175000000640000000554011731656102024344 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESDOMEXCEPTION_HEADER_GUARD_1357924680) #define XERCESDOMEXCEPTION_HEADER_GUARD_1357924680 #include #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) #include #endif #include #include #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) #include #endif #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XERCESPARSERLIAISON_EXPORT XercesDOMException : public XalanDOMException { public: /** @name Constructors and assignment operator */ //@{ /** * Constructor which takes an error code. * * @param code The error code which indicates the exception */ explicit XercesDOMException(ExceptionCode code = UNKNOWN_ERR); #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) /** * This constructor is deprecated. * * Constructor which takes a Xerces exception and * translates it into a XercesDOMException. * * @deprecated The Xerces DOM bridge is deprecated. * @param code The Xerces DOM_DOMException instance. */ XercesDOMException(const DOM_DOMExceptionType& theException); #endif #if XERCES_VERSION_MAJOR >= 2 /** * Constructor which takes a Xerces exception and * translates it into a XercesDOMException. * * @param code The Xerces DOMException instance. */ XercesDOMException(const DOMExceptionType& theException); #endif /** * Copy constructor. * * @param other The object to be copied. */ XercesDOMException(const XercesDOMException& theSource); //@} /** @name Destructor. */ //@{ /** * Destructor for XercesDOMException. */ virtual ~XercesDOMException(); //@} private: }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESDOMEXCEPTION_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesLiaisonXalanDOMStringPool.cpp0000664000175000000640000000431711731656102027005 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XercesLiaisonXalanDOMStringPool.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesLiaisonXalanDOMStringPool::XercesLiaisonXalanDOMStringPool(MemoryManager& theManager) : ParentType(theManager), m_mutex(&theManager) { } XercesLiaisonXalanDOMStringPool* XercesLiaisonXalanDOMStringPool:: create(MemoryManager& theManager) { typedef XercesLiaisonXalanDOMStringPool ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType(theManager); theGuard.release(); return theResult; } XercesLiaisonXalanDOMStringPool::~XercesLiaisonXalanDOMStringPool() { } void XercesLiaisonXalanDOMStringPool::clear() { XMLMutexLockType theLock(&m_mutex); ParentType::clear(); } size_t XercesLiaisonXalanDOMStringPool::size() const { XMLMutexLockType theLock(&m_mutex); return ParentType::size(); } const XalanDOMString& XercesLiaisonXalanDOMStringPool::get(const XalanDOMString& theString) { XMLMutexLockType theLock(&m_mutex); return ParentType::get(theString); } const XalanDOMString& XercesLiaisonXalanDOMStringPool::get( const XalanDOMChar* theString, XalanDOMString::size_type theLength) { XMLMutexLockType theLock(&m_mutex); return ParentType::get(theString, theLength); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/FormatterToXercesDOM.cpp0000664000175000000640000002152111731656102024644 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "FormatterToXercesDOM.hpp" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "XercesDOMException.hpp" XALAN_CPP_NAMESPACE_BEGIN const XalanDOMString FormatterToXercesDOM::s_emptyString(XalanMemMgrs::getDummyMemMgr()); FormatterToXercesDOM::FormatterToXercesDOM( DOMDocument_Type* doc, DOMDocumentFragmentType* docFrag, DOMElementType* currentElement, MemoryManager& theManager) : FormatterListener(OUTPUT_METHOD_DOM), m_doc(doc), m_docFrag(docFrag), m_currentElem(currentElement), m_elemStack(theManager), m_buffer(theManager), m_textBuffer(theManager) { assert(m_doc != 0 && m_docFrag != 0); } FormatterToXercesDOM::FormatterToXercesDOM( DOMDocument_Type* doc, DOMElementType* elem, MemoryManager& theManager) : FormatterListener(OUTPUT_METHOD_DOM), m_doc(doc), m_docFrag(0), m_currentElem(elem), m_elemStack(theManager), m_buffer(theManager), m_textBuffer(theManager) { assert(m_doc != 0); } FormatterToXercesDOM::~FormatterToXercesDOM() { } void FormatterToXercesDOM::setDocumentLocator(const Locator* const /* locator */) { // No action for the moment. } void FormatterToXercesDOM::startDocument() { // No action for the moment. } void FormatterToXercesDOM::endDocument() { try { // Process any remaining text, in case we're // appending to a DOMDocumentFragment. processAccumulatedText(); } catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException& theException) { throw XercesDOMException(theException); } } void FormatterToXercesDOM::startElement( const XMLCh* const name, AttributeListType& attrs) { try { processAccumulatedText(); DOMElementType* const elem = createElement(name, attrs); assert(elem != 0); append(elem); m_elemStack.push_back(m_currentElem); m_currentElem = elem; } catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException& theException) { throw XercesDOMException(theException); } } void FormatterToXercesDOM::endElement(const XMLCh* const /* name */) { try { processAccumulatedText(); if(m_elemStack.empty() == false) { m_currentElem = m_elemStack.back(); m_elemStack.pop_back(); } else { m_currentElem = 0; } } catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException& theException) { throw XercesDOMException(theException); } } void FormatterToXercesDOM::characters( const XMLCh* const chars, const size_type length) { m_textBuffer.append(chars, length); } void FormatterToXercesDOM::charactersRaw( const XMLCh* const chars, const size_type length) { try { processAccumulatedText(); cdata(chars, length); } catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException& theException) { throw XercesDOMException(theException); } } void FormatterToXercesDOM::entityReference(const XMLCh* const name) { try { processAccumulatedText(); append(m_doc->createEntityReference(name)); } catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException& theException) { throw XercesDOMException(theException); } } void FormatterToXercesDOM::ignorableWhitespace( const XMLCh* const chars, const size_type length) { try { processAccumulatedText(); m_buffer.assign(chars, length); append(m_doc->createTextNode(m_buffer.c_str())); } catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException& theException) { throw XercesDOMException(theException); } } void FormatterToXercesDOM::processingInstruction( const XMLCh* const target, const XMLCh* const data) { try { processAccumulatedText(); append(m_doc->createProcessingInstruction(target, data)); } catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException& theException) { throw XercesDOMException(theException); } } void FormatterToXercesDOM::resetDocument() { } void FormatterToXercesDOM::comment(const XMLCh* const data) { try { processAccumulatedText(); append(m_doc->createComment(data)); } catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException& theException) { throw XercesDOMException(theException); } } void FormatterToXercesDOM::cdata( const XMLCh* const ch, const size_type length) { try { processAccumulatedText(); m_buffer.assign(ch, length); append(m_doc->createCDATASection(m_buffer.c_str())); } catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException& theException) { throw XercesDOMException(theException); } } void FormatterToXercesDOM::append(DOMNodeType* newNode) { assert(newNode != 0); if(0 != m_currentElem) { m_currentElem->appendChild(newNode); } else if(0 != m_docFrag) { m_docFrag->appendChild(newNode); } else { m_doc->appendChild(newNode); } } DOMElementType* FormatterToXercesDOM::createElement( const XalanDOMChar* theElementName, AttributeListType& attrs) { DOMElementType* theElement = 0; if (m_prefixResolver == 0) { theElement = m_doc->createElement(theElementName); addAttributes(theElement, attrs); } else { // Check for the namespace... const XalanDOMString* const theNamespace = DOMServices::getNamespaceForPrefix(theElementName, *m_prefixResolver, false, m_buffer); if (theNamespace == 0 || theNamespace->empty() == true) { theElement = m_doc->createElement(theElementName); } else { theElement = m_doc->createElementNS(theNamespace->c_str(), theElementName); } addAttributes(theElement, attrs); } return theElement; } void FormatterToXercesDOM::addAttributes( DOMElementType* theElement, AttributeListType& attrs) { const XalanSize_t nAtts = attrs.getLength(); if (m_prefixResolver == 0) { for (XalanSize_t i = 0; i < nAtts; i++) { theElement->setAttribute(attrs.getName(i), attrs.getValue(i)); } } else { for (XalanSize_t i = 0; i < nAtts; i++) { const XalanDOMChar* const theName = attrs.getName(i); assert(theName != 0); // Check for the namespace... const XalanDOMString* const theNamespace = DOMServices::getNamespaceForPrefix(theName, *m_prefixResolver, true, m_buffer); if (theNamespace == 0 || theNamespace->empty() == true) { theElement->setAttribute(theName, attrs.getValue(i)); } else { theElement->setAttributeNS(theNamespace->c_str(), theName, attrs.getValue(i)); } } } } void FormatterToXercesDOM::processAccumulatedText() { if (m_textBuffer.empty() == false) { append(m_doc->createTextNode(m_textBuffer.c_str())); m_textBuffer.clear(); } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesCommentWrapper.hpp0000664000175000000640000000655311731656102025016 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESCOMMENTWRAPPER_HEADER_GUARD_1357924680) #define XERCESCOMMENTWRAPPER_HEADER_GUARD_1357924680 #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesWrapperNavigator; class XALAN_XERCESPARSERLIAISON_EXPORT XercesCommentWrapper : public XalanComment { public: XercesCommentWrapper( const DOMCommentType* theXercesComment, const XercesWrapperNavigator& theNavigator); static XercesCommentWrapper* create( MemoryManager& theManager, const DOMCommentType* theXercesComment, const XercesWrapperNavigator& theNavigator); virtual ~XercesCommentWrapper(); // These interfaces are inherited from XalanComment... virtual const XalanDOMString& getNodeName() const; virtual const XalanDOMString& getNodeValue() const; virtual NodeType getNodeType() const; virtual XalanNode* getParentNode() const; virtual const XalanNodeList* getChildNodes() const; virtual XalanNode* getFirstChild() const; virtual XalanNode* getLastChild() const; virtual XalanNode* getPreviousSibling() const; virtual XalanNode* getNextSibling() const; virtual const XalanNamedNodeMap* getAttributes() const; virtual XalanDocument* getOwnerDocument() const; virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; virtual bool isIndexed() const; virtual IndexType getIndex() const; virtual const XalanDOMString& getData() const; // These interfaces are new to XercesCommentWrapper... /** * Get the Xerces node this instance represent. * * @return The Xerces node */ const DOMCommentType* getXercesNode() const { return m_xercesNode; } //@} private: // Not implemented... XercesCommentWrapper(const XercesCommentWrapper& theSource); XercesCommentWrapper& operator=(const XercesCommentWrapper& theSource); bool operator==(const XercesCommentWrapper& theRHS) const; // Data members... const DOMCommentType* const m_xercesNode; const XercesWrapperNavigator& m_navigator; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESCOMMENTWRAPPER_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesLiaisonXalanDOMStringPool.hpp0000664000175000000640000000506711731656102027015 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESLIAISONXALANDOMSTRINGPOOL_HEADER_GUARD_1357924680) #define XERCESLIAISONXALANDOMSTRINGPOOL_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN // A version of XalanDOMStringPool which is synchronized using a Xerces Mutex. class XALAN_XERCESPARSERLIAISON_EXPORT XercesLiaisonXalanDOMStringPool : public XalanDOMStringPool { public: typedef XalanDOMStringPool ParentType; typedef XERCES_CPP_NAMESPACE_QUALIFIER XMLMutex XMLMutexType; typedef XERCES_CPP_NAMESPACE_QUALIFIER XMLMutexLock XMLMutexLockType; explicit XercesLiaisonXalanDOMStringPool(MemoryManager& theManager); static XercesLiaisonXalanDOMStringPool* create(MemoryManager& theManager); virtual ~XercesLiaisonXalanDOMStringPool(); // These are inherited from XalanDOMStringPool... virtual void clear(); virtual size_t size() const; virtual const XalanDOMString& get(const XalanDOMString& theString); virtual const XalanDOMString& get( const XalanDOMChar* theString, XalanDOMString::size_type theLength = XalanDOMString::npos); private: // Not implemented, for now... XercesLiaisonXalanDOMStringPool(const XercesLiaisonXalanDOMStringPool&); XercesLiaisonXalanDOMStringPool& operator=(const XercesLiaisonXalanDOMStringPool&); bool operator==(const XercesLiaisonXalanDOMStringPool&) const; // Data members... mutable XMLMutexType m_mutex; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESLIAISONXALANDOMSTRINGPOOL_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesDOMFormatterWalker.cpp0000664000175000000640000000743511731656102025517 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XercesDOMFormatterWalker.hpp" // Xerces header files... #include #include #include #include #include "XercesNamedNodeMapAttributeList.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesDOMFormatterWalker::XercesDOMFormatterWalker(FormatterListener& formatterListener) : XercesDOMWalker(), m_formatterListener(formatterListener) { } XercesDOMFormatterWalker::~XercesDOMFormatterWalker() { } bool XercesDOMFormatterWalker::startNode(const DOMNodeType* node) { assert(node != 0); switch(node->getNodeType()) { case DOMNodeType::COMMENT_NODE: { m_formatterListener.comment(node->getNodeValue()); } break; case DOMNodeType::DOCUMENT_FRAGMENT_NODE: // ?? break; case DOMNodeType::DOCUMENT_NODE: m_formatterListener.startDocument(); break; case DOMNodeType::ELEMENT_NODE: { const DOMElementType* const theElementNode = static_cast(node); const DOMNamedNodeMapType* const atts = theElementNode->getAttributes(); assert(atts != 0); XercesNamedNodeMapAttributeList theAttributeList(atts); m_formatterListener.startElement( theElementNode->getNodeName(), theAttributeList); } break; case DOMNodeType::PROCESSING_INSTRUCTION_NODE: { m_formatterListener.processingInstruction( node->getNodeName(), node->getNodeValue()); } break; case DOMNodeType::CDATA_SECTION_NODE: { const XMLCh* const data = node->getNodeValue(); assert(length(data) == FormatterListener::size_type(length(data))); m_formatterListener.cdata(data, FormatterListener::size_type(length(data))); } break; case DOMNodeType::TEXT_NODE: { const XMLCh* const data = node->getNodeValue(); assert(length(data) == FormatterListener::size_type(length(data))); m_formatterListener.characters(data, FormatterListener::size_type(length(data))); } break; case DOMNodeType::ENTITY_REFERENCE_NODE: m_formatterListener.entityReference(node->getNodeName()); break; default: // Do nothing... break; } return false; } bool XercesDOMFormatterWalker::endNode(const DOMNodeType* node) { assert(node != 0); switch(node->getNodeType()) { case DOMNodeType::DOCUMENT_NODE: m_formatterListener.endDocument(); break; case DOMNodeType::ELEMENT_NODE: m_formatterListener.endElement(node->getNodeName()); break; default: // Do nothing break; } return false; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesWrapperTypes.hpp0000664000175000000640000000673611731656102024523 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESWRAPPERTYPES_HEADER_GUARD_1357924680) #define XERCESWRAPPERTYPES_HEADER_GUARD_1357924680 #include XALAN_DECLARE_XERCES_CLASS(DOMAttr) XALAN_DECLARE_XERCES_CLASS(DOMCharacterData) XALAN_DECLARE_XERCES_CLASS(DOMComment) XALAN_DECLARE_XERCES_CLASS(DOMCDATASection) XALAN_DECLARE_XERCES_CLASS(DOMDocument) XALAN_DECLARE_XERCES_CLASS(DOMDocumentFragment) XALAN_DECLARE_XERCES_CLASS(DOMImplementation) XALAN_DECLARE_XERCES_CLASS(DOMElement) XALAN_DECLARE_XERCES_CLASS(DOMEntity) XALAN_DECLARE_XERCES_CLASS(DOMEntityReference) XALAN_DECLARE_XERCES_CLASS(DOMNode) XALAN_DECLARE_XERCES_CLASS(DOMText) XALAN_DECLARE_XERCES_CLASS(DOMNamedNodeMap) XALAN_DECLARE_XERCES_CLASS(DOMNodeList) XALAN_DECLARE_XERCES_CLASS(DOMNotation) XALAN_DECLARE_XERCES_CLASS(DOMProcessingInstruction) XALAN_DECLARE_XERCES_CLASS(DOMText) XALAN_DECLARE_XERCES_CLASS(DOMDocumentType) XALAN_DECLARE_XERCES_CLASS(DOMException) XALAN_CPP_NAMESPACE_BEGIN typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMAttr DOMAttrType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMCharacterData DOMCharacterDataType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMComment DOMCommentType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMCDATASection DOMCDATASectionType; // These next two have an extra '_' because they collide without it... typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentType DOMDocumentType_Type; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument DOMDocument_Type; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentFragment DOMDocumentFragmentType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMImplementation DOMImplementationType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMElement DOMElementType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMEntity DOMEntityType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMEntityReference DOMEntityReferenceType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMNode DOMNodeType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMText DOMTextType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMNamedNodeMap DOMNamedNodeMapType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMNodeList DOMNodeListType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMNotation DOMNotationType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMProcessingInstruction DOMProcessingInstructionType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMText DOMTextType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMException DOMExceptionType; typedef XMLSize_t XMLSizeType; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESWRAPPERTYPES_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/FormatterToXercesDOM.hpp0000664000175000000640000001276011731656102024656 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FORMATTERTOXERCESDOM_HEADER_GUARD_1357924680) #define FORMATTERTOXERCESDOM_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include // Base class header file. #include #include #include XALAN_CPP_NAMESPACE_BEGIN /** * This class takes SAX events (in addition to some extra events that SAX * doesn't handle yet) and adds the result to a document or document fragment. */ class XALAN_XERCESPARSERLIAISON_EXPORT FormatterToXercesDOM : public FormatterListener { public: /** * Construct a FormatterToXercesDOM instance. it will add the DOM nodes * to the document fragment. * * @param doc document for nodes * @param docFrag document fragment for nodes * @param currentElement current element for nodes */ FormatterToXercesDOM( DOMDocument_Type* doc, DOMDocumentFragmentType* docFrag, DOMElementType* currentElement, MemoryManager& theManager XALAN_DEFAULT_MEMMGR); /** * Construct a FormatterToXercesDOM instance. it will add the DOM nodes * to the document. * * @param doc document for nodes * @param elem current element for nodes */ FormatterToXercesDOM( DOMDocument_Type* doc, DOMElementType* currentElement, MemoryManager& theManager XALAN_DEFAULT_MEMMGR); virtual ~FormatterToXercesDOM(); // These methods are inherited from FormatterListener... virtual void charactersRaw( const XMLCh* const chars, const size_type length); virtual void comment(const XMLCh* const data); virtual void cdata( const XMLCh* const ch, const size_type length); virtual void entityReference(const XMLCh* const name); virtual void setDocumentLocator(const Locator* const locator); virtual void startDocument(); virtual void endDocument(); virtual void startElement( const XMLCh* const name, AttributeListType& attrs); virtual void endElement(const XMLCh* const name); virtual void characters( const XMLCh* const chars, const size_type length); virtual void ignorableWhitespace( const XMLCh* const chars, const size_type length); virtual void processingInstruction( const XMLCh* const target, const XMLCh* const data); virtual void resetDocument(); DOMDocument_Type* getDocument() const { return m_doc; } void setDocument(DOMDocument_Type* theDocument) { m_doc = theDocument; } DOMDocumentFragmentType* getDocumentFragment() const { return m_docFrag; } void setDocumentFragment(DOMDocumentFragmentType* theDocumentFragment) { m_docFrag = theDocumentFragment; } DOMElementType* getCurrentElement() const { return m_currentElem; } void setCurrentElement(DOMElementType* theElement) { m_currentElem = theElement; } private: /** * Process any accumulated text and create a node for it. */ void processAccumulatedText(); /** * Append a node to the current container. */ void append(DOMNodeType* newNode); /** * Create the appropriate element, complete with attributes set. * * @param theElementName The name for the new element * @param attrs The SAX AttributeList for the new attributes. * @return A pointer to the new instance. */ DOMElementType* createElement( const XalanDOMChar* theElementName, AttributeListType& attrs); void addAttributes( DOMElementType* theElement, AttributeListType& attrs); // Data members... DOMDocument_Type* m_doc; DOMDocumentFragmentType* m_docFrag; DOMElementType* m_currentElem; typedef XalanVector ElementStackType; ElementStackType m_elemStack; XalanDOMString m_buffer; XalanDOMString m_textBuffer; static const XalanDOMString s_emptyString; }; XALAN_CPP_NAMESPACE_END #endif // FORMATTERTODOM_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesWrapperToXalanNodeMap.cpp0000664000175000000640000000351411731656102026213 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesWrapperToXalanNodeMap.hpp" #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN XercesWrapperToXalanNodeMap::XercesWrapperToXalanNodeMap(MemoryManager& theManager) : m_xercesMap(theManager) { } XercesWrapperToXalanNodeMap::~XercesWrapperToXalanNodeMap() { } void XercesWrapperToXalanNodeMap::addAssociation( const DOMNodeType* theXercesNode, XalanNode* theXalanNode) { m_xercesMap.insert(XercesNodeMapType::value_type(theXercesNode, theXalanNode)); } void XercesWrapperToXalanNodeMap::clear() { m_xercesMap.clear(); } XalanNode* XercesWrapperToXalanNodeMap::getNode(const DOMNodeType* theXercesNode) const { const XercesNodeMapType::const_iterator i = m_xercesMap.find(theXercesNode); if (i == m_xercesMap.end()) { return 0; } else { return (*i).second; } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesEntityWrapper.cpp0000664000175000000640000001057611731656102024663 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesEntityWrapper.hpp" #include #include #include "XercesDOMWrapperException.hpp" #include "XercesWrapperHelper.hpp" #include "XercesWrapperNavigator.hpp" #include "XercesDocumentWrapper.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesEntityWrapper::XercesEntityWrapper( const DOMEntityType* theXercesDOMEntity, const XercesWrapperNavigator& theNavigator) : XalanEntity(), m_xercesNode(theXercesDOMEntity), m_navigator(theNavigator), m_children(m_xercesNode->getChildNodes(), theNavigator) { assert(theXercesDOMEntity != 0); } XercesEntityWrapper* XercesEntityWrapper::create( MemoryManager& theManager, const DOMEntityType* theXercesDOMEntity, const XercesWrapperNavigator& theNavigator) { typedef XercesEntityWrapper ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( theXercesDOMEntity, theNavigator); theGuard.release(); return theResult; } XercesEntityWrapper::~XercesEntityWrapper() { } const XalanDOMString& XercesEntityWrapper::getNodeName() const { return m_navigator.getPooledString(m_xercesNode->getNodeName()); } const XalanDOMString& XercesEntityWrapper::getNodeValue() const { return m_navigator.getPooledString(m_xercesNode->getNodeValue()); } XercesEntityWrapper::NodeType XercesEntityWrapper::getNodeType() const { return ENTITY_NODE; } XalanNode* XercesEntityWrapper::getParentNode() const { return m_navigator.getParentNode(m_xercesNode); } const XalanNodeList* XercesEntityWrapper::getChildNodes() const { return &m_children; } XalanNode* XercesEntityWrapper::getFirstChild() const { return m_navigator.getFirstChild(m_xercesNode); } XalanNode* XercesEntityWrapper::getLastChild() const { return m_navigator.getLastChild(m_xercesNode); } XalanNode* XercesEntityWrapper::getPreviousSibling() const { return m_navigator.getPreviousSibling(m_xercesNode); } XalanNode* XercesEntityWrapper::getNextSibling() const { return m_navigator.getNextSibling(m_xercesNode); } const XalanNamedNodeMap* XercesEntityWrapper::getAttributes() const { return 0; } XalanDocument* XercesEntityWrapper::getOwnerDocument() const { return m_navigator.getOwnerDocument(); } const XalanDOMString& XercesEntityWrapper::getNamespaceURI() const { return m_navigator.getPooledString(m_xercesNode->getNamespaceURI()); } const XalanDOMString& XercesEntityWrapper::getPrefix() const { return m_navigator.getPooledString(m_xercesNode->getPrefix()); } const XalanDOMString& XercesEntityWrapper::getLocalName() const { return m_navigator.getPooledString(m_xercesNode->getLocalName()); } bool XercesEntityWrapper::isIndexed() const { return m_navigator.getOwnerDocument()->isIndexed(); } XercesEntityWrapper::IndexType XercesEntityWrapper::getIndex() const { return m_navigator.getIndex(); } const XalanDOMString& XercesEntityWrapper::getPublicId() const { return m_navigator.getPooledString(m_xercesNode->getPublicId()); } const XalanDOMString& XercesEntityWrapper::getSystemId() const { return m_navigator.getPooledString(m_xercesNode->getSystemId()); } const XalanDOMString& XercesEntityWrapper::getNotationName() const { return m_navigator.getPooledString(m_xercesNode->getNotationName()); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesDOMFormatterWalker.hpp0000664000175000000640000000343411731656102025517 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESDOMFORMATTERWALKER_HEADER_GUARD_1357924680) #define XERCESDOMFORMATTERWALKER_HEADER_GUARD_1357924680 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class FormatterListener; class XALAN_XERCESPARSERLIAISON_EXPORT XercesDOMFormatterWalker : public XercesDOMWalker { public: typedef XercesDOMWalker ParentType; /** * Constructor. */ XercesDOMFormatterWalker(FormatterListener& theFormatterListener); virtual ~XercesDOMFormatterWalker(); protected: virtual bool startNode(const DOMNodeType* node); virtual bool endNode(const DOMNodeType* node); using ParentType::startNode; using ParentType::endNode; private: FormatterListener& m_formatterListener; }; XALAN_CPP_NAMESPACE_END #endif // XERCESDOMFORMATTERWALKER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesWrapperHelper.cpp0000664000175000000640000000214511731656102024617 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesWrapperHelper.hpp" #include #include #include "XercesDOMWrapperException.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesWrapperHelper& XercesWrapperHelper::operator=(const XercesWrapperHelper&) { return *this; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesWrapperToXalanNodeMap.hpp0000664000175000000640000000354211731656102026221 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESWRAPPERTOXALANNODEMAP_HEADER_GUARD_1357924680) #define XERCESWRAPPERTOXALANNODEMAP_HEADER_GUARD_1357924680 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanNode; class XALAN_XERCESPARSERLIAISON_EXPORT XercesWrapperToXalanNodeMap { public: typedef XalanMap XercesNodeMapType; XercesWrapperToXalanNodeMap(MemoryManager& theManager); ~XercesWrapperToXalanNodeMap(); MemoryManager& getMemoryManager() { return m_xercesMap.getMemoryManager(); } void addAssociation( const DOMNodeType* theXercesNode, XalanNode* theXalanNode); void clear(); XalanNode* getNode(const DOMNodeType* theXercesNode) const; private: XercesNodeMapType m_xercesMap; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESWRAPPERTOXALANNODEMAP_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesDocumentTypeWrapper.cpp0000664000175000000640000001165111731656102026022 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesDocumentTypeWrapper.hpp" #include #include #include "XercesWrapperHelper.hpp" #include "XercesWrapperNavigator.hpp" #include "XercesDOMWrapperException.hpp" #include "XercesDocumentWrapper.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesDocumentTypeWrapper::XercesDocumentTypeWrapper( const DOMDocumentType_Type* theXercesDOMDocumentType, const XercesWrapperNavigator& theNavigator) : XalanDocumentType(), m_xercesNode(theXercesDOMDocumentType), m_entities(m_xercesNode->getEntities(), theNavigator), m_notations(m_xercesNode->getNotations(), theNavigator), m_navigator(theNavigator) { assert(theXercesDOMDocumentType != 0); } XercesDocumentTypeWrapper* XercesDocumentTypeWrapper::create( MemoryManager& theManager, const DOMDocumentType_Type* theXercesDOMDocumentType, const XercesWrapperNavigator& theNavigator) { typedef XercesDocumentTypeWrapper ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( theXercesDOMDocumentType, theNavigator); theGuard.release(); return theResult; } XercesDocumentTypeWrapper::~XercesDocumentTypeWrapper() { } const XalanDOMString& XercesDocumentTypeWrapper::getNodeName() const { return m_navigator.getPooledString(m_xercesNode->getNodeName()); } const XalanDOMString& XercesDocumentTypeWrapper::getNodeValue() const { return m_navigator.getPooledString(m_xercesNode->getNodeValue()); } XercesDocumentTypeWrapper::NodeType XercesDocumentTypeWrapper::getNodeType() const { return DOCUMENT_TYPE_NODE; } XalanNode* XercesDocumentTypeWrapper::getParentNode() const { return m_navigator.getParentNode(m_xercesNode); } const XalanNodeList* XercesDocumentTypeWrapper::getChildNodes() const { return 0; } XalanNode* XercesDocumentTypeWrapper::getFirstChild() const { return 0; } XalanNode* XercesDocumentTypeWrapper::getLastChild() const { return 0; } XalanNode* XercesDocumentTypeWrapper::getPreviousSibling() const { return m_navigator.getPreviousSibling(m_xercesNode); } XalanNode* XercesDocumentTypeWrapper::getNextSibling() const { return m_navigator.getNextSibling(m_xercesNode); } const XalanNamedNodeMap* XercesDocumentTypeWrapper::getAttributes() const { return 0; } XalanDocument* XercesDocumentTypeWrapper::getOwnerDocument() const { return m_navigator.getOwnerDocument(); } const XalanDOMString& XercesDocumentTypeWrapper::getNamespaceURI() const { return m_navigator.getPooledString(m_xercesNode->getNamespaceURI()); } const XalanDOMString& XercesDocumentTypeWrapper::getPrefix() const { return m_navigator.getPooledString(m_xercesNode->getPrefix()); } const XalanDOMString& XercesDocumentTypeWrapper::getLocalName() const { return m_navigator.getPooledString(m_xercesNode->getLocalName()); } bool XercesDocumentTypeWrapper::isIndexed() const { return m_navigator.getOwnerDocument()->isIndexed(); } XercesDocumentTypeWrapper::IndexType XercesDocumentTypeWrapper::getIndex() const { return m_navigator.getIndex(); } const XalanDOMString& XercesDocumentTypeWrapper::getName() const { return m_navigator.getPooledString(m_xercesNode->getName()); } const XalanNamedNodeMap* XercesDocumentTypeWrapper::getEntities() const { return &m_entities; } const XalanNamedNodeMap* XercesDocumentTypeWrapper::getNotations() const { return &m_notations; } const XalanDOMString& XercesDocumentTypeWrapper::getPublicId() const { return m_navigator.getPooledString(m_xercesNode->getPublicId()); } const XalanDOMString& XercesDocumentTypeWrapper::getSystemId() const { return m_navigator.getPooledString(m_xercesNode->getSystemId()); } const XalanDOMString& XercesDocumentTypeWrapper::getInternalSubset() const { return m_navigator.getPooledString(m_xercesNode->getInternalSubset()); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesEntityWrapper.hpp0000664000175000000640000000665711731656102024675 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESENTITYWRAPPER_HEADER_GUARD_1357924680) #define XERCESENTITYWRAPPER_HEADER_GUARD_1357924680 #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XercesWrapperNavigator; class XALAN_XERCESPARSERLIAISON_EXPORT XercesEntityWrapper : public XalanEntity { public: XercesEntityWrapper( const DOMEntityType* theXercesDOMEntity, const XercesWrapperNavigator& theNavigator); static XercesEntityWrapper* create( MemoryManager& theManager, const DOMEntityType* theXercesDOMEntity, const XercesWrapperNavigator& theNavigator); virtual ~XercesEntityWrapper(); // These interfaces are inherited from XalanEntity... virtual const XalanDOMString& getNodeName() const; virtual const XalanDOMString& getNodeValue() const; virtual NodeType getNodeType() const; virtual XalanNode* getParentNode() const; virtual const XalanNodeList* getChildNodes() const; virtual XalanNode* getFirstChild() const; virtual XalanNode* getLastChild() const; virtual XalanNode* getPreviousSibling() const; virtual XalanNode* getNextSibling() const; virtual const XalanNamedNodeMap* getAttributes() const; virtual XalanDocument* getOwnerDocument() const; virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; virtual bool isIndexed() const; virtual IndexType getIndex() const; virtual const XalanDOMString& getPublicId() const; virtual const XalanDOMString& getSystemId() const; virtual const XalanDOMString& getNotationName() const; const DOMEntityType* getXercesNode() const { return m_xercesNode; } private: // Not implemented... XercesEntityWrapper(const XercesEntityWrapper& theSource); XercesEntityWrapper& operator=(const XercesEntityWrapper& theSource); bool operator==(const XercesEntityWrapper& theRHS) const; // Data members... const DOMEntityType* const m_xercesNode; const XercesWrapperNavigator& m_navigator; XercesNodeListWrapper m_children; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XERCESENTITYWRAPPER_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XercesParserLiaison/XercesNodeListWrapper.cpp0000664000175000000640000000354011731656102025121 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesNodeListWrapper.hpp" #include #include #include "XercesWrapperNavigator.hpp" XALAN_CPP_NAMESPACE_BEGIN XercesNodeListWrapper::XercesNodeListWrapper( const DOMNodeListType* theXercesNodeList, const XercesWrapperNavigator& theNavigator) : XalanNodeList(), m_xercesNodeList(theXercesNodeList), m_navigator(theNavigator) { assert(theXercesNodeList != 0); } XercesNodeListWrapper::~XercesNodeListWrapper() { } XercesNodeListWrapper::XercesNodeListWrapper(const XercesNodeListWrapper& theSource) : XalanNodeList(theSource), m_xercesNodeList(theSource.m_xercesNodeList), m_navigator(theSource.m_navigator) { } XalanNode* XercesNodeListWrapper::item(XalanSize_t index) const { assert(m_xercesNodeList != 0); return m_navigator.mapNode(m_xercesNodeList->item(index)); } XalanSize_t XercesNodeListWrapper::getLength() const { assert(m_xercesNodeList != 0); return m_xercesNodeList->getLength(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanTransformer/0002775000175000000640000000000012037700125017515 5ustar stevesambaxalan-c-1.11/c/src/xalanc/XalanTransformer/XalanCompiledStylesheet.hpp0000664000175000000640000000270411731656102025026 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANCOMPILEDSTYLESHEET_HEADER_GUARD) #define XALANCOMPILEDSTYLESHEET_HEADER_GUARD // Base include file. Must be first. #include XALAN_CPP_NAMESPACE_BEGIN class StylesheetRoot; /** * This is an abstraction of the StylesheetRoot class. It is designed * to allow a XalanTranfomer object to reuse a compliled stylesheet. */ class XALAN_TRANSFORMER_EXPORT XalanCompiledStylesheet { public: virtual ~XalanCompiledStylesheet() {} virtual const StylesheetRoot* getStylesheetRoot() const = 0; }; XALAN_CPP_NAMESPACE_END #endif // XALANCOMPILEDSTYLESHEET_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XalanTransformer/XalanCompiledStylesheetDefault.cpp0000664000175000000640000001046511731656102026331 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanCompiledStylesheetDefault.hpp" #include XALAN_CPP_NAMESPACE_BEGIN class SetAndRestoreHandlers { public: SetAndRestoreHandlers( XMLParserLiaison& theParserLiaison, ErrorHandler* theErrorHandler, EntityResolver* theEntityResolver) : m_parserLiaison(theParserLiaison), m_errorHandler(theParserLiaison.getErrorHandler()), m_entityResolver(theParserLiaison.getEntityResolver()) { if (theErrorHandler != 0) { theParserLiaison.setErrorHandler(theErrorHandler); } if (theEntityResolver != 0) { theParserLiaison.setEntityResolver(theEntityResolver); } } ~SetAndRestoreHandlers() { m_parserLiaison.setEntityResolver(m_entityResolver); m_parserLiaison.setErrorHandler(m_errorHandler); } private: XMLParserLiaison& m_parserLiaison; ErrorHandler* const m_errorHandler; EntityResolver* const m_entityResolver; }; inline const StylesheetRoot* compileStylesheet( const XSLTInputSource& theStylesheetSource, XSLTEngineImpl& theProcessor, StylesheetConstructionContextDefault& theConstructionContext, ErrorHandler* theErrorHandler, EntityResolver* theEntityResolver) { const SetAndRestoreHandlers theSetAndRestore( theProcessor.getXMLParserLiaison(), theErrorHandler, theEntityResolver); return theProcessor.processStylesheet(theStylesheetSource, theConstructionContext); } XalanCompiledStylesheetDefault::XalanCompiledStylesheetDefault( MemoryManager& theManager, const XSLTInputSource& theStylesheetSource, XSLTEngineImpl& theProcessor, ErrorHandler* theErrorHandler, EntityResolver* theEntityResolver): XalanCompiledStylesheet(), m_stylesheetXPathFactory(theManager), m_stylesheetConstructionContext( theManager, theProcessor, m_stylesheetXPathFactory), m_stylesheetRoot( compileStylesheet( theStylesheetSource, theProcessor, m_stylesheetConstructionContext, theErrorHandler, theEntityResolver)) { } XalanCompiledStylesheetDefault* XalanCompiledStylesheetDefault::create( MemoryManager& theManager, const XSLTInputSource& theStylesheetSource, XSLTEngineImpl& theProcessor, ErrorHandler* theErrorHandler, EntityResolver* theEntityResolver) { typedef XalanCompiledStylesheetDefault ThisType; XalanAllocationGuard theGuard( theManager, theManager.allocate(sizeof(ThisType))); ThisType* theResult = new (theGuard.get()) ThisType( theManager, theStylesheetSource, theProcessor, theErrorHandler, theEntityResolver); theGuard.release(); return theResult; } XalanCompiledStylesheetDefault::~XalanCompiledStylesheetDefault() { } const StylesheetRoot* XalanCompiledStylesheetDefault::getStylesheetRoot() const { return m_stylesheetRoot; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanTransformer/XalanCAPI.cpp0000664000175000000640000003465311731656102021737 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanTransformerDefinitions.hpp" #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include "XalanCAPI.h" #include "XalanTransformer.hpp" #include "XalanParsedSource.hpp" #include "xalanc/Include/XalanMemoryManagement.hpp" XALAN_USING_STD(istrstream) XALAN_USING_XALAN(XalanAllocationGuard) XALAN_USING_XALAN(XalanCompiledStylesheet) XALAN_USING_XALAN(XalanDOMString) XALAN_USING_XALAN(XalanParsedSource) XALAN_USING_XALAN(XalanTransformer) XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XERCES(MemoryManager) XALAN_USING_XALAN(XalanMemMgrAutoPtr) XALAN_USING_XALAN(XalanMemMgrs) XALAN_USING_XALAN(XSLTInputSource) XALAN_USING_XALAN(XSLTResultTarget) static bool fInitialized = false; XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanInitialize() { try { // Call the static initializer for Xerces. XMLPlatformUtils::Initialize(); // Initialize Xalan. XalanTransformer::initialize(XalanMemMgrs::getDefaultXercesMemMgr()); fInitialized = true; } catch(...) { } return fInitialized == true ? 0 : -1; } XALAN_TRANSFORMER_EXPORT_FUNCTION(void) XalanTerminate(int fCleanUpICU) { // Terminate Xalan. XalanTransformer::terminate(); // Call the static terminator for Xerces. XMLPlatformUtils::Terminate(); // Call the cleanup function for the ICU, // if requested. if (fCleanUpICU) { XalanTransformer::ICUCleanUp(); } } XALAN_TRANSFORMER_EXPORT_FUNCTION(XalanHandle) CreateXalanTransformer() { MemoryManager& theManager = XalanMemMgrs::getDefaultXercesMemMgr(); // Create a XalanTransformer object. typedef XalanTransformer ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType(theManager); theGuard.release(); return theResult; } inline XalanTransformer* getTransformer(XalanHandle theHandle) { assert(theHandle != 0); return static_cast(theHandle); } inline const XalanCompiledStylesheet* getStylesheet(XalanCSSHandle theHandle) { assert(theHandle != 0); return reinterpret_cast(theHandle); } inline const XalanParsedSource* getParsedSource(XalanPSHandle theHandle) { assert(theHandle != 0); return reinterpret_cast(theHandle); } XALAN_TRANSFORMER_EXPORT_FUNCTION(void) DeleteXalanTransformer(XalanHandle theXalanHandle) { // Delete a XalanTransformer object. XalanTransformer* transformer = getTransformer(theXalanHandle); transformer->~XalanTransformer(); XalanMemMgrs::getDefaultXercesMemMgr().deallocate(transformer); } XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanTransformToFile( const char* theXMLFileName, const char* theXSLFileName, const char* theOutFileName, XalanHandle theXalanHandle) { if(theXSLFileName == 0) { return getTransformer(theXalanHandle)->transform( XSLTInputSource(theXMLFileName, XalanMemMgrs::getDefaultXercesMemMgr()), XSLTResultTarget(theOutFileName, XalanMemMgrs::getDefaultXercesMemMgr())); } else { return getTransformer(theXalanHandle)->transform( XSLTInputSource(theXMLFileName, XalanMemMgrs::getDefaultXercesMemMgr()), XSLTInputSource(theXSLFileName, XalanMemMgrs::getDefaultXercesMemMgr()), XSLTResultTarget(theOutFileName, XalanMemMgrs::getDefaultXercesMemMgr())); } } XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanTransformToFilePrebuilt( XalanPSHandle theParsedSource, XalanCSSHandle theCSSHandle, const char* theOutFileName, XalanHandle theXalanHandle) { // Do the transformation... return getTransformer(theXalanHandle)->transform( *getParsedSource(theParsedSource), getStylesheet(theCSSHandle), XSLTResultTarget(theOutFileName, XalanMemMgrs::getDefaultXercesMemMgr())); } XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanTransformToData( const char* theXMLFileName, const char* theXSLFileName, char** theOutput, XalanHandle theXalanHandle) { XALAN_USING_STD(ostrstream) int status = 0; ostrstream theOutputStream; XalanTransformer* const theTransformer = getTransformer(theXalanHandle); MemoryManager& theMemoryManager = theTransformer->getMemoryManager(); if(theXSLFileName == 0) { status = theTransformer->transform( XSLTInputSource(theXMLFileName, theMemoryManager), XSLTResultTarget(theOutputStream, theMemoryManager)); } else { status = theTransformer->transform( XSLTInputSource(theXMLFileName, theMemoryManager), XSLTInputSource(theXSLFileName, theMemoryManager), XSLTResultTarget(theOutputStream, theMemoryManager)); } if (status == 0) { // Null-terminate the data. theOutputStream << '\0'; *theOutput = theOutputStream.str(); } return status; } XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanTransformToDataPrebuilt( XalanPSHandle theParsedSource, XalanCSSHandle theCSSHandle, char** theOutput, XalanHandle theXalanHandle) { XALAN_USING_STD(ostrstream) ostrstream theOutputStream; // Do the transformation... const int status = getTransformer(theXalanHandle)->transform( *getParsedSource(theParsedSource), getStylesheet(theCSSHandle), XSLTResultTarget(theOutputStream, XalanMemMgrs::getDefaultXercesMemMgr())); if (status == 0) { // Null-terminate the data. theOutputStream << '\0'; *theOutput = theOutputStream.str(); } return status; } XALAN_TRANSFORMER_EXPORT_FUNCTION(void) XalanFreeData(char* theStream) { // Delete the data. delete[] theStream; } XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanTransformToHandler( const char* theXMLFileName, const char* theXSLFileName, XalanHandle theXalanHandle, void* theOutputHandle, XalanOutputHandlerType theOutputHandler, XalanFlushHandlerType theFlushHandler) { XalanTransformer* const theTransformer = getTransformer(theXalanHandle); MemoryManager& theMemoryManager = theTransformer->getMemoryManager(); // Do the transformation... return theTransformer->transform( XSLTInputSource(theXMLFileName, theMemoryManager), XSLTInputSource(theXSLFileName, theMemoryManager), theOutputHandle, theOutputHandler, theFlushHandler); } XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanTransformToHandlerPrebuilt( XalanPSHandle theParsedSource, XalanCSSHandle theCSSHandle, XalanHandle theXalanHandle, void* theOutputHandle, XalanOutputHandlerType theOutputHandler, XalanFlushHandlerType theFlushHandler) { // Do the transformation... return getTransformer(theXalanHandle)->transform( *getParsedSource(theParsedSource), getStylesheet(theCSSHandle), theOutputHandle, theOutputHandler, theFlushHandler); } XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanCompileStylesheet( const char* theXSLFileName, XalanHandle theXalanHandle, XalanCSSHandle* theCSSHandle) { XalanTransformer* const theTransformer = getTransformer(theXalanHandle); MemoryManager& theMemoryManager = theTransformer->getMemoryManager(); const XalanCompiledStylesheet* theCompiledStylesheet = 0; const int theResult = theTransformer->compileStylesheet( XSLTInputSource(theXSLFileName, theMemoryManager), theCompiledStylesheet); if (theResult == 0) { *theCSSHandle = theCompiledStylesheet; } return theResult; } XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanCompileStylesheetFromStream( const char* theXSLStream, unsigned long theXSLStreamLength, XalanHandle theXalanHandle, XalanCSSHandle* theCSSHandle) { XalanTransformer* const theTransformer = getTransformer(theXalanHandle); MemoryManager& theMemoryManager = theTransformer->getMemoryManager(); const XalanCompiledStylesheet* theCompiledStylesheet = 0; istrstream theInputStream(theXSLStream, theXSLStreamLength); const int theResult = theTransformer->compileStylesheet( XSLTInputSource(theInputStream, theMemoryManager), theCompiledStylesheet); if (theResult == 0) { *theCSSHandle = theCompiledStylesheet; } return theResult; } XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanDestroyCompiledStylesheet( XalanCSSHandle theCSSHandle, XalanHandle theXalanHandle) { return getTransformer(theXalanHandle)->destroyStylesheet(getStylesheet(theCSSHandle)); } XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanParseSource( const char* theXMLFileName, XalanHandle theXalanHandle, XalanPSHandle* thePSHandle) { XalanTransformer* const theTransformer = getTransformer(theXalanHandle); MemoryManager& theMemoryManager = theTransformer->getMemoryManager(); const XalanParsedSource* theParsedSource = 0; const int theResult = theTransformer->parseSource( XSLTInputSource(theXMLFileName, theMemoryManager), theParsedSource); if (theResult == 0) { *thePSHandle = theParsedSource; } return theResult; } XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanParseSourceFromStream( const char* theXMLStream, unsigned long theXMLStreamLength, XalanHandle theXalanHandle, XalanPSHandle* thePSHandle) { XalanTransformer* const theTransformer = getTransformer(theXalanHandle); MemoryManager& theMemoryManager = theTransformer->getMemoryManager(); const XalanParsedSource* theParsedSource = 0; istrstream theInputStream(theXMLStream, theXMLStreamLength); const int theResult = theTransformer->parseSource( XSLTInputSource(theInputStream, theMemoryManager), theParsedSource); if (theResult == 0) { *thePSHandle = theParsedSource; } return theResult; } XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanDestroyParsedSource( XalanPSHandle thePSHandle, XalanHandle theXalanHandle) { return getTransformer(theXalanHandle)->destroyParsedSource(getParsedSource(thePSHandle)); } XALAN_TRANSFORMER_EXPORT_FUNCTION(void) XalanSetStylesheetParam( const char* key, const char* expression, XalanHandle theXalanHandle) { getTransformer(theXalanHandle)->setStylesheetParam( key, expression); } XALAN_TRANSFORMER_EXPORT_FUNCTION(void) XalanSetStylesheetParamUTF( const XalanUTF16Char* key, const XalanUTF16Char* expression, XalanHandle theXalanHandle) { getTransformer(theXalanHandle)->setStylesheetParam( XalanDOMString(key, XalanMemMgrs::getDefaultXercesMemMgr()), XalanDOMString(expression, XalanMemMgrs::getDefaultXercesMemMgr())); } XALAN_TRANSFORMER_EXPORT_FUNCTION(void) XalanSetStylesheetParamNodeset( const char* key, XalanPSHandle theNodeset, XalanHandle theXalanHandle) { getTransformer(theXalanHandle)->setStylesheetParam( key, getParsedSource(theNodeset)->getDocument()); } XALAN_TRANSFORMER_EXPORT_FUNCTION(void) XalanSetStylesheetParamUTFNodeset( const XalanUTF16Char* key, XalanPSHandle theNodeset, XalanHandle theXalanHandle) { getTransformer(theXalanHandle)->setStylesheetParam( XalanDOMString(key, XalanMemMgrs::getDefaultXercesMemMgr()), getParsedSource(theNodeset)->getDocument()); } XALAN_TRANSFORMER_EXPORT_FUNCTION(void) XalanSetStylesheetParamNumber( const char* key, double theNumber, XalanHandle theXalanHandle) { getTransformer(theXalanHandle)->setStylesheetParam( key, theNumber); } XALAN_TRANSFORMER_EXPORT_FUNCTION(void) XalanSetStylesheetParamUTFNumber( const XalanUTF16Char* key, double theNumber, XalanHandle theXalanHandle) { getTransformer(theXalanHandle)->setStylesheetParam( XalanDOMString(key, XalanMemMgrs::getDefaultXercesMemMgr()), theNumber); } XALAN_TRANSFORMER_EXPORT_FUNCTION(void) XalanClearStylesheetParams( XalanHandle theXalanHandle) { getTransformer(theXalanHandle)->clearStylesheetParams(); } XALAN_TRANSFORMER_EXPORT_FUNCTION(XalanCCharPtr) XalanGetLastError(XalanHandle theXalanHandle) { // Get the last error. return getTransformer(theXalanHandle)->getLastError(); } xalan-c-1.11/c/src/xalanc/XalanTransformer/XalanCompiledStylesheetDefault.hpp0000664000175000000640000000563111731656102026335 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANCOMPILEDSTYLESHEETDEFAULT_HEADER_GUARD) #define XALANCOMPILEDSTYLESHEETDEFAULT_HEADER_GUARD // Base include file. Must be first. #include #include #include #include #include #include #include #include #include XALAN_DECLARE_XERCES_CLASS(EntityResolver) XALAN_DECLARE_XERCES_CLASS(ErrorHandler) XALAN_CPP_NAMESPACE_BEGIN typedef XERCES_CPP_NAMESPACE_QUALIFIER EntityResolver EntityResolverType; typedef XERCES_CPP_NAMESPACE_QUALIFIER ErrorHandler ErrorHandlerType; XALAN_USING_XERCES(EntityResolver) XALAN_USING_XERCES(ErrorHandler) class XALAN_TRANSFORMER_EXPORT XalanCompiledStylesheetDefault : public XalanCompiledStylesheet { public: XalanCompiledStylesheetDefault( MemoryManager& theManager, const XSLTInputSource& theStylesheetSource, XSLTEngineImpl& theProcessor, ErrorHandler* theErrorHandler = 0, EntityResolver* theEntityResolver = 0); static XalanCompiledStylesheetDefault* create( MemoryManager& theManager, const XSLTInputSource& theStylesheetSource, XSLTEngineImpl& theProcessor, ErrorHandler* theErrorHandler = 0, EntityResolver* theEntityResolver = 0); virtual ~XalanCompiledStylesheetDefault(); virtual const StylesheetRoot* getStylesheetRoot() const; private: XPathFactoryBlock m_stylesheetXPathFactory; StylesheetConstructionContextDefault m_stylesheetConstructionContext; const StylesheetRoot* const m_stylesheetRoot; }; XALAN_CPP_NAMESPACE_END #endif // XALANCOMPILEDSTYLESHEETDEFAULT_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XalanTransformer/XalanCAPI.h0000664000175000000640000004300311731656102021371 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_CAPI_HEADER_GUARD_1357924680) #define XALAN_CAPI_HEADER_GUARD_1357924680 #include /** * This is a simple C interface for the class XalanTransformer. It's * the user's responsibility to call XalanInitialize() before making * any other API calls, and to call XalanTerminate() when finished * with the API. * * After calling XalanTransformToData or XalanTransformToDataCSS, the user * should call XalanFreeData to release the memory allocated by that * operation. */ #if defined(__cplusplus) extern "C" { #endif /** * Handle used to store the address of XalanTransformer instance. */ typedef void* XalanHandle; /** * Handle used to store the address of Compiled Stylesheet instance. */ typedef const void* XalanCSSHandle; /** * Handle used to store the address of Parsed Source instance. */ typedef const void* XalanPSHandle; /** * This is a typedef to work around limitations with * the XALAN_TRANSFORMER_EXPORT_FUNCTION macro. */ typedef const char* XalanCCharPtr; /** * This is a typedef for characters encoded in UTF-16. */ typedef XMLCh XalanUTF16Char; /** * Initialize Xerces and Xalan. * * Should be called only once per process before making * any other API calls. * * @return 0 if successful, -1 if initialization fails. */ XALAN_TRANSFORMER_EXPORT_FUNCTION(int) #if defined(__cplusplus) XalanInitialize(); #else XalanInitialize(void); #endif /** * Terminate Xalan and Xerces. * * Should be called only once per process after deleting all * instances of XalanTransformer. * * Once a process has called this function, it cannot use the * API until another call to XalanInitialize has been made. * * Optionally, if the ICU has been integrated, this will * call the ICU clean up function. This must only be done * if the ICU will no longer be used by the process, since * the ICU will no longer be in a usable state. See the * ICU documentation for more details. * * This is handy when using leak-detection software, as all * static data allocated by Xalan (and optionally, the ICU) * will be freed. * * @param fCleanUpICU If true, call the ICU clean up function. */ XALAN_TRANSFORMER_EXPORT_FUNCTION(void) XalanTerminate(int fCleanUpICU); /** * Create a XalanTransformer instance. * * @return the XalanTransformer handle */ XALAN_TRANSFORMER_EXPORT_FUNCTION(XalanHandle) CreateXalanTransformer(); /** * Delete a XalanTransformer instance. * * @param theXalanHandle The XalanTransformer to destroy. */ XALAN_TRANSFORMER_EXPORT_FUNCTION(void) DeleteXalanTransformer(XalanHandle theXalanHandle); /** * Transform the XML source tree to the given result file. * The processor will apply the stylesheet file to the input * file and write the transformation result to a new output file. * * @param theXMLFileName The file name of the XML document. * @param theXSLFileName The file name of the stylesheet XML document. * @param theOutFileName The file name for the output. * @param theXalanHandle The handle of a XalanTransformer instance. * @return 0 for success */ XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanTransformToFile( const char* theXMLFileName, const char* theXSLFileName, const char* theOutFileName, XalanHandle theXalanHandle); /** * Transform the XML source tree to the given result file. * The processor will apply the compiled stylesheet to the input * file and write the transformation result to a new output file. * * @param theParsedSource The handle of a parsed source * @param theCSSHandle The handle of a compiled stylesheet * @param theOutFileName The file name for the output. * @param theXalanHandle The handle of a XalanTransformer instance. * @return 0 for success */ XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanTransformToFilePrebuilt( XalanPSHandle theParsedSource, XalanCSSHandle theCSSHandle, const char* theOutFileName, XalanHandle theXalanHandle); /** * Transform the XML source tree to a dynamically allocated buffer. * The processor will apply the stylesheet file to the input file * and assign the address of the dynamically allocated result to a * user-supplied pointer. The user must call XalanFreeData with this * pointer to free the memory. * * @param theXMLFileName The file name of the XML document. * @param theXSLFileName The file name of the stylesheet XML document. * @param theOutput a pointer to a char* * @param theXalanHandle handle of XalanTransformer instance. * @return 0 for success */ XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanTransformToData( const char* theXMLFileName, const char* theXSLFileName, char** theOutput, XalanHandle theXalanHandle); /** * Transform the XML source tree to a dynamically-allocated buffer. * The processor will apply the compiled stylesheet to the input file * and assign the address of the dynamically allocated result to a * user supplied pointer. The user must call XalanFreeData with this * pointer to free the memory. * * @param theParsedSource The handle of a parsed source * @param theCSSHandle The handle of compiled stylesheet * @param theOutput a pointer to a char* * @param theXalanHandle handle of XalanTransformer instance. * @return 0 for success */ XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanTransformToDataPrebuilt( XalanPSHandle theParsedSource, XalanCSSHandle theCSSHandle, char** theOutput, XalanHandle theXalanHandle); /** * Free memory allocated as a result of calling * XalanTransformToData. * * @param theData The address of character data. */ XALAN_TRANSFORMER_EXPORT_FUNCTION(void) XalanFreeData(char* theData); /** * Transform the XML source tree to a callback function. * The processor will apply the stylesheet file to the input file * and allocate the transformation result to a callback function * in pre-allocated blocks. Once the transformation is complete, * a second callback, to flush the buffer, is called. You can pass * in NULL if you do not wish to implement a flush callback. Xalan * will release any memory allocated upon termination, and data passed * to the callback is not guaranteed to be null terminated. * * See XalanTransformerDefinitions.hpp for more details. * * @param theXMLFileName The file name of XML input source * @param theXSLFileName The file name of stylesheet source * @param theXalanHandle The handle of a XalanTransformer instance. * @param theOutputHandle A void pointer passed through to callback. * @param theOutputHandler A user-defined callback function pointer. * @param theFlushHandler A user-defined callback function pointer, which can be null. * @return 0 for success */ XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanTransformToHandler( const char* theXMLFileName, const char* theXSLFileName, XalanHandle theXalanHandle, void* theOutputHandle, XalanOutputHandlerType theOutputHandler, XalanFlushHandlerType theFlushHandler); /** * Transform the XML source tree to a callback function. * The processor will apply the compiled stylesheet to the input file * and allocate the transformation result to a callback function * in pre-allocated blocks. Once the transformation is complete, * a second callback, to flush the buffer, is called. You can pass * in NULL if you do not wish to implement a flush callback. Xalan * will release any memory allocated upon termination, and data passed * to the callback is not guaranteed to be null terminated. * * See XalanTransformerDefinitions.hpp for more details. * * @param thePSHandle The handle of parsed source * @param theCSSHandle The handle of compiled stylesheet * @param theXalanHandle The handle of XalanTransformer instance. * @param theOutputHandle A void pointer passed through to callback. * @param theOutputHandler A user-defined callback function pointer. * @param theFlushHandler A user-defined callback function pointer, which can be null. * @return 0 for success */ XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanTransformToHandlerPrebuilt( XalanPSHandle thePSHandle, XalanCSSHandle theCSSHandle, XalanHandle theXalanHandle, void* theOutputHandle, XalanOutputHandlerType theOutputHandler, XalanFlushHandlerType theFlushHandler); /** * Creates a compiled stylesheet. * * @param theXSLFileName The file name of stylesheet source * @param theXalanHandle The handle of XalanTransformer instance. * @param theCSSHandle a pointer to a XalanCSSHandle * @return 0 for success. */ XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanCompileStylesheet( const char* theXSLFileName, XalanHandle theXalanHandle, XalanCSSHandle* theCSSHandle); /** * Creates a compiled stylesheet. * * @param theXSLFileName The stream that contains the stylesheet xml * @param theXSLStreamLength The length of the stream. * @param theXalanHandle handle of XalanTransformer instance. * @param theCSSHandle a pointer to a XalanCSSHandle * @return 0 for success. */ XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanCompileStylesheetFromStream( const char* theXSLStream, unsigned long theXSLStreamLength, XalanHandle theXalanHandle, XalanCSSHandle* theCSSHandle); /** * Destroys a compiled stylesheet. * * @param theCSSHandle The handle of the compiled stylesheet. * @param theXalanHandle The handle of XalanTransformer instance. * @return 0 for success */ XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanDestroyCompiledStylesheet( XalanCSSHandle theCSSHandle, XalanHandle theXalanHandle); /** * Parse source document. * * @param theXMLFileName The name of the file containing the source document * @param theXalanHandle The handle of XalanTransformer instance. * @param thePSHandle A pointer to a XalanPSHandle * @return 0 for success. */ XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanParseSource( const char* theXMLFileName, XalanHandle theXalanHandle, XalanPSHandle* thePSHandle); /** * Parse source document from a stream. * * @param theXMLStream The stream that contains the source xml * @param theXSLStreamLength The length of the stream * @param theXalanHandle The handle of XalanTransformer instance * @param thePSHandle A pointer to a XalanPSHandle * @return 0 for success. */ XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanParseSourceFromStream( const char* theXMLStream, unsigned long theXMLStreamLength, XalanHandle theXalanHandle, XalanPSHandle* thePSHandle); /** * Destroys a parsed source. * a file name, a stream or a root node. * * @param thePSHandle The handle of parsed source * @param theXalanHandle The handle of XalanTransformer instance. * @return 0 for success */ XALAN_TRANSFORMER_EXPORT_FUNCTION(int) XalanDestroyParsedSource( XalanPSHandle thePSHandle, XalanHandle theXalanHandle); /** * Set a top-level stylesheet parameter. This value can be evaluated via * xsl:param-variable. * * @param key The name of the param * @param expression The expression that will be evaluated * @param theXalanHandle The handle of XalanTransformer instance. */ XALAN_TRANSFORMER_EXPORT_FUNCTION(void) XalanSetStylesheetParam( const char* key, const char* expression, XalanHandle theXalanHandle); /** * Set a top-level stylesheet parameter. This value can be evaluated via * xsl:param-variable. The key and expression parameters must be * encoded in UTF-16. * * @param key name of the param * @param expression expression that will be evaluated * @param theXalanHandle handle of XalanTransformer instance. */ XALAN_TRANSFORMER_EXPORT_FUNCTION(void) XalanSetStylesheetParamUTF( const XalanUTF16Char* key, const XalanUTF16Char* expression, XalanHandle theXalanHandle); /** * Set a top-level stylesheet nodeset parameter. This value can be * evaluated via xsl:param-variable. The value is a parsed document. * * @param key name of the param * @param theNodeset a preparsed document * @param theXalanHandle handle of the XalanTransformer instance. */ XALAN_TRANSFORMER_EXPORT_FUNCTION(void) XalanSetStylesheetParamNodeset( const char* key, XalanPSHandle theNodeset, XalanHandle theXalanHandle); /** * Set a top-level stylesheet nodeset parameter. This value can be * evaluated via xsl:param-variable. The value is a parsed document. * The key name is a UTF-16 string. * * @param key name of the param * @param theNodeset a preparsed document * @param theXalanHandle handle of the XalanTransformer instance. */ XALAN_TRANSFORMER_EXPORT_FUNCTION(void) XalanSetStylesheetParamUTFNodeset( const XalanUTF16Char* key, XalanPSHandle theNodeset, XalanHandle theXalanHandle); /** * Set a top-level stylesheet number parameter. This value can be * evaluated via xsl:param-variable. The value is a parsed document. * * @param key name of the param * @param theNumber a double floating point number * @param theXalanHandle handle of the XalanTransformer instance. */ XALAN_TRANSFORMER_EXPORT_FUNCTION(void) XalanSetStylesheetParamNumber( const char* key, double theNumber, XalanHandle theXalanHandle); /** * Set a top-level stylesheet number parameter. This value can be * evaluated via xsl:param-variable. The value is a parsed document. * The key name is a UTF-16 string. * * @param key name of the param * @param theNumber a double floating point number * @param theXalanHandle handle of the XalanTransformer instance. */ XALAN_TRANSFORMER_EXPORT_FUNCTION(void) XalanSetStylesheetParamUTFNumber( const XalanUTF16Char* key, double theNumber, XalanHandle theXalanHandle); /** * Clear the top-level stylesheet parameters. Top-level stylesheet * parameters are sticky. When set, they can be used for multiple * transformations. Use the XalanClearStylesheetParams function * to clear or reset the top-level stylesheet parameters. * * @param theXalanHandle handle of the XalanTransformer instance. */ XALAN_TRANSFORMER_EXPORT_FUNCTION(void) XalanClearStylesheetParams( XalanHandle theXalanHandle); /** * Returns the last error that occurred as a * result of calling transform. * * The signature for following function is really: * const char* * XalanGetLastError(XalanHandle theXalanHandle) const; * * @return error message const character pointer. */ XALAN_TRANSFORMER_EXPORT_FUNCTION(XalanCCharPtr) XalanGetLastError(XalanHandle theXalanHandle); #if defined(__cplusplus) } #endif #endif // XALAN_CAPI_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanTransformer/XercesDOMParsedSource.cpp0000664000175000000640000001166511731656102024346 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesDOMParsedSource.hpp" #include #include #include XALAN_CPP_NAMESPACE_BEGIN XercesDOMParsedSourceHelper::XercesDOMParsedSourceHelper(MemoryManager& theManager) : m_parserLiaison(theManager), m_domSupport(m_parserLiaison) { } XercesDOMParsedSourceHelper* XercesDOMParsedSourceHelper::create(MemoryManager& theManager) { XercesDOMParsedSourceHelper* theInstance = 0; return XalanConstruct( theManager, theInstance, theManager); } XercesDOMParsedSourceHelper::~XercesDOMParsedSourceHelper() { } DOMSupport& XercesDOMParsedSourceHelper::getDOMSupport() { return m_domSupport; } XMLParserLiaison& XercesDOMParsedSourceHelper::getParserLiaison() { return m_parserLiaison; } XercesDOMParsedSource::XercesDOMParsedSource( const InputSource& theInputSource, bool fValidate, ErrorHandler* theErrorHandler, EntityResolver* theEntityResolver, XMLEntityResolver* theXMLEntityResolver, const XalanDOMChar* theExternalSchemaLocation, const XalanDOMChar* theExternalNoNamespaceSchemaLocation, MemoryManager& theManager) : XalanParsedSource(), m_parserLiaison(theManager), m_parsedSource(0), m_uri(theManager) { m_parserLiaison.setUseValidation(fValidate); m_parserLiaison.setEntityResolver(theEntityResolver); m_parserLiaison.setXMLEntityResolver(theXMLEntityResolver); m_parserLiaison.setErrorHandler(theErrorHandler); m_parserLiaison.setExternalSchemaLocation(theExternalSchemaLocation); m_parserLiaison.setExternalNoNamespaceSchemaLocation(theExternalNoNamespaceSchemaLocation); m_parsedSource = m_parserLiaison.parseXMLStream(theInputSource); assert(m_parsedSource != 0); const XalanDOMChar* const theSystemID = theInputSource.getSystemId(); if (theSystemID != 0) { try { URISupport::getURLStringFromString(theSystemID, m_uri); } catch(const XERCES_CPP_NAMESPACE_QUALIFIER XMLException&) { // Assume that any exception here relates to get the url from // the system ID. We'll assume that it's just a fake base identifier // since the parser would have thrown an error if the system ID // wasn't resolved. m_uri = theSystemID; } } } XercesDOMParsedSource* XercesDOMParsedSource::create( MemoryManager& theManager, const InputSource& theInputSource, bool fValidate, ErrorHandler* theErrorHandler, EntityResolver* theEntityResolver, XMLEntityResolver* theXMLEntityResolver, const XalanDOMChar* theExternalSchemaLocation, const XalanDOMChar* theExternalNoNamespaceSchemaLocation) { typedef XercesDOMParsedSource ThisType; XalanAllocationGuard theGuard( theManager, theManager.allocate(sizeof(ThisType))); ThisType* theResult = new (theGuard.get()) ThisType( theInputSource, fValidate, theErrorHandler, theEntityResolver, theXMLEntityResolver, theExternalSchemaLocation, theExternalNoNamespaceSchemaLocation, theManager); theGuard.release(); return theResult; } XercesDOMParsedSource::~XercesDOMParsedSource() { } XalanDocument* XercesDOMParsedSource::getDocument() const { return m_parsedSource; } XalanParsedSourceHelper* XercesDOMParsedSource::createHelper(MemoryManager& theManager) const { return XercesDOMParsedSourceHelper::create(theManager); } const XalanDOMString& XercesDOMParsedSource::getURI() const { return m_uri; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanTransformer/XercesDOMWrapperParsedSource.cpp0000664000175000000640000000576211731656102025710 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XercesDOMWrapperParsedSource.hpp" #include #include #include #include #include "XercesDOMParsedSource.hpp" XALAN_CPP_NAMESPACE_BEGIN #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) XercesDOMWrapperParsedSource::XercesDOMWrapperParsedSource( const DOM_Document_Type& theDocument, XercesParserLiaison& theParserLiaison, XercesDOMSupport& theDOMSupport, const XalanDOMString& theURI, MemoryManager& theManager) : XalanParsedSource(), m_parserLiaison(theParserLiaison), m_domSupport(theDOMSupport), m_parsedSource(theParserLiaison.createDocument(theDocument, true, true)), m_uri(theURI,theManager) { XalanDOMString& refURI = const_cast(m_uri); URISupport::NormalizeURIText(refURI); assert(m_parsedSource != 0); } #endif XercesDOMWrapperParsedSource::XercesDOMWrapperParsedSource( const DOMDocument_Type* theDocument, XercesParserLiaison& theParserLiaison, XercesDOMSupport& theDOMSupport, const XalanDOMString& theURI, MemoryManager& theManager) : XalanParsedSource(), m_parserLiaison(theParserLiaison), m_domSupport(theDOMSupport), m_parsedSource(theParserLiaison.createDocument(theDocument, true, true)), m_uri(theURI, theManager) { XalanDOMString& refURI = const_cast(m_uri); URISupport::NormalizeURIText(refURI); assert(m_parsedSource != 0); } XercesDOMWrapperParsedSource::~XercesDOMWrapperParsedSource() { m_parserLiaison.destroyDocument(m_parsedSource); } XalanDocument* XercesDOMWrapperParsedSource::getDocument() const { return m_parsedSource; } XalanParsedSourceHelper* XercesDOMWrapperParsedSource::createHelper(MemoryManager& theManager) const { return XercesDOMParsedSourceHelper::create(theManager); } const XalanDOMString& XercesDOMWrapperParsedSource::getURI() const { return m_uri; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanTransformer/XalanTransformerProblemListener.cpp0000664000175000000640000001063011731656102026541 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Base class header file. #include "XalanTransformerProblemListener.hpp" #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include #include XALAN_CPP_NAMESPACE_BEGIN XalanTransformerProblemListener::XalanTransformerProblemListener( MemoryManager& theManager, StreamType* theWarningStream, PrintWriter* thePrintWriter) : ProblemListener(), m_problemListener(theManager, thePrintWriter), m_warningStream(theWarningStream), m_warningString(theManager) { } XalanTransformerProblemListener::~XalanTransformerProblemListener() { } void XalanTransformerProblemListener::setPrintWriter(PrintWriter* pw) { m_problemListener.setPrintWriter(pw); } void XalanTransformerProblemListener::problem( eSource source, eClassification classification, const XalanNode* sourceNode, const ElemTemplateElement* styleNode, const XalanDOMString& msg, const XalanDOMChar* uri, XalanFileLoc lineNo, XalanFileLoc charOffset) { if (classification == eERROR) { m_problemListener.problem( source, classification, sourceNode, styleNode, msg, uri, lineNo, charOffset); } else if (m_warningStream != 0) { m_warningString.erase(); DOMStringPrintWriter thePrintWriter(m_warningString); ProblemListenerDefault::defaultFormat( thePrintWriter, source, classification, sourceNode, styleNode, msg, uri, lineNo, charOffset); *m_warningStream << m_warningString; } } void XalanTransformerProblemListener::problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode) { if (classification == eERROR) { m_problemListener.problem( source, classification, msg, locator, sourceNode); } else if (m_warningStream != 0) { m_warningString.erase(); DOMStringPrintWriter thePrintWriter(m_warningString); ProblemListenerDefault::defaultFormat( thePrintWriter, source, classification, msg, locator, sourceNode); *m_warningStream << m_warningString; } } void XalanTransformerProblemListener::problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode) { if (classification == eERROR) { m_problemListener.problem( source, classification, msg, sourceNode); } else if (m_warningStream != 0) { m_warningString.erase(); DOMStringPrintWriter thePrintWriter(m_warningString); ProblemListenerDefault::defaultFormat( thePrintWriter, source, classification, msg, sourceNode); *m_warningStream << m_warningString; } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanTransformer/XercesDOMParsedSource.hpp0000664000175000000640000000674511731656102024356 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESDOMPARSEDSOURCE_HEADER_GUARD) #define XERCESDOMPARSEDSOURCE_HEADER_GUARD // Base include file. Must be first. #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_TRANSFORMER_EXPORT XercesDOMParsedSourceHelper : public XalanParsedSourceHelper { public: XercesDOMParsedSourceHelper(MemoryManager& theManager XALAN_DEFAULT_CONSTRUCTOR_MEMMGR); ~XercesDOMParsedSourceHelper(); static XercesDOMParsedSourceHelper* create(MemoryManager& theManager); virtual DOMSupport& getDOMSupport(); virtual XMLParserLiaison& getParserLiaison(); private: // There is an order dependency, because // XercesDOMSupport requires a XercesParserLiaison // instance. XercesParserLiaison m_parserLiaison; XercesDOMSupport m_domSupport; }; /** * This is designed to allow a XalanTranfomer object to reuse a parsed * document. */ class XALAN_TRANSFORMER_EXPORT XercesDOMParsedSource : public XalanParsedSource { public: XercesDOMParsedSource( const InputSource& theInputSource, bool fValidate = false, ErrorHandler* theErrorHandler = 0, EntityResolver* theEntityResolver = 0, XMLEntityResolver* theXMLEntityResolver = 0, const XalanDOMChar* theExternalSchemaLocation = 0, const XalanDOMChar* theExternalNoNamespaceSchemaLocation = 0, MemoryManager& theManager XALAN_DEFAULT_MEMMGR); static XercesDOMParsedSource* create( MemoryManager& theManager, const InputSource& theInputSource, bool fValidate = false, ErrorHandler* theErrorHandler = 0, EntityResolver* theEntityResolver = 0, XMLEntityResolver* theXMLEntityResolver = 0, const XalanDOMChar* theExternalSchemaLocation = 0, const XalanDOMChar* theExternalNoNamespaceSchemaLocation = 0); virtual ~XercesDOMParsedSource(); virtual XalanDocument* getDocument() const; virtual XalanParsedSourceHelper* createHelper(MemoryManager& theManager) const; virtual const XalanDOMString& getURI() const; private: XercesParserLiaison m_parserLiaison; XalanDocument* m_parsedSource; XalanDOMString m_uri; }; XALAN_CPP_NAMESPACE_END #endif // XERCESDOMPARSEDSOURCE_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XalanTransformer/XalanDefaultDocumentBuilder.cpp0000664000175000000640000000524011731656102025603 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanDefaultDocumentBuilder.hpp" #include #include "XalanDefaultParsedSource.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanDefaultDocumentBuilder::XalanDefaultDocumentBuilder(MemoryManager& theManager, const XalanDOMString& theURI) : m_domSupport(), m_parserLiaison(theManager), m_contentHandler(theManager, m_parserLiaison.createXalanSourceTreeDocument()), m_uri(theURI,theManager) { m_domSupport.setParserLiaison(&m_parserLiaison); } XalanDefaultDocumentBuilder* XalanDefaultDocumentBuilder::create( MemoryManager& theManager, const XalanDOMString& theURI) { typedef XalanDefaultDocumentBuilder ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( theManager, theURI); theGuard.release(); return theResult; } XalanDefaultDocumentBuilder::~XalanDefaultDocumentBuilder() { } XalanDocument* XalanDefaultDocumentBuilder::getDocument() const { return m_contentHandler.getDocument(); } XalanParsedSourceHelper* XalanDefaultDocumentBuilder::createHelper(MemoryManager& theManager) const { return XalanDefaultParsedSourceHelper::create(m_domSupport, theManager); } ContentHandlerType* XalanDefaultDocumentBuilder::getContentHandler() { return &m_contentHandler; } DTDHandlerType* XalanDefaultDocumentBuilder::getDTDHandler() { return &m_contentHandler; } LexicalHandlerType* XalanDefaultDocumentBuilder::getLexicalHandler() { return &m_contentHandler; } const XalanDOMString& XalanDefaultDocumentBuilder::getURI() const { return m_uri; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanTransformer/XalanDocumentBuilder.hpp0000664000175000000640000000465711731656102024316 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANDOCUMENTBUILDER_HEADER_GUARD) #define XALANDOCUMENTBUILDER_HEADER_GUARD // Base include file. Must be first. #include #include // Base class include file. #include XALAN_DECLARE_XERCES_CLASS(ContentHandler) XALAN_DECLARE_XERCES_CLASS(DTDHandler) XALAN_DECLARE_XERCES_CLASS(LexicalHandler) XALAN_CPP_NAMESPACE_BEGIN typedef XERCES_CPP_NAMESPACE_QUALIFIER ContentHandler ContentHandlerType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DTDHandler DTDHandlerType; typedef XERCES_CPP_NAMESPACE_QUALIFIER LexicalHandler LexicalHandlerType; class DOMSupport; class XalanDocument; /** * This is abstract base class designed to allow a XalanTranfomer * object to use a document that is build dynamically by a user. */ class XALAN_TRANSFORMER_EXPORT XalanDocumentBuilder : public XalanParsedSource { public: virtual ~XalanDocumentBuilder() { } // These are inherited from XalanParsedSource... virtual XalanDocument* getDocument() const = 0; virtual XalanParsedSourceHelper* createHelper(MemoryManager& theManager XALAN_DEFAULT_CONSTRUCTOR_MEMMGR) const = 0; virtual const XalanDOMString& getURI() const = 0; // These are new to XalanDocumentBuilder... virtual ContentHandlerType* getContentHandler() = 0; virtual DTDHandlerType* getDTDHandler() = 0; virtual LexicalHandlerType* getLexicalHandler() = 0; private: }; XALAN_CPP_NAMESPACE_END #endif // XALANDOCUMENTBUILDER_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XalanTransformer/XercesDOMWrapperParsedSource.hpp0000664000175000000640000000725011731656102025707 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESDOMWRAPPERPARSEDSOURCE_HEADER_GUARD) #define XERCESDOMWRAPPERPARSEDSOURCE_HEADER_GUARD // Base include file. Must be first. #include #include #include XALAN_DECLARE_XERCES_CLASS(DOM_Document) XALAN_DECLARE_XERCES_CLASS(DOMDocument) XALAN_CPP_NAMESPACE_BEGIN typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Document DOM_Document_Type; typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument DOMDocument_Type; class XercesParserLiaison; class XercesDOMSupport; /** * This is designed to allow a XalanTranfomer object to wrap a parsed * Xerces document. */ class XALAN_TRANSFORMER_EXPORT XercesDOMWrapperParsedSource : public XalanParsedSource { public: #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE) /** * Constructor * * @param theDocument The Xerces document to wrap * @param theParserLiaison The XercesParserLiaison instance that will own the document. * @param theDOMSupport The XercesDOMSupport instance * @param theURI The URI of the document, if any. * * @deprecated This constructor is deprecated. */ XercesDOMWrapperParsedSource( const DOM_Document_Type& theDocument, XercesParserLiaison& theParserLiaison, XercesDOMSupport& theDOMSupport, const XalanDOMString& theURI = XalanDOMString(XalanMemMgrs::getDummyMemMgr()) MemoryManager& theManager XALAN_DEFAULT_MEMMGR); #endif /** * Constructor * * @param theDocument The Xerces document to wrap * @param theParserLiaison The XercesParserLiaison instance that will own the document. * @param theDOMSupport The XercesDOMSupport instance * @param theURI The URI of the document, if any. */ XercesDOMWrapperParsedSource( const DOMDocument_Type* theDocument, XercesParserLiaison& theParserLiaison, XercesDOMSupport& theDOMSupport, const XalanDOMString& theURI = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), MemoryManager& theManager XALAN_DEFAULT_MEMMGR); virtual ~XercesDOMWrapperParsedSource(); virtual XalanDocument* getDocument() const; virtual XalanParsedSourceHelper* createHelper(MemoryManager& theManager XALAN_DEFAULT_MEMMGR) const; virtual const XalanDOMString& getURI() const; private: //Not implemented XercesDOMWrapperParsedSource(); XercesDOMWrapperParsedSource(const XercesDOMWrapperParsedSource&); XercesParserLiaison& m_parserLiaison; XercesDOMSupport& m_domSupport; XalanDocument* const m_parsedSource; const XalanDOMString m_uri; }; XALAN_CPP_NAMESPACE_END #endif // XERCESDOMWRAPPERPARSEDSOURCE_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XalanTransformer/XalanTransformerProblemListener.hpp0000664000175000000640000000604711731656102026555 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_XALANTRANSFORMERPROBLEMLISTENER_HEADER_GUARD) #define XALAN_XALANTRANSFORMERPROBLEMLISTENER_HEADER_GUARD // Base include file. Must be first. #include "XalanTransformerDefinitions.hpp" #if defined(XALAN_CLASSIC_IOSTREAMS) class ostream; #else #include #endif // Xalan header files. #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_TRANSFORMER_EXPORT XalanTransformerProblemListener : public ProblemListener { public: #if defined(XALAN_NO_STD_NAMESPACE) typedef ostream StreamType; #else typedef std::ostream StreamType; #endif XalanTransformerProblemListener( MemoryManager& theManager, StreamType* theStream, PrintWriter* thePrintWriter); virtual ~XalanTransformerProblemListener(); // These methods are inherited from ProblemListener ... virtual void setPrintWriter(PrintWriter* pw); virtual void problem( eSource source, eClassification classification, const XalanNode* sourceNode, const ElemTemplateElement* styleNode, const XalanDOMString& msg, const XalanDOMChar* uri, XalanFileLoc lineNo, XalanFileLoc charOffset); virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode); virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode); private: //not implemented XalanTransformerProblemListener(); XalanTransformerProblemListener(const XalanTransformerProblemListener&); ProblemListenerDefault m_problemListener; StreamType* m_warningStream; XalanDOMString m_warningString; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_XALANTRANSFORMERPROBLEMLISTENER_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XalanTransformer/XalanTransformerOutputStream.cpp0000664000175000000640000000454611731656102026120 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanTransformerOutputStream.hpp" #include XALAN_CPP_NAMESPACE_BEGIN XalanTransformerOutputStream::XalanTransformerOutputStream( MemoryManager& theManager, void* theOutputHandle, XalanOutputHandlerType theOutputHandler, XalanFlushHandlerType theFlushHandler): XalanOutputStream(theManager), m_outputHandle(theOutputHandle), m_outputHandler(theOutputHandler), m_flushHandler(theFlushHandler) { } XalanTransformerOutputStream::~XalanTransformerOutputStream() { } void XalanTransformerOutputStream::doFlush() { if(m_flushHandler != 0) { m_flushHandler(m_outputHandle); } } void XalanTransformerOutputStream::writeData( const char* theBuffer, size_type theBufferLength) { const size_t theBytesWritten = m_outputHandler(theBuffer, theBufferLength, m_outputHandle); // We validate that the number of bytes written equals the number of bytes sent to // the output handler. Otherwise we will stop processing and throw an exception. // Thus the callback can alert us of memory allocation issues or buffer overflows. if(theBytesWritten != theBufferLength) { XalanDOMString theBuffer(getMemoryManager()); throw XalanOutputStreamException( XalanMessageLoader::getMessage( theBuffer, XalanMessages::NumberBytesWrittenDoesNotEqual), getMemoryManager(), 0); } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanTransformer/XalanDefaultDocumentBuilder.hpp0000664000175000000640000000536711731656102025622 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANDEFAULTDOCUMENTBUILDER_HEADER_GUARD) #define XALANDEFAULTDOCUMENTBUILDER_HEADER_GUARD // Base include file. Must be first. #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN /** * This is class is designed to allow a XalanTranfomer object * to use a document that is build dynamically by a user. */ class XALAN_TRANSFORMER_EXPORT XalanDefaultDocumentBuilder : public XalanDocumentBuilder { public: /** * Create a XalanDefaultDocumentBuilder instance, * * @param theURI An optional string to identify the document. */ XalanDefaultDocumentBuilder(MemoryManager& theManager, const XalanDOMString& theURI); static XalanDefaultDocumentBuilder* create(MemoryManager& theManager, const XalanDOMString& theURI); virtual ~XalanDefaultDocumentBuilder(); virtual XalanDocument* getDocument() const; virtual XalanParsedSourceHelper* createHelper(MemoryManager& theManager) const; virtual const XalanDOMString& getURI() const; virtual ContentHandlerType* getContentHandler(); virtual DTDHandlerType* getDTDHandler(); virtual LexicalHandlerType* getLexicalHandler(); private: // not implemented... XalanDefaultDocumentBuilder(const XalanDefaultDocumentBuilder&); XalanDefaultDocumentBuilder& operator=(const XalanDefaultDocumentBuilder&); // Data members... XalanSourceTreeDOMSupport m_domSupport; XalanSourceTreeParserLiaison m_parserLiaison; XalanSourceTreeContentHandler m_contentHandler; const XalanDOMString m_uri; }; XALAN_CPP_NAMESPACE_END #endif // XALANDEFAULTDOCUMENTBUILDER_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XalanTransformer/XalanParsedSource.cpp0000664000175000000640000000176611731656102023621 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include XALAN_CPP_NAMESPACE_BEGIN XalanParsedSource::XalanParsedSource() { } XalanParsedSource::~XalanParsedSource() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanTransformer/XalanSourceTreeWrapperParsedSource.cpp0000664000175000000640000000444511731656102027160 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanSourceTreeWrapperParsedSource.hpp" #include #include #include #include #include "XalanDefaultParsedSource.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanSourceTreeWrapperParsedSource::XalanSourceTreeWrapperParsedSource( XalanSourceTreeDocument* theDocument, XalanSourceTreeParserLiaison& theParserLiaison, XalanSourceTreeDOMSupport& theDOMSupport, const XalanDOMString& theURI, MemoryManager& theManager) : XalanParsedSource(), m_parserLiaison(theParserLiaison), m_domSupport(theDOMSupport), m_parsedSource(theDocument), m_uri(theURI, theManager) { XalanDOMString& refURI = const_cast(m_uri); URISupport::NormalizeURIText(refURI); assert(m_parsedSource != 0); } XalanSourceTreeWrapperParsedSource::~XalanSourceTreeWrapperParsedSource() { } XalanDocument* XalanSourceTreeWrapperParsedSource::getDocument() const { return m_parsedSource; } XalanParsedSourceHelper* XalanSourceTreeWrapperParsedSource::createHelper(MemoryManager& theManager) const { return XalanDefaultParsedSourceHelper::create(m_domSupport, theManager); } const XalanDOMString& XalanSourceTreeWrapperParsedSource::getURI() const { return m_uri; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanTransformer/XalanTransformer.cpp0000664000175000000640000012071211763523463023525 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanTransformer.hpp" #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#define XALAN_USE_ICU #if defined(XALAN_USE_ICU) #include #include #include #endif #include "XalanCompiledStylesheetDefault.hpp" #include "XalanDefaultDocumentBuilder.hpp" #include "XalanDefaultParsedSource.hpp" #include "XalanTransformerOutputStream.hpp" #include "XalanTransformerProblemListener.hpp" #include "XercesDOMParsedSource.hpp" XALAN_CPP_NAMESPACE_BEGIN const XSLTInputSource* XalanTransformer::s_emptyInputSource = 0; const XSLTInit* XalanTransformer::s_xsltInit = 0; static MemoryManager* s_initMemoryManager = 0; XalanTransformer::XalanTransformer(MemoryManager& theManager): m_memoryManager(theManager), m_compiledStylesheets(m_memoryManager), m_parsedSources(m_memoryManager), m_params(m_memoryManager), m_functions(m_memoryManager), m_traceListeners(m_memoryManager), m_errorMessage(1, '\0', m_memoryManager), m_useValidation(false), m_entityResolver(0), m_xmlEntityResolver(0), m_errorHandler(0), m_externalSchemaLocation(m_memoryManager), m_externalNoNamespaceSchemaLocation(m_memoryManager), m_problemListener(0), m_errorStream(0), #if defined(XALAN_NO_STD_NAMESPACE) m_warningStream(&cerr), #else m_warningStream(&std::cerr), #endif m_outputEncoding(m_memoryManager), m_topXObjectFactory(XObjectFactoryDefault::create(m_memoryManager)), m_stylesheetExecutionContext(StylesheetExecutionContextDefault::create(m_memoryManager)) { #if defined(XALAN_USE_ICU) // Create a collation function for the ICU, and have it // cache collators... XalanMemMgrAutoPtr theICUFunctor(m_memoryManager, ICUBridgeCollationCompareFunctor::create(m_memoryManager, true)); m_stylesheetExecutionContext->installCollationCompareFunctor(theICUFunctor.get()); XalanMemMgrAutoPtr theFormatNumberFunctor(m_memoryManager, ICUFormatNumberFunctor::create(m_memoryManager)); m_stylesheetExecutionContext->installFormatNumberFunctor(theFormatNumberFunctor.get()); theICUFunctor.release(); theFormatNumberFunctor.release(); #endif } XalanTransformer::~XalanTransformer() { // Clean up Top-Level Parameters clearStylesheetParams(); XALAN_USING_STD(for_each) // Clean up the XalanCompiledStylesheet vector. for_each( m_compiledStylesheets.begin(), m_compiledStylesheets.end(), DeleteFunctor(m_memoryManager)); // Clean up the XalanParsedSource vector. for_each( m_parsedSources.begin(), m_parsedSources.end(), DeleteFunctor(m_memoryManager)); // Clean up the Function map. for_each( m_functions.begin(), m_functions.end(), MapValueDeleteFunctor(m_memoryManager)); #if defined(XALAN_USE_ICU) // Uninstall the ICU collation compare functor, and destroy it... XalanDestroy( m_memoryManager, m_stylesheetExecutionContext->uninstallCollationCompareFunctor()); // Uninstall the ICU format number functor, and destroy it... XalanDestroy( m_memoryManager, m_stylesheetExecutionContext->uninstallFormatNumberFunctor()); #endif XalanDestroy( m_memoryManager, *m_topXObjectFactory); XalanDestroy( m_memoryManager, *m_stylesheetExecutionContext); } void XalanTransformer::initialize(MemoryManager& theManager) { // Initialize Xalan. XalanMemMgrAutoPtr initGuard(theManager, XSLTInit::create(theManager)); XalanAutoPtr inputSourceGuard(new (&theManager) XSLTInputSource(theManager)); EnsureFunctionsInstallation instalGuard(theManager); instalGuard.install(); instalGuard.release(); s_xsltInit = initGuard.releasePtr(); s_emptyInputSource = inputSourceGuard.release(); s_initMemoryManager = &theManager; } void XalanTransformer::terminate() { assert(s_initMemoryManager != 0); { const EnsureFunctionsInstallation uninstallGuard(*s_initMemoryManager); } delete s_emptyInputSource; XalanDestroy( *s_initMemoryManager, const_cast(s_xsltInit)); s_emptyInputSource = 0; s_xsltInit = 0; s_initMemoryManager = 0; } void XalanTransformer::ICUCleanUp() { #if defined(XALAN_USE_ICU) ICUBridgeCleanup::cleanup(); #endif } #if defined(XALAN_USE_ICU) void ICUStartUp(MemoryManager& theManager) { ICUBridgeCleanup::startup(theManager); } #else void ICUStartUp(MemoryManager& /*theManager*/) { } #endif bool XalanTransformer::getICUAvailable() const { #if defined(XALAN_USE_ICU) return true; #else return false; #endif } static void addTraceListeners( const XalanTransformer::TraceListenerVectorType& theTraceListeners, XSLTEngineImpl& theEngine) { if (theTraceListeners.empty() == false) { typedef XalanTransformer::TraceListenerVectorType TraceListenerVectorType; TraceListenerVectorType::const_iterator theEnd = theTraceListeners.end(); for(TraceListenerVectorType::const_iterator i = theTraceListeners.begin(); i != theEnd; ++i) { theEngine.addTraceListener(*i); } theEngine.setTraceSelects(true); } } int XalanTransformer::transform( const XSLTInputSource& theInputSource, const XalanCompiledStylesheet* theCompiledStylesheet, const XSLTResultTarget& theResultTarget) { const XalanParsedSource* theParsedSource = 0; const int theResult = parseSource(theInputSource, theParsedSource); if (theResult != 0) { return theResult; } else { assert(theParsedSource != 0); // Make sure the parsed source is destroyed when // the transformation is finished... EnsureDestroyParsedSource theGuard(*this, theParsedSource); // Do the transformation... return transform( *theParsedSource, theCompiledStylesheet, theResultTarget); } } int XalanTransformer::transform( const XSLTInputSource& theInputSource, const XSLTInputSource& theStylesheetSource, const XSLTResultTarget& theResultTarget) { // Parse the source document. const XalanParsedSource* theParsedSource = 0; const int theResult = parseSource(theInputSource, theParsedSource); if (theResult != 0) { return theResult; } else { assert(theParsedSource != 0); // Make sure the parsed source is destroyed when // the transformation is finished... EnsureDestroyParsedSource theGuard(*this, theParsedSource); // Do the transformation... return transform( *theParsedSource, theStylesheetSource, theResultTarget); } } int XalanTransformer::transform( const XSLTInputSource& theInputSource, const XSLTInputSource& theStylesheetSource, void* theOutputHandle, XalanOutputHandlerType theOutputHandler, XalanFlushHandlerType theFlushHandler) { // Set to output target to the callback XalanTransformerOutputStream theOutputStream(m_memoryManager, theOutputHandle, theOutputHandler, theFlushHandler); XalanOutputStreamPrintWriter thePrintWriter(theOutputStream); XSLTResultTarget theResultTarget(&thePrintWriter, m_memoryManager); // Do the transformation... return transform( theInputSource, theStylesheetSource, theResultTarget); } int XalanTransformer::transform( const XalanParsedSource& theParsedSource, const XalanCompiledStylesheet* theCompiledStylesheet, void* theOutputHandle, XalanOutputHandlerType theOutputHandler, XalanFlushHandlerType theFlushHandler) { // Set to output target to the callback XalanTransformerOutputStream theOutputStream(m_memoryManager, theOutputHandle, theOutputHandler, theFlushHandler); XalanOutputStreamPrintWriter thePrintWriter(theOutputStream); XSLTResultTarget theResultTarget(&thePrintWriter, m_memoryManager); // Do the transformation... return transform( theParsedSource, theCompiledStylesheet, theResultTarget); } int XalanTransformer::transform( const XSLTInputSource& theInputSource, void* theOutputHandle, XalanOutputHandlerType theOutputHandler, XalanFlushHandlerType theFlushHandler) { assert(s_emptyInputSource != 0); // Set to output target to the callback XalanTransformerOutputStream theOutputStream(m_memoryManager, theOutputHandle, theOutputHandler, theFlushHandler); XalanOutputStreamPrintWriter thePrintWriter(theOutputStream); XSLTResultTarget theResultTarget(&thePrintWriter, m_memoryManager); // Do the transformation... return transform( theInputSource, *s_emptyInputSource, theResultTarget); } XALAN_USING_XERCES(XMLException) XALAN_USING_XERCES(SAXParseException) XALAN_USING_XERCES(SAXException) static const XalanDOMString& FormatSAXParseException( XPathExecutionContext& theExecutionContext, const SAXParseException& theException, XalanDOMString& theErrorMessage) { assert(theException.getMessage() != 0); const XalanDOMChar theDummy = 0; const XalanDOMChar* const theSystemID = theException.getSystemId(); typedef XPathExecutionContext::GetCachedString GetCachedString; const GetCachedString theGuard(theExecutionContext); XalanDOMString& theExceptionType = theGuard.get(); theExceptionType.assign("SAXParseException"); XSLException::defaultFormat( theException.getMessage(), theSystemID == 0 ? &theDummy : theSystemID, theException.getLineNumber(), theException.getColumnNumber(), theExceptionType.c_str(), theErrorMessage); return theErrorMessage; } static void FormatSAXParseException( XPathExecutionContext& theExecutionContext, const SAXParseException& theException, CharVectorType& theErrorMessage) { typedef XPathExecutionContext::GetCachedString GetCachedString; const GetCachedString theGuard(theExecutionContext); TranscodeToLocalCodePage( FormatSAXParseException( theExecutionContext, theException, theGuard.get()), theErrorMessage, true); } static void FormatXalanDOMException( XPathExecutionContext& theExecutionContext, const XalanDOMException& theException, CharVectorType& theErrorMessage) { typedef XPathExecutionContext::GetCachedString GetCachedString; const GetCachedString theGuard1(theExecutionContext); const GetCachedString theGuard2(theExecutionContext); const XalanDOMString& theMessage = XalanMessageLoader::getMessage( theGuard1.get(), XalanMessages::XalanDOMExceptionCaught_1Param, NumberToDOMString( theException.getExceptionCode(), theGuard2.get())); TranscodeToLocalCodePage(theMessage, theErrorMessage, true); } static void LoadErrorMessage( XPathExecutionContext& theExecutionContext, XalanMessages::Codes theCode, CharVectorType& theMessage) { typedef XPathExecutionContext::GetCachedString GetCachedString; const GetCachedString theGuard(theExecutionContext); const XalanDOMString& theMessageString = XalanMessageLoader::getMessage( theGuard.get(), theCode); try { theMessageString.transcode(theMessage); } catch(...) { const char* const theAlternateErrorMessage = "An error occurred transcoding an error message."; const XalanDOMString::size_type theLength = length(theAlternateErrorMessage); theMessage.resize(theLength + 1); #if defined(XALAN_STRICT_ANSI_HEADERS) XALAN_USING_STD(strncpy); #endif strncpy( &*theMessage.begin(), theAlternateErrorMessage, theLength); } } int XalanTransformer::compileStylesheet( const XSLTInputSource& theStylesheetSource, const XalanCompiledStylesheet*& theCompiledStylesheet) { // Clear the error message. m_errorMessage.resize(1, '\0'); // Store error messages from problem listener. XalanDOMString theErrorMessage(m_memoryManager); int theResult = 0; try { // Create some support objects that are necessary for running the processor... XalanSourceTreeDOMSupport theDOMSupport; XalanSourceTreeParserLiaison theParserLiaison(theDOMSupport, m_memoryManager); theParserLiaison.setEntityResolver(m_entityResolver); theParserLiaison.setXMLEntityResolver(m_xmlEntityResolver); theParserLiaison.setErrorHandler(m_errorHandler); // Hook the two together... theDOMSupport.setParserLiaison(&theParserLiaison); // Create some more support objects... XSLTProcessorEnvSupportDefault theXSLTProcessorEnvSupport(m_memoryManager); XObjectFactoryDefault theXObjectFactory(m_memoryManager); XPathFactoryBlock theXPathFactory(m_memoryManager); // Create a processor... XSLTEngineImpl theProcessor( m_memoryManager, theParserLiaison, theXSLTProcessorEnvSupport, theDOMSupport, theXObjectFactory, theXPathFactory); // Create a problem listener and send output to a XalanDOMString. DOMStringPrintWriter thePrintWriter(theErrorMessage); XalanTransformerProblemListener theProblemListener( m_memoryManager, m_warningStream, &thePrintWriter); if (m_problemListener == 0) { theProcessor.setProblemListener(&theProblemListener); } else { theProcessor.setProblemListener(m_problemListener); } // Allocate the memory now, to avoid leaking if push_back() fails. m_compiledStylesheets.reserve(m_compiledStylesheets.size() + 1); // Create a new XalanCompiledStylesheet. theCompiledStylesheet = XalanCompiledStylesheetDefault::create( m_memoryManager, theStylesheetSource, theProcessor, m_errorHandler, m_entityResolver); // Store it in a vector. m_compiledStylesheets.push_back(theCompiledStylesheet); } catch(const XSLException& e) { if (theErrorMessage.empty() == false) { TranscodeToLocalCodePage(theErrorMessage, m_errorMessage, true); } else { TranscodeToLocalCodePage(e.getMessage(), m_errorMessage, true); } theResult = -1; } catch(const SAXParseException& e) { if (theErrorMessage.empty() == false) { TranscodeToLocalCodePage(theErrorMessage, m_errorMessage, true); } else { FormatSAXParseException( *m_stylesheetExecutionContext, e, m_errorMessage); } theResult = -2; } catch(const SAXException& e) { if (theErrorMessage.empty() == false) { TranscodeToLocalCodePage(theErrorMessage, m_errorMessage, true); } else { TranscodeToLocalCodePage(e.getMessage(), m_errorMessage, true); } theResult = -2; } catch(const XMLException& e) { if (theErrorMessage.empty() == false) { TranscodeToLocalCodePage(theErrorMessage, m_errorMessage, true); } else { TranscodeToLocalCodePage(e.getMessage(), m_errorMessage, true); } theResult = -3; } catch(const XalanDOMException& e) { if (theErrorMessage.empty() == false) { TranscodeToLocalCodePage(theErrorMessage, m_errorMessage, true); } else { FormatXalanDOMException( *m_stylesheetExecutionContext, e, m_errorMessage); } theResult = -4; } return theResult; } int XalanTransformer::destroyStylesheet(const XalanCompiledStylesheet* theStylesheet) { XALAN_USING_STD(find) const CompiledStylesheetPtrVectorType::iterator i = find( m_compiledStylesheets.begin(), m_compiledStylesheets.end(), theStylesheet); if (i == m_compiledStylesheets.end()) { LoadErrorMessage( *m_stylesheetExecutionContext, XalanMessages::InvalidCompiledStylesheetProvided, m_errorMessage); return -1; } else { m_compiledStylesheets.erase(i); XalanDestroy( m_memoryManager, const_cast(theStylesheet)); return 0; } } int XalanTransformer::parseSource( const XSLTInputSource& theInputSource, const XalanParsedSource*& theParsedSource, bool useXercesDOM) { // Clear the error message. m_errorMessage.clear(); m_errorMessage.push_back(0); int theResult = 0; try { // Allocate the memory now, to avoid leaking if push_back() fails. m_parsedSources.reserve(m_parsedSources.size() + 1); if(useXercesDOM == true) { theParsedSource = XercesDOMParsedSource::create( m_memoryManager, theInputSource, m_useValidation, m_errorHandler, m_entityResolver, m_xmlEntityResolver, getExternalSchemaLocation(), getExternalNoNamespaceSchemaLocation()); } else { theParsedSource = XalanDefaultParsedSource::create( m_memoryManager, theInputSource, m_useValidation, m_errorHandler, m_entityResolver, m_xmlEntityResolver, getExternalSchemaLocation(), getExternalNoNamespaceSchemaLocation()); } // Store it in a vector. m_parsedSources.push_back(theParsedSource); } catch(const XSLException& e) { XalanDOMString theBuffer(m_memoryManager); e.defaultFormat(theBuffer); TranscodeToLocalCodePage(theBuffer, m_errorMessage, true); theResult = -1; } catch(const SAXParseException& e) { FormatSAXParseException( *m_stylesheetExecutionContext, e, m_errorMessage); theResult = -2; } catch(const SAXException& e) { TranscodeToLocalCodePage(e.getMessage(), m_errorMessage, true); theResult = -2; } catch(const XMLException& e) { TranscodeToLocalCodePage(e.getMessage(), m_errorMessage, true); theResult = -3; } catch(const XalanDOMException& e) { FormatXalanDOMException( *m_stylesheetExecutionContext, e, m_errorMessage); theResult = -4; } return theResult; } int XalanTransformer::destroyParsedSource(const XalanParsedSource* theParsedSource) { XALAN_USING_STD(find) const ParsedSourcePtrVectorType::iterator i = find( m_parsedSources.begin(), m_parsedSources.end(), theParsedSource); if (i == m_parsedSources.end()) { LoadErrorMessage( *m_stylesheetExecutionContext, XalanMessages::InvalidParsedSourceProvided, m_errorMessage); return -1; } else { m_parsedSources.erase(i); assert(theParsedSource != 0); XalanDestroy( m_memoryManager, const_cast(theParsedSource)); return 0; } } void XalanTransformer::setStylesheetParam( const XalanDOMString& qname, const XalanDOMString& expression) { m_params[qname].m_expression = expression; } void XalanTransformer::setStylesheetParam( const XalanDOMString& qname, XObjectPtr object) { m_params[qname].m_value = object; } void XalanTransformer::setStylesheetParam( const char* qname, XObjectPtr object) { setStylesheetParam( XalanDOMString(qname, m_memoryManager), object); } void XalanTransformer::setStylesheetParam( const char* qname, const char* expression) { setStylesheetParam( XalanDOMString(qname, m_memoryManager), XalanDOMString(expression, m_memoryManager)); } void XalanTransformer::setStylesheetParam( const char* qname, double number) { setStylesheetParam( XalanDOMString(qname, m_memoryManager), m_topXObjectFactory->createNumber(number)); } void XalanTransformer::setStylesheetParam( const XalanDOMString& qname, double number) { setStylesheetParam( qname, m_topXObjectFactory->createNumber(number)); } void XalanTransformer::setStylesheetParam( const char* qname, XalanNode* nodeset) { setStylesheetParam( XalanDOMString(qname, m_memoryManager), m_topXObjectFactory->createNodeSet(nodeset)); } void XalanTransformer::setStylesheetParam( const XalanDOMString& qname, XalanNode* nodeset) { setStylesheetParam( qname, m_topXObjectFactory->createNodeSet(nodeset)); } bool XalanTransformer::removeTraceListener(TraceListener* theTraceListener) { XALAN_USING_STD(find) const TraceListenerVectorType::iterator i = find( m_traceListeners.begin(), m_traceListeners.end(), theTraceListener); if (i == m_traceListeners.end()) { return false; } else { m_traceListeners.erase(i); return true; } } XalanDocumentBuilder* XalanTransformer::createDocumentBuilder(const XalanDOMString& theURI) { m_parsedSources.reserve(m_parsedSources.size() + 1); XalanDocumentBuilder* const theNewBuilder = XalanDefaultDocumentBuilder::create( m_memoryManager, theURI); m_parsedSources.push_back(theNewBuilder); return theNewBuilder; } void XalanTransformer::destroyDocumentBuilder(XalanDocumentBuilder* theDocumentBuilder) { destroyParsedSource(theDocumentBuilder); } void XalanTransformer::installExternalFunction( const XalanDOMString& theNamespace, const XalanDOMString& functionName, const Function& function) { const XalanQNameByValue theQName(theNamespace, functionName, m_memoryManager); Function*& theFunction = m_functions[theQName]; Function* const theOldFunction = theFunction; theFunction = function.clone(m_memoryManager); XalanDestroy( m_memoryManager, theOldFunction); } void XalanTransformer::installExternalFunctionGlobal( const XalanDOMString& theNamespace, const XalanDOMString& functionName, const Function& function) { XSLTProcessorEnvSupportDefault::installExternalFunctionGlobal( theNamespace, functionName, function); } void XalanTransformer::uninstallExternalFunction( const XalanDOMString& theNamespace, const XalanDOMString& functionName) { const XalanQNameByValue theQName(theNamespace, functionName, m_memoryManager); FunctionMapType::iterator i = m_functions.find(theQName); if (i != m_functions.end()) { Function* const theFunction = (*i).second; assert(theFunction != 0); m_functions.erase(i); XalanDestroy( m_memoryManager, *theFunction); } } void XalanTransformer::uninstallExternalFunctionGlobal( const XalanDOMString& theNamespace, const XalanDOMString& functionName) { XSLTProcessorEnvSupportDefault::uninstallExternalFunctionGlobal( theNamespace, functionName); } int XalanTransformer::getIndent() const { return m_stylesheetExecutionContext->getIndent(); } void XalanTransformer::setIndent(int indentAmount) { m_stylesheetExecutionContext->setIndent(indentAmount); } XalanTransformer::eEscapeURLs XalanTransformer::getEscapeURLs() const { eEscapeURLs escapeValue = eEscapeURLsDefault; switch(m_stylesheetExecutionContext->getEscapeURLs()) { case StylesheetExecutionContextDefault::eEscapeURLsDefault: break; case StylesheetExecutionContextDefault::eEscapeURLsNo: escapeValue = eEscapeURLsNo; break; case StylesheetExecutionContextDefault::eEscapeURLsYes: escapeValue = eEscapeURLsYes; break; default: assert(false); break; } return escapeValue; } void XalanTransformer::setEscapeURLs(eEscapeURLs value) { StylesheetExecutionContextDefault::eEscapeURLs escapeValue = StylesheetExecutionContextDefault::eEscapeURLsDefault; switch(value) { case eEscapeURLsDefault: break; case eEscapeURLsNo: escapeValue = StylesheetExecutionContextDefault::eEscapeURLsNo; break; case eEscapeURLsYes: escapeValue = StylesheetExecutionContextDefault::eEscapeURLsYes; break; default: assert(false); break; } m_stylesheetExecutionContext->setEscapeURLs(escapeValue); } XalanTransformer::eOmitMETATag XalanTransformer::getOmitMETATag() const { eOmitMETATag omitValue = eOmitMETATagDefault; switch(m_stylesheetExecutionContext->getOmitMETATag()) { case StylesheetExecutionContextDefault::eOmitMETATagDefault: break; case StylesheetExecutionContextDefault::eOmitMETATagNo: omitValue = eOmitMETATagNo; break; case StylesheetExecutionContextDefault::eOmitMETATagYes: omitValue = eOmitMETATagYes; break; default: assert(false); break; } return omitValue; } void XalanTransformer::setOmitMETATag(eOmitMETATag value) { StylesheetExecutionContextDefault::eOmitMETATag omitValue = StylesheetExecutionContextDefault::eOmitMETATagDefault; switch(value) { case eOmitMETATagDefault: break; case eOmitMETATagNo: omitValue = StylesheetExecutionContextDefault::eOmitMETATagNo; break; case eOmitMETATagYes: omitValue = StylesheetExecutionContextDefault::eOmitMETATagYes; break; default: assert(false); break; } m_stylesheetExecutionContext->setOmitMETATag(omitValue); } void XalanTransformer::reset() { try { // Reset objects. m_stylesheetExecutionContext->setXPathEnvSupport(0); m_stylesheetExecutionContext->setDOMSupport(0); m_stylesheetExecutionContext->setXObjectFactory(0); m_stylesheetExecutionContext->setXSLTProcessor(0); m_stylesheetExecutionContext->reset(); // JIRA-451 Preserve top-level parameters across reset() // The reset() is done to prepare for a new transformation // by reusing the m_stylesheetExecutionContext. // // Absense of clearStylesheetParams() makes the top-level params // sticky across transformations. The clearStylesheetParams() // purges the top-level parameters from the XalanTransformer // instance. // // Presence of clearStylesheetParams() will require the application // to submit a new set of top-level parameters to the XalanTransformer // if needed for the next doTransform() operation. // // clearStylesheetParams(); } catch(...) { } } XalanTransformer::EnsureReset::~EnsureReset() { m_transformer.m_stylesheetExecutionContext->reset(); m_transformer.reset(); } int XalanTransformer::doTransform( const XalanParsedSource& theParsedXML, const XalanCompiledStylesheet* theCompiledStylesheet, const XSLTInputSource* theStylesheetSource, const XSLTResultTarget& theResultTarget) { int theResult = 0; // Clear the error message. m_errorMessage.resize(1, '\0'); // Store error messages from problem listener. XalanDOMString theErrorMessage(m_memoryManager); try { XalanDocument* const theSourceDocument = theParsedXML.getDocument(); assert(theSourceDocument != 0); // Create the helper object that is necessary for running the processor... XalanMemMgrAutoPtr theHelper(m_memoryManager, theParsedXML.createHelper(m_memoryManager)); assert(theHelper.get() != 0); DOMSupport& theDOMSupport = theHelper->getDOMSupport(); XMLParserLiaison& theParserLiaison = theHelper->getParserLiaison(); theParserLiaison.setExecutionContext(*m_stylesheetExecutionContext); theParserLiaison.setEntityResolver(m_entityResolver); theParserLiaison.setXMLEntityResolver(m_xmlEntityResolver); theParserLiaison.setErrorHandler(m_errorHandler); theParserLiaison.setUseValidation(m_useValidation); // Create some more support objects... XSLTProcessorEnvSupportDefault theXSLTProcessorEnvSupport(m_memoryManager); const XalanDOMString& theSourceURI = theParsedXML.getURI(); if (theSourceURI.empty() == false) { theXSLTProcessorEnvSupport.setSourceDocument(theSourceURI, theSourceDocument); } // Set the functions if any. { for (FunctionMapType::const_iterator i = m_functions.begin(); i != m_functions.end(); ++i) { assert((*i).second != 0); theXSLTProcessorEnvSupport.installExternalFunctionLocal( (*i).first.getNamespace(), (*i).first.getLocalPart(), *(*i).second); } } XObjectFactoryDefault theXObjectFactory(m_memoryManager); XPathFactoryBlock theXPathFactory(m_memoryManager); // Create a processor... XSLTEngineImpl theProcessor( m_memoryManager, theParserLiaison, theXSLTProcessorEnvSupport, theDOMSupport, theXObjectFactory, theXPathFactory); theXSLTProcessorEnvSupport.setProcessor(&theProcessor); const EnsureReset theReset(*this); // Set up the stylesheet execution context. m_stylesheetExecutionContext->setXPathEnvSupport(&theXSLTProcessorEnvSupport); m_stylesheetExecutionContext->setDOMSupport(&theDOMSupport); m_stylesheetExecutionContext->setXObjectFactory(&theXObjectFactory); m_stylesheetExecutionContext->setXSLTProcessor(&theProcessor); // Create a problem listener and send output to a XalanDOMString. Do this before // pushing params, since there could be a problem resolving a QName. DOMStringPrintWriter thePrintWriter(theErrorMessage); XalanTransformerProblemListener theProblemListener(m_memoryManager, m_warningStream, &thePrintWriter); if (m_problemListener == 0) { theProcessor.setProblemListener(&theProblemListener); } else { theProcessor.setProblemListener(m_problemListener); } { typedef ParamMapType::const_iterator const_iterator; theProcessor.clearStylesheetParams(); // Set the parameters if any. for (const_iterator i = m_params.begin(); i != m_params.end(); ++i) { const XalanDOMString& theName = (*i).first; const XalanParamHolder& theCurrent= (*i).second; const XalanDOMString& theExpression = theCurrent.m_expression; XObjectPtr theObject = theCurrent.m_value; if (theExpression.length() > 0) { theProcessor.setStylesheetParam(theName, theExpression); } else { theProcessor.setStylesheetParam(theName, theObject); } } } // Create an input source for the source document... XSLTInputSource theDocumentInputSource(theSourceDocument, m_memoryManager); // Set the system ID, so relative URIs are resolved properly... theDocumentInputSource.setSystemId(theSourceURI.c_str()); addTraceListeners(m_traceListeners, theProcessor); // We may need to change the output encoding, so // we make a copy of the result target. XSLTResultTarget tempResultTarget(theResultTarget, m_memoryManager); if (tempResultTarget.getEncoding().length() == 0 && m_outputEncoding.length() != 0) { tempResultTarget.setEncoding(m_outputEncoding); } if (theCompiledStylesheet != 0) { assert(theStylesheetSource == 0 && theCompiledStylesheet->getStylesheetRoot() != 0); m_stylesheetExecutionContext->setStylesheetRoot(theCompiledStylesheet->getStylesheetRoot()); // Do the transformation... theProcessor.process( theDocumentInputSource, tempResultTarget, *m_stylesheetExecutionContext); } else { assert(theStylesheetSource != 0); // Create a stylesheet construction context, // using the stylesheet's factory support objects. StylesheetConstructionContextDefault theStylesheetConstructionContext( m_memoryManager, theProcessor, theXPathFactory); // Do the transformation... theProcessor.process( theDocumentInputSource, *theStylesheetSource, tempResultTarget, theStylesheetConstructionContext, *m_stylesheetExecutionContext); } } catch(const XSLException& e) { if (theErrorMessage.empty() == true) { e.defaultFormat(theErrorMessage); } TranscodeToLocalCodePage(theErrorMessage, m_errorMessage, true); theResult = -1; } catch(const SAXParseException& e) { if (theErrorMessage.empty() == false) { TranscodeToLocalCodePage(theErrorMessage, m_errorMessage, true); } else { FormatSAXParseException( *m_stylesheetExecutionContext, e, m_errorMessage); } theResult = -2; } catch(const SAXException& e) { if (theErrorMessage.empty() == false) { TranscodeToLocalCodePage(theErrorMessage, m_errorMessage, true); } else { TranscodeToLocalCodePage(e.getMessage(), m_errorMessage, true); } theResult = -2; } catch(const XMLException& e) { if (theErrorMessage.empty() == false) { TranscodeToLocalCodePage(theErrorMessage, m_errorMessage, true); } else { TranscodeToLocalCodePage(e.getMessage(), m_errorMessage, true); } theResult = -3; } catch(const XalanDOMException& e) { if (theErrorMessage.empty() == false) { TranscodeToLocalCodePage(theErrorMessage, m_errorMessage, true); } else { FormatXalanDOMException( *m_stylesheetExecutionContext, e, m_errorMessage); } theResult = -4; } return theResult; } void XalanTransformer::EnsureFunctionsInstallation::install() { XalanExtensionsInstaller::installGlobal(m_memoryManagement); XalanEXSLTCommonFunctionsInstaller::installGlobal(m_memoryManagement); XalanEXSLTDynamicFunctionsInstaller::installGlobal(m_memoryManagement); XalanEXSLTMathFunctionsInstaller::installGlobal(m_memoryManagement); XalanEXSLTSetFunctionsInstaller::installGlobal(m_memoryManagement); XalanEXSLTStringFunctionsInstaller::installGlobal(m_memoryManagement); XalanEXSLTDateTimeFunctionsInstaller::installGlobal(m_memoryManagement); } XalanTransformer::EnsureFunctionsInstallation::~EnsureFunctionsInstallation() { if ( !m_release) { XalanExtensionsInstaller::uninstallGlobal(m_memoryManagement); XalanEXSLTCommonFunctionsInstaller::uninstallGlobal(m_memoryManagement); XalanEXSLTDynamicFunctionsInstaller::uninstallGlobal(m_memoryManagement); XalanEXSLTMathFunctionsInstaller::uninstallGlobal(m_memoryManagement); XalanEXSLTSetFunctionsInstaller::uninstallGlobal(m_memoryManagement); XalanEXSLTStringFunctionsInstaller::uninstallGlobal(m_memoryManagement); XalanEXSLTDateTimeFunctionsInstaller::uninstallGlobal(m_memoryManagement); #if defined(XALAN_USE_ICU) XPath::uninstallFunction(XPathFunctionTable::s_formatNumber); #endif } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanTransformer/XalanTransformerDefinitions.hpp0000664000175000000640000000514111731656102025714 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_TRANSFORMER_DEFINITIONS_HEADER_GUARD_1357924680) #define XALAN_TRANSFORMER_DEFINITIONS_HEADER_GUARD_1357924680 #include #include #if defined(XALAN_BUILD_DLL) #define XALAN_TRANSFORMER_EXPORT XALAN_PLATFORM_EXPORT #define XALAN_TRANSFORMER_EXPORT_FUNCTION(T) XALAN_PLATFORM_EXPORT_FUNCTION(T) #else #define XALAN_TRANSFORMER_EXPORT XALAN_PLATFORM_IMPORT #define XALAN_TRANSFORMER_EXPORT_FUNCTION(T) XALAN_PLATFORM_IMPORT_FUNCTION(T) #endif #if defined(__cplusplus) extern "C" { #endif typedef size_t CallbackSizeType; /** * Callback function passed to the XalanTransformer APIs. * Used to process transformation output in blocks of data. * Caller is responsible for streaming or copying data to a user * allocated buffer. Caller should not attempt to write to or * free this data. * * The callback should return the number of bytes written, and * this number should match the length received. Otherwise the * XalanTransformToHandler function terminates and returns an error status. * * static unsigned long xalanOutputHandler(const void* data, unsigned long length, const void *handle); * * @param data a block of data * @param length length of block * @param handle handle of XalanTransformer instance. * @return number of bytes written */ typedef CallbackSizeType (*XalanOutputHandlerType) (const char*, CallbackSizeType, void*); /** * Callback function passed to the XalanTransformer APIs. * Used to flush the buffer once transform is completed. * * static void xalanFlushHandler(const void *handle); * * @param handle handle of XalanTransformer instance. */ typedef void (*XalanFlushHandlerType) (void*); #if defined(__cplusplus) } #endif #endif // XALAN_TRANSFORMER_DEFINITIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanTransformer/XalanParsedSource.hpp0000664000175000000640000000550711731656102023623 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANPARSEDSOURCE_HEADER_GUARD) #define XALANPARSEDSOURCE_HEADER_GUARD // Base include file. Must be first. #include #include // We're bringing in XalanDocument so that its derivation from XalanNode // is known... #include XALAN_CPP_NAMESPACE_BEGIN class DOMSupport; class XMLParserLiaison; class XALAN_TRANSFORMER_EXPORT XalanParsedSourceHelper { public: virtual ~XalanParsedSourceHelper() { } /** * Get the DOMSupport instance. * * @return A reference to a DOMSupport instance. */ virtual DOMSupport& getDOMSupport() = 0; /** * Get the XMLParserLiaison instance. * * @return A rerefernce to an XMLParserLiaison instance. */ virtual XMLParserLiaison& getParserLiaison() = 0; }; /** * This is abstract base class designed to allow a XalanTranfomer * object to reuse a parsed document. */ class XALAN_TRANSFORMER_EXPORT XalanParsedSource { public: XalanParsedSource(); virtual ~XalanParsedSource(); /** * Get a pointer to the XalanDocument instance for the source * document * * @return A pointer to a XalanDocument instance. */ virtual XalanDocument* getDocument() const = 0; /** * Create the appropriate XalanParsedSourceHelper instance to * use for transforming with the instance. * * The caller is responsible for deleting the object when finished. * * @return A pointer to a XalanParsedSourceHelper instance. */ virtual XalanParsedSourceHelper* createHelper(MemoryManager& theManager) const = 0; /** * Get the URI for the parsed source, if any. * use for transforming with the instance. * * @return A const reference to a string containing the URI */ virtual const XalanDOMString& getURI() const = 0; }; XALAN_CPP_NAMESPACE_END #endif // XALANPARSEDSOURCE_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XalanTransformer/XalanDefaultParsedSource.cpp0000664000175000000640000001625511731656102025125 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanDefaultParsedSource.hpp" #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN XalanDefaultParsedSourceDOMSupport::XalanDefaultParsedSourceDOMSupport( const XalanSourceTreeParserLiaison& theParserLiaison, const XalanSourceTreeDOMSupport& theDOMSupport) : XalanSourceTreeDOMSupport(theParserLiaison), m_domSupport(theDOMSupport) { } XalanDefaultParsedSourceDOMSupport::~XalanDefaultParsedSourceDOMSupport() { } void XalanDefaultParsedSourceDOMSupport::reset() { } const XalanDOMString& XalanDefaultParsedSourceDOMSupport::getUnparsedEntityURI( const XalanDOMString& theName, const XalanDocument& theDocument) const { // Check the wrapped XalanSourceTreeDOMSupport instance... const XalanDOMString& theURI = m_domSupport.getUnparsedEntityURI( theName, theDocument); if (theURI.empty() == false) { return theURI; } else { // Chain up to our parent... return XalanSourceTreeDOMSupport::getUnparsedEntityURI( theName, theDocument); } } bool XalanDefaultParsedSourceDOMSupport::isNodeAfter( const XalanNode& node1, const XalanNode& node2) const { return m_domSupport.isNodeAfter( node1, node2); } XalanDefaultParsedSourceHelper::XalanDefaultParsedSourceHelper( const XalanSourceTreeDOMSupport& theSourceDOMSupport, MemoryManager& theManager) : m_parserLiaison(theManager), m_domSupport(m_parserLiaison, theSourceDOMSupport) { } XalanDefaultParsedSourceHelper* XalanDefaultParsedSourceHelper::create( const XalanSourceTreeDOMSupport& theSourceDOMSupport, MemoryManager& theManager) { typedef XalanDefaultParsedSourceHelper ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( theSourceDOMSupport, theManager); theGuard.release(); return theResult; } XalanDefaultParsedSourceHelper::~XalanDefaultParsedSourceHelper() { } DOMSupport& XalanDefaultParsedSourceHelper::getDOMSupport() { return m_domSupport; } XMLParserLiaison& XalanDefaultParsedSourceHelper::getParserLiaison() { return m_parserLiaison; } XalanDefaultParsedSource::XalanDefaultParsedSource( const InputSource& theInputSource, bool fValidate, ErrorHandler* theErrorHandler, EntityResolver* theEntityResolver, XMLEntityResolver* theXMLEntityResolver, const XalanDOMChar* theExternalSchemaLocation, const XalanDOMChar* theExternalNoNamespaceSchemaLocation, bool fPoolAllTextNodes, MemoryManager& theManager) : XalanParsedSource(), m_parserLiaison(theManager), m_domSupport(m_parserLiaison), m_parsedSource(0), m_uri(theManager) { m_parserLiaison.setUseValidation(fValidate); m_parserLiaison.setEntityResolver(theEntityResolver); m_parserLiaison.setXMLEntityResolver(theXMLEntityResolver); m_parserLiaison.setErrorHandler(theErrorHandler); m_parserLiaison.setExternalSchemaLocation(theExternalSchemaLocation); m_parserLiaison.setExternalNoNamespaceSchemaLocation(theExternalNoNamespaceSchemaLocation); m_parserLiaison.setPoolAllText(fPoolAllTextNodes); m_parsedSource = m_parserLiaison.mapDocument(m_parserLiaison.parseXMLStream(theInputSource)); assert(m_parsedSource != 0); m_domSupport.setParserLiaison(&m_parserLiaison); const XalanDOMChar* const theSystemID = theInputSource.getSystemId(); if (theSystemID != 0) { try { URISupport::getURLStringFromString(theSystemID, m_uri); } catch(const XERCES_CPP_NAMESPACE_QUALIFIER XMLException&) { // Assume that any exception here relates to get the url from // the system ID. We'll assume that it's just a fake base identifier // since the parser would have thrown an error if the system ID // wasn't resolved. m_uri = theSystemID; } } } XalanDefaultParsedSource* XalanDefaultParsedSource::create( MemoryManager& theManager, const InputSource& theInputSource, bool fValidate, ErrorHandler* theErrorHandler, EntityResolver* theEntityResolver, XMLEntityResolver* theXMLEntityResolver, const XalanDOMChar* theExternalSchemaLocation, const XalanDOMChar* theExternalNoNamespaceSchemaLocation, bool fPoolAllTextNodes) { typedef XalanDefaultParsedSource ThisType; XalanAllocationGuard theGuard( theManager, theManager.allocate(sizeof(ThisType))); ThisType* theResult = new (theGuard.get()) ThisType( theInputSource, fValidate, theErrorHandler, theEntityResolver, theXMLEntityResolver, theExternalSchemaLocation, theExternalNoNamespaceSchemaLocation, fPoolAllTextNodes, theManager); theGuard.release(); return theResult; } XalanDefaultParsedSource::~XalanDefaultParsedSource() { } XalanDocument* XalanDefaultParsedSource::getDocument() const { return m_parsedSource; } XalanParsedSourceHelper* XalanDefaultParsedSource::createHelper(MemoryManager& theManager) const { return XalanDefaultParsedSourceHelper::create(m_domSupport, theManager); } const XalanDOMString& XalanDefaultParsedSource::getURI() const { return m_uri; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanTransformer/XalanTransformerOutputStream.hpp0000664000175000000640000000502111731656102026112 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANTRANSFORMEROUTPUTSTREAM_HEADER_GUARD_1357924680) #define XALANTRANSFORMEROUTPUTSTREAM_HEADER_GUARD_1357924680 // Base include file. Must be first. #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN // A class for output to a user defined (callback) function. class XALAN_TRANSFORMER_EXPORT XalanTransformerOutputStream : public XalanOutputStream { public: /** * Construct a XalanTransformerOutputStream instance for output to a * user defined (callback) function. * * @param theOutputHandle void pointer passed through to callback. * @param theOutputHandler a user defined (callback) function. * @param theFlushHandler a user defined (callback) function. */ XalanTransformerOutputStream( MemoryManager& theManager, void* theOutputHandle, XalanOutputHandlerType theOutputHandler, XalanFlushHandlerType theFlushHandler = 0); virtual ~XalanTransformerOutputStream(); protected: virtual void writeData( const char* theBuffer, size_type theBufferLength); virtual void doFlush(); private: // These are not implemented... XalanTransformerOutputStream(const XalanTransformerOutputStream&); XalanTransformerOutputStream& operator=(const XalanTransformerOutputStream&); void* const m_outputHandle; XalanOutputHandlerType m_outputHandler; XalanFlushHandlerType m_flushHandler; }; XALAN_CPP_NAMESPACE_END #endif // XALANTRANSFORMEROUTPUTSTREAM_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanTransformer/XalanSourceTreeWrapperParsedSource.hpp0000664000175000000640000000505011731656102027156 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEWRAPPERPARSEDSOURCE_HEADER_GUARD) #define XALANSOURCETREEWRAPPERPARSEDSOURCE_HEADER_GUARD // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanSourceTreeDOMSupport; class XalanSourceTreeDocument; class XalanSourceTreeParserLiaison; /** * This is designed to allow a XalanTranfomer object to wrap a parsed * Xerces document. */ class XALAN_TRANSFORMER_EXPORT XalanSourceTreeWrapperParsedSource : public XalanParsedSource { public: XalanSourceTreeWrapperParsedSource( XalanSourceTreeDocument* theDocument, XalanSourceTreeParserLiaison& theParserLiaison, XalanSourceTreeDOMSupport& theDOMSupport, const XalanDOMString& theURI = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), MemoryManager& theManager XALAN_DEFAULT_MEMMGR); virtual ~XalanSourceTreeWrapperParsedSource(); virtual XalanDocument* getDocument() const; virtual XalanParsedSourceHelper* createHelper(MemoryManager& theManager XALAN_DEFAULT_MEMMGR) const; virtual const XalanDOMString& getURI() const; private: //not implemented XalanSourceTreeWrapperParsedSource(); XalanSourceTreeWrapperParsedSource(const XalanSourceTreeWrapperParsedSource&); XalanSourceTreeParserLiaison& m_parserLiaison; XalanSourceTreeDOMSupport& m_domSupport; XalanSourceTreeDocument* const m_parsedSource; const XalanDOMString m_uri; }; XALAN_CPP_NAMESPACE_END #endif // XALANSOURCETREEWRAPPERPARSEDSOURCE_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XalanTransformer/XalanTransformer.hpp0000664000175000000640000010764711731656102023536 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANTRANSFORMER_HEADER_GUARD) #define XALANTRANSFORMER_HEADER_GUARD // Base include file. Must be first. #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) class ostream; #else #include #endif #include #include #include #include #include #include #include #include #include XALAN_DECLARE_XERCES_CLASS(EntityResolver) XALAN_DECLARE_XERCES_CLASS(ErrorHandler) XALAN_DECLARE_XERCES_CLASS(XMLEntityResolver) XALAN_CPP_NAMESPACE_BEGIN typedef XERCES_CPP_NAMESPACE_QUALIFIER EntityResolver EntityResolverType; typedef XERCES_CPP_NAMESPACE_QUALIFIER ErrorHandler ErrorHandlerType; XALAN_USING_XERCES(EntityResolver) XALAN_USING_XERCES(ErrorHandler) XALAN_USING_XERCES(XMLEntityResolver) class Function; class StylesheetExecutionContextDefault; class ProblemListener; class TraceListener; class XSLTInit; class XalanDocumentBuilder; class XalanCompiledStylesheet; class XalanParsedSource; class XalanTransformerOutputStream; class XObjectFactoryDefault; class XalanNode; /** * This is a simple C++ interface for some common usage patterns. It's * the user's responsibility to call initialize and terminate for Xerces * and Xalan before creating and after deleting any XalanTransformer * instances. */ class XALAN_TRANSFORMER_EXPORT XalanTransformer { public: #if defined(XALAN_NO_STD_NAMESPACE) typedef ostream StreamType; #else typedef std::ostream StreamType; #endif typedef XalanVector CompiledStylesheetPtrVectorType; typedef XalanVector ParsedSourcePtrVectorType; typedef XalanMap ParamMapType; typedef XalanMap FunctionMapType; typedef XalanVector TraceListenerVectorType; XalanTransformer(MemoryManager& theManager = XalanMemMgrs::getDefaultXercesMemMgr()); virtual ~XalanTransformer(); MemoryManager& getMemoryManager() { return m_memoryManager; } const MemoryManager& getMemoryManager() const { return m_memoryManager; } /** * Initialize Xalan. * * Should be called only once per process before creating any * instances of XalanTransformer. This call is not thread-safe, * so you must serialize any calls to it, and you must track the * initialization state, so you do not call it more than once. */ static void initialize(MemoryManager& theManager = XalanMemMgrs::getDefaultXercesMemMgr()); /** * Terminate Xalan. * * Should be called only once per process after deleting all * instances of XalanTransformer. This call is not thread-safe, * so you must serialize any calls to it, and you must track the * initialization state, so you do not call it more than once. * * This is handy when using leak-detection software, as all * static data allocated by Xalan is freed. * */ static void terminate(); /** * Clean up the ICU, if ICU integration is enabled. * * This should be called only once per process after calling * XalanTransformer::terminate() and XMLPlatformUtils::Terminate. * * This must only be done if the ICU will no longer be used by * the process, since the ICU will no longer be in a usable state. * See the ICU documentation for more details. * * This call is not thread-safe, so you must serialize any calls * to it, and you must track the initialization state, so you do * not call it more than once. * * This is handy when using leak-detection software, as all * static data allocated by the ICU is freed. * */ static void ICUCleanUp(); static void ICUStartUp(MemoryManager& theManager = XalanMemMgrs::getDefaultXercesMemMgr()); /** * Transform will apply the stylesheet source to the parsed xml source * and write the transformation output to the target. * * @param theParsedXML the parsed input source * @param theStylesheetSource stylesheet source * @param theResultTarget output source * @return 0 for success */ int transform( const XalanParsedSource& theParsedXML, const XSLTInputSource& theStylesheetSource, const XSLTResultTarget& theResultTarget) { return doTransform(theParsedXML, 0, &theStylesheetSource, theResultTarget); } /** * Transform will apply the compiled stylesheet to the parsed xml source * and write the transformation output to the target. * * @param theParsedXML the parsed input source * @param theCompiledStylesheet pointer to a compiled stylesheet. Must not be null. * @param theResultTarget output source * @return 0 for success */ int transform( const XalanParsedSource& theParsedXML, const XalanCompiledStylesheet* theCompiledStylesheet, const XSLTResultTarget& theResultTarget) { assert(theCompiledStylesheet != 0); return doTransform(theParsedXML, theCompiledStylesheet, 0, theResultTarget); } /** * Transform will apply the stylesheet provided as a PI in the * XML of the parsed xml source and write the transformation output to * the target. * * @param theParsedXML the parsed input source * @param theResultTarget output source tree * @return 0 for success */ int transform( const XalanParsedSource& theParsedXML, const XSLTResultTarget& theResultTarget) { assert(s_emptyInputSource != 0); return transform(theParsedXML, *s_emptyInputSource, theResultTarget); } /** * Transform will apply the stylesheet source to the input source * and write the transformation output to the target. The input * source and result target can be a file name, a stream or a root * node. * * @param theInputSource input source * @param theStylesheetSource stylesheet source * @param theResultTarget output source * @return 0 for success */ int transform( const XSLTInputSource& theInputSource, const XSLTInputSource& theStylesheetSource, const XSLTResultTarget& theResultTarget); /** * Transform will apply the stylesheet provided as a PI in the * XML of the input source and write the transformation output to * the target. The input source and result target can be a file * name, a stream or a root node. * * @param theInputSource input source * @param theResultTarget output source tree * @return 0 for success */ int transform( const XSLTInputSource& theInputSource, const XSLTResultTarget& theResultTarget) { assert(s_emptyInputSource != 0); return transform( theInputSource, *s_emptyInputSource, theResultTarget); } /** * Transform will apply the stylesheet source to the input source * and write the transformation result to a callback function * in pre-allocated blocks. The input source can be a file name, * a stream or a root node. Upon termination, Xalan releases any * allocated memory. Data passed to the callback is not guaranteed to * be null terminated. * * - See XalanTransformerOutputStream and XalanOutputHandlerType * for more details. * * @param theInputSource input source * @param theStylesheetSource stylesheet source * @param theOutputHandle void pointer passed through to callback. * @param theOutputHandler a user defined (callback) function. * @param theFlushHandler (optional) a user defined (callback) function. * @return 0 for success */ int transform( const XSLTInputSource& theInputSource, const XSLTInputSource& theStylesheetSource, void* theOutputHandle, XalanOutputHandlerType theOutputHandler, XalanFlushHandlerType theFlushHandler = 0); /** * Transform will apply the compiled stylesheet to the input source * and write the transformation output to the target. The input * source and result target can be a file name, a stream or a root * node. * * @param theInputSource input source * @param theCompiledStylesheet pointer to a compiled stylesheet. Must not be null. * @param theResultTarget output source * @return 0 for success */ int transform( const XSLTInputSource& theInputSource, const XalanCompiledStylesheet* theCompiledStylesheet, const XSLTResultTarget& theResultTarget); /** * Transform will apply the compiled stylesheet to the source * and write the transformation result to a callback function * in pre-allocated blocks. The input source can be a file name, * a stream or a root node. Upon termination, Xalan releases any * allocated memory. Data passed to the callback is not guaranteed to * be null terminated. * * - See XalanTransformerOutputStream and XalanOutputHandlerType * for more details. * * @param theParsedSource Parsed source instance * @param theCompiledStylesheet pointer to a compiled stylesheet. Must not be null. * @param theOutputHandle void pointer passed through to callback. * @param theOutputHandler a user defined callback function. * @param theFlushHandler An optional user-defined callback function. * @return 0 for success */ int transform( const XalanParsedSource& theParsedSource, const XalanCompiledStylesheet* theCompiledStylesheet, void* theOutputHandle, XalanOutputHandlerType theOutputHandler, XalanFlushHandlerType theFlushHandler = 0); /** * Transform will apply the stylesheet provided as a PI in the * XML of the input source and write the transformation result to a * callback function in pre-allocated blocks. The input source can be * a file name, a stream or a root node. Upon termination, Xalan * releases any allocated memory. Data passed to the callback is not * guaranteed to be null terminated. * * - See XalanTransformerOutputStream and XalanOutputHandlerType * for more details. * * @param theInputSource input source * @param theOutputHandle void pointer passed through to callback. * @param theOutputHandler a user defined callback function. * @param theFlushHandler an optional user-defined callback function. * @return 0 for success */ int transform( const XSLTInputSource& theInputSource, void* theOutputHandle, XalanOutputHandlerType theOutputHandler, XalanFlushHandlerType theFlushHandler = 0); /** * Creates a compiled stylesheet. The input source can be * a file name, a stream or a root node. The XalanTransformer * instance owns the XalanCompiledStylesheet instance and will * delete it when the XalanTransformer instance goes out of scope, * or you explicitly call destroyStylesheet(). You must not delete * the instance yourself. * * @param theStylesheetSource input source * @param theCompiledStylesheet a reference to a pointer to a XalanCompileStylesheet. * @return 0 for success */ int compileStylesheet( const XSLTInputSource& theStylesheetSource, const XalanCompiledStylesheet*& theCompiledStylesheet); /** * Destroy a XalanCompiledStylesheet instance created by a previous * call to compileStylesheet(). * * @param theStylesheet The instance to destroy. * @return 0 for success */ int destroyStylesheet(const XalanCompiledStylesheet* theStylesheet); /** * Parse a source XML document. The input source can be * a file name, a stream or a root node. The XalanTransformer * instance owns the XalanParsedSource instance and will * delete it when the XalanTransformer instance goes out of scope, * or you explicitly call destroyParsedSource(). You must not * delete the instance yourself. * * @param theInputSource input source * @param theParsedSource a reference to a pointer to a XalanParsedSource. * @param useXercesDOM input use default or xerces DOM source tree * @return 0 for success */ int parseSource( const XSLTInputSource& theInputSource, const XalanParsedSource*& theParsedSource, bool useXercesDOM = false); /** * Destroy a parsed source created by a previous call to parseSource(). * * @param theParsedSource The XalanParsedSource instance to destroy. * @return 0 for success */ int destroyParsedSource(const XalanParsedSource* theParsedSource); /** * Create a document builder. Using the document builder, you * can construct a document using SAX2 interfaces. The XalanTransformer * instance owns the document builder and will delete it when the * XalanTransformer instance goes out of scope, or you explicitly call * destroyDocumentBuilder(). You must not delete the instance yourself. * * @param theURI The base URI for the document instance. * @return a pointer to a XalanDocumentBuilder instance or 0 for failure. */ XalanDocumentBuilder* createDocumentBuilder(const XalanDOMString& theURI = XalanDOMString(XalanMemMgrs::getDummyMemMgr())); /** * Destroy a document builder created by a previous call to createDocumentBuilder(). * Passing a pointer that is not created by a call to createDocumentBuilder() can * result in undefined behavior. * * @param theDocumentBuilder The document builder to destroy. */ void destroyDocumentBuilder(XalanDocumentBuilder* theDocumentBuilder); /** * Install an external function in the local space. * * @param theNamespace The namespace for the functionl * @param functionName The name of the function. * @param function The function to install. */ void installExternalFunction( const XalanDOMString& theNamespace, const XalanDOMString& functionName, const Function& function); /** * Install an external function in the global space. * * @param theNamespace The namespace for the functionl * @param functionName The name of the function. * @param function The function to install. */ static void installExternalFunctionGlobal( const XalanDOMString& theNamespace, const XalanDOMString& functionName, const Function& function); /** * Uninstall an external local function. * * @param theNamespace The namespace for the function * @param functionName The name of the function. */ void uninstallExternalFunction( const XalanDOMString& theNamespace, const XalanDOMString& functionName); /** * Uninstall an external global function. * * @param theNamespace The namespace for the function * @param functionName The name of the function. */ static void uninstallExternalFunctionGlobal( const XalanDOMString& theNamespace, const XalanDOMString& functionName); /** * Retrieve the factory object for creating XObjects. * * @return factory object instance */ XObjectFactory& getXObjectFactory() const { assert(m_topXObjectFactory != 0); return *m_topXObjectFactory; } /** * Set a top-level parameter, which the stylesheet can access * with a top-level xsl:param. Top-level params are "sticky," * and must be removed with a call to clearStylesheetParams(). * * @param key name of the param * @param expression expression that will be evaluated */ void setStylesheetParam( const XalanDOMString& key, const XalanDOMString& expression); /** * Set a top-level parameter, which the stylesheet can access * with a top-level xsl:param. Top-level params are "sticky," * and must be removed with a call to clearStylesheetParams(). * * @param key name of the param * @param expression expression that will be evaluated */ void setStylesheetParam( const char* key, const char* expression); /** * Set a top-level parameter, which the stylesheet can access * with a top-level xsl:param. Top-level params are "sticky," * and must be removed with a call to clearStylesheetParams(). * * @param key name of the param * @param number value to be evaluated */ void setStylesheetParam( const char* key, double number); /** * Set a top-level parameter, which the stylesheet can access * with a top-level xsl:param. Top-level params are "sticky," * and must be removed with a call to clearStylesheetParams(). * * @param key name of the param * @param number value to be evaluated */ void setStylesheetParam( const XalanDOMString& key, double number); /** * Set a top-level parameter, which the stylesheet can access * with a top-level xsl:param. Top-level params are "sticky," * and must be removed with a call to clearStylesheetParams(). * * @param key name of the param * @param nodeset XML nodeset that will be evaulated */ void setStylesheetParam( const char* key, XalanNode* nodeset); /** * Set a top-level parameter, which the stylesheet can access * with a top-level xsl:param. Top-level params are "sticky," * and must be removed with a call to clearStylesheetParams(). * * @param key name of the param * @param nodeset XML nodeset that will be evaluated */ void setStylesheetParam( const XalanDOMString& key, XalanNode* nodeset); /** * Set a top-level parameter, which the stylesheet can access * with a top-level xsl:param. Top-level params are "sticky," * and must be removed with a call to clearStylesheetParams(). * * @param key name of the param * @param object any XObject owned by the transformer */ void setStylesheetParam( const char* key, XObjectPtr object); /** * Set a top-level parameter, which the stylesheet can access * with a top-level xsl:param. Top-level params are "sticky," * and must be removed with a call to clearStylesheetParams(). * * @param key name of the param * @param object any XObject owned by the transformer */ void setStylesheetParam( const XalanDOMString& key, XObjectPtr object); /** * Clear any stylesheet params. */ void clearStylesheetParams() { m_params.clear(); m_topXObjectFactory->reset(); } /** * Add a TraceListener instance. TraceListeners instances are preserved * between calls to transform(), so they will be called until they are * removed. * * @param theTraceListener The instance to add. */ void addTraceListener(TraceListener* theTraceListener) { m_traceListeners.push_back(theTraceListener); } /** * Remove a TraceListener instance * * @param theTraceListener The instance to remove. * @return true if the instance was removed, false if not. */ bool removeTraceListener(TraceListener* theTraceListener); /** * Remove all TraceListener instances. */ void removeTraceListeners() { m_traceListeners.clear(); } /** * Set a flag to indicate whether or not the source file(s) for the * transformation will be validated. * * @param fValue the new value for the flag. */ bool getUseValidation() const { return m_useValidation; } /** * Set a flag to indicate whether or not the source file(s) for the * transformation will be validated. * * @param fValue the new value for the flag. */ void setUseValidation(bool fValue) { m_useValidation = fValue; } /** * Returns the installed EntityResolver. * * @return The pointer to the installed EntityResolver. */ EntityResolver* getEntityResolver() const { return m_entityResolver; } /** * Installs the supplied EntityResolver. * * A call to setEntityResolver with a non-null pointer will * uninstall any XMLEntityResolver previously installed. * * @param theResolver A pointer to the EntityResolver. */ void setEntityResolver(EntityResolver* theResolver) { m_entityResolver = theResolver; if (theResolver != 0 && m_xmlEntityResolver != 0) { m_xmlEntityResolver = 0; } } /** * Returns the installed XMLEntityResolver. * * @return The pointer to the installed XMLEntityResolver. */ XMLEntityResolver* getXMLEntityResolver() const { return m_xmlEntityResolver; } /** * Installs the supplied XMLEntityResolver. * * A call to setXMLEntityResolver with a non-null pointer will * uninstall any EntityResolver previously installed. * * @param theResolver A pointer to the XMLEntityResolver. */ void setXMLEntityResolver(XMLEntityResolver* theResolver) { m_xmlEntityResolver = theResolver; if (theResolver != 0 && m_entityResolver != 0) { m_entityResolver = 0; } } /** * This method returns the installed error handler. * * @return The pointer to the installed error handler object. */ ErrorHandler* getErrorHandler() const { return m_errorHandler; } /** * This method installs the user-specified error handler. * * @param handler A pointer to the error handler to be called upon error. */ void setErrorHandler(ErrorHandler* theErrorHandler) { m_errorHandler = theErrorHandler; } /** * This method returns the location for an external schema document * for parsing. * * @return A string representing the location of the external schema document */ const XalanDOMChar* getExternalSchemaLocation() const { return m_externalSchemaLocation.empty() == true ? 0 : m_externalSchemaLocation.c_str(); } /** * This method sets the location for an external schema document * for parsing. * * @param location A string representing the location of the external schema document */ void setExternalSchemaLocation(const XalanDOMChar* location) { assert(location != 0); m_externalSchemaLocation = location; } /** * This method returns the location for an external schema document * for parsing. * * @return A string representing the location of the external schema document */ const XalanDOMChar* getExternalNoNamespaceSchemaLocation() const { return m_externalNoNamespaceSchemaLocation.empty() == true ? 0 : m_externalNoNamespaceSchemaLocation.c_str(); } /** * This method sets the location for an external schema document * for parsing. * * @param location A string representing the location of the external schema document */ void setExternalNoNamespaceSchemaLocation(const XalanDOMChar* location) { assert(location != 0); m_externalNoNamespaceSchemaLocation = location; } /** * This member functions gets the flag to determine of a default parsed source * tree will pool the values of all of the text nodes in the XML document. * * @return The boolean value for the flag. */ bool getPoolAllTextNodes() const { return m_poolAllTextNodes; } /** * This member functions sets the flag to determine of a default parsed source * tree will pool the values of all of the text nodes in the XML document. This * can result in significant memory savings if there are lots of repeated values * in text nodes. * * @param fPool The boolean value for the flag. */ void setPoolAllTextNodes(bool fPool) { m_poolAllTextNodes = fPool; } /** * This method returns the installed ProblemListener instance. * * @return The pointer to the installed ProblemListener instance. */ ProblemListener* getProblemListener() const { return m_problemListener; } /** * This method installs the user-specified ProblemListener instance. * * @param handler A pointer to the ProblemListener to be called when a problem occurs. */ void setProblemListener(ProblemListener* theProblemListener) { m_problemListener = theProblemListener; } /** * Returns the last error that occurred as a * result of calling transform. * * @return error message const character pointer. */ const char* getLastError() const { assert(m_errorMessage.empty() == false); return &m_errorMessage[0]; } /** * Get the current output encoding, if any. Note this is not the output encoding * specified in a stylesheet. Rather, it can override that encoding, if the * * @return A string containing the current encoding */ const XalanDOMString& getOutputEncoding() const { return m_outputEncoding; } /** * Set the current output encoding. Note this will override the encoding * specified in the stylesheet, if the encoding is available. However, * it will not override any encoding specified by an XSLTResultTarget * parameter to one of the transform() member functions. * * @param theEncoding The encoding to use. */ void setOutputEncoding(const XalanDOMString& theEncoding) { m_outputEncoding = theEncoding; } /** * Get the current number of spaces to indent. * * @return number of spaces */ int getIndent() const; /** * Set the current number of spaces to indent. * * @param indentAmount The number of spaces to indent. Use -1 for the default amount. */ void setIndent(int indentAmount); /** * Enums to determine whether or not run-time escaping of URLs has been set. */ enum eEscapeURLs { eEscapeURLsDefault, // Use the value in the stylesheet eEscapeURLsNo, // Don't escape URLs eEscapeURLsYes // Escape URLs }; /** * Get the value for run-time escaping of URLs. This can * override the property specified by the stylesheet. The * default behavior is to honor the property in the stylesheet. * * @return The value of the enum */ eEscapeURLs getEscapeURLs() const; /** * Set the value for run-time escaping of URLs. This can * override the property specified by the stylesheet. The * default behavior is to honor the property in the stylesheet. * * @param value The value of the enum */ void setEscapeURLs(eEscapeURLs value); /** * Enums to determine whether or not run-time omission of the META tag has been set. * Relevant only for HTML output */ enum eOmitMETATag { eOmitMETATagDefault, // Use the value in the stylesheet eOmitMETATagNo, // Don't omit the META tag eOmitMETATagYes // Omit the META tag }; /** * Get the value for run-time omission of the META tag. This can * override the property specified by the stylesheet. The * default behavior is to honor the property in the stylesheet. * * @return The value of the enum */ eOmitMETATag getOmitMETATag() const; /** * Get the value for run-time omission of the META tag. This can * override the property specified by the stylesheet. The * default behavior is to honor the property in the stylesheet. * * @param value The value of the enum */ void setOmitMETATag(eOmitMETATag value); /** * Set the ostream instance for reporting errors. The default * is a null pointer, so errors are not reported. If there is * a user-installed ProblemListener instance, this is not used, as * all such warnings and messages are handled by the that * ProblemListener. * * @param theStream A pointer to the ostream instance. */ void setErrorStream(StreamType* theStream) { m_errorStream = theStream; } /** * Get the current error stream ostream instance. * * @return A pointer to the instance. Can be a null pointer. */ StreamType* getErrorStream() const { return m_errorStream; } /** * Set the ostream instance for reporting warnings and messages. The default * is std::cerr. If set to a null pointer, no warnings or messages are written. * If there is a user-installed ProblemListener instance, this is not used, as * all such warnings and messages are handled by the that ProblemListener. * * @param theStream A pointer to the ostream instance. */ void setWarningStream(StreamType* theStream) { m_warningStream = theStream; } /** * Get the current warning stream ostream instance. * * @return A pointer to the instance. Can be a null pointer. */ StreamType* getWarningStream() const { return m_warningStream; } bool getICUAvailable() const; class EnsureFunctionsInstallation { public: EnsureFunctionsInstallation(MemoryManager& theManager) : m_memoryManagement(theManager), m_release(false) { } ~EnsureFunctionsInstallation(); void install(); void release() { m_release = true; } private: MemoryManager& m_memoryManagement; bool m_release; }; class EnsureDestroyParsedSource { public: EnsureDestroyParsedSource( XalanTransformer& theTransformer, const XalanParsedSource* theParsedSource) : m_transformer(theTransformer), m_parsedSource(theParsedSource) { } ~EnsureDestroyParsedSource() { m_transformer.destroyParsedSource(m_parsedSource); } private: XalanTransformer& m_transformer; const XalanParsedSource* const m_parsedSource; }; class EnsureDestroyCompiledStylesheet { public: EnsureDestroyCompiledStylesheet( XalanTransformer& theTransformer, const XalanCompiledStylesheet* theCompiledStylesheet) : m_transformer(theTransformer), m_compiledStylesheet(theCompiledStylesheet) { } ~EnsureDestroyCompiledStylesheet() { m_transformer.destroyStylesheet(m_compiledStylesheet); } private: XalanTransformer& m_transformer; const XalanCompiledStylesheet* const m_compiledStylesheet; }; struct EnsureDestroyDocumentBuilder { EnsureDestroyDocumentBuilder( XalanTransformer& theTransformer, XalanDocumentBuilder* theDocumentBuilder) : m_transformer(theTransformer), m_documentBuilder(theDocumentBuilder) { } ~EnsureDestroyDocumentBuilder() { m_transformer.destroyDocumentBuilder(m_documentBuilder); } private: XalanTransformer& m_transformer; XalanDocumentBuilder* const m_documentBuilder; }; protected: private: void reset(); class EnsureReset { public: EnsureReset(XalanTransformer& theTransformer) : m_transformer(theTransformer) { } ~EnsureReset(); private: XalanTransformer& m_transformer; }; friend class EnsureReset; int doTransform( const XalanParsedSource& theParsedXML, const XalanCompiledStylesheet* theCompiledStylesheet, const XSLTInputSource* theStylesheetSource, const XSLTResultTarget& theResultTarget); // Data members... MemoryManager& m_memoryManager; CompiledStylesheetPtrVectorType m_compiledStylesheets; ParsedSourcePtrVectorType m_parsedSources; ParamMapType m_params; FunctionMapType m_functions; TraceListenerVectorType m_traceListeners; CharVectorType m_errorMessage; bool m_useValidation; EntityResolver* m_entityResolver; XMLEntityResolver* m_xmlEntityResolver; ErrorHandler* m_errorHandler; XalanDOMString m_externalSchemaLocation; XalanDOMString m_externalNoNamespaceSchemaLocation; ProblemListener* m_problemListener; StreamType* m_errorStream; StreamType* m_warningStream; XalanDOMString m_outputEncoding; bool m_poolAllTextNodes; XObjectFactoryDefault* m_topXObjectFactory; // This should always be the latest data member!!! StylesheetExecutionContextDefault* m_stylesheetExecutionContext; static const XSLTInputSource* s_emptyInputSource; static const XSLTInit* s_xsltInit; }; XALAN_CPP_NAMESPACE_END #endif // XALANTRANSFORMER_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XalanTransformer/XalanDefaultParsedSource.hpp0000664000175000000640000001253511731656102025127 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANDEFAULTPARSEDSOURCE_HEADER_GUARD) #define XALANDEFAULTPARSEDSOURCE_HEADER_GUARD // Base include file. Must be first. #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XSLTInputSource; class XalanDefaultParsedSourceDOMSupport : public XalanSourceTreeDOMSupport { public: XalanDefaultParsedSourceDOMSupport( const XalanSourceTreeParserLiaison& theParserLiaison, const XalanSourceTreeDOMSupport& theDOMSupport); virtual ~XalanDefaultParsedSourceDOMSupport(); virtual void reset(); // These interfaces are inherited from DOMSupport... virtual const XalanDOMString& getUnparsedEntityURI( const XalanDOMString& theName, const XalanDocument& theDocument) const; virtual bool isNodeAfter( const XalanNode& node1, const XalanNode& node2) const; private: // Not implemented... XalanDefaultParsedSourceDOMSupport(const XalanDefaultParsedSourceDOMSupport&); XalanDefaultParsedSourceDOMSupport& operator=(const XalanDefaultParsedSourceDOMSupport&); // Data members... const XalanSourceTreeDOMSupport& m_domSupport; }; class XALAN_TRANSFORMER_EXPORT XalanDefaultParsedSourceHelper : public XalanParsedSourceHelper { public: XalanDefaultParsedSourceHelper(const XalanSourceTreeDOMSupport& theSourceDOMSupport, MemoryManager& theManager XALAN_DEFAULT_MEMMGR); static XalanDefaultParsedSourceHelper* create(const XalanSourceTreeDOMSupport& theSourceDOMSupport, MemoryManager& theManager); ~XalanDefaultParsedSourceHelper(); virtual DOMSupport& getDOMSupport(); virtual XMLParserLiaison& getParserLiaison(); private: // Not implemented... XalanDefaultParsedSourceHelper(const XalanDefaultParsedSourceHelper&); XalanDefaultParsedSourceHelper& operator=(const XalanDefaultParsedSourceHelper&); // Data members... XalanSourceTreeParserLiaison m_parserLiaison; XalanDefaultParsedSourceDOMSupport m_domSupport; }; /** * This is designed to allow a XalanTranfomer object to reuse a parsed * document. */ class XALAN_TRANSFORMER_EXPORT XalanDefaultParsedSource : public XalanParsedSource { public: XalanDefaultParsedSource( const InputSource& theInputSource, bool fValidate = false, ErrorHandler* theErrorHandler = 0, EntityResolver* theEntityResolver = 0, XMLEntityResolver* theXMLEntityResolver = 0, const XalanDOMChar* theExternalSchemaLocation = 0, const XalanDOMChar* theExternalNoNamespaceSchemaLocation = 0, bool fPoolAllTextNodes = XalanSourceTreeDocument::getPoolAllTextNodes(), MemoryManager& theManager XALAN_DEFAULT_MEMMGR); static XalanDefaultParsedSource* create( MemoryManager& theManager, const InputSource& theInputSource, bool fValidate = false, ErrorHandler* theErrorHandler = 0, EntityResolver* theEntityResolver = 0, XMLEntityResolver* theXMLEntityResolver = 0, const XalanDOMChar* theExternalSchemaLocation = 0, const XalanDOMChar* theExternalNoNamespaceSchemaLocation = 0, bool fPoolAllTextNodes = XalanSourceTreeDocument::getPoolAllTextNodes()); virtual ~XalanDefaultParsedSource(); virtual XalanDocument* getDocument() const; virtual XalanParsedSourceHelper* createHelper(MemoryManager& theManager) const; virtual const XalanDOMString& getURI() const; private: // Not implemented... XalanDefaultParsedSource(const XalanDefaultParsedSource&); XalanDefaultParsedSource& operator=(const XalanDefaultParsedSource&); // Data members... XalanSourceTreeParserLiaison m_parserLiaison; XalanSourceTreeDOMSupport m_domSupport; XalanSourceTreeDocument* m_parsedSource; XalanDOMString m_uri; }; XALAN_CPP_NAMESPACE_END #endif // XALANDEFAULTPARSEDSOURCE_HEADER_GUARD xalan-c-1.11/c/src/xalanc/TestXSLT/0002775000175000000640000000000012037700125015661 5ustar stevesambaxalan-c-1.11/c/src/xalanc/TestXSLT/process.cpp0000664000175000000640000010265411731656102020056 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #if !defined(NDEBUG) && defined(_MSC_VER) #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#define XALAN_USE_ICU #if defined(XALAN_USE_ICU) #include #include #include #endif //#define XALAN_VQ_SPECIAL_TRACE #if defined(XALAN_VQ_SPECIAL_TRACE) #include "C:/Program Files/Rational/Quantify/pure.h" #endif XALAN_USING_STD(cerr) XALAN_USING_STD(cin) XALAN_USING_STD(cout) XALAN_USING_STD(endl) XALAN_USING_STD(hex) XALAN_USING_STD(pair) XALAN_USING_STD(vector) /** * Print argument options. */ void printArgOptions() { cerr << endl << "TestXSLT options: " << endl << endl << "Options are case-sensitive." << endl << endl << " [-? Shows this message.]" << endl << endl << " [-h Shows this message.]" << endl << endl << " [-in (If not specified, stdin is used.)]" << endl << endl << " [-xsl ]" << endl << " [-out ]" << endl << " [-v Show version information only.]" << endl << " [-qc Quiet pattern conflicts warnings.]" << endl << " [-q Use quiet mode.]" << endl << " [-indent n Controls how many spaces to indent. (default is 0)]" << endl << " [-validate Controls whether validation occurs. Validation is off by default.]" << endl << endl << " [-tt Trace the templates as they are being called.]" << endl << " [-tg Trace each generation event.]" << endl << " [-ts Trace each selection event.]" << endl << " [-ttc Trace the template children as they are being processed.]" << endl << endl << " [-xml Use XML formatter.]" << endl << " [-text Use Text formatter.]" << endl << " [-html Use HTML formatter.]" << endl << " [-dom Use DOM formatter. Generates a DOM instance, then formats XML for output.]" << endl << " [-xst Use source tree formatter. Generates an instance of the default source tree, then formats XML for output.]" << endl << endl << " [-param name expression Sets a stylesheet parameter.]" << endl << endl << " [-xd Use Xerces DOM instead of Xalan source tree.]" << endl << endl << " [-de Disable built-in extension functions.]" << endl << "The following option is valid only with -html." << endl << endl << " [-noindent Turns off HTML indenting." << endl << endl << "The following option is valid only with -xml." << endl << endl << " [-nh Don't generate the XML declaration.]" << endl; } // We only need a few things from the Xerces namespace... XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XERCES(SAXParseException) XALAN_USING_XERCES(SAXException) XALAN_USING_XERCES(XMLException) // We need lots of things from the Xalan namespace, so hoist everything... XALAN_CPP_NAMESPACE_USE typedef vector > StringPairVectorType; struct CmdLineParams { StringPairVectorType params; bool setQuietConflictWarnings; bool setQuietMode; bool versionOnly; bool traceTemplates; bool traceGenerationEvent; bool traceSelectionEvent; bool traceTemplateChildren; bool shouldWriteXMLHeader; bool doValidation; bool noIndent; bool formatToNull; bool formatToSourceTree; bool useDOM; bool disableExtensions; int indentAmount; int outputType; const char* outFileName; const char* xslFileName; const char* inFileName; CmdLineParams() : params(), setQuietConflictWarnings(false), setQuietMode(false), versionOnly(false), traceTemplates(false), traceGenerationEvent(false), traceSelectionEvent(false), traceTemplateChildren(false), shouldWriteXMLHeader(true), doValidation(false), noIndent(false), formatToNull(false), formatToSourceTree(false), useDOM(false), disableExtensions(false), indentAmount(-1), outputType(-1), outFileName(0), xslFileName(0), inFileName(0) { } }; void warnPreviousOutputMethod(int outputMethod) { cerr << endl << "Warning: Ignoring previous output method switch "; switch(outputMethod) { case FormatterListener::OUTPUT_METHOD_XML: cerr << "-XML."; break; case FormatterListener::OUTPUT_METHOD_TEXT: cerr << "-TEXT."; break; case FormatterListener::OUTPUT_METHOD_HTML: cerr << "-HTML."; break; case FormatterListener::OUTPUT_METHOD_DOM: cerr << "-DOM."; break; } cerr << endl << endl; } bool getArgs( int argc, char* argv[], CmdLineParams& p) { bool fSuccess = true; for (int i = 1; i < argc && fSuccess == true; ++i) { if (!strcmp("-h", argv[i]) || !strcmp("-?", argv[i])) { fSuccess = false; } else if (!strcmp("-in", argv[i])) { ++i; if(i < argc && argv[i][0] != '-') { p.inFileName = argv[i]; } else { fSuccess = false; } } else if (!strcmp("-xsl", argv[i])) { ++i; if(i < argc && argv[i][0] != '-') { p.xslFileName = argv[i]; } else { fSuccess = false; } } else if (!strcmp("-out", argv[i])) { ++i; if(i < argc && argv[i][0] != '-') { p.outFileName = argv[i]; } else { fSuccess = false; } } else if (!strcmp("-noindent", argv[i])) { p.noIndent = true; } else if (!strcmp("-indent", argv[i])) { ++i; if(i < argc && argv[i][0] != '-') { #if defined(XALAN_STRICT_ANSI_HEADERS) p.indentAmount = std::atoi(argv[i]); #else p.indentAmount = atoi(argv[i]); #endif } else { fSuccess = false; } } else if(!strcmp("-validate", argv[i])) { p.doValidation = true; } else if (!strcmp("-param", argv[i])) { ++i; if(i < argc && argv[i][0] != '-') { const char* const name = argv[i]; ++i; // Don't check for '-' here, since that might // be a valid character in a parameter value. if(i < argc) { typedef StringPairVectorType::value_type value_type; p.params.push_back(value_type(name, argv[i])); } else { fSuccess = false; } } else { fSuccess = false; } } else if(!strcmp("-v", argv[i])) { p.versionOnly = true; } else if(!strcmp("-qc", argv[i])) { p.setQuietConflictWarnings = true; } else if(!strcmp("-q", argv[i])) { p.setQuietMode = true; } else if(!strcmp("-xml", argv[i])) { if (p.outputType != -1) { warnPreviousOutputMethod(p.outputType); } p.outputType = FormatterListener::OUTPUT_METHOD_XML; } else if(!strcmp("-text", argv[i])) { if (p.outputType != -1) { warnPreviousOutputMethod(p.outputType); } p.outputType = FormatterListener::OUTPUT_METHOD_TEXT; } else if(!strcmp("-html", argv[i])) { if (p.outputType != -1) { warnPreviousOutputMethod(p.outputType); } p.outputType = FormatterListener::OUTPUT_METHOD_HTML; } else if(!strcmp("-dom", argv[i])) { if (p.outputType != -1) { warnPreviousOutputMethod(p.outputType); } p.outputType = FormatterListener::OUTPUT_METHOD_DOM; } else if(!strcmp("-xst", argv[i])) { if (p.outputType != -1) { warnPreviousOutputMethod(p.outputType); } p.outputType = FormatterListener::OUTPUT_METHOD_DOM; p.formatToSourceTree = true; } else if(!strcmp("-null", argv[i])) { p.formatToNull = true; } else if (!strcmp("-nh", argv[i])) { p.shouldWriteXMLHeader = false; } else if(!strcmp("-tt", argv[i])) { p.traceTemplates = true; } else if(!strcmp("-tg", argv[i])) { p.traceGenerationEvent = true; } else if(!strcmp("-ts", argv[i])) { p.traceSelectionEvent = true; } else if(!strcmp("-ttc", argv[i])) { p.traceTemplateChildren = true; } else if (!strcmp("-xd", argv[i])) { p.useDOM = true; } else if (!strcmp("-de", argv[i])) { p.disableExtensions = true; } else { cerr << endl << "Warning: Ignoring unknown option \"" << argv[i] << "\"." << endl << endl; } } return fSuccess; } FormatterListener* createFormatter( int outputType, bool shouldWriteXMLHeader, bool noIndent, bool formatToNull, bool formatToSourceTree, PrintWriter& resultWriter, int indentAmount, const XalanDOMString& mimeEncoding, const StylesheetRoot* stylesheet, XercesParserLiaison& parserLiaison, XalanSourceTreeParserLiaison& sourceTreeParserLiaison, const PrefixResolver& prefixResolver, const XalanDocument*& theResultDocument) { MemoryManager& theManager = XalanMemMgrs::getDefaultXercesMemMgr(); FormatterListener* formatter = 0; if (formatToNull == true) { formatter = new FormatterToNull; } else if(FormatterListener::OUTPUT_METHOD_XML == outputType) { XalanDOMString version(theManager); bool outputIndent = false; XalanDOMString mediatype(theManager); XalanDOMString doctypeSystem(theManager); XalanDOMString doctypePublic(theManager); XalanDOMString standalone(theManager); if (stylesheet != 0) { stylesheet->getOutputVersion(version); stylesheet->getOutputMediaType(mediatype); stylesheet->getOutputDoctypeSystem(doctypeSystem); stylesheet->getOutputDoctypePublic(doctypePublic); stylesheet->getOutputStandalone(standalone); } FormatterToXML* const fToXML = new FormatterToXML( resultWriter, version, outputIndent, indentAmount, mimeEncoding, mediatype, doctypeSystem, doctypePublic, true, // xmlDecl standalone, FormatterToXML::OUTPUT_METHOD_XML, true, theManager); fToXML->setShouldWriteXMLHeader(shouldWriteXMLHeader); formatter = fToXML; } else if(FormatterListener::OUTPUT_METHOD_TEXT == outputType) { formatter = new FormatterToText( resultWriter, mimeEncoding, true, true, theManager); } else if(FormatterListener::OUTPUT_METHOD_HTML == outputType) { XalanDOMString version(theManager); bool outputIndent = !noIndent; XalanDOMString mediatype(theManager); XalanDOMString doctypeSystem(theManager); XalanDOMString doctypePublic(theManager); XalanDOMString standalone(theManager); if (stylesheet != 0) { stylesheet->getOutputVersion(version); if (noIndent == false) { outputIndent = stylesheet->getOutputIndent(); } stylesheet->getOutputMediaType(mediatype); stylesheet->getOutputDoctypeSystem(doctypeSystem); stylesheet->getOutputDoctypePublic(doctypePublic); stylesheet->getOutputStandalone(standalone); } FormatterToHTML* const fToHTML = new FormatterToHTML( resultWriter, mimeEncoding, mediatype, doctypeSystem, doctypePublic, outputIndent, indentAmount, true, false, theManager); fToHTML->setPrefixResolver(&prefixResolver); formatter = fToHTML; } else if(FormatterListener::OUTPUT_METHOD_DOM == outputType) { if (formatToSourceTree == true) { XalanSourceTreeDocument* theDocument = sourceTreeParserLiaison.createXalanSourceTreeDocument(); assert(theDocument != 0); theResultDocument = theDocument; FormatterToSourceTree* const fToSourceTree = new FormatterToSourceTree(theManager, theDocument); fToSourceTree->setPrefixResolver(&prefixResolver); formatter = fToSourceTree; } else { DOMDocument_Type* const theDocument = parserLiaison.createDOMFactory(); assert(theDocument != 0); FormatterToXercesDOM* const fToDOM = new FormatterToXercesDOM( theDocument, 0, theManager); fToDOM->setPrefixResolver(&prefixResolver); formatter = fToDOM; theResultDocument = parserLiaison.createDocument( theDocument, false, false, false); } } return formatter; } XalanOutputStream* createOutputStream(MemoryManager& theManager , const CmdLineParams& params) { if (params.outFileName == 0) { return new XalanStdOutputStream(cout, theManager); } else { XalanDOMString buffer(theManager); TranscodeFromLocalCodePage(params.outFileName, buffer); return new XalanFileOutputStream(buffer, theManager); } } TraceListener* createTraceListener( XPathExecutionContext& theExecutionContext, MemoryManager& theManager, const CmdLineParams& params, PrintWriter& diagnosticsWriter) { if (params.traceTemplates == true || params.traceTemplateChildren == true || params.traceGenerationEvent == true || params.traceSelectionEvent == true) { return new TraceListenerDefault( theExecutionContext, diagnosticsWriter, theManager, params.traceTemplates, params.traceTemplateChildren, params.traceGenerationEvent, params.traceSelectionEvent); } else { return 0; } } DOMSupport& getDOMSupport( XalanSourceTreeDOMSupport& theXalanSourceTreeDOMSupport, XercesDOMSupport& theXercesDOMSupport, const CmdLineParams& params) { if (params.useDOM == false) { return theXalanSourceTreeDOMSupport; } else { return theXercesDOMSupport; } } XMLParserLiaison& getParserLiaison( XalanSourceTreeParserLiaison& theXalanSourceTreeParserLiaison, XercesParserLiaison& theXercesParserLiaison, const CmdLineParams& params) { if (params.useDOM == false) { return theXalanSourceTreeParserLiaison; } else { return theXercesParserLiaison; } } int xsltMain(const CmdLineParams& params) { // Initialize the XSLT subsystem. This must stay in scope until // we're done with the subsystem, since its destructor shuts down // the subsystem. MemoryManager& theManager = XalanMemMgrs::getDefaultXercesMemMgr(); XSLTInit theInit(theManager); const XalanDOMString mimeEncoding("UTF-8", theManager); const XalanDOMString encoding("UTF-8", theManager); /** * The default diagnostic writer... */ XalanStdOutputStream theStdErr(cerr, theManager); XalanOutputStreamPrintWriter diagnosticsWriter(theStdErr); // Make sure that error reporting, which includes any TraceListener output // does not throw exceptions when transcoding, since that could result in // an exception being thrown will another exception is active. In particular, // characters that the TraceListener writes might not be representable in the // local code page. theStdErr.setThrowTranscodeException(false); // Initialize the XalanSourceTree subsystem. This must stay in scope until // we're done with the subsystem, since its destructor shuts down the // subsystem. XalanSourceTreeInit theXalanSourceTreeInit(theManager); XalanSourceTreeDOMSupport theXalanSourceTreeDOMSupport; XalanSourceTreeParserLiaison theXalanSourceTreeParserLiaison(theXalanSourceTreeDOMSupport, theManager); // Hookup the parser liaison instance to the support instance. theXalanSourceTreeDOMSupport.setParserLiaison( &theXalanSourceTreeParserLiaison); XercesParserLiaison theXercesParserLiaison(theManager); XercesDOMSupport theXercesDOMSupport(theXercesParserLiaison); DOMSupport& theDOMSupport = getDOMSupport( theXalanSourceTreeDOMSupport, theXercesDOMSupport, params); XMLParserLiaison& xmlParserLiaison = getParserLiaison( theXalanSourceTreeParserLiaison, theXercesParserLiaison, params); XSLTProcessorEnvSupportDefault theXSLProcessorSupport(theManager); if (params.disableExtensions == false) { XalanExtensionsInstaller::installGlobal(theManager); XalanEXSLTCommonFunctionsInstaller::installGlobal(theManager); XalanEXSLTMathFunctionsInstaller::installGlobal(theManager); XalanEXSLTSetFunctionsInstaller::installGlobal(theManager); XalanEXSLTStringFunctionsInstaller::installGlobal(theManager); } XObjectFactoryDefault theXObjectFactory(theManager); XPathFactoryDefault theXPathFactory(theManager); XSLTEngineImpl processor( theManager, xmlParserLiaison, theXSLProcessorSupport, theDOMSupport, theXObjectFactory, theXPathFactory); theXSLProcessorSupport.setProcessor(&processor); // Use a different factory type for the stylesheet. This is an optimization, since // stylesheet XPath instances are built all at once and are deleted all at once when // the stylesheet is destroyed. XPathFactoryBlock theStylesheetXPathFactory(theManager); StylesheetConstructionContextDefault theConstructionContext( theManager, processor, theStylesheetXPathFactory); /* * Set specified processor flags */ processor.setQuietConflictWarnings(params.setQuietConflictWarnings); if (params.params.empty() == false) { StringPairVectorType::const_iterator it = params.params.begin(); for ( ; it != params.params.end(); ++it) { assert((*it).first != 0 && (*it).second != 0); processor.setStylesheetParam( XalanDOMString((*it).first, theManager), XalanDOMString((*it).second, theManager)); } } /* * Set specified parser flags */ if (params.indentAmount != 0) { xmlParserLiaison.setIndent(params.indentAmount); } xmlParserLiaison.setUseValidation(params.doValidation); if (!params.setQuietMode) { processor.setDiagnosticsOutput(&diagnosticsWriter); } XalanDOMString xslFileName(theManager); if(params.xslFileName != 0) { xslFileName = params.xslFileName; } const StylesheetRoot* stylesheet = 0; if (!xslFileName.empty()) { stylesheet = processor.processStylesheet(xslFileName, theConstructionContext); } XalanAutoPtr outputFileStream(createOutputStream(theManager, params)); assert(outputFileStream.get() != 0); XalanOutputStreamPrintWriter resultWriter(*outputFileStream.get()); const XalanDocument* theResultDocument = 0; const XalanAutoPtr formatter( createFormatter( params.outputType, params.shouldWriteXMLHeader, params.noIndent, params.formatToNull, params.formatToSourceTree, resultWriter, xmlParserLiaison.getIndent(), mimeEncoding, stylesheet, theXercesParserLiaison, theXalanSourceTreeParserLiaison, processor, theResultDocument)); XSLTResultTarget rTreeTarget(theManager); if(formatter.get() == 0) { rTreeTarget.setCharacterStream(&resultWriter); } else { rTreeTarget.setFormatterListener(formatter.get()); } // Do the transformation... XSLTInputSource theInputSource; if (params.inFileName != 0) { theInputSource.setSystemId(XalanDOMString(params.inFileName, theManager).c_str()); } else { theInputSource.setStream(&cin); cerr << "Reading input document from stdin..." << endl; } StylesheetExecutionContextDefault theExecutionContext(theManager, processor, theXSLProcessorSupport, theDOMSupport, theXObjectFactory); const XalanAutoPtr theTraceListener( createTraceListener( theExecutionContext, theManager, params, diagnosticsWriter)); if (theTraceListener.get() != 0) { processor.setTraceSelects(params.traceSelectionEvent); processor.addTraceListener(theTraceListener.get()); } #if defined(XALAN_USE_ICU) // Create a collation function for the ICU, and have it // cache collators... ICUBridgeCollationCompareFunctor theICUFunctor(theManager, true); theExecutionContext.installCollationCompareFunctor(&theICUFunctor); XalanAutoPtr theFormatNumberFunctor(ICUFormatNumberFunctor::create(theManager)); theExecutionContext.installFormatNumberFunctor(theFormatNumberFunctor.get()); theFormatNumberFunctor.release(); #endif if (params.useDOM == false) { theXalanSourceTreeParserLiaison.setExecutionContext(theExecutionContext); } else { theXercesParserLiaison.setExecutionContext(theExecutionContext); } if (stylesheet == 0) { // No stylesheet, so our only hope is that the xml file has // PI with the stylesheet... // Dummy input source... XSLTInputSource theStylesheetSource; processor.process( theInputSource, theStylesheetSource, rTreeTarget, theConstructionContext, theExecutionContext); } else { theExecutionContext.setStylesheetRoot(stylesheet); processor.process( theInputSource, rTreeTarget, theExecutionContext); } if (params.outputType == FormatterListener::OUTPUT_METHOD_DOM) { // Output is to DOM, so we have to format to XML to // produce output... assert(rTreeTarget.getFormatterListener() != 0 && rTreeTarget.getFormatterListener()->getOutputFormat() == FormatterListener::OUTPUT_METHOD_DOM); if (theResultDocument == 0) { cerr << endl << "Error: No document to format!!!" << endl; } else { // Create a FormaterToXML with the required output // options... const XalanAutoPtr formatter( createFormatter( FormatterListener::OUTPUT_METHOD_XML, params.shouldWriteXMLHeader, params.noIndent, false, false, resultWriter, xmlParserLiaison.getIndent(), mimeEncoding, stylesheet, theXercesParserLiaison, theXalanSourceTreeParserLiaison, processor, theResultDocument)); // Create a FormatterTreeWalker with the the // new formatter... FormatterTreeWalker theTreeWalker(*formatter.get(), theManager); // Walk the document and produce the XML... theTreeWalker.traverse(theResultDocument); } } theExecutionContext.reset(); theConstructionContext.reset(); theStylesheetXPathFactory.reset(); processor.reset(); theXPathFactory.reset(); theXObjectFactory.reset(); theXSLProcessorSupport.reset(); theDOMSupport.reset(); xmlParserLiaison.reset(); if (params.disableExtensions == false) { XalanExtensionsInstaller::uninstallGlobal(theManager); XalanEXSLTCommonFunctionsInstaller::uninstallGlobal(theManager); XalanEXSLTMathFunctionsInstaller::uninstallGlobal(theManager); XalanEXSLTSetFunctionsInstaller::uninstallGlobal(theManager); XalanEXSLTStringFunctionsInstaller::uninstallGlobal(theManager); } return 0; } int main( int argc, char* argv[]) { #if !defined(NDEBUG) && defined(_MSC_VER) _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); #endif #if defined(XALAN_VQ_SPECIAL_TRACE) QuantifyStopRecordingData(); #endif int theResult = 0; CmdLineParams theParams; /* * Get command line arguments */ if (getArgs(argc, argv, theParams) == false) { printArgOptions(); } else if (theParams.versionOnly == true) { cout << endl << "Xalan version " << XALAN_FULLVERSIONDOT << endl << "Xerces version " << XERCES_FULLVERSIONDOT << endl; } else { XMLPlatformUtils::Initialize(); try { theResult = xsltMain(theParams); } catch (const XSLException& e) { cout << "\nXSLException "; cout << "Type is: " << e.getType() << endl; cout << "Message is: " << e.getMessage() << " ("; const XalanDOMString& theURI = e.getURI(); if (theURI.length() != 0) { cout << theURI; } else { cout << "Unknown URI"; } cout << ", line " << e.getLineNumber() << ", column " << e.getColumnNumber() << ")" << endl; theResult = -1; } catch (const SAXParseException& e) { cout << "\nSAXParseException "; cout << "Message is: " << e.getMessage() << " ("; const XMLCh* const theSystemID = e.getSystemId(); if (theSystemID != 0) { cout << theSystemID; } else { cout << "Unknown system ID"; } cout << ", line " << e.getLineNumber() << ", column " << e.getColumnNumber() << ")" << endl; theResult = -2; } catch (const SAXException& e) { cout << "\nSAXException "; cout << "Message is: " << e.getMessage() << endl; theResult = -2; } catch (const XMLException& e) { cout << "\nXMLException "; cout << "Type is: " << e.getType() << endl; cout << "Message is: " << e.getMessage() << endl; theResult = -3; } catch(const XalanDOMException& e) { cout << endl << "XalanDOMException caught. The code is " << int(e.getExceptionCode()) << "." << endl; theResult = -4; } catch (...) { cout << "\nUnhandled Exception\n"; theResult = -5; } XMLPlatformUtils::Terminate(); } #if defined(XALAN_USE_ICU) ICUBridgeCleanup::cleanup(); #endif return theResult; } xalan-c-1.11/c/src/xalanc/XSLT/0002775000175000000640000000000012037700125015021 5ustar stevesambaxalan-c-1.11/c/src/xalanc/XSLT/XSLTProcessor.hpp0000664000175000000640000002571511731656103020242 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_XSLTPROCESSOR_HEADER_GUARD) #define XALAN_XSLTPROCESSOR_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" #include #include "xalanc/PlatformSupport/ProblemListenerBase.hpp" XALAN_DECLARE_XERCES_CLASS(Locator) XALAN_CPP_NAMESPACE_BEGIN XALAN_USING_XERCES(Locator); class ElemTemplateElement; class FormatterListener; class GenerateEvent; class NodeRefListBase; class PrefixResolver; class PrintWriter; class SelectionEvent; class StylesheetConstructionContext; class StylesheetExecutionContext; class StylesheetRoot; class TraceListener; class TracerEvent; class XalanDOMString; class XalanDocument; class XalanElement; class XalanNode; class XMLParserLiaison; class XObject; class XObjectPtr; class XPath; class XPathExecutionContext; class XSLTInputSource; class XSLTResultTarget; /** * This is an interface for an XSLT Processor engine. It's the responsibility * of the implementation of the XSLTProcessor interface, collaborating with a * XMLParserLiaison, the DOM, and the XPath engine, to transform a source tree * of nodes into a result tree according to instructions and templates * specified by a stylesheet tree. The methods process(...) are * the primary public entry points. * * If you reuse the processor instance, you should call reset() between calls. */ class XALAN_XSLT_EXPORT XSLTProcessor : public ProblemListenerBase { public: typedef XalanSize_t size_type; XSLTProcessor(); virtual ~XSLTProcessor(); // These interfaces are inherited from ProblemListenerBase. virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode) = 0; virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode) = 0; // These interfaces are new to XSLTProcessor /** * Transform the source tree to the output in the given result tree target. * The processor will process the input source, the stylesheet source, * and transform to the output target. * * @param inputSource input source * @param stylesheetSource stylesheet source * @param outputTarget output source tree * @param constructionContext context for construction of objects * @param executionContext current execution context * @exception XSLProcessorException */ virtual void process( const XSLTInputSource& inputSource, const XSLTInputSource& stylesheetSource, XSLTResultTarget& outputTarget, StylesheetConstructionContext& constructionContext, StylesheetExecutionContext& executionContext) = 0; /** * Transform the source tree to the output in the given result tree target. * This function does not create a stylesheet tree, it assumes the * provided StylesheetExecutionContext has the stylesheet tree to use. This * is set by calling StylesheetExecutionContext::setStylesheetRoot(). * * @param inputSource input source * @param outputTarget output source tree * @param executionContext current execution context * @exception XSLProcessorException */ virtual void process( const XSLTInputSource& inputSource, XSLTResultTarget& outputTarget, StylesheetExecutionContext& executionContext) = 0; /** * Given a stylesheet input source, compile the stylesheet into an internal * representation. * * @param stylesheetSource input source for the stylesheet * @param constructionContext context for construction of objects * @return pointer to the compiled stylesheet object * @exception XSLProcessorException */ virtual StylesheetRoot* processStylesheet( const XSLTInputSource& stylesheetSource, StylesheetConstructionContext& constructionContext) = 0; /** * Given a URI to an XSL stylesheet, compile the stylesheet into an internal * representation. * * @param xmldocURLString URI to the input XML document * @param constructionContext context for construction of objects * @return pointer to compiled stylesheet object * @exception XSLProcessorException */ virtual StylesheetRoot* processStylesheet( const XalanDOMString& xsldocURLString, StylesheetConstructionContext& constructionContext) = 0; /** * Reset the state. This needs to be called after a process() call * is invoked, if the processor is to be used again. */ virtual void reset() = 0; /** * Given an input source, get the source tree. * * @param inputSource pointer to input source * @return source tree */ virtual XalanNode* getSourceTreeFromInput(const XSLTInputSource& inputSource) = 0; /** * Retrieve the root stylesheet. * * @return pointer to root stylesheet */ virtual const StylesheetRoot* getStylesheetRoot() const = 0; /** * Set the root stylesheet. * * @param theStylesheet pointer to new root stylesheet */ virtual void setStylesheetRoot(const StylesheetRoot* theStylesheet) = 0; /** * Set the execution context. Must be set if after calling * setStylesheetRoot. * * @param theExecutionContext pointer to new execution context. */ virtual void setExecutionContext(StylesheetExecutionContext* theExecutionContext) = 0; /** * Resolve the params that were pushed by the caller. */ virtual void resolveTopLevelParams(StylesheetExecutionContext& executionContext) = 0; /** * Get the XML Parser Liaison that this processor uses. * * @return XML parser liaison object */ virtual XMLParserLiaison& getXMLParserLiaison() const = 0; /** * Generate a random namespace prefix guaranteed to be unique. * * @param theValue A string for returning the new prefix */ virtual void getUniqueNamespaceValue(XalanDOMString& theValue) = 0; /** * Set a top-level parameter, which the stylesheet can access * with a top-level xsl:param. Top-level params are "sticky," * and must be removed with a call to clearStylesheetParams(). * * @param key name of the parameter * @param value XObject value for parameter */ virtual void setStylesheetParam( const XalanDOMString& key, XObjectPtr value) = 0; /** * Set a top-level parameter, which the stylesheet can access * with a top-level xsl:param. Top-level params are "sticky," * and must be removed with a call to clearStylesheetParams(). * * @param key name of the param * @param expression expression that will be evaluated */ virtual void setStylesheetParam( const XalanDOMString& key, const XalanDOMString& expression) = 0; /** * Clear any stylesheet params. */ virtual void clearStylesheetParams() = 0; /** * Get the current formatter listener. * * @return pointer to formatter listener */ virtual FormatterListener* getFormatterListener() const = 0; /** * Set the current formatter listener. * * @param flistener pointer to new formatter listener */ virtual void setFormatterListener(FormatterListener* flistener) = 0; /** * Determine the number of trace listeners. * * @return number of listeners */ virtual size_type getTraceListeners() const = 0; /** * Add a trace listener for the purposes of debugging and diagnosis. * * @param tl pointer to listener to add */ virtual void addTraceListener(TraceListener* tl) = 0; /** * Remove a trace listener. * * @param tl Trace listener to be removed. */ virtual void removeTraceListener(TraceListener* tl) = 0; /** * Fire a generate event. * * @param ge generate event to fire */ virtual void fireGenerateEvent(const GenerateEvent& ge) = 0; /** * Fire a trace event. * * @param te trace event to fire */ virtual void fireTraceEvent(const TracerEvent& te) = 0; /** * Fire a selection event. * * @param se selection event to fire */ virtual void fireSelectEvent(const SelectionEvent& se) = 0; /** * If this is set to true, simple traces of template calls are made. * * @return true if traces made */ virtual bool getTraceSelects() const = 0; /** * Compose a diagnostic trace of the current selection * * @param executionContext The current execution context * @param theStylesheetElement The executing stylesheet element * @param nl The list of selected nodes * @param xpath A pointer to the XPath which generated the list of nodes, if any. */ virtual void traceSelect( StylesheetExecutionContext& executionContext, const ElemTemplateElement& theStylesheetElement, const NodeRefListBase& nl, const XPath* xpath) const = 0; /** * If the quietConflictWarnings property is set to * true, warnings about pattern conflicts won't be * printed to the diagnostics stream. * True by default. * * @param b true if conflict warnings should be suppressed. */ virtual void setQuietConflictWarnings(bool b) = 0; /** * If this is set, diagnostics will be * written to the m_diagnosticsPrintWriter stream. If * the value is null, then diagnostics will be turned * off. * * @param pw pointer to print writer */ virtual void setDiagnosticsOutput(PrintWriter* pw) = 0; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_XSLTPROCESSOR_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/ElemIf.cpp0000664000175000000640000001157511731656103016703 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemIf.hpp" #include #include #include #include #include #include "Constants.hpp" #include "SelectionEvent.hpp" #include "Stylesheet.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" #include "StylesheetRoot.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemIf::ElemIf( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemTemplateElement( constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_IF), m_test(0) { const XalanSize_t nAttrs = atts.getLength(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (equals(aname, Constants::ATTRNAME_TEST)) { m_test = constructionContext.createXPath(getLocator(), atts.getValue(i), *this); } else if(isAttrOK( aname, atts, i, constructionContext) == false && processSpaceAttr( Constants::ELEMNAME_IF_WITH_PREFIX_STRING.c_str(), aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_IF_WITH_PREFIX_STRING.c_str(), aname); } } if (0 == m_test) { error( constructionContext, XalanMessages::ElementMustHaveAttribute_2Param, Constants::ELEMNAME_IF_WITH_PREFIX_STRING, Constants::ATTRNAME_TEST); } } const XalanDOMString& ElemIf::getElementName() const { return Constants::ELEMNAME_IF_WITH_PREFIX_STRING; } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemIf::startElement(StylesheetExecutionContext& executionContext) const { assert(m_test != 0); ElemTemplateElement::startElement(executionContext); bool fResult; m_test->execute(*this, executionContext, fResult); if (0 != executionContext.getTraceListeners()) { executionContext.fireSelectEvent( SelectionEvent(executionContext, executionContext.getCurrentNode(), *this, XalanDOMString("test", executionContext.getMemoryManager()), *m_test, fResult)); } if (fResult == true) { executionContext.pushExecuteIf(true); return beginExecuteChildren(executionContext); } executionContext.pushExecuteIf(false); return 0; } void ElemIf::endElement(StylesheetExecutionContext& executionContext) const { if (executionContext.popExecuteIf()) { endExecuteChildren(executionContext); } } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemIf::execute(StylesheetExecutionContext& executionContext) const { assert(m_test != 0); ElemTemplateElement::execute(executionContext); bool fResult; m_test->execute(*this, executionContext, fResult); if (0 != executionContext.getTraceListeners()) { executionContext.fireSelectEvent( SelectionEvent(executionContext, executionContext.getCurrentNode(), *this, XalanDOMString("test", executionContext.getMemoryManager()), *m_test, fResult)); } if (fResult == true) { executeChildren(executionContext); } } #endif const XPath* ElemIf::getXPath(XalanSize_t index) const { return index == 0 ? m_test : 0; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemCopyOf.cpp0000664000175000000640000002116211731656103017535 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemCopyOf.hpp" #include #include #include #include #include #include "Constants.hpp" #include "ElemWhen.hpp" #include "SelectionEvent.hpp" #include "Stylesheet.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" #include "StylesheetRoot.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemCopyOf::ElemCopyOf( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemTemplateElement(constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_COPY_OF), m_selectPattern(0) { bool isSelectCurrentNode = false; const XalanSize_t nAttrs = atts.getLength(); for (XalanSize_t i = 0; i < nAttrs; ++i) { const XalanDOMChar* const aname = atts.getName(i); if (equals(aname, Constants::ATTRNAME_SELECT)) { const XalanDOMChar* const avalue = atts.getValue(i); assert(avalue != 0); if (avalue[0] == XalanUnicode::charFullStop && avalue[1] == 0) { isSelectCurrentNode = true; } else { m_selectPattern = constructionContext.createXPath(getLocator(), avalue, *this); } } else if (isAttrOK( aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_COPY_OF_WITH_PREFIX_STRING.c_str(), aname); } } if (isSelectCurrentNode == false && m_selectPattern == 0) { error( constructionContext, XalanMessages::ElementMustHaveAttribute_2Param, Constants::ELEMNAME_COPY_OF_WITH_PREFIX_STRING, Constants::ATTRNAME_SELECT); } } const XalanDOMString& ElemCopyOf::getElementName() const { return Constants::ELEMNAME_COPY_OF_WITH_PREFIX_STRING; } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemCopyOf::startElement(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::startElement(executionContext); XalanNode* const sourceNode = executionContext.getCurrentNode(); assert(sourceNode != 0); if (m_selectPattern == 0) { if (0 != executionContext.getTraceListeners()) { StylesheetExecutionContext::BorrowReturnMutableNodeRefList theNodeList(executionContext); theNodeList->addNode(sourceNode); executionContext.fireSelectEvent( SelectionEvent( executionContext, sourceNode, *this, XalanDOMString("select", executionContext.getMemoryManager()), XalanDOMString(".", executionContext.getMemoryManager()), executionContext.getXObjectFactory().createNodeSet(theNodeList))); } executionContext.cloneToResultTree(*sourceNode, getLocator()); } else { const XObjectPtr value(m_selectPattern->execute(*this, executionContext)); assert(value.null() == false); if (0 != executionContext.getTraceListeners()) { executionContext.fireSelectEvent( SelectionEvent( executionContext, sourceNode, *this, XalanDOMString("select", executionContext.getMemoryManager()), *m_selectPattern, value)); } const XObject::eObjectType type = value->getType(); switch(type) { case XObject::eTypeBoolean: case XObject::eTypeNumber: case XObject::eTypeString: executionContext.characters(value); break; case XObject::eTypeNodeSet: { const NodeRefListBase& theNodeList = value->nodeset(); const NodeRefListBase::size_type nChildren = theNodeList.getLength(); for(NodeRefListBase::size_type i = 0; i < nChildren; i++) { assert(theNodeList.item(i) != 0); executionContext.cloneToResultTree(*theNodeList.item(i), getLocator()); } } break; case XObject::eTypeResultTreeFrag: executionContext.outputResultTreeFragment(*value.get(), getLocator()); break; default: executionContext.characters(value); break; } } return 0; } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemCopyOf::execute(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::execute(executionContext); XalanNode* const sourceNode = executionContext.getCurrentNode(); assert(sourceNode != 0); if (m_selectPattern == 0) { if (0 != executionContext.getTraceListeners()) { StylesheetExecutionContext::BorrowReturnMutableNodeRefList theNodeList(executionContext); theNodeList->addNode(sourceNode); executionContext.fireSelectEvent( SelectionEvent( executionContext, sourceNode, *this, XalanDOMString("select", executionContext.getMemoryManager()), XalanDOMString(".", executionContext.getMemoryManager()), executionContext.getXObjectFactory().createNodeSet(theNodeList))); } executionContext.cloneToResultTree(*sourceNode, getLocator()); } else { const XObjectPtr value(m_selectPattern->execute(*this, executionContext)); assert(value.null() == false); if (0 != executionContext.getTraceListeners()) { executionContext.fireSelectEvent( SelectionEvent( executionContext, sourceNode, *this, XalanDOMString("select", executionContext.getMemoryManager()), *m_selectPattern, value)); } const XObject::eObjectType type = value->getType(); switch(type) { case XObject::eTypeBoolean: case XObject::eTypeNumber: case XObject::eTypeString: executionContext.characters(value); break; case XObject::eTypeNodeSet: { const NodeRefListBase& theNodeList = value->nodeset(); const NodeRefListBase::size_type nChildren = theNodeList.getLength(); for(NodeRefListBase::size_type i = 0; i < nChildren; i++) { assert(theNodeList.item(i) != 0); executionContext.cloneToResultTree(*theNodeList.item(i), getLocator()); } } break; case XObject::eTypeResultTreeFrag: executionContext.outputResultTreeFragment(*value.get(), getLocator()); break; default: executionContext.characters(value); break; } } } #endif const XPath* ElemCopyOf::getXPath(XalanSize_t index) const { return index == 0 ? m_selectPattern : 0; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/FunctionUnparsedEntityURI.cpp0000664000175000000640000000567611731656103022613 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionUnparsedEntityURI.hpp" #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN FunctionUnparsedEntityURI::FunctionUnparsedEntityURI() { } FunctionUnparsedEntityURI::~FunctionUnparsedEntityURI() { } XObjectPtr FunctionUnparsedEntityURI::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg, const Locator* locator) const { assert(arg.null() == false); if (context == 0) { const GetCachedString theGuard(executionContext); executionContext.problem( XPathExecutionContext::eXPath, XPathExecutionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::FunctionRequiresNonNullContextNode_1Param, "unparsed-entity-uri"), locator, context); return XObjectPtr(); } else { const XalanDOMString& name = arg->str(executionContext); XalanDocument* const doc = XalanNode::DOCUMENT_NODE == context->getNodeType() ? static_cast(context) : context->getOwnerDocument(); assert(doc != 0); const XalanDOMString& theURI = executionContext.getUnparsedEntityURI(name, *doc); return executionContext.getXObjectFactory().createStringReference(theURI); } } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionUnparsedEntityURI* #endif FunctionUnparsedEntityURI::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionUnparsedEntityURI::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionAcceptsOneArgument_1Param, "unparsed-entity-uri"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XalanElemCallTemplateAllocator.hpp0000664000175000000640000000740411731656103023542 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANELEMCALLTEMPLATEALLOCATOR_INCLUDE_GUARD_12455133) #define XALANELEMCALLTEMPLATEALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XSLT_EXPORT XalanElemCallTemplateAllocator { public: typedef ElemCallTemplate data_type; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanElemCallTemplateAllocator( MemoryManager& theManager, size_type theBlockCount); ~XalanElemCallTemplateAllocator(); /** * Construct an instance * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document * * @return A pointer to the new instance. */ data_type* create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const data_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all objects from the allocator. */ void reset() { m_allocator.reset(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanElemCallTemplateAllocator(const XalanElemCallTemplateAllocator&); XalanElemCallTemplateAllocator& operator=(const XalanElemCallTemplateAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANELEMCALLTEMPLATEALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XSLT/XalanElemAttributeSetAllocator.cpp0000664000175000000640000000365311731656103023607 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanElemAttributeSetAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanElemAttributeSetAllocator::XalanElemAttributeSetAllocator( MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanElemAttributeSetAllocator::~XalanElemAttributeSetAllocator() { } XalanElemAttributeSetAllocator::data_type* XalanElemAttributeSetAllocator::create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type( constructionContext, stylesheetTree, atts, lineNumber, columnNumber); m_allocator.commitAllocation(theBlock); return theResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemTextLiteral.hpp0000664000175000000640000000707611731656103020614 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMTEXTLITERAL_HEADER_GUARD) #define XALAN_ELEMTEXTLITERAL_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" #include // Base class header file. #include "ElemTemplateElement.hpp" XALAN_CPP_NAMESPACE_BEGIN class ElemTextLiteral : public ElemTemplateElement { public: /** * Construct an object corresponding to literal text element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param lineNumber line number in document * @param columnNumber column number in document * @param ch pointer to character string for element * @param start starting offset of element * @param length number of characters in element * @param fPreserveSpace true is space should be preserved * @param fDisableOutputEscaping true if output escaping should be disabled */ ElemTextLiteral( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, XalanFileLoc lineNumber, XalanFileLoc columnNumber, const XalanDOMChar* ch, XalanDOMString::size_type start, XalanDOMString::size_type length, bool fPreserveSpace, bool fDisableOutputEscaping); virtual ~ElemTextLiteral(); /** * Determine if whitespace should be preserved within the element * * @return true if whitespace should be preserved */ bool isPreserveSpace() const { return preserveSpace(); } const XalanDOMChar* getText() const { return m_ch; } XalanDOMString::size_type getLength() const { return m_length; } virtual bool isWhitespace() const; // These methods are inherited from ElemTemplateElement ... virtual const XalanDOMString& getElementName() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif private: // not implemented ElemTextLiteral(const ElemTextLiteral&); ElemTextLiteral& operator=(const ElemTextLiteral&); const bool m_isWhitespace; const XalanDOMChar* const m_ch; const XalanDOMString::size_type m_length; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMTEXTLITERAL_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/ElemAttribute.hpp0000664000175000000640000000527411731656103020314 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMATTRIBUTE_HEADER_GUARD) #define XALAN_ELEMATTRIBUTE_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemTemplateElement.hpp" XALAN_CPP_NAMESPACE_BEGIN class AVT; class ElemTextLiteral; class ElemAttribute : public ElemTemplateElement { public: /** * Construct an object corresponding to an "xsl:attribute" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemAttribute ( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); virtual ~ElemAttribute(); // These methods are inherited from ElemTemplateElement ... virtual const XalanDOMString& getElementName() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; virtual void endElement(StylesheetExecutionContext& executionContext) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif protected: virtual bool childTypeAllowed(int xslToken) const; private: // not implemented ElemAttribute(const ElemAttribute &); ElemAttribute& operator=(const ElemAttribute &); const AVT* m_nameAVT; const AVT* m_namespaceAVT; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMATTRIBUTE_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/FunctionFormatNumber.hpp0000664000175000000640000000470511731656103021653 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONFORMATNUMBER_HEADER_GUARD_1357924680) #define FUNCTIONFORMATNUMBER_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN // Implementation of the XSLT function format-number. // class XALAN_XSLT_EXPORT FunctionFormatNumber : public Function { public: typedef Function ParentType; FunctionFormatNumber(); virtual ~FunctionFormatNumber(); // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const XObjectPtr arg2, const Locator* locator) const; virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const XObjectPtr arg2, const XObjectPtr arg3, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionFormatNumber* #endif clone(MemoryManager& theManager) const; private: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; // Not implemented... FunctionFormatNumber& operator=(const FunctionFormatNumber&); bool operator==(const FunctionFormatNumber&) const; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONFORMATNUMBER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XSLT/XalanElemTextAllocator.cpp0000664000175000000640000000352311731656103022110 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanElemTextAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanElemTextAllocator::XalanElemTextAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanElemTextAllocator::~XalanElemTextAllocator() { } XalanElemTextAllocator::data_type* XalanElemTextAllocator::create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type( constructionContext, stylesheetTree, atts, lineNumber, columnNumber); m_allocator.commitAllocation(theBlock); return theResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XalanElemVariableAllocator.cpp0000664000175000000640000000355711731656103022720 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanElemVariableAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanElemVariableAllocator::XalanElemVariableAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanElemVariableAllocator::~XalanElemVariableAllocator() { } XalanElemVariableAllocator::data_type* XalanElemVariableAllocator::create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type( constructionContext, stylesheetTree, atts, lineNumber, columnNumber); m_allocator.commitAllocation(theBlock); return theResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemPI.hpp0000664000175000000640000000477111731656103016662 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMPI_HEADER_GUARD) #define XALAN_ELEMPI_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemTemplateElement.hpp" XALAN_CPP_NAMESPACE_BEGIN class AVT; class ElemPI: public ElemTemplateElement { public: /** * Construct an object corresponding to an "xsl:processing-instruction" * element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemPI( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); virtual ~ElemPI(); // These methods are inherited from ElemTemplateElement ... virtual const XalanDOMString& getElementName() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; virtual void endElement(StylesheetExecutionContext& executionContext) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif protected: virtual bool childTypeAllowed(int xslToken) const; private: const AVT* m_nameAVT; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMPI_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/StylesheetExecutionContext.cpp0000664000175000000640000000512011731656103023111 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "StylesheetExecutionContext.hpp" #include #include "ElemTemplateElement.hpp" XALAN_CPP_NAMESPACE_BEGIN StylesheetExecutionContext::StylesheetExecutionContext(MemoryManager& m_memoryManager, XObjectFactory* theXObjectFactory) : XPathExecutionContext(m_memoryManager, theXObjectFactory) { } StylesheetExecutionContext::~StylesheetExecutionContext() { } #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void StylesheetExecutionContext::ParamsPushPop::doPush( const ElemTemplateElement& xslCallTemplateElement, int savedStackFrameIndex) { if (xslCallTemplateElement.hasParams() == true) { getExecutionContext().pushCurrentStackFrameIndex(savedStackFrameIndex); getExecutionContext().pushParams(xslCallTemplateElement); } } void StylesheetExecutionContext::ParamsPushPop::doPush(const ElemTemplateElement& xslCallTemplateElement) { if (xslCallTemplateElement.hasParams() == true) { getExecutionContext().pushParams(xslCallTemplateElement); } } StylesheetExecutionContext::BorrowReturnFormatterToText::BorrowReturnFormatterToText( StylesheetExecutionContext& executionContext, Writer& writer, bool normalizeLinefeed, bool handleIgnorableWhitespace) : m_executionContext(executionContext), m_formatter(executionContext.borrowFormatterToText()) { assert(m_formatter != 0); m_formatter->setNormalizeLinefeed(normalizeLinefeed); m_formatter->setHandleIgnorableWhitespace(handleIgnorableWhitespace); m_formatter->clearEncoding(); m_formatter->setWriter(&writer); } #endif XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemTemplate.hpp0000664000175000000640000001030611731656103020114 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMTEMPLATE_HEADER_GUARD) #define XALAN_ELEMTEMPLATE_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemTemplateElement.hpp" #include XALAN_CPP_NAMESPACE_BEGIN class XPath; class ElemTemplate : public ElemTemplateElement { public: typedef ElemTemplateElement ParentType; /** * Construct an object corresponding to an "xsl:template" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemTemplate( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); virtual ~ElemTemplate(); /** * Retrieve the mode of element * * @return QName for mode */ const XalanQName& getMode() const { assert(m_mode != 0); return *m_mode; } /** * Retrieve the match pattern * * @return XPath corresponding to the match pattern */ const XPath* getMatchPattern() const { return m_matchPattern; } /** * Retrieve the priority of element * * @return priority value */ double getPriority() const { return m_priority; } virtual const XalanQName& getNameAttribute() const; virtual void addToStylesheet( StylesheetConstructionContext& constructionContext, Stylesheet& theStylesheet); virtual const XalanDOMString& getElementName() const; // These methods are inherited from ElemTemplateElement ... #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; virtual void endElement(StylesheetExecutionContext& executionContext) const; virtual const ElemTemplateElement* getInvoker(StylesheetExecutionContext& executionContext) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; virtual void executeChildren(StylesheetExecutionContext& executionContext) const; virtual void executeChildren( StylesheetExecutionContext& executionContext, XalanNode* sourceNode) const; void executeAsNamed(StylesheetExecutionContext& executionContext) const { ParentType::executeChildren(executionContext); } #endif virtual const XPath* getXPath(XalanSize_t index) const; protected: virtual bool childTypeAllowed(int xslToken) const; private: // not implemented ElemTemplate(const ElemTemplate&); ElemTemplate& operator=(const ElemTemplate&); // Data members... const XPath* m_matchPattern; const XalanQName* m_name; const XalanQName* m_mode; double m_priority; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMTEMPLATE_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/XalanElemElementAllocator.hpp0000664000175000000640000000726511731656103022571 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANELEMELEMENTALLOCATOR_INCLUDE_GUARD_12455133) #define XALANELEMELEMENTALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XSLT_EXPORT XalanElemElementAllocator { public: typedef ElemElement data_type; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanElemElementAllocator( MemoryManager& theManager, size_type theBlockCount); ~XalanElemElementAllocator(); /** * Construct an instance * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document * * @return A pointer to the new instance. */ data_type* create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const data_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all objects from the allocator. */ void reset() { m_allocator.reset(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanElemElementAllocator(const XalanElemElementAllocator&); XalanElemElementAllocator& operator=(const XalanElemElementAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANELEMELEMENTALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XSLT/XalanSourceTreeDocumentFragmentAllocator.cpp0000664000175000000640000000435211731656103025625 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanSourceTreeDocumentFragmentAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanSourceTreeDocumentFragmentAllocator::XalanSourceTreeDocumentFragmentAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanSourceTreeDocumentFragmentAllocator::~XalanSourceTreeDocumentFragmentAllocator() { } XalanSourceTreeDocumentFragmentAllocator::data_type* XalanSourceTreeDocumentFragmentAllocator::create(XalanSourceTreeDocument& theValue) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type(m_allocator.getMemoryManager(), theValue); m_allocator.commitAllocation(theBlock); return theResult; } XalanSourceTreeDocumentFragmentAllocator::data_type* XalanSourceTreeDocumentFragmentAllocator::create(const data_type& theSource) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); new(theBlock) data_type(theSource); m_allocator.commitAllocation(theBlock); return theBlock; } bool XalanSourceTreeDocumentFragmentAllocator::destroy(data_type* theObject) { return m_allocator.destroyObject(theObject); } void XalanSourceTreeDocumentFragmentAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XSLTInputSource.cpp0000664000175000000640000001271011731656103020525 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XSLTInputSource.hpp" #include #if !defined(XALAN_CLASSIC_IOSTREAMS) #include #endif #include #include #include XALAN_CPP_NAMESPACE_BEGIN XSLTInputSource::XSLTInputSource(MemoryManager& theMemoryManager) : InputSource(&theMemoryManager), m_stream(0), m_node(0) { } // $$$ ToDo: Xerces' InputSource class does not yet have a copy // constructor or assignment operator. See bug #7944. XSLTInputSource::XSLTInputSource( const XSLTInputSource& theSource, MemoryManager& theMemoryManager) : InputSource(&theMemoryManager), m_stream(theSource.m_stream), m_node(theSource.m_node) { setIssueFatalErrorIfNotFound(theSource.getIssueFatalErrorIfNotFound()); const XMLCh* theValue = theSource.getSystemId(); if (theValue != 0) { setSystemId(theValue); } theValue = theSource.getPublicId(); if (theValue != 0) { setPublicId(theValue); } theValue = theSource.getEncoding(); if (theValue != 0) { setEncoding(theValue); } } XSLTInputSource& XSLTInputSource::operator=(const XSLTInputSource& theRHS) { if (this != &theRHS) { m_stream = theRHS.m_stream; m_node = theRHS.m_node; setIssueFatalErrorIfNotFound(theRHS.getIssueFatalErrorIfNotFound()); const XMLCh* theValue = theRHS.getSystemId(); if (theValue != 0) { setSystemId(theValue); } theValue = theRHS.getPublicId(); if (theValue != 0) { setPublicId(theValue); } theValue = theRHS.getEncoding(); if (theValue != 0) { setEncoding(theValue); } } return *this; } XSLTInputSource::XSLTInputSource( const XMLCh* systemId, MemoryManager& theMemoryManager) : InputSource( systemId, &theMemoryManager), m_stream(0), m_node(0) { } XSLTInputSource::XSLTInputSource( const XalanDOMString& systemId, MemoryManager& theMemoryManager) : InputSource( systemId.c_str(), &theMemoryManager), m_stream(0), m_node(0) { } XSLTInputSource::XSLTInputSource( const XMLCh* systemId, const XMLCh* publicId, MemoryManager& theMemoryManager) : InputSource( systemId, publicId, &theMemoryManager), m_stream(0), m_node(0) { } XSLTInputSource::XSLTInputSource( const XalanDOMString& systemId, const XalanDOMString& publicId, MemoryManager& theMemoryManager) : InputSource( systemId.c_str(), publicId.c_str(), &theMemoryManager), m_stream(0), m_node(0) { } XSLTInputSource::XSLTInputSource( const char* systemId, MemoryManager& theMemoryManager) : InputSource( systemId, &theMemoryManager), m_stream(0), m_node(0) { } XSLTInputSource::XSLTInputSource( const char* systemId, const char* publicId, MemoryManager& theMemoryManager) : InputSource( systemId, publicId, &theMemoryManager), m_stream(0), m_node(0) { } XSLTInputSource::XSLTInputSource( XalanNode* node, MemoryManager& theMemoryManager) : InputSource(&theMemoryManager), m_stream(0), m_node(node) { } XSLTInputSource::XSLTInputSource( StreamType* stream, MemoryManager& theMemoryManager) : InputSource(&theMemoryManager), m_stream(stream), m_node(0) { } XSLTInputSource::XSLTInputSource( StreamType& stream, MemoryManager& theMemoryManager) : InputSource(&theMemoryManager), m_stream(&stream), m_node(0) { } BinInputStreamType* XSLTInputSource::makeStream() const { BinInputStreamType* theResult = 0; MemoryManager* theManager = getMemoryManager(); assert(theManager != 0 ); if (m_stream != 0) { theResult = new (theManager) StdBinInputStream(*m_stream); } else if (m_node == 0) { const XalanDOMChar* const theSystemId = getSystemId(); if (theSystemId != 0) { XALAN_USING_XERCES(XMLURL) XMLURL theURL(theManager); URISupport::getURLFromString(theSystemId, theURL, *theManager); theResult = theURL.makeNewStream(); } } return theResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/AVT.hpp0000664000175000000640000001172511731656103016176 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_AVT_HEADER_GUARD) #define XALAN_AVT_HEADER_GUARD // Base include file. Must be first. #include #include XALAN_DECLARE_XERCES_CLASS(Locator) XALAN_CPP_NAMESPACE_BEGIN typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator LocatorType; XALAN_USING_XERCES(Locator) class AVTPart; class PrefixResolver; class XPathExecutionContext; class XalanNode; class StringTokenizer; class StylesheetConstructionContext; /** * Class to hold an Attribute Value Template. */ class AVT { public: #if defined(XALAN_STRICT_ANSI_HEADERS) typedef std::size_t size_type; #else typedef size_t size_type; #endif /** * Construct an Attribute Value Template(AVT) by parsing the string, and * either constructing a vector of AVTParts, or simply hold on to the * string if the AVT is simple. * * @param constructionContext context for construction of AVT * @param locator the Locator for the AVT. May be null. * @param name name of AVT * @param stringedValue string value to parse * @param resolver resolver for namespace resolution */ AVT( StylesheetConstructionContext& constructionContext, const Locator* locator, const XalanDOMChar* name, const XalanDOMChar* stringedValue, const PrefixResolver& resolver); virtual ~AVT(); /** * Retrieve the name of the Attribute Value Template * * @return name of AVT */ const XalanDOMString& getName() const { return m_name; } /** * Append the value to the buffer. * * @param buf buffer to write into * @param contextNode current context node * @param prefixResolver prefix resolver to use * @param executionContext execution context */ void evaluate( XalanDOMString& buf, XalanNode* contextNode, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext) const { if(m_simpleString != 0) { buf.assign(m_simpleString, m_simpleStringLength); } else { doEvaluate(buf, contextNode, prefixResolver, executionContext); } } /** * Append the value to the buffer. * * @param buf buffer to write into * @param prefixResolver prefix resolver to use * @param executionContext execution context */ void evaluate( XalanDOMString& buf, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext) const { if(m_simpleString != 0) { buf.assign(m_simpleString, m_simpleStringLength); } else { doEvaluate(buf, prefixResolver, executionContext); } } private: void doEvaluate( XalanDOMString& buf, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext) const; void doEvaluate( XalanDOMString& buf, XalanNode* contextNode, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext) const; void nextToken( StylesheetConstructionContext& constructionContext, const Locator* locator, StringTokenizer& tokenizer, XalanDOMString& token); // not implemented AVT(const AVT&); AVT& operator=(const AVT&); bool operator==(const AVT&) const; // Data members... const AVTPart** m_parts; size_type m_partsSize; const XalanDOMChar* m_simpleString; XalanDOMString::size_type m_simpleStringLength; const XalanDOMString& m_name; static const XalanDOMString s_emptyString; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_AVT_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/XalanElemAttributeAllocator.hpp0000664000175000000640000000734711731656103023144 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANELEMATTRIBUTEALLOCATOR_INCLUDE_GUARD_12455133) #define XALANELEMATTRIBUTEALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XSLT_EXPORT XalanElemAttributeAllocator { public: typedef ElemAttribute data_type; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanElemAttributeAllocator( MemoryManager& theManager, size_type theBlockCount); ~XalanElemAttributeAllocator(); /** * Construct an instance * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document * * @return A pointer to the new instance. */ data_type* create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const data_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all objects from the allocator. */ void reset() { m_allocator.reset(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanElemAttributeAllocator(const XalanElemAttributeAllocator&); XalanElemAttributeAllocator& operator=(const XalanElemAttributeAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANELEMATTRIBUTEALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XSLT/FunctionKey.hpp0000664000175000000640000000411511731656103017775 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONKEY_HEADER_GUARD_1357924680) #define FUNCTIONKEY_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN class XObject; class XPathExecutionContext; // Implementation of the XSLT function key(). // class XALAN_XSLT_EXPORT FunctionKey : public Function { public: typedef Function ParentType; FunctionKey(); virtual ~FunctionKey(); // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const XObjectPtr arg2, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionKey* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: // Not implemented... FunctionKey& operator=(const FunctionKey&); bool operator==(const FunctionKey&) const; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONKEY_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XSLT/FunctionSystemProperty.hpp0000664000175000000640000000514411731656103022301 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONSYSTEMPROPERTY_HEADER_GUARD_1357924680) #define FUNCTIONSYSTEMPROPERTY_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN // Implementation of the XSLT function sytsem-property(). // class XALAN_XSLT_EXPORT FunctionSystemProperty : public Function { public: typedef Function ParentType; FunctionSystemProperty(MemoryManager& theManager); FunctionSystemProperty( const FunctionSystemProperty& other, MemoryManager& theManager); virtual ~FunctionSystemProperty(); // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionSystemProperty* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: FunctionSystemProperty(const FunctionSystemProperty&); // Not implemented... FunctionSystemProperty& operator=(const FunctionSystemProperty&); bool operator==(const FunctionSystemProperty&) const; // Data members... const XalanDOMString m_xsltNamespaceURI; const XalanDOMString m_versionPropertyString; const XalanDOMString m_vendorPropertyString; const XalanDOMString m_vendorURLPropertyString; const XalanDOMString m_vendorString; const XalanDOMString m_vendorURLString; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONSYSTEMPROPERTY_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XSLT/XSLTResultTarget.hpp0000664000175000000640000001745011731656103020705 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_XSLTRESULTTARGET_HEADER_GUARD) #define XALAN_XSLTRESULTTARGET_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" #include #if defined(XALAN_CLASSIC_IOSTREAMS) class ostream; #else #include #endif #include XALAN_CPP_NAMESPACE_BEGIN class FormatterListener; class Writer; class XALAN_XSLT_EXPORT XSLTResultTarget { public: #if defined(XALAN_NO_STD_NAMESPACE) typedef ostream StreamType; #else typedef std::ostream StreamType; #endif #if defined(XALAN_STRICT_ANSI_HEADERS) typedef std::FILE FILE; #endif explicit XSLTResultTarget(MemoryManager& theManager XALAN_DEFAULT_CONSTRUCTOR_MEMMGR); /** * Create a new output target with a file name. * * @param fileName valid system file name */ XSLTResultTarget(const XalanDOMString& fileName, MemoryManager& theManager XALAN_DEFAULT_CONSTRUCTOR_MEMMGR); /** * Create a new output target with a file name. * * @param fileName valid system file name */ XSLTResultTarget(const XalanDOMChar* fileName, MemoryManager& theManager XALAN_DEFAULT_CONSTRUCTOR_MEMMGR); /** * Create a new output target with a file name. * * @param fileName valid system file name */ XSLTResultTarget(const char* fileName, MemoryManager& theManager XALAN_DEFAULT_CONSTRUCTOR_MEMMGR); /** * Create a new output target with a stream. * * @param byteStream a pointer to a std ostream for the output */ XSLTResultTarget(StreamType* theStream, MemoryManager& theManager XALAN_DEFAULT_CONSTRUCTOR_MEMMGR); /** * Create a new output target with a stream. * * @param byteStream a reference to a std ostream for the output */ XSLTResultTarget(StreamType& theStream, MemoryManager& theManager XALAN_DEFAULT_CONSTRUCTOR_MEMMGR); /** * Create a new output target with a character stream. * * @param characterStream pointer to character stream where the results * will be written */ XSLTResultTarget(Writer* characterStream, MemoryManager& theManager XALAN_DEFAULT_CONSTRUCTOR_MEMMGR); /** * Create a new output target with a stream. * * @param characterStream pointer to character stream where the results * will be written */ XSLTResultTarget(FILE* characterStream, MemoryManager& theManager XALAN_DEFAULT_CONSTRUCTOR_MEMMGR); /** * Create a new output target with a FormatterListener. * * @param flistener A FormatterListener instance for result tree events. */ XSLTResultTarget(FormatterListener& flistener, MemoryManager& theManager XALAN_DEFAULT_CONSTRUCTOR_MEMMGR); XSLTResultTarget(const XSLTResultTarget& other, MemoryManager& theManager XALAN_DEFAULT_CONSTRUCTOR_MEMMGR); ~XSLTResultTarget(); /** * Set the file name where the results will be written. * * @param fileName system identifier as a string */ void setFileName(const char* fileName) { if (fileName == 0) { m_fileName.clear(); } else { m_fileName = fileName; } } /** * Set the file name where the results will be written. * * @param fileName system identifier as a string */ void setFileName(const XalanDOMString& fileName) { m_fileName = fileName; } /** * Get the file name where the results will be written to. * * @return file name string */ const XalanDOMString& getFileName() const { return m_fileName; } /** * Set the byte stream for this output target. * * @param byteStream pointer to byte stream that will contain the result * document */ void setByteStream(StreamType* byteStream) { m_byteStream = byteStream; } /** * Get the byte stream for this output target. * * @return pointer to byte stream, or null if none was supplied. */ StreamType* getByteStream() const { return m_byteStream; } /** * Set the character encoding, if known. * * @param encoding new encoding string */ void setEncoding(const XalanDOMChar* encoding) { if (encoding == 0) { m_encoding.clear(); } else { m_encoding = encoding; } } /** * Set the character encoding, if known. * * @param encoding new encoding string */ void setEncoding(const XalanDOMString& encoding) { m_encoding = encoding; } /** * Get the character encoding in use. * * @return encoding string, or empty string if none was supplied. */ const XalanDOMString& getEncoding() const { return m_encoding; } /** * Set the character stream for this output target. * * @param characterStream pointer to character stream that will contain * the result document */ void setCharacterStream(Writer* characterStream) { m_characterStream = characterStream; } /** * Get the character stream for this output target. * * @return pointer to character stream, or null if none was supplied. */ Writer* getCharacterStream() const { return m_characterStream; } /** * Get the stream for this output target. * * @return pointer to stream, or null if none was supplied. */ FILE* getStream() const { return m_stream; } /** * Set the stream for this output target. * * @theStream pointer to stream. */ void setStream(FILE* theStream) { m_stream = theStream; } /** * Set a FormatterListener to process the result tree events. * * @param handler pointer to new listener */ void setFormatterListener(FormatterListener* handler) { m_formatterListener = handler; } /** * Get the FormatterListener that will process the result tree events. * * @return pointer to new listener */ FormatterListener* getFormatterListener() const { return m_formatterListener; } private: #if defined(XALAN_DEVELOPMENT) XSLTResultTarget(); XSLTResultTarget(const XSLTResultTarget&); #endif XalanDOMString m_fileName; StreamType* m_byteStream; XalanDOMString m_encoding; Writer* m_characterStream; FormatterListener* m_formatterListener; FILE* m_stream; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_XSLTRESULTTARGET_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/XSLTProcessorEnvSupport.hpp0000664000175000000640000000667411731656103022313 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XSLTPROCESSORENVSUPPORT_HEADER_GUARD_1357924680) #define XSLTPROCESSORENVSUPPORT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include // Base class header file... #include XALAN_CPP_NAMESPACE_BEGIN class ElemTemplateElement; class XSLTProcessor; class XALAN_XSLT_EXPORT XSLTProcessorEnvSupport : public XPathEnvSupport { public: XSLTProcessorEnvSupport(); virtual ~XSLTProcessorEnvSupport(); // These interfaces are inherited from XPathEnvSupport... virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode) = 0; virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode) = 0; virtual XalanDocument* parseXML( MemoryManager& theManager, const XalanDOMString& urlString, const XalanDOMString& base, ErrorHandler* theErrorHandler = 0) = 0; virtual XalanDocument* getSourceDocument(const XalanDOMString& theURI) const = 0; virtual void setSourceDocument( const XalanDOMString& theURI, XalanDocument* theDocument) = 0; virtual const XalanDOMString& findURIFromDoc(const XalanDocument* owner) const = 0; virtual bool elementAvailable( const XalanDOMString& theNamespace, const XalanDOMString& elementName) const = 0; virtual bool functionAvailable( const XalanDOMString& theNamespace, const XalanDOMString& functionName) const = 0; virtual XObjectPtr extFunction( XPathExecutionContext& executionContext, const XalanDOMString& theNamespace, const XalanDOMString& functionName, XalanNode* context, const XObjectArgVectorType& argVec, const Locator* locator) const = 0; virtual void reset() = 0; private: // These are not implemented... XSLTProcessorEnvSupport(const XSLTProcessorEnvSupport&); XSLTProcessorEnvSupport& operator=(const XSLTProcessorEnvSupport&); bool operator==(const XSLTProcessorEnvSupport&) const; }; XALAN_CPP_NAMESPACE_END #endif // XSLTPROCESSORENVSUPPORT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XSLT/ElemFallback.hpp0000664000175000000640000000541111731656103020041 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_FALLBACK_HEADER_GUARD) #define XALAN_FALLBACK_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemTemplateElement.hpp" XALAN_CPP_NAMESPACE_BEGIN class ElemFallback : public ElemTemplateElement { public: typedef ElemTemplateElement ParentType; /** * Construct an object corresponding to an xsl:fallback element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts the attribute list * @param lineNumber line number in document * @param columnNumber column number in document */ ElemFallback( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); virtual ~ElemFallback(); // These methods are inherited from ElemTemplateElement ... virtual const XalanDOMString& getElementName() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; virtual const ElemTemplateElement* getFirstChildElemToExecute( StylesheetExecutionContext& executionContext) const; virtual const ElemTemplateElement* getNextChildElemToExecute( StylesheetExecutionContext& executionContext, const ElemTemplateElement* currentElem) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif private: // not implemented ElemFallback(const ElemFallback&); ElemFallback& operator=(const ElemFallback&); }; XALAN_CPP_NAMESPACE_END #endif // XALAN_FALLBACK_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/ElemComment.hpp0000664000175000000640000000470611731656103017752 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMCOMMENT_HEADER_GUARD) #define XALAN_ELEMCOMMENT_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemTemplateElement.hpp" XALAN_CPP_NAMESPACE_BEGIN class ElemComment: public ElemTemplateElement { public: /** * Construct an object corresponding to an "xsl:comment" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemComment( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); virtual ~ElemComment(); // These methods are inherited from ElemTemplateElement ... virtual const XalanDOMString& getElementName() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; virtual void endElement(StylesheetExecutionContext& executionContext) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif protected: virtual bool childTypeAllowed(int xslToken) const; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMCOMMENT_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/XalanNumberingResourceBundle.cpp0000664000175000000640000001272311731656103023312 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanNumberingResourceBundle.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanNumberingResourceBundle::XalanNumberingResourceBundle( const XalanDOMString& theLanguage, const XalanDOMString& theUILanguage, const XalanDOMString& theHelpLanguage, const XalanDOMCharVectorType& theAlphabet, const XalanDOMCharVectorType& theTraditionalAlphabet, eOrientation theOrientation, eNumberingMethod theNumberingMethod, eMultiplierOrder theMultiplierOrder, NumberType theMaxNumericalValue, const NumberTypeVectorType& theNumberGroups, const NumberTypeVectorType& theMultipliers, const XalanDOMCharVectorType& theZeroChar, const XalanDOMCharVectorType& theMultiplierChars, const DigitsTableVectorType& theDigitsTable, const NumberTypeVectorType& theDigitsTableTable, MemoryManager& theManager) : m_language(theHelpLanguage, theManager), m_uiLanguage(theLanguage, theManager), m_helpLanguage(theUILanguage, theManager), m_alphabet(theAlphabet, theManager), m_traditionalAlphabet(theTraditionalAlphabet, theManager), m_orientation(theOrientation), m_numberingMethod(theNumberingMethod), m_multiplierOrder(theMultiplierOrder), m_maxNumericalValue(theMaxNumericalValue), m_numberGroups(theNumberGroups, theManager), m_multipliers(theMultipliers, theManager), m_zeroChar(theZeroChar, theManager), m_multiplierChars(theMultiplierChars, theManager), m_digitsTable(theDigitsTable, theManager), m_digitsTableTable(theDigitsTableTable, theManager) { } XalanNumberingResourceBundle::XalanNumberingResourceBundle(MemoryManager& theManager) : m_language(theManager), m_uiLanguage(theManager), m_helpLanguage(theManager), m_alphabet(theManager), m_traditionalAlphabet(theManager), m_orientation(eLeftToRight), m_numberingMethod(eAdditive), m_multiplierOrder(eFollows), m_maxNumericalValue(0), m_numberGroups(theManager), m_multipliers(theManager), m_zeroChar(theManager), m_multiplierChars(theManager), m_digitsTable(theManager), m_digitsTableTable(theManager) { } XalanNumberingResourceBundle::XalanNumberingResourceBundle(const XalanNumberingResourceBundle& theSource, MemoryManager& theManager) : m_language(theSource.m_language, theManager), m_uiLanguage(theSource.m_uiLanguage, theManager), m_helpLanguage(theSource.m_helpLanguage, theManager), m_alphabet(theSource.m_alphabet, theManager), m_traditionalAlphabet(theSource.m_traditionalAlphabet, theManager), m_orientation(theSource.m_orientation), m_numberingMethod(theSource.m_numberingMethod), m_multiplierOrder(theSource.m_multiplierOrder), m_maxNumericalValue(theSource.m_maxNumericalValue), m_numberGroups(theSource.m_numberGroups, theManager), m_multipliers(theSource.m_multipliers, theManager), m_zeroChar(theSource.m_zeroChar, theManager), m_multiplierChars(theSource.m_multiplierChars, theManager), m_digitsTable(theSource.m_digitsTable, theManager), m_digitsTableTable(theSource.m_digitsTableTable, theManager) { } XalanNumberingResourceBundle::~XalanNumberingResourceBundle() { } void XalanNumberingResourceBundle::swap(XalanNumberingResourceBundle& theOther) { m_language.swap(theOther.m_language); m_uiLanguage.swap(theOther.m_uiLanguage); m_helpLanguage.swap(theOther.m_helpLanguage); m_alphabet.swap(theOther.m_alphabet); m_traditionalAlphabet.swap(theOther.m_traditionalAlphabet); { const eOrientation temp = m_orientation; m_orientation = theOther.m_orientation; theOther.m_orientation = temp; } { const eNumberingMethod temp = m_numberingMethod; m_numberingMethod = theOther.m_numberingMethod; theOther.m_numberingMethod = temp; } { const eMultiplierOrder temp = m_multiplierOrder; m_multiplierOrder = theOther.m_multiplierOrder; theOther.m_multiplierOrder = temp; } { const NumberType temp = m_maxNumericalValue; m_maxNumericalValue = theOther.m_maxNumericalValue; theOther.m_maxNumericalValue = temp; } m_numberGroups.swap(theOther.m_numberGroups); m_multipliers.swap(theOther.m_multipliers); m_zeroChar.swap(theOther.m_zeroChar); m_multiplierChars.swap(theOther.m_multiplierChars); m_digitsTable.swap(theOther.m_digitsTable); m_digitsTableTable.swap(theOther.m_digitsTableTable); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/StylesheetConstructionContext.hpp0000664000175000000640000006240111731656103023652 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(STYLESHEETCONSTRUCTIONCONTEXT_HEADER_GUARD_1357924680) #define STYLESHEETCONSTRUCTIONCONTEXT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include #include #include XALAN_DECLARE_XERCES_CLASS(AttributeList) XALAN_DECLARE_XERCES_CLASS(DocumentHandler) XALAN_DECLARE_XERCES_CLASS(Locator) XALAN_CPP_NAMESPACE_BEGIN typedef XERCES_CPP_NAMESPACE_QUALIFIER AttributeList AttributeListType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DocumentHandler DocumentHandlerType; XALAN_USING_XERCES(AttributeList) XALAN_USING_XERCES(DocumentHandler) XALAN_USING_XERCES(Locator) class AVT; class AVTPart; class ElemTemplate; class ElemTemplateElement; class ExtensionNSHandler; class PrefixResolver; class Stylesheet; class StylesheetRoot; class XalanDocument; class XalanMatchPatternData; class XalanNode; class XSLTInputSource; // // An abstract class which provides support for constructing the internal // representation of a stylesheet. // class XALAN_XSLT_EXPORT StylesheetConstructionContext : public XPathConstructionContext { public: typedef XalanQName::NamespacesStackType NamespacesStackType; /** * IDs for XSL element types. These are the values * that must be returned by getElementToken(). */ enum eElementToken { ELEMNAME_UNDEFINED = -2, ELEMNAME_EMPTY = -1, ELEMNAME_WITH_PARAM, ELEMNAME_APPLY_TEMPLATES, ELEMNAME_CHOOSE, ELEMNAME_COMMENT, ELEMNAME_COPY, ELEMNAME_COPY_OF, ELEMNAME_ATTRIBUTE, ELEMNAME_ATTRIBUTE_SET, ELEMNAME_EXTENSION, ELEMNAME_FOR_EACH, ELEMNAME_KEY, ELEMNAME_IF, ELEMNAME_IMPORT, ELEMNAME_INCLUDE, ELEMNAME_CALL_TEMPLATE, ELEMNAME_PARAM, ELEMNAME_NUMBER, ELEMNAME_OTHERWISE, ELEMNAME_PI, ELEMNAME_PRESERVE_SPACE, ELEMNAME_TEMPLATE, ELEMNAME_SORT, ELEMNAME_STRIP_SPACE, ELEMNAME_STYLESHEET, ELEMNAME_TEXT, ELEMNAME_VALUE_OF, ELEMNAME_WHEN, ELEMNAME_FALLBACK, ELEMNAME_ELEMENT, ELEMNAME_APPLY_IMPORTS, ELEMNAME_VARIABLE, ELEMNAME_MESSAGE, ELEMNAME_OUTPUT, ELEMNAME_DECIMAL_FORMAT, ELEMNAME_NAMESPACE_ALIAS, // This one doesn't really have a name. // It's used for any literal result // element. ELEMNAME_LITERAL_RESULT, // This one doesn't really have a name. // It's used for any literal text in // the content of a literal result // element. ELEMNAME_TEXT_LITERAL_RESULT, // This one doesn't really have a name. // It's used for forward-compatible // processing. ELEMNAME_FORWARD_COMPATIBLE, // Extension handling. ELEMNAME_EXTENSION_CALL, ELEMNAME_EXTENSION_HANDLER }; typedef URISupport::URLAutoPtrType URLAutoPtrType; explicit StylesheetConstructionContext(MemoryManager& theManager); virtual ~StylesheetConstructionContext(); // These are inherited from XPathConstructionContext... virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode) = 0; virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode) = 0; virtual void reset() = 0; virtual const XalanDOMString& getPooledString(const XalanDOMString& theString) = 0; virtual const XalanDOMString& getPooledString( const XalanDOMChar* theString, XalanDOMString::size_type theLength = XalanDOMString::npos) = 0; virtual XalanDOMString& getCachedString() = 0; virtual bool releaseCachedString(XalanDOMString& theString) = 0; /** * Create a new StylesheetRoot instance. The StylesheetConstructionContext * instance owns the StylesheetRoot instance, and will delete it when asked * or when the StylesheetConstructionContext instance is destroyed. * * @param theBaseIdentifier A URI to the stylesheet file. * @return A pointer to a new StylesheetRoot instance. */ virtual StylesheetRoot* create(const XalanDOMString& theBaseIdentifier) = 0; /** * Create a new StylesheetRoot instance. The StylesheetConstructionContext * instance owns the StylesheetRoot instance, and will delete it when asked * or when the StylesheetConstructionContext instance is destroyed. * * @param theInputSource A reference to the input source. * @return A pointer to a new StylesheetRoot instance. */ virtual StylesheetRoot* create(const XSLTInputSource& theInputSource) = 0; /** * Create a new Stylesheet instance. The StylesheetConstructionContext * instance owns the Stylesheet instance, and will delete it when asked * or when the StylesheetConstructionContext instance is destroyed. * * @param A reference to the StylesheetRoot instance. * @param theBaseIdentifier A URI to the stylesheet file. * @return A pointer to a new StylesheetRoot instance. */ virtual Stylesheet* create( StylesheetRoot& theStylesheetRoot, const XalanDOMString& theBaseIdentifier) = 0; /** * Destroy a StylesheetRoot instance. If this StylesheetConstructionContext * instance does not own the StylesheetRoot, it will not delete it * * @param theStylesheet A pointer to the StylesheetRoot instance to delete. */ virtual void destroy(StylesheetRoot* theStylesheetRoot) = 0; /** * Determine the fully qualified URI for a string. * * @param urlString string to qualify * @return auto pointer to fully qualified URI */ virtual URLAutoPtrType getURLFromString(const XalanDOMString& urlString) = 0; /** * Determine the fully qualified URI for a string. * * @param urlString string to qualify * @return string to fully qualified URI */ virtual XalanDOMString& getURLStringFromString( const XalanDOMString& urlString, XalanDOMString& theResult) = 0; /** * Determine the fully qualified URI for a string. * * @param urlString string to qualify * @param base base location for URI * @return auto pointer to fully qualified URI */ virtual URLAutoPtrType getURLFromString( const XalanDOMString& urlString, const XalanDOMString& base) = 0; /** * Determine the fully qualified URI for a string. * * @param urlString string to qualify * @param base base location for URI * @return string to fully qualified URI */ virtual XalanDOMString& getURLStringFromString( const XalanDOMString& urlString, const XalanDOMString& base, XalanDOMString& theResult) = 0; /** * Retrieve the URI for the current XSLT namespace, for example, * "http://www.w3.org/1999/XSL/Transform" * * @return URI string */ virtual const XalanDOMString& getXSLTNamespaceURI() const = 0; /** * Create and initialize an xpath for a match pattern and return it. This * is to be used by stylesheet elements that need an XPath that is * guaranteed to persist while it lives. * * @param locator the locator for the XPath. May be null. * @param str string to match * @param resolver resolver for namespace resolution * @param allowVariableReferences If true, variable references are allowed. * @param allowKeyFunction If true, calls to the key() function are allowed. * @return XPath for match pattern */ virtual XPath* createMatchPattern( const Locator* locator, const XalanDOMString& str, const PrefixResolver& resolver, bool allowVariableReferences = true, bool allowKeyFunction = true) = 0; /** * Create and initialize an xpath for a match pattern and return it. This * is to be used by stylesheet elements that need an XPath that is * guaranteed to persist while it lives. * * @param locator the locator for the XPath. May be null. * @param str string to match * @param resolver resolver for namespace resolution * @param allowVariableReferences If true, variable references are allowed. * @param allowKeyFunction If true, calls to the key() function are allowed. * @return XPath for match pattern */ virtual XPath* createMatchPattern( const Locator* locator, const XalanDOMChar* str, const PrefixResolver& resolver, bool allowVariableReferences = true, bool allowKeyFunction = true) = 0; /** * Create and initialize an xpath and return it. This is to be used by * stylesheet elements that need an XPath that is guaranteed to persist * while it lives. * * @param locator the locator for the XPath. May be null. * @param str string to match * @param resolver resolver for namespace resolution * @return XPath for string matched */ virtual XPath* createXPath( const Locator* locator, const XalanDOMString& str, const PrefixResolver& resolver, bool allowVariableReferences = true, bool allowKeyFunction = true) = 0; /** * Create and initialize an xpath and return it. This is to be used by * stylesheet elements that need an XPath that is guaranteed to persist * while it lives. * * @param locator the locator for the XPath. May be null. * @param str string to match * @param resolver resolver for namespace resolution * @return XPath for string matched */ virtual XPath* createXPath( const Locator* locator, const XalanDOMChar* str, const PrefixResolver& resolver, bool allowVariableReferences = true, bool allowKeyFunction = true) = 0; /** * Create and initialize an xpath and return it. This is to be used by * stylesheet elements that need an XPath that is guaranteed to persist * while it lives. * * @param locator the locator for the XPath. May be null. * @param str string to match * @param resolver resolver for namespace resolution * @return XPath for string matched */ virtual XPath* createXPath( const Locator* locator, const XalanDOMChar* str, XalanDOMString::size_type len, const PrefixResolver& resolver, bool allowVariableReferences = true, bool allowKeyFunction = true) = 0; /** * Get the locator from the top of the locator stack. * * @return A pointer to the Locator, or 0 if there is nothing on the stack. */ virtual const Locator* getLocatorFromStack() const = 0; /** * Push a locator on to the locator stack. * * @param A pointer to the Locator to push. */ virtual void pushLocatorOnStack(const Locator* locator) = 0; /** * Pop the locator from the top of the locator stack. */ virtual void popLocatorStack() = 0; /** * Get the Xalan namespace for built-in extensions. * * @return Xalan namespace for extensions */ virtual const XalanDOMString& getXalanXSLNameSpaceURL() const = 0; /** * Read in the XML file, either producing a Document or calling SAX events, * and register the document in a table. If the document has already been * read in, it will not be reparsed. * * @param urlString location of the XML * @param docHandler pointer to SAX event handler * @param docToRegister if using a SAX event handler, the object to register in the source docs table. * @return document object, which represents the parsed XML * @exception SAXException */ virtual XalanDocument* parseXML( const XalanDOMString& urlString, DocumentHandler* docHandler, XalanDocument* docToRegister, ErrorHandler* theErrorHandler = 0) = 0; /** * Given an name, determine if it is the xml:space attribute * * @param theAttributeName The name to check * @param theStylesheet The current Stylesheet instance * @param theLocator The Locator for error reporting. May be 0. * * @return true if the string is the xml:space attribute name */ virtual bool isXMLSpaceAttribute( const XalanDOMChar* theAttributeName, const Stylesheet& theStylesheet, const Locator* theLocator = 0) = 0; /** * Given an name, determine if it is the xsl:use-attribute-sets attribute * * @param theAttributeName The name to check * @param theStylesheet The current Stylesheet instance * @param theLocator The Locator for error reporting. May be 0. * * @return true if the string is the xsl:use-attribute-sets attribute name */ virtual bool isXSLUseAttributeSetsAttribute( const XalanDOMChar* theAttributeName, const Stylesheet& theStylesheet, const Locator* theLocator = 0) = 0; /** * Given an name, determine if it is a valid QName * * @param theName The name to check * @param theStylesheet The current Stylesheet instance * @param theLocator The Locator for error reporting. May be 0. * * @return true if the string is a valid QName. */ virtual bool isValidQName( const XalanDOMChar* theName, const Stylesheet& theStylesheet, const Locator* theLocator = 0) = 0; /** * Given an XSL tag name, return an integer token that corresponds to * the enums defined above. * * @param name a probable xsl:xxx element * @return The enum value for that token, or ELEMNAME_UNDEFINED */ virtual eElementToken getElementToken(const XalanDOMString& name) const = 0; /** * Get the latest XSLT version currently supported. * * @return XSLT version number */ virtual double getXSLTVersionSupported() const = 0; /** * Allocate a vector of XalanDOMChar of the specified * size. * * @param theLength The length of the character vector * @return A pointer to the vector. */ virtual XalanDOMChar* allocateXalanDOMCharVector(XalanDOMString::size_type theLength) = 0; /** * Allocate a vector of XalanDOMChar of the specified * size. * * @param theString The source character array * @param theLength The length of the character vector * @param fTerminate If true, terminate the new vector with 0 * @return A pointer to the array. */ virtual XalanDOMChar* allocateXalanDOMCharVector( const XalanDOMChar* theString, XalanDOMString::size_type theLength = XalanDOMString::npos, bool fTerminate = true) = 0; /** * Create an AVT instance. * * @param locator the Locator for the instance. May be null. * @param name name of AVT * @param stringedValue string value to parse * @param resolver resolver for namespace resolution * @return A pointer to the instance. */ virtual const AVT* createAVT( const Locator* locator, const XalanDOMChar* name, const XalanDOMChar* stringedValue, const PrefixResolver& resolver) = 0; /** * Create an AVTPart instance. * * @param theString The source character array * @param theLength The length of the character vector * @param fTerminate If true, terminate the new vector with 0 * @return A pointer to the instance. */ virtual const AVTPart* createAVTPart( const XalanDOMChar* theString, XalanDOMString::size_type theLength = XalanDOMString::npos) = 0; /** * Create an AVTPart instance. * * @param locator the Locator for the instance. May be null. * @param str The XPath expression for the instance * @param len The length of the expression * @param resolver resolver for namespace resolution * @return A pointer to the instance. */ virtual const AVTPart* createAVTPart( const Locator* locator, const XalanDOMChar* str, XalanDOMString::size_type len, const PrefixResolver& resolver) = 0; /** * Allocate a vector of const AVT* of the specified * length. * * @param theLength The length of the vector * @return A pointer to the vector. */ virtual const AVT** allocateAVTPointerVector(size_type theLength) = 0; /** * Allocate a vector of const AVTPart* of the specified * length. * * @param theLength The length of the vector * @return A pointer to the vector. */ virtual const AVTPart** allocateAVTPartPointerVector(size_type theLength) = 0; /** * Create a XalanQName-derived instance. * * @param qname The qname string * @param namespaces The stack of namespaces * @param Locator The current Locator, if any * @param fUseDefault If true, a qname without a prefix will use the default namespace * @return A pointer to the new instance */ virtual const XalanQName* createXalanQName( const XalanDOMString& qname, const NamespacesStackType& namespaces, const Locator* locator = 0, bool fUseDefault = false) = 0; /** * Create a XalanQName-derived instance. * * @param qname The qname string * @param namespaces The stack of namespaces * @param Locator The current Locator, if any * @param fUseDefault If true, a qname without a prefix will use the default namespace * @return A pointer to the new instance */ virtual const XalanQName* createXalanQName( const XalanDOMChar* qname, const NamespacesStackType& namespaces, const Locator* locator = 0, bool fUseDefault = false) = 0; /** * Tokenize a string and return the QNames corresponding to * those tokens. * * @param count The number of namespaces in the vector returned * @param qnameTokens The string to tokenize * @param namespaces The stack of namespaces * @param Locator The current Locator, if any * @param fUseDefault If true, qnames without prefixes will use the default namespace * @return The resulting vector of XalanQName instances. */ virtual const XalanQName** tokenizeQNames( size_type& count, const XalanDOMChar* qnameTokens, const NamespacesStackType& namespaces, const Locator* locator = 0, bool fUseDefault = false) = 0; /** * Create a stylesheet element for the provided type. The * instance owns the memory and will delete the element when * it goes out of scope and the containing stylesheet is * destroyed. * * @param token The enum value of the element to create. * @param stylesheetTree The stylesheet containing the element * @param atts The list of attributes for the element * @param locator The Locator instance for error reporting. May be 0. * * @return A pointer to the new instance. */ virtual ElemTemplateElement* createElement( int token, Stylesheet& stylesheetTree, const AttributeList& atts, const Locator* locator = 0) = 0; /** * Create a elements which have specific names. The instance * owns the memory and will delete the element when it goes * out of scope and the containing stylesheet is destroyed. * * @param token The enum value of the element to create. * @param stylesheetTree The stylesheet containing the element * @param name The name of the element * @param atts The list of attributes for the element * @param locator The Locator instance for error reporting. May be 0. * * @return A pointer to the new instance. */ virtual ElemTemplateElement* createElement( int token, Stylesheet& stylesheetTree, const XalanDOMChar* name, const AttributeList& atts, const Locator* locator = 0) = 0; /** * Create a an element for literal text. The instance owns the * memory and will delete the element when it goes out of * scope and the containing stylesheet is destroyed. * * @param stylesheetTree The stylesheet containing the element * @param chars The pointer to character string for element * @param length length of the chars parameter. * @param preserveSpace true is space should be preserved * @param disableOutputEscaping true if output escaping should be disabled * @param locator The Locator instance for error reporting. May be 0. * * @return A pointer to the new instance. */ virtual ElemTemplateElement* createElement( Stylesheet& stylesheetTree, const XalanDOMChar* chars, XalanDOMString::size_type length, bool preserveSpace, bool disableOutputEscaping, const Locator* locator = 0) = 0; /** * Create an element to handle an extension element. The * instance owns the memory and will delete the element when * it goes out of scope and the containing stylesheet is * destroyed. * * @param stylesheetTree The stylesheet containing the element * @param name The name of the element * @param atts The list of attributes for the element * @param handler The handler for elements in the extension namespace * @param locator The Locator instance for error reporting. May be 0. * * @return A pointer to the new instance. */ virtual ElemTemplateElement* createElement( Stylesheet& stylesheetTree, const XalanDOMChar* name, const AttributeList& atts, ExtensionNSHandler& handler, const Locator* locator = 0) = 0; /** * Create an instance of XalanMatchPatternData, which describes * data related to a match pattern and template in stylesheet. * The instance owns the memory and will delete the element when * it goes out of scope and the containing stylesheet is * destroyed. * * @param theTemplate The ElemTemplate node that contains the template for this pattern * @param thePosition The position in the stylesheet * @param theTargetString The target string for match pattern * @param TheMatchPattern The match pattern * @param thePatternString the pattern string * @param thePriority The priority for the match pattern. * * @return A pointer to the new instance. */ virtual const XalanMatchPatternData* createXalanMatchPatternData( const ElemTemplate& theTemplate, size_type thePosition, const XalanDOMString& theTargetString, const XPath& theMatchPattern, const XalanDOMString& thePatternString, XPath::eMatchScore thePriority) = 0; }; XALAN_CPP_NAMESPACE_END #endif // STYLESHEETCONSTRUCTIONCONTEXT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XSLT/StylesheetConstructionContextDefault.cpp0000664000175000000640000014264011731656103025156 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "StylesheetConstructionContextDefault.hpp" #include #include #include #include #include #include #include #include #include #include #include "Constants.hpp" #include "ElemApplyImport.hpp" #include "ElemChoose.hpp" #include "ElemComment.hpp" #include "ElemCopy.hpp" #include "ElemCopyOf.hpp" #include "ElemDecimalFormat.hpp" #include "ElemExtensionCall.hpp" #include "ElemFallback.hpp" #include "ElemForwardCompatible.hpp" #include "ElemForEach.hpp" #include "ElemIf.hpp" #include "ElemMessage.hpp" #include "ElemNumber.hpp" #include "ElemOtherwise.hpp" #include "ElemParam.hpp" #include "ElemPI.hpp" #include "ElemSort.hpp" #include "ElemWhen.hpp" #include "ElemWithParam.hpp" #include "StylesheetRoot.hpp" #include "XSLTEngineImpl.hpp" #include "XSLTInputSource.hpp" XALAN_CPP_NAMESPACE_BEGIN StylesheetConstructionContextDefault::StylesheetConstructionContextDefault( MemoryManager& theManager, XSLTEngineImpl& processor, XPathFactory& xpathFactory, VectorAllocatorSizeType theXalanDOMCharVectorAllocatorBlockSize, XalanAVTAllocator::size_type theAVTAllocatorBlockSize, XalanAVTPartSimpleAllocator::size_type theAVTPartSimpleAllocatorBlockSize, XalanAVTPartXPathAllocator::size_type theAVTPartXPathAllocatorBlockSize, XalanQNameByValueAllocator::size_type theXalanQNameByValueAllocatorBlockSize, VectorAllocatorSizeType thePointerVectorAllocatorBlockSize) : StylesheetConstructionContext(theManager), m_processor(processor), m_xpathFactory(xpathFactory), m_xpathProcessor( theManager, XPathProcessorImpl::create(theManager)), m_stylesheets(theManager), m_stringPool(theManager), m_xalanDOMCharVectorAllocator( theManager, theXalanDOMCharVectorAllocatorBlockSize), m_tempBuffer(theManager), m_scratchQName(theManager), m_stringCache(theManager), m_avtAllocator( theManager, theAVTAllocatorBlockSize), m_avtPartSimpleAllocator( theManager, theAVTPartSimpleAllocatorBlockSize), m_avtPartXPathAllocator( theManager, theAVTPartXPathAllocatorBlockSize), m_xalanQNameByValueAllocator( theManager, theXalanQNameByValueAllocatorBlockSize), m_useAttributeSetsQName( XSLTEngineImpl::getXSLNameSpaceURL(), Constants::ATTRNAME_USEATTRIBUTESETS), m_pointerVectorAllocator( theManager, thePointerVectorAllocatorBlockSize), m_allocatedElements(theManager), m_elemApplyTemplatesAllocator( theManager, eDefaultElemApplyTemplatesBlockSize), m_elemAttributeAllocator( theManager, eDefaultElemAttributeBlockSize), m_elemAttributeSetAllocator( theManager, eDefaultElemAttributeSetBlockSize), m_elemCallTemplateAllocator( theManager, eDefaultElemCallTemplateBlockSize), m_elemElementAllocator( theManager, eDefaultElemElementBlockSize), m_elemLiteralResultAllocator( theManager, eDefaultElemLiteralResultBlockSize), m_elemTemplateAllocator( theManager, eDefaultElemTemplateBlockSize), m_elemTextLiteralAllocator( theManager, eDefaultElemTextLiteralBlockSize), m_elemValueOfAllocator( theManager, eDefaultElemValueOfBlockSize), m_elemVariableAllocator( theManager, eDefaultElemVariableBlockSize), m_matchPatternDataAllocator( theManager, eDefaultMatchPatternDataBlockSize), m_spaceAttrQName( DOMServices::s_XMLNamespaceURI, Constants::ATTRNAME_SPACE) { } StylesheetConstructionContextDefault::~StylesheetConstructionContextDefault() { reset(); } void StylesheetConstructionContextDefault::problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode) { m_processor.problem( source, classification, msg, locator, sourceNode); } void StylesheetConstructionContextDefault::problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode) { m_processor.problem( source, classification, msg, sourceNode); } void StylesheetConstructionContextDefault::reset() { XALAN_USING_STD(for_each) for_each( m_stylesheets.begin(), m_stylesheets.end(), DeleteFunctor(getMemoryManager())); m_stylesheets.clear(); for_each( m_allocatedElements.begin(), m_allocatedElements.end(), DeleteFunctor(getMemoryManager())); m_allocatedElements.clear(); m_xpathFactory.reset(); m_stringPool.clear(); m_stringCache.reset(); m_avtAllocator.reset(); m_avtPartSimpleAllocator.reset(); m_avtPartXPathAllocator.reset(); m_xalanQNameByValueAllocator.reset(); m_pointerVectorAllocator.reset(); m_elemApplyTemplatesAllocator.reset(); m_elemAttributeAllocator.reset(); m_elemAttributeSetAllocator.reset(); m_elemCallTemplateAllocator.reset(); m_elemElementAllocator.reset(); m_elemLiteralResultAllocator.reset(); m_elemTemplateAllocator.reset(); m_elemTextLiteralAllocator.reset(); m_elemValueOfAllocator.reset(); m_elemVariableAllocator.reset(); m_matchPatternDataAllocator.reset(); } StylesheetRoot* StylesheetConstructionContextDefault::create(const XalanDOMString& theBaseIdentifier) { m_stylesheets.reserve(m_stylesheets.size() + 1); StylesheetRoot* const theStylesheetRoot = StylesheetRoot::create( getMemoryManager(), theBaseIdentifier, *this); m_stylesheets.push_back(theStylesheetRoot); return theStylesheetRoot; } StylesheetRoot* StylesheetConstructionContextDefault::create(const XSLTInputSource& theInputSource) { const XMLCh* const theSystemID = theInputSource.getSystemId(); const GetCachedString theGuard(*this); XalanDOMString& theBaseIdentifier = theGuard.get(); if (theSystemID != 0) { theBaseIdentifier.assign(theSystemID); } return create(theBaseIdentifier); } Stylesheet* StylesheetConstructionContextDefault::create( StylesheetRoot& theStylesheetRoot, const XalanDOMString& theBaseIdentifier) { Stylesheet* const theStylesheet = Stylesheet::create( getMemoryManager(), theStylesheetRoot, theBaseIdentifier, *this); return theStylesheet; } void StylesheetConstructionContextDefault::destroy(StylesheetRoot* theStylesheetRoot) { XALAN_USING_STD(find) const StylesheetVectorType::iterator i = find( m_stylesheets.begin(), m_stylesheets.end(), theStylesheetRoot); if (i != m_stylesheets.end()) { m_stylesheets.erase(i); delete theStylesheetRoot; } if (m_stylesheets.empty() == true) { reset(); } } StylesheetConstructionContextDefault::URLAutoPtrType StylesheetConstructionContextDefault::getURLFromString(const XalanDOMString& urlString) { return URISupport::getURLFromString( urlString, getMemoryManager()); } XalanDOMString& StylesheetConstructionContextDefault::getURLStringFromString( const XalanDOMString& urlString, XalanDOMString& theResult) { URISupport::getURLStringFromString( urlString, theResult); return theResult; } StylesheetConstructionContextDefault::URLAutoPtrType StylesheetConstructionContextDefault::getURLFromString( const XalanDOMString& urlString, const XalanDOMString& base) { return URISupport::getURLFromString( urlString, base, getMemoryManager()); } XalanDOMString& StylesheetConstructionContextDefault::getURLStringFromString( const XalanDOMString& urlString, const XalanDOMString& base, XalanDOMString& theResult) { URISupport::getURLStringFromString( urlString, base, theResult); return theResult; } const XalanDOMString& StylesheetConstructionContextDefault::getXSLTNamespaceURI() const { return XSLTEngineImpl::getXSLNameSpaceURL(); } XPath* StylesheetConstructionContextDefault::createMatchPattern( const Locator* locator, const XalanDOMString& str, const PrefixResolver& resolver, bool allowVariableReferences, bool allowKeyFunction) { XPath* const xpath = m_xpathFactory.create(); // Note that we use the current locator from the // processing stack, and not the locator passed in. // This is because the locator on the stack is active, // during construction, while the locator passed in // will be used at run-time. m_xpathProcessor->initMatchPattern( *xpath, *this, str, resolver, getLocatorFromStack(), allowVariableReferences, allowKeyFunction); xpath->setInStylesheet(true); xpath->setLocator(locator); return xpath; } XPath* StylesheetConstructionContextDefault::createMatchPattern( const Locator* locator, const XalanDOMChar* str, const PrefixResolver& resolver, bool allowVariableReferences, bool allowKeyFunction) { assert(str != 0); m_tempBuffer.assign(str); return createMatchPattern( locator, m_tempBuffer, resolver, allowVariableReferences, allowKeyFunction); } XPath* StylesheetConstructionContextDefault::createXPath( const Locator* locator, const XalanDOMString& str, const PrefixResolver& resolver, bool allowVariableReferences, bool allowKeyFunction) { XPath* const xpath = m_xpathFactory.create(); // Note that we use the current locator from the // processing stack, and not the locator passed in. // This is because the locator on the stack is active, // during construction, while the locator passed in // will be used at run-time. m_xpathProcessor->initXPath( *xpath, *this, str, resolver, getLocatorFromStack(), allowVariableReferences, allowKeyFunction); xpath->setInStylesheet(true); xpath->setLocator(locator); return xpath; } XPath* StylesheetConstructionContextDefault::createXPath( const Locator* locator, const XalanDOMChar* str, const PrefixResolver& resolver, bool allowVariableReferences, bool allowKeyFunction) { assert(str != 0); m_tempBuffer.assign(str); return createXPath( locator, m_tempBuffer, resolver, allowVariableReferences, allowKeyFunction); } XPath* StylesheetConstructionContextDefault::createXPath( const Locator* locator, const XalanDOMChar* str, XalanDOMString::size_type len, const PrefixResolver& resolver, bool allowVariableReferences, bool allowKeyFunction) { assert(str != 0); m_tempBuffer.assign(str, len); return createXPath( locator, m_tempBuffer, resolver, allowVariableReferences, allowKeyFunction); } const Locator* StylesheetConstructionContextDefault::getLocatorFromStack() const { return m_processor.getLocatorFromStack(); } void StylesheetConstructionContextDefault::pushLocatorOnStack(const Locator* locator) { m_processor.pushLocatorOnStack(locator); } void StylesheetConstructionContextDefault::popLocatorStack() { m_processor.popLocatorStack(); } const XalanDOMString& StylesheetConstructionContextDefault::getXalanXSLNameSpaceURL() const { return XSLTEngineImpl::getXalanXSLNameSpaceURL(); } XalanDocument* StylesheetConstructionContextDefault::parseXML( const XalanDOMString& urlString, DocumentHandler* docHandler, XalanDocument* docToRegister, ErrorHandler* theErrorHandler) { return m_processor.parseXML( urlString, docHandler, docToRegister, theErrorHandler); } bool StylesheetConstructionContextDefault::isXMLSpaceAttribute( const XalanDOMChar* theAttributeName, const Stylesheet& theStylesheet, const Locator* theLocator) { assert(theAttributeName != 0); m_scratchQName.set( theAttributeName, theStylesheet.getNamespaces(), theLocator, true); return m_spaceAttrQName == m_scratchQName; } bool StylesheetConstructionContextDefault::isXSLUseAttributeSetsAttribute( const XalanDOMChar* theAttributeName, const Stylesheet& theStylesheet, const Locator* theLocator) { assert(theAttributeName != 0); m_scratchQName.set( theAttributeName, theStylesheet.getNamespaces(), theLocator, true); return m_useAttributeSetsQName == m_scratchQName; } bool StylesheetConstructionContextDefault::isValidQName( const XalanDOMChar* theName, const Stylesheet& theStylesheet, const Locator* theLocator) { assert(theName != 0); m_scratchQName.set( theName, theStylesheet.getNamespaces(), theLocator, false); return m_scratchQName.isValid(); } template class CreateElementFunctor { public: Type* operator()( MemoryManager& theManager, StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) { Type* theResult; return XalanConstruct( theManager, theResult, constructionContext, stylesheetTree, atts, lineNumber, columnNumber); } }; ElemTemplateElement* StylesheetConstructionContextDefault::createElement( int token, Stylesheet& stylesheetTree, const AttributeListType& atts, const Locator* locator) { const XalanFileLoc lineNumber = XalanLocator::getLineNumber(locator); const XalanFileLoc columnNumber = XalanLocator::getColumnNumber(locator); ElemTemplateElement* theElement = 0; switch(token) { case ELEMNAME_APPLY_IMPORTS: m_allocatedElements.push_back(0); theElement = CreateElementFunctor() ( getMemoryManager(), *this, stylesheetTree, atts, lineNumber, columnNumber); break; case ELEMNAME_APPLY_TEMPLATES: return m_elemApplyTemplatesAllocator.create( *this, stylesheetTree, atts, lineNumber, columnNumber); break; case ELEMNAME_ATTRIBUTE: return m_elemAttributeAllocator.create( *this, stylesheetTree, atts, lineNumber, columnNumber); break; case ELEMNAME_ATTRIBUTE_SET: return m_elemAttributeSetAllocator.create( *this, stylesheetTree, atts, lineNumber, columnNumber); break; case ELEMNAME_CALL_TEMPLATE: return m_elemCallTemplateAllocator.create( *this, stylesheetTree, atts, lineNumber, columnNumber); break; case ELEMNAME_CHOOSE: m_allocatedElements.push_back(0); theElement = CreateElementFunctor()( getMemoryManager(), *this, stylesheetTree, atts, lineNumber, columnNumber); break; case ELEMNAME_COMMENT: m_allocatedElements.push_back(0); theElement = CreateElementFunctor()( getMemoryManager(), *this, stylesheetTree, atts, lineNumber, columnNumber); break; case ELEMNAME_COPY: m_allocatedElements.push_back(0); theElement = CreateElementFunctor()( getMemoryManager(), *this, stylesheetTree, atts, lineNumber, columnNumber); break; case ELEMNAME_COPY_OF: m_allocatedElements.push_back(0); theElement = CreateElementFunctor()( getMemoryManager(), *this, stylesheetTree, atts, lineNumber, columnNumber); break; case ELEMNAME_DECIMAL_FORMAT: m_allocatedElements.push_back(0); theElement = CreateElementFunctor()( getMemoryManager(), *this, stylesheetTree, atts, lineNumber, columnNumber); break; case ELEMNAME_ELEMENT: return m_elemElementAllocator.create( *this, stylesheetTree, atts, lineNumber, columnNumber); break; case ELEMNAME_FALLBACK: m_allocatedElements.push_back(0); theElement = CreateElementFunctor()( getMemoryManager(), *this, stylesheetTree, atts, lineNumber, columnNumber); break; case ELEMNAME_FOR_EACH: m_allocatedElements.push_back(0); theElement = CreateElementFunctor()( getMemoryManager(), *this, stylesheetTree, atts, lineNumber, columnNumber); break; case ELEMNAME_IF: m_allocatedElements.push_back(0); theElement = CreateElementFunctor()( getMemoryManager(), *this, stylesheetTree, atts, lineNumber, columnNumber); break; case ELEMNAME_MESSAGE: m_allocatedElements.push_back(0); theElement = CreateElementFunctor()( getMemoryManager(), *this, stylesheetTree, atts, lineNumber, columnNumber); break; case ELEMNAME_NUMBER: m_allocatedElements.push_back(0); theElement = ElemNumber::create( getMemoryManager(), *this, stylesheetTree, atts, lineNumber, columnNumber, stylesheetTree.getStylesheetRoot().getNextElemNumberID()); break; case ELEMNAME_OTHERWISE: m_allocatedElements.push_back(0); theElement = CreateElementFunctor()( getMemoryManager(), *this, stylesheetTree, atts, lineNumber, columnNumber); break; case ELEMNAME_PARAM: m_allocatedElements.push_back(0); theElement = CreateElementFunctor()( getMemoryManager(), *this, stylesheetTree, atts, lineNumber, columnNumber); break; case ELEMNAME_PI: m_allocatedElements.push_back(0); theElement = CreateElementFunctor()( getMemoryManager(), *this, stylesheetTree, atts, lineNumber, columnNumber); break; case ELEMNAME_SORT: m_allocatedElements.push_back(0); theElement = CreateElementFunctor()( getMemoryManager(), *this, stylesheetTree, atts, lineNumber, columnNumber); break; case ELEMNAME_TEMPLATE: return m_elemTemplateAllocator.create( *this, stylesheetTree, atts, lineNumber, columnNumber); break; case ELEMNAME_VALUE_OF: return m_elemValueOfAllocator.create( *this, stylesheetTree, atts, lineNumber, columnNumber); break; case ELEMNAME_VARIABLE: return m_elemVariableAllocator.create( *this, stylesheetTree, atts, lineNumber, columnNumber); break; case ELEMNAME_WITH_PARAM: m_allocatedElements.push_back(0); theElement = CreateElementFunctor()( getMemoryManager(), *this, stylesheetTree, atts, lineNumber, columnNumber); break; case ELEMNAME_WHEN: m_allocatedElements.push_back(0); theElement = CreateElementFunctor()( getMemoryManager(), *this, stylesheetTree, atts, lineNumber, columnNumber); break; default: { const GetCachedString theGuard1(*this); const GetCachedString theGuard2(*this); problem( eXSLTProcessor, eError, XalanMessageLoader::getMessage( theGuard1.get(), XalanMessages::UnknownXSLTToken_1Param, NumberToDOMString( token, theGuard2.get())), locator, 0); } break; }; assert(theElement != 0 && m_allocatedElements.back() == 0); m_allocatedElements.back() = theElement; return theElement; } ElemTemplateElement* StylesheetConstructionContextDefault::createElement( int token, Stylesheet& stylesheetTree, const XalanDOMChar* name, const AttributeListType& atts, const Locator* locator) { const XalanFileLoc lineNumber = XalanLocator::getLineNumber(locator); const XalanFileLoc columnNumber = XalanLocator::getColumnNumber(locator); ElemTemplateElement* theElement = 0; if (token == ELEMNAME_LITERAL_RESULT) { theElement = m_elemLiteralResultAllocator.create( *this, stylesheetTree, name, atts, lineNumber, columnNumber); } else if (token == ELEMNAME_FORWARD_COMPATIBLE) { m_allocatedElements.push_back(0); theElement = ElemForwardCompatible::create( getMemoryManager(), *this, stylesheetTree, name, atts, lineNumber, columnNumber); m_allocatedElements.back() = theElement; } else { const GetCachedString theGuard1(*this); const GetCachedString theGuard2(*this); problem( eXSLTProcessor, eError, XalanMessageLoader::getMessage( theGuard1.get(), XalanMessages::UnknownXSLTToken_1Param, NumberToDOMString( token, theGuard2.get())), locator, 0); } return theElement; } ElemTemplateElement* StylesheetConstructionContextDefault::createElement( Stylesheet& stylesheetTree, const XalanDOMChar* name, const AttributeListType& atts, ExtensionNSHandler& handler, const Locator* locator) { m_allocatedElements.push_back(0); m_allocatedElements.back() = ElemExtensionCall::create( getMemoryManager(), *this, stylesheetTree, name, atts, XalanLocator::getLineNumber(locator), XalanLocator::getColumnNumber(locator), handler); return m_allocatedElements.back(); } ElemTemplateElement* StylesheetConstructionContextDefault::createElement( Stylesheet& stylesheetTree, const XalanDOMChar* chars, XalanDOMString::size_type length, bool preserveSpace, bool disableOutputEscaping, const Locator* locator) { return m_elemTextLiteralAllocator.create( *this, stylesheetTree, XalanLocator::getLineNumber(locator), XalanLocator::getColumnNumber(locator), chars, 0, length, preserveSpace, disableOutputEscaping); } const XalanMatchPatternData* StylesheetConstructionContextDefault::createXalanMatchPatternData( const ElemTemplate& theTemplate, size_type thePosition, const XalanDOMString& theTargetString, const XPath& theMatchPattern, const XalanDOMString& thePatternString, XPath::eMatchScore thePriority) { return m_matchPatternDataAllocator.create( theTemplate, thePosition, theTargetString, theMatchPattern, thePatternString, thePriority); } StylesheetConstructionContextDefault::eElementToken StylesheetConstructionContextDefault::getElementToken(const XalanDOMString& name) const { return getElementNameToken(name); } StylesheetConstructionContextDefault::eElementToken StylesheetConstructionContextDefault::getElementNameToken(const XalanDOMString& name) { // Find the entity, if any... const ElementTokenTableEntry* theFirst = s_elementTokenTable; const ElementTokenTableEntry* theLast = &s_elementTokenTableLast; while(theFirst <= theLast) { const ElementTokenTableEntry* const theCurrent = theFirst + (theLast - theFirst) / 2; const int theResult = compareIgnoreCaseASCII(name, theCurrent->m_name); if (theResult < 0) { theLast = theCurrent - 1; } else if (theResult > 0) { theFirst = theCurrent + 1; } else { return theCurrent->m_token; } } return s_elementTokenTableDummy.m_token; } double StylesheetConstructionContextDefault::getXSLTVersionSupported() const { return 1.0L; } const XalanDOMString& StylesheetConstructionContextDefault::getPooledString(const XalanDOMString& theString) { return m_stringPool.get(theString); } const XalanDOMString& StylesheetConstructionContextDefault::getPooledString( const XalanDOMChar* theString, XalanDOMString::size_type theLength) { return m_stringPool.get(theString, theLength); } XalanDOMString& StylesheetConstructionContextDefault::getCachedString() { return m_stringCache.get(); } bool StylesheetConstructionContextDefault::releaseCachedString(XalanDOMString& theString) { return m_stringCache.release(theString); } XalanDOMChar* StylesheetConstructionContextDefault::allocateXalanDOMCharVector(XalanDOMString::size_type theLength) { return m_xalanDOMCharVectorAllocator.allocate(theLength); } XalanDOMChar* StylesheetConstructionContextDefault::allocateXalanDOMCharVector( const XalanDOMChar* theString, XalanDOMString::size_type theLength, bool fTerminate) { assert(theString != 0); const XalanDOMString::size_type theActualLength = theLength == XalanDOMString::npos ? XalanDOMString::length(theString) : theLength; XalanDOMChar* theVector = m_xalanDOMCharVectorAllocator.allocate( fTerminate == true ? theActualLength + 1 : theActualLength); XalanDOMChar* const theEnd = XalanCopy( theString, theString + theActualLength, theVector); if (fTerminate == true) { *theEnd = XalanDOMChar(0); } return theVector; } const AVT* StylesheetConstructionContextDefault::createAVT( const Locator* locator, const XalanDOMChar* name, const XalanDOMChar* stringedValue, const PrefixResolver& resolver) { return m_avtAllocator.create( *this, locator, name, stringedValue, resolver); } const AVTPart* StylesheetConstructionContextDefault::createAVTPart( const XalanDOMChar* theString, XalanDOMString::size_type theLength) { return m_avtPartSimpleAllocator.create( *this, theString, theLength); } const AVTPart* StylesheetConstructionContextDefault::createAVTPart( const Locator* locator, const XalanDOMChar* str, XalanDOMString::size_type len, const PrefixResolver& resolver) { const XPath* const xpath = createXPath( locator, str, len, resolver); assert(xpath != 0); return m_avtPartXPathAllocator.create(xpath); } const AVT** StylesheetConstructionContextDefault::allocateAVTPointerVector(size_type theLength) { return doAllocateAVTPointerVector(theLength); } const AVTPart** StylesheetConstructionContextDefault::allocateAVTPartPointerVector(size_type theLength) { return doAllocateAVTPartPointerVector(theLength); } const XalanQName* StylesheetConstructionContextDefault::createXalanQName( const XalanDOMString& qname, const NamespacesStackType& namespaces, const Locator* locator, bool fUseDefault) { return m_xalanQNameByValueAllocator.create( qname, namespaces, locator, fUseDefault); } const XalanQName* StylesheetConstructionContextDefault::createXalanQName( const XalanDOMChar* qname, const NamespacesStackType& namespaces, const Locator* locator, bool fUseDefault) { return m_xalanQNameByValueAllocator.create( qname, namespaces, locator, fUseDefault); } const XalanQName** StylesheetConstructionContextDefault::tokenizeQNames( size_type& count, const XalanDOMChar* qnameTokens, const NamespacesStackType& namespaces, const Locator* locator, bool fUseDefault) { assert(qnameTokens != 0); StringTokenizer tokenizer(qnameTokens); count = tokenizer.countTokens(); if (count == 0) { return 0; } else { const XalanQName** theResult = doAllocateXalanQNamePointerVector(count); assert(theResult != 0); const GetCachedString theGuard(*this); XalanDOMString& qname = theGuard.get(); size_type theCurrentIndex = 0; while(tokenizer.hasMoreTokens()) { tokenizer.nextToken(qname); assert(qname.empty() == false); theResult[theCurrentIndex++] = m_xalanQNameByValueAllocator.create( qname, namespaces, locator, fUseDefault); } assert(theCurrentIndex == count); return theResult; } } const XalanDOMChar StylesheetConstructionContextDefault::s_if[] = { XalanUnicode::charLetter_i, XalanUnicode::charLetter_f, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_key[] = { XalanUnicode::charLetter_k, XalanUnicode::charLetter_e, XalanUnicode::charLetter_y, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_copy[] = { XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_p, XalanUnicode::charLetter_y, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_sort[] = { XalanUnicode::charLetter_s, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charLetter_t, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_text[] = { XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_x, XalanUnicode::charLetter_t, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_when[] = { XalanUnicode::charLetter_w, XalanUnicode::charLetter_h, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_empty[] = { XalanUnicode::charLetter_e, XalanUnicode::charLetter_m, XalanUnicode::charLetter_p, XalanUnicode::charLetter_t, XalanUnicode::charLetter_y, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_param[] = { XalanUnicode::charLetter_p, XalanUnicode::charLetter_a, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_m, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_choose[] = { XalanUnicode::charLetter_c, XalanUnicode::charLetter_h, XalanUnicode::charLetter_o, XalanUnicode::charLetter_o, XalanUnicode::charLetter_s, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_import[] = { XalanUnicode::charLetter_i, XalanUnicode::charLetter_m, XalanUnicode::charLetter_p, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charLetter_t, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_number[] = { XalanUnicode::charLetter_n, XalanUnicode::charLetter_u, XalanUnicode::charLetter_m, XalanUnicode::charLetter_b, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_output[] = { XalanUnicode::charLetter_o, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_p, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_comment[] = { XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_m, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_copyOf[] = { XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_p, XalanUnicode::charLetter_y, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_o, XalanUnicode::charLetter_f, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_element[] = { XalanUnicode::charLetter_e, XalanUnicode::charLetter_l, XalanUnicode::charLetter_e, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_include[] = { XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_c, XalanUnicode::charLetter_l, XalanUnicode::charLetter_u, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_message[] = { XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charLetter_s, XalanUnicode::charLetter_a, XalanUnicode::charLetter_g, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_fallback[] = { XalanUnicode::charLetter_f, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_l, XalanUnicode::charLetter_b, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_k, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_forEach[] = { XalanUnicode::charLetter_f, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_e, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_h, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_template[] = { XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_m, XalanUnicode::charLetter_p, XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_valueOf[] = { XalanUnicode::charLetter_v, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_u, XalanUnicode::charLetter_e, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_o, XalanUnicode::charLetter_f, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_variable[] = { XalanUnicode::charLetter_v, XalanUnicode::charLetter_a, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, XalanUnicode::charLetter_a, XalanUnicode::charLetter_b, XalanUnicode::charLetter_l, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_attribute[] = { XalanUnicode::charLetter_a, XalanUnicode::charLetter_t, XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, XalanUnicode::charLetter_b, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_otherwise[] = { XalanUnicode::charLetter_o, XalanUnicode::charLetter_t, XalanUnicode::charLetter_h, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, XalanUnicode::charLetter_w, XalanUnicode::charLetter_i, XalanUnicode::charLetter_s, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_transform[] = { XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_s, XalanUnicode::charLetter_f, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charLetter_m, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_stylesheet[] = { XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, XalanUnicode::charLetter_y, XalanUnicode::charLetter_l, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charLetter_h, XalanUnicode::charLetter_e, XalanUnicode::charLetter_e, XalanUnicode::charLetter_t, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_withParam[] = { XalanUnicode::charLetter_w, XalanUnicode::charLetter_i, XalanUnicode::charLetter_t, XalanUnicode::charLetter_h, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_p, XalanUnicode::charLetter_a, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_m, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_stripSpace[] = { XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, XalanUnicode::charLetter_p, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_s, XalanUnicode::charLetter_p, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_applyImports[] = { XalanUnicode::charLetter_a, XalanUnicode::charLetter_p, XalanUnicode::charLetter_p, XalanUnicode::charLetter_l, XalanUnicode::charLetter_y, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_i, XalanUnicode::charLetter_m, XalanUnicode::charLetter_p, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charLetter_t, XalanUnicode::charLetter_s, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_attributeSet[] = { XalanUnicode::charLetter_a, XalanUnicode::charLetter_t, XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, XalanUnicode::charLetter_b, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_s, XalanUnicode::charLetter_e, XalanUnicode::charLetter_t, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_callTemplate[] = { XalanUnicode::charLetter_c, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_l, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_m, XalanUnicode::charLetter_p, XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_decimalFormat[] = { XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, XalanUnicode::charLetter_c, XalanUnicode::charLetter_i, XalanUnicode::charLetter_m, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_f, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charLetter_m, XalanUnicode::charLetter_a, XalanUnicode::charLetter_t, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_preserveSpace[] = { XalanUnicode::charLetter_p, XalanUnicode::charLetter_r, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, XalanUnicode::charLetter_v, XalanUnicode::charLetter_e, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_s, XalanUnicode::charLetter_p, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_applyTemplates[] = { XalanUnicode::charLetter_a, XalanUnicode::charLetter_p, XalanUnicode::charLetter_p, XalanUnicode::charLetter_l, XalanUnicode::charLetter_y, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_m, XalanUnicode::charLetter_p, XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_namespaceAlias[] = { XalanUnicode::charLetter_n, XalanUnicode::charLetter_a, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charLetter_p, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_i, XalanUnicode::charLetter_a, XalanUnicode::charLetter_s, 0 }; const XalanDOMChar StylesheetConstructionContextDefault::s_processingInstruction[] = { XalanUnicode::charLetter_p, XalanUnicode::charLetter_r, XalanUnicode::charLetter_o, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_u, XalanUnicode::charLetter_c, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; const StylesheetConstructionContextDefault::ElementTokenTableEntry StylesheetConstructionContextDefault::s_elementTokenTable[] = { { s_if, ELEMNAME_IF }, { s_key, ELEMNAME_KEY }, { s_copy, ELEMNAME_COPY }, { s_sort, ELEMNAME_SORT }, { s_text, ELEMNAME_TEXT }, { s_when, ELEMNAME_WHEN }, { s_empty, ELEMNAME_EMPTY }, { s_param, ELEMNAME_PARAM }, { s_choose, ELEMNAME_CHOOSE }, { s_import, ELEMNAME_IMPORT }, { s_number, ELEMNAME_NUMBER }, { s_output, ELEMNAME_OUTPUT }, { s_comment, ELEMNAME_COMMENT }, { s_copyOf, ELEMNAME_COPY_OF }, { s_element, ELEMNAME_ELEMENT }, { s_include, ELEMNAME_INCLUDE }, { s_message, ELEMNAME_MESSAGE }, { s_fallback, ELEMNAME_FALLBACK }, { s_forEach, ELEMNAME_FOR_EACH }, { s_template, ELEMNAME_TEMPLATE }, { s_valueOf, ELEMNAME_VALUE_OF }, { s_variable, ELEMNAME_VARIABLE }, { s_attribute, ELEMNAME_ATTRIBUTE }, { s_otherwise, ELEMNAME_OTHERWISE }, { s_transform, ELEMNAME_STYLESHEET }, { s_stylesheet, ELEMNAME_STYLESHEET }, { s_withParam, ELEMNAME_WITH_PARAM }, { s_stripSpace, ELEMNAME_STRIP_SPACE }, { s_applyImports, ELEMNAME_APPLY_IMPORTS }, { s_attributeSet, ELEMNAME_ATTRIBUTE_SET }, { s_callTemplate, ELEMNAME_CALL_TEMPLATE }, { s_decimalFormat, ELEMNAME_DECIMAL_FORMAT }, { s_preserveSpace, ELEMNAME_PRESERVE_SPACE }, { s_applyTemplates, ELEMNAME_APPLY_TEMPLATES }, { s_namespaceAlias, ELEMNAME_NAMESPACE_ALIAS }, { s_processingInstruction, ELEMNAME_PI }, // This must be the last one... { 0, ELEMNAME_UNDEFINED } }; const XalanSize_t StylesheetConstructionContextDefault::s_elementTokenTableSize = sizeof(s_elementTokenTable) / sizeof(s_elementTokenTable[0]); const StylesheetConstructionContextDefault::ElementTokenTableEntry& StylesheetConstructionContextDefault::s_elementTokenTableLast = StylesheetConstructionContextDefault::s_elementTokenTable[s_elementTokenTableSize - 2]; const StylesheetConstructionContextDefault::ElementTokenTableEntry& StylesheetConstructionContextDefault::s_elementTokenTableDummy = StylesheetConstructionContextDefault::s_elementTokenTable[s_elementTokenTableSize - 1]; XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemDecimalFormat.hpp0000664000175000000640000000526411731656103021057 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMDECIMALFORMAT_HEADER_GUARD) #define XALAN_ELEMDECIMALFORMAT_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemTemplateElement.hpp" #include XALAN_CPP_NAMESPACE_BEGIN class XPath; class ElemDecimalFormat : public ElemTemplateElement { public: /** * Construct an object corresponding to a decimal-format element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemDecimalFormat( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); ~ElemDecimalFormat(); // These methods are inherited from ElemTemplateElement ... virtual const XalanDOMString& getElementName() const; const XalanDecimalFormatSymbols& getDecimalFormatSymbols() const { return m_decimalFormatSymbols; } const XalanQName& getQName() const { assert(m_qname != 0); return *m_qname; } virtual const XPath* getXPath(XalanSize_t index) const; private: const XPath* m_countMatchPattern; const XPath* m_fromMatchPattern; const XPath* m_valueExpr; const XalanQName* m_qname; XalanDecimalFormatSymbols m_decimalFormatSymbols; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMEMPTY_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/XalanAVTPartXPathAllocator.hpp0000664000175000000640000000622111731656103022612 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANAVTPARTXPATHALLOCATOR_INCLUDE_GUARD_12455133) #define XALANAVTPARTXPATHALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XSLT_EXPORT XalanAVTPartXPathAllocator { public: typedef AVTPartXPath data_type; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanAVTPartXPathAllocator(MemoryManager& theManager, size_type theBlockCount); ~XalanAVTPartXPathAllocator(); /** * Create an instance. * * @param xpath XPath to evaluate * * @return A pointer to the new instance. */ data_type* create(const XPath* xpath); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const data_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all objects from the allocator. */ void reset() { m_allocator.reset(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanAVTPartXPathAllocator(const XalanAVTPartXPathAllocator&); XalanAVTPartXPathAllocator& operator=(const XalanAVTPartXPathAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANAVTPARTXPATHALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XSLT/ExtensionNSHandler.hpp0000664000175000000640000001636011731656103021257 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_EXTENSIONNSHANDLER_HEADER_GUARD) #define XALAN_EXTENSIONNSHANDLER_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class #include "ExtensionFunctionHandler.hpp" #include #include #include XALAN_CPP_NAMESPACE_BEGIN class Stylesheet; class StylesheetExecutionContext; class XalanElement; class XalanNode; class XalanQName; class XALAN_XSLT_EXPORT ExtensionNSHandler : public ExtensionFunctionHandler { public: /** * Construct a new extension namespace handler for a given extension NS. * This doesn't do anything - just hang on to the namespace URI. * * @param namespaceUri extension namespace URI being implemented */ ExtensionNSHandler( const XalanDOMString& namespaceUri, MemoryManager& theManager); static ExtensionNSHandler* create( const XalanDOMString& namespaceUri, MemoryManager& theManager); /** * Construct a new extension namespace handler given all the information * needed. * * @param namespaceUri extension namespace URI being implemented * @param elemNames string containing list of elements of extension NS * @param funcNames string containing list of functions of extension NS * @param lang language of code implementing the extension * @param srcURL value of src attribute (if any) - treated as a URL * or a classname depending on the value of lang. If * srcURL is not null, then scriptSrc is ignored. * @param scriptSrc the actual script code (if any) */ ExtensionNSHandler( MemoryManager& theManager, const XalanDOMString& namespaceUri, const XalanDOMString& elemNames, const XalanDOMString& funcNames, const XalanDOMString& lang, const XalanDOMString& srcURL, const XalanDOMString& src); /** * Set function local parts of extension NS. Super does the work; I * just record that a component desc has been loaded. * * @param functions whitespace separated list of function names defined * by this extension namespace */ virtual void setFunctions(const XalanDOMString& funcNames); /** * Set the script data for this extension NS. Deferred to super for * actual work - only record that a component desc has been loaded. * * @param lang language of the script * @param srcURL value of src attribute (if any) - treated as a URL * or a classname depending on the value of lang. If * srcURL is not null, then scriptSrc is ignored. * @param scriptSrc the actual script code (if any) */ virtual void setScript( const XalanDOMString& lang, const XalanDOMString& srcURL, const XalanDOMString& scriptSrc); /** * Set element local parts of extension NS. * * @param elemNames whitespace separated list of element names defined * by this extension namespace */ void setElements(const XalanDOMString& elemNames); /** * Tests whether a certain element name is known within this namespace. * * @param element name of the element being tested * @return true if known, false if not */ bool isElementAvailable (const XalanDOMString& element) const; /** * Process a call to this extension namespace via an element. As a side * effect, the results are sent to the XSLTProcessor's result tree. * * @param localPart element name's local part * @param element extension element being processed * @param stylesheetTree compiled stylesheet tree * @param mode current mode * @param sourceTree root of the source tree (but don't assume it's a * document) * @param sourceNode current context node * @exception XSLProcessorException thrown if something goes wrong * while running the extension handler * @exception MalformedURLException if loading trouble * @exception FileNotFoundException if loading trouble * @exception IOException if loading trouble * @exception SAXException if parsing trouble */ void processElement ( StylesheetExecutionContext& executionContext, const XalanDOMString& localPart, const XalanElement* element, Stylesheet& stylesheetTree, const XalanNode* sourceTree, const XalanNode* sourceNode, const XalanQName& mode); protected: /** * Start the component up by executing any script that needs to run * at startup time. This needs to happen before any functions can be * called on the component. * */ virtual void startupComponent(); private: typedef XalanSet ExtensionSetType; // Extension elements of this namespace ExtensionSetType m_elements; // True when info from the component description has been loaded. This gets // set as soon as any of the info has been specified. If this is false, // when processElement or processFunction is called it will use the // namespace URI as a URL and try to load that location as the component // description bool m_componentDescLoaded; /** * Load the component spec for this extension namespace taking the URI * of this namespace as the URL to read from. */ void loadComponentDescription(); /** * extract the text nodes and CDATA content children of the given * elem and return as a string. Any other types of node children * are ignored * * @param elem element whose text and cdata children are to be * concatenated together. * * @return string resulting from concatanating the text/cdata child * nodes' values. */ static XalanDOMString& getScriptString(const XalanElement& elem, XalanDOMString& theResult); }; XALAN_CPP_NAMESPACE_END #endif // XALAN_EXTENSIONNSHANDLER_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/ProblemListenerDefault.hpp0000664000175000000640000001010111731656103022142 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_PROBLEMLISTENERDEFAULT_HEADER_GUARD) #define XALAN_PROBLEMLISTENERDEFAULT_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Xalan header files. #include XALAN_DECLARE_XERCES_CLASS(MemoryManager) XALAN_CPP_NAMESPACE_BEGIN XALAN_USING_XERCES(MemoryManager) /** * The implementation of the default error handling for Xalan. */ class XALAN_XSLT_EXPORT ProblemListenerDefault : public ProblemListener { public: ProblemListenerDefault( MemoryManager& theManager, PrintWriter* pw = 0); virtual ~ProblemListenerDefault(); // These methods are inherited from ProblemListener ... virtual void setPrintWriter(PrintWriter* pw); virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode); virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode); virtual void problem( eSource source, eClassification classification, const XalanNode* sourceNode, const ElemTemplateElement* styleNode, const XalanDOMString& msg, const XalanDOMChar* uri, XalanFileLoc lineNo, XalanFileLoc charOffset); // These methods are new... PrintWriter* getPrintWriter() const { return m_pw; } static void defaultFormat( PrintWriter& pw, eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode) { ProblemListenerBase::defaultFormat( pw, source, classification, msg, locator, sourceNode); } static void defaultFormat( PrintWriter& pw, eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode) { ProblemListenerBase::defaultFormat( pw, source, classification, msg, sourceNode); } static void defaultFormat( PrintWriter& pw, eSource source, eClassification classification, const XalanNode* sourceNode, const ElemTemplateElement* styleNode, const XalanDOMString& msg, const XalanDOMChar* uri, XalanFileLoc lineNo, XalanFileLoc charOffset); private: MemoryManager& m_memoryManager; PrintWriter* m_pw; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_PROBLEMLISTENERDEFAULT_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/ElemOtherwise.hpp0000664000175000000640000000444411731656103020320 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMOTHERWISE_HEADER_GUARD) #define XALAN_ELEMOTHERWISE_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemTemplateElement.hpp" XALAN_CPP_NAMESPACE_BEGIN class ElemOtherwise: public ElemTemplateElement { public: /** * Construct an object corresponding to an "xsl:otherwise" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemOtherwise( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); virtual const XalanDOMString& getElementName() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; virtual void endElement(StylesheetExecutionContext& executionContext) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMOTHERWISE_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/AVTPart.hpp0000664000175000000640000000426311731656103017024 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_AVTPART_HEADER_GUARD) #define XALAN_AVTPART_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" XALAN_CPP_NAMESPACE_BEGIN class XalanDOMString; class XalanNode; class PrefixResolver; class XPathExecutionContext; /** * Class to hold a part, either a string or XPath, * of an Attribute Value Template. */ class AVTPart { public: AVTPart(); virtual ~AVTPart(); /** * Append the value to the buffer. * * @param buf buffer to write into * @param contextNode current context node * @param prefixResolver prefix resolver to use * @param executionContext execution context */ virtual void evaluate( XalanDOMString& buf, XalanNode* contextNode, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext) const = 0; /** * Append the value to the buffer. * * @param buf buffer to write into * @param prefixResolver prefix resolver to use * @param executionContext execution context */ virtual void evaluate( XalanDOMString& buf, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext) const = 0; }; XALAN_CPP_NAMESPACE_END #endif //XALAN_AVTPART_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/SelectionEvent.cpp0000664000175000000640000000716511731656103020471 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "SelectionEvent.hpp" #include XALAN_CPP_NAMESPACE_BEGIN SelectionEvent::SelectionEvent( StylesheetExecutionContext& executionContext, const XalanNode* sourceNode, const ElemTemplateElement& styleNode, const XalanDOMString& attributeName, const XPath& xpath, const XObjectPtr selection) : m_executionContext(executionContext), m_sourceNode(sourceNode), m_styleNode(styleNode), m_attributeName(attributeName), m_xpathExpression(xpath.getExpression().getCurrentPattern()), m_selection(selection), m_type(selection.null() == true ? eNone : eUnknown), m_boolean(false), m_nodeList(0) { } SelectionEvent::SelectionEvent( StylesheetExecutionContext& executionContext, const XalanNode* sourceNode, const ElemTemplateElement& styleNode, const XalanDOMString& attributeName, const XalanDOMString& xpathExpression, const XObjectPtr selection) : m_executionContext(executionContext), m_sourceNode(sourceNode), m_styleNode(styleNode), m_attributeName(attributeName), m_xpathExpression(xpathExpression), m_selection(selection), m_type(selection.null() == true ? eNone : eUnknown), m_boolean(false), m_nodeList(0) { } SelectionEvent::SelectionEvent( StylesheetExecutionContext& executionContext, const XalanNode* sourceNode, const ElemTemplateElement& styleNode, const XalanDOMString& attributeName, const XPath& xpath, bool selection) : m_executionContext(executionContext), m_sourceNode(sourceNode), m_styleNode(styleNode), m_attributeName(attributeName), m_xpathExpression(xpath.getExpression().getCurrentPattern()), m_selection(), m_type(eBoolean), m_boolean(selection), m_nodeList(0) { } SelectionEvent::SelectionEvent( StylesheetExecutionContext& executionContext, const XalanNode* sourceNode, const ElemTemplateElement& styleNode, const XalanDOMString& attributeName, const XPath& xpath, const NodeRefListBase& selection) : m_executionContext(executionContext), m_sourceNode(sourceNode), m_styleNode(styleNode), m_attributeName(attributeName), m_xpathExpression(xpath.getExpression().getCurrentPattern()), m_selection(), m_type(eNodeSet), m_boolean(false), m_nodeList(&selection) { } SelectionEvent::~SelectionEvent() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemAttributeSet.hpp0000664000175000000640000000646111731656103020767 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMATTRIBUTESET_HEADER_GUARD) #define XALAN_ELEMATTRIBUTESET_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemUse.hpp" XALAN_CPP_NAMESPACE_BEGIN class ElemAttributeSet : public ElemUse { public: /** * Construct an object corresponding to an "xsl:attribute-set" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemAttributeSet ( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); virtual ~ElemAttributeSet(); /** * Retrieves qualified name of object * * @return qualified name */ const XalanQName& getQName() const { assert(m_qname != 0); return *m_qname; } // These methods are inherited from ElemUse ... virtual const XalanDOMString& getElementName() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; virtual void endElement(StylesheetExecutionContext& executionContext) const; const ElemTemplateElement* getInvoker(StylesheetExecutionContext& executionContext) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif virtual void addToStylesheet( StylesheetConstructionContext& constructionContext, Stylesheet& theStylesheet); protected: virtual bool childTypeAllowed(int xslToken) const; private: const XalanQName* m_qname; }; inline bool operator==( const ElemAttributeSet& theLHS, const ElemAttributeSet& theRHS) { return theLHS.getQName() == theRHS.getQName(); } inline bool operator<( const ElemAttributeSet& theLHS, const ElemAttributeSet& theRHS) { return theLHS.getQName() < theRHS.getQName(); } XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMATTRIBUTESET_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/StylesheetExecutionContextDefault.cpp0000664000175000000640000021074611731656103024432 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "StylesheetExecutionContextDefault.hpp" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "Constants.hpp" #include "ElemTemplateElement.hpp" #include "ElemWithParam.hpp" #include "KeyTable.hpp" #include "StylesheetConstructionContextDefault.hpp" #include "StylesheetRoot.hpp" #include "XSLTEngineImpl.hpp" #include "XSLTProcessorException.hpp" //#define XALAN_VQ_SPECIAL_TRACE #if defined(XALAN_VQ_SPECIAL_TRACE) #include "C:/Program Files/Rational/Quantify/pure.h" #endif XALAN_CPP_NAMESPACE_BEGIN StylesheetExecutionContextDefault::XalanNumberFormatFactory StylesheetExecutionContextDefault::s_defaultXalanNumberFormatFactory; StylesheetExecutionContextDefault::XalanNumberFormatFactory* StylesheetExecutionContextDefault::s_xalanNumberFormatFactory = &StylesheetExecutionContextDefault::getDefaultXalanNumberFormatFactory(); const StylesheetExecutionContextDefault::DefaultCollationCompareFunctor StylesheetExecutionContextDefault::s_defaultCollationFunctor; StylesheetExecutionContextDefault::StylesheetExecutionContextDefault( MemoryManager& theManager, XSLTEngineImpl& xsltProcessor, XPathEnvSupport& theXPathEnvSupport, DOMSupport& theDOMSupport, XObjectFactory& theXObjectFactory, XalanNode* theCurrentNode, const NodeRefListBase* theContextNodeList, const PrefixResolver* thePrefixResolver) : StylesheetExecutionContext(theManager, &theXObjectFactory), m_xpathExecutionContextDefault(theXPathEnvSupport, theDOMSupport, theXObjectFactory, theCurrentNode, theContextNodeList, thePrefixResolver), m_xsltProcessor(&xsltProcessor), m_rootDocument(0), m_elementRecursionStack(theManager), m_stylesheetRoot(0), m_formatterListeners(theManager), m_printWriters(theManager), m_outputStreams(theManager), m_collationCompareFunctor(0), m_formatNumberFunctor(0), m_variablesStack(theManager), m_paramsVector(theManager), m_matchPatternCache(theManager), m_keyTables(theManager), m_countersTable(theManager), m_sourceTreeResultTreeFactory(), m_mode(0), m_currentTemplateStack(theManager), m_indentAmount(-1), m_xresultTreeFragAllocator(theManager, eXResultTreeFragAllocatorBlockSize), m_documentFragmentAllocator(theManager, eDocumentFragmentAllocatorBlockSize), m_documentAllocator(theManager, eDocumentAllocatorBlockSize), m_copyTextNodesOnlyStack(theManager), m_modeStack(theManager), m_currentIndexStack(theManager), #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) m_xobjectPtrStack(theManager), m_mutableNodeRefListStack(theManager), m_nodesToTransformStack(theManager), m_processCurrentAttributeStack(theManager), m_executeIfStack(theManager), m_stringStack(theManager), m_formatterToTextStack(theManager), m_skipElementAttributesStack(theManager), m_formatterToSourceTreeStack(theManager), m_paramsVectorStack(theManager), m_elementInvokerStack(theManager), m_useAttributeSetIndexesStack(theManager), m_nodeSorter(theManager), #else m_formatterToTextCache(theManager), m_formatterToSourceTreeCache(theManager), m_nodeSorterCache(theManager), #endif m_usePerInstanceDocumentFactory(false), m_escapeURLs(eEscapeURLsDefault), m_omitMETATag(eOmitMETATagDefault) { m_currentTemplateStack.push_back(0); } StylesheetExecutionContextDefault::StylesheetExecutionContextDefault( MemoryManager& theManager, XalanNode* theCurrentNode, const NodeRefListBase* theContextNodeList, const PrefixResolver* thePrefixResolver) : StylesheetExecutionContext(theManager), m_xpathExecutionContextDefault(theManager, theCurrentNode, theContextNodeList, thePrefixResolver), m_xsltProcessor(0), m_rootDocument(0), m_elementRecursionStack(theManager), m_stylesheetRoot(0), m_formatterListeners(theManager), m_printWriters(theManager), m_outputStreams(theManager), m_collationCompareFunctor(0), m_formatNumberFunctor(0), m_variablesStack(theManager), m_paramsVector(theManager), m_matchPatternCache(theManager), m_keyTables(theManager), m_countersTable(theManager), m_sourceTreeResultTreeFactory(), m_mode(0), m_currentTemplateStack(theManager), m_indentAmount(-1), m_xresultTreeFragAllocator(theManager, eXResultTreeFragAllocatorBlockSize), m_documentFragmentAllocator(theManager, eDocumentFragmentAllocatorBlockSize), m_documentAllocator(theManager, eDocumentAllocatorBlockSize), m_copyTextNodesOnlyStack(theManager), m_modeStack(theManager), m_currentIndexStack(theManager), #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) m_xobjectPtrStack(theManager), m_mutableNodeRefListStack(theManager), m_nodesToTransformStack(theManager), m_processCurrentAttributeStack(theManager), m_executeIfStack(theManager), m_stringStack(theManager), m_formatterToTextStack(theManager), m_skipElementAttributesStack(theManager), m_formatterToSourceTreeStack(theManager), m_paramsVectorStack(theManager), m_elementInvokerStack(theManager), m_useAttributeSetIndexesStack(theManager), m_nodeSorter(theManager), #else m_formatterToTextCache(theManager), m_formatterToSourceTreeCache(theManager), m_nodeSorterCache(theManager), #endif m_usePerInstanceDocumentFactory(false), m_escapeURLs(eEscapeURLsDefault), m_omitMETATag(eOmitMETATagDefault) { m_currentTemplateStack.push_back(0); } StylesheetExecutionContextDefault* StylesheetExecutionContextDefault::create( MemoryManager& theManager, XalanNode* theCurrentNode, const NodeRefListBase* theContextNodeList, const PrefixResolver* thePrefixResolver) { typedef StylesheetExecutionContextDefault ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( theManager, theCurrentNode, theContextNodeList, thePrefixResolver); theGuard.release(); return theResult; } StylesheetExecutionContextDefault::~StylesheetExecutionContextDefault() { reset(); } void StylesheetExecutionContextDefault::problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode) { m_xsltProcessor->problem( source, classification, msg, locator, sourceNode); } void StylesheetExecutionContextDefault::problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode) { m_xsltProcessor->problem( source, classification, msg, sourceNode); } bool StylesheetExecutionContextDefault::getQuietConflictWarnings() const { assert(m_xsltProcessor != 0); return m_xsltProcessor->getQuietConflictWarnings(); } bool StylesheetExecutionContextDefault::getCopyTextNodesOnly() const { if (m_copyTextNodesOnlyStack.size() == 0) { return false; } else { return m_copyTextNodesOnlyStack.back(); } } XalanNode* StylesheetExecutionContextDefault::getRootDocument() const { return m_rootDocument; } void StylesheetExecutionContextDefault::setRootDocument(XalanNode* theDocument) { m_rootDocument = theDocument; } void StylesheetExecutionContextDefault::setStylesheetRoot(const StylesheetRoot* theStylesheet) { assert(m_xsltProcessor != 0); m_stylesheetRoot = theStylesheet; m_hasPreserveOrStripConditions = theStylesheet->hasPreserveOrStripSpaceElements(); m_xsltProcessor->setStylesheetRoot(theStylesheet); if (theStylesheet == 0) { m_xsltProcessor->setExecutionContext(0); } else { m_xsltProcessor->setExecutionContext(this); m_countersTable.resize(theStylesheet->getElemNumberCount()); } } const XalanQName* StylesheetExecutionContextDefault::getCurrentMode() const { if (m_modeStack.size() == 0) { return 0; } else { return m_modeStack.back(); } } void StylesheetExecutionContextDefault::pushCurrentMode(const XalanQName* theMode) { m_modeStack.push_back(theMode); } void StylesheetExecutionContextDefault::popCurrentMode() { m_modeStack.pop_back(); } const ElemTemplate* StylesheetExecutionContextDefault::getCurrentTemplate() const { return m_currentTemplateStack.back(); } void StylesheetExecutionContextDefault::pushCurrentTemplate(const ElemTemplate* theTemplate) { m_currentTemplateStack.push_back(theTemplate); } void StylesheetExecutionContextDefault::popCurrentTemplate() { m_currentTemplateStack.pop_back(); } bool StylesheetExecutionContextDefault::isElementPending() const { assert(m_xsltProcessor != 0); return m_xsltProcessor->isElementPending(); } void StylesheetExecutionContextDefault::replacePendingAttribute( const XalanDOMChar* theName, const XalanDOMChar* theNewType, const XalanDOMChar* theNewValue) { assert(m_xsltProcessor != 0); // Remove the old attribute, then add the new one. AttributeListImpl::addAttribute() // does this for us. m_xsltProcessor->replacePendingAttribute(theName, theNewType, theNewValue); } void StylesheetExecutionContextDefault::pushOutputContext(FormatterListener* flistener) { assert(m_xsltProcessor != 0); m_xsltProcessor->pushOutputContext(flistener); } void StylesheetExecutionContextDefault::popOutputContext() { assert(m_xsltProcessor != 0); m_xsltProcessor->popOutputContext(); } void StylesheetExecutionContextDefault::addResultAttribute( const XalanDOMString& aname, const XalanDOMString& value) { assert(m_xsltProcessor != 0); m_xsltProcessor->addResultAttribute(aname, value); } void StylesheetExecutionContextDefault::addResultAttribute( const XalanDOMString& aname, const XalanDOMChar* value) { assert(m_xsltProcessor != 0); m_xsltProcessor->addResultAttribute(aname, value); } void StylesheetExecutionContextDefault::copyNamespaceAttributes(const XalanNode& src) { assert(m_xsltProcessor != 0); m_xsltProcessor->copyNamespaceAttributes(src); } const XalanDOMString* StylesheetExecutionContextDefault::getResultPrefixForNamespace(const XalanDOMString& theNamespace) const { assert(m_xsltProcessor != 0); return m_xsltProcessor->getResultPrefixForNamespace(theNamespace); } const XalanDOMString* StylesheetExecutionContextDefault::getResultNamespaceForPrefix(const XalanDOMString& thePrefix) const { assert(m_xsltProcessor != 0); return m_xsltProcessor->getResultNamespaceForPrefix(thePrefix); } bool StylesheetExecutionContextDefault::isPendingResultPrefix(const XalanDOMString& thePrefix) { assert(m_xsltProcessor != 0); return m_xsltProcessor->isPendingResultPrefix(thePrefix); } void StylesheetExecutionContextDefault::getUniqueNamespaceValue(XalanDOMString& theValue) const { assert(m_xsltProcessor != 0); m_xsltProcessor->getUniqueNamespaceValue(theValue); } FormatterListener* StylesheetExecutionContextDefault::getFormatterListener() const { assert(m_xsltProcessor != 0); return m_xsltProcessor->getFormatterListener(); } void StylesheetExecutionContextDefault::setFormatterListener(FormatterListener* flistener) { assert(m_xsltProcessor != 0); m_xsltProcessor->setFormatterListener(flistener); } int StylesheetExecutionContextDefault::getIndent() const { if (m_indentAmount != -1) { return m_indentAmount; } else { assert(m_xsltProcessor != 0); return m_xsltProcessor->getXMLParserLiaison().getIndent(); } } void StylesheetExecutionContextDefault::setIndent(int indentAmount) { m_indentAmount = indentAmount; } const XPath* StylesheetExecutionContextDefault::createMatchPattern( const XalanDOMString& str, const PrefixResolver& resolver) { assert(m_xsltProcessor != 0); const XPath* theResult = 0; // We won't cache any xpath that has a namespace, since // we have no idea how that might be resolved. We could // enhance XPath so that we can tell if str would match // the XPath, once the namespace is resolved, but it may // not be worth it... const XalanDOMString::size_type index = indexOf(str, XalanUnicode::charColon); const XalanDOMString::size_type len = str.length(); // If we found a ':' before the end of the string, and // it's by itself (:: would indicate an axis), don't // try to cache the XPath... if (index < len - 1 && str[index + 1] != XalanUnicode::charColon) { theResult = m_xsltProcessor->createMatchPattern(str, resolver); } else { const XPathCacheMapType::iterator i = m_matchPatternCache.find(str); if (i != m_matchPatternCache.end()) { // Update hit time... #if defined(XALAN_STRICT_ANSI_HEADERS) (*i).second.second = std::clock(); #else (*i).second.second = clock(); #endif theResult = (*i).second.first; } else { theResult = m_xsltProcessor->createMatchPattern(str, resolver); addToXPathCache(str, theResult); } } return theResult; } void StylesheetExecutionContextDefault::returnXPath(const XPath* xpath) { assert(m_xsltProcessor != 0); if (isCached(xpath) == false) { m_xsltProcessor->returnXPath(xpath); } } void StylesheetExecutionContextDefault::pushTopLevelVariables(const ParamVectorType& topLevelParams) { assert(m_stylesheetRoot != 0); m_stylesheetRoot->pushTopLevelVariables(*this, topLevelParams); } const XObjectPtr StylesheetExecutionContextDefault::createVariable( const XPath& xpath, XalanNode* contextNode, const PrefixResolver& resolver) { XalanNode* const theCurrentNode = getCurrentNode(); if (theCurrentNode == contextNode) { return xpath.execute(resolver, *this); } else { return xpath.execute(contextNode, resolver, *this); } } #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const XObjectPtr StylesheetExecutionContextDefault::createVariable( const ElemTemplateElement& templateChild, XalanNode* sourceNode) { return createXResultTreeFrag(templateChild, sourceNode); } #endif void StylesheetExecutionContextDefault::pushVariable( const XalanQName& name, const ElemTemplateElement* element, const XalanDOMString& str, XalanNode* contextNode, const PrefixResolver& resolver) { assert(m_xsltProcessor != 0); if (str.empty() == false) { m_variablesStack.pushVariable( name, m_xsltProcessor->evalXPathStr( str, contextNode, resolver, *this), element); } } void StylesheetExecutionContextDefault::pushVariable( const XalanQName& name, const XObjectPtr val, const ElemTemplateElement* element) { m_variablesStack.pushVariable(name, val, element); } void StylesheetExecutionContextDefault::pushVariable( const XalanQName& name, const ElemVariable* var, const ElemTemplateElement* element) { m_variablesStack.pushVariable(name, var, element); } void StylesheetExecutionContextDefault::pushVariable( const XalanQName& name, const ElemTemplateElement* element, const XPath& xpath, XalanNode* contextNode, const PrefixResolver& resolver) { m_variablesStack.pushVariable(name, xpath.execute(contextNode, resolver, *this), element); } #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void StylesheetExecutionContextDefault::pushVariable( const XalanQName& name, const ElemTemplateElement* element, const ElemTemplateElement& templateChild, XalanNode* sourceNode) { m_variablesStack.pushVariable(name, createXResultTreeFrag(templateChild, sourceNode), element); } #endif void StylesheetExecutionContextDefault::pushContextMarker() { m_variablesStack.pushContextMarker(); } void StylesheetExecutionContextDefault::popContextMarker() { m_variablesStack.popContextMarker(); } void StylesheetExecutionContextDefault::resolveTopLevelParams() { assert(m_xsltProcessor != 0); m_xsltProcessor->resolveTopLevelParams(*this); m_variablesStack.markGlobalStackFrame(); } void StylesheetExecutionContextDefault::clearTopLevelParams() { assert(m_xsltProcessor != 0); m_xsltProcessor->clearTopLevelParams(); m_variablesStack.unmarkGlobalStackFrame(); } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void StylesheetExecutionContextDefault::beginParams() { m_paramsVectorStack.resize(m_paramsVectorStack.size() + 1); } void StylesheetExecutionContextDefault::endParams() { assert(m_paramsVectorStack.size() > 0); m_variablesStack.pushParams(m_paramsVectorStack.back()); m_paramsVectorStack.pop_back(); } void StylesheetExecutionContextDefault::pushParam( const XalanQName& qName, const XObjectPtr& theValue) { assert(m_paramsVectorStack.empty() == false); ParamsVectorType& currentParamVector = m_paramsVectorStack.back(); currentParamVector.push_back(ParamsVectorType::value_type(&qName, theValue)); } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void StylesheetExecutionContextDefault::pushParams(const ElemTemplateElement& xslCallTemplateElement) { // We have a params vector that we reuse, but occasionally, a // param will result in recursive execution, so we'll use a // temporary when we detect such a situation. if(m_paramsVector.empty() == true) { // This will ensure that the contents of m_paramsVector are // cleared. CollectionClearGuard theGuard(m_paramsVector); // Make sure we have the default capacity for the params // vector... if (m_paramsVector.capacity() == 0) { m_paramsVector.reserve(eDefaultParamsVectorSize); } getParams(xslCallTemplateElement, m_paramsVector); m_variablesStack.pushParams(m_paramsVector); } else { ParamsVectorType tempParams(getMemoryManager()); getParams(xslCallTemplateElement, tempParams); m_variablesStack.pushParams(tempParams); } } #endif const XObjectPtr StylesheetExecutionContextDefault::getParamVariable(const XalanQName& theName) { bool fFound; return m_variablesStack.getParamVariable(theName, *this, fFound); } void StylesheetExecutionContextDefault::pushElementFrame(const ElemTemplateElement* elem) { m_variablesStack.pushElementFrame(elem); } void StylesheetExecutionContextDefault::popElementFrame() { m_variablesStack.popElementFrame(); } int StylesheetExecutionContextDefault::getGlobalStackFrameIndex() const { return m_variablesStack.getGlobalStackFrameIndex(); } int StylesheetExecutionContextDefault::getCurrentStackFrameIndex() const { return m_variablesStack.getCurrentStackFrameIndex(); } void StylesheetExecutionContextDefault::pushCurrentStackFrameIndex(int currentStackFrameIndex) { m_currentIndexStack.push_back(getCurrentStackFrameIndex()); m_variablesStack.setCurrentStackFrameIndex(currentStackFrameIndex); } void StylesheetExecutionContextDefault::popCurrentStackFrameIndex() { assert (m_currentIndexStack.size() > 0); int previousStackFrameIndex = m_currentIndexStack.back(); m_currentIndexStack.pop_back(); m_variablesStack.setCurrentStackFrameIndex(previousStackFrameIndex); } void StylesheetExecutionContextDefault::startDocument() { assert(m_xsltProcessor != 0); m_xsltProcessor->startDocument(); } void StylesheetExecutionContextDefault::endDocument() { assert(m_xsltProcessor != 0); m_xsltProcessor->endDocument(); cleanUpTransients(); setFormatterListener(0); } void StylesheetExecutionContextDefault::characters( const XalanDOMChar* ch, fl_size_type start, fl_size_type length) { assert(m_xsltProcessor != 0); m_xsltProcessor->characters(ch, start, length); } void StylesheetExecutionContextDefault::charactersRaw( const XalanDOMChar* ch, fl_size_type start, fl_size_type length) { assert(m_xsltProcessor != 0); m_xsltProcessor->charactersRaw(ch, start, length); } void StylesheetExecutionContextDefault::comment(const XalanDOMChar* data) { assert(m_xsltProcessor != 0); m_xsltProcessor->comment(data); } void StylesheetExecutionContextDefault::processingInstruction( const XalanDOMChar* target, const XalanDOMChar* data) { assert(m_xsltProcessor != 0); m_xsltProcessor->processingInstruction(target, data); } void StylesheetExecutionContextDefault::startElement(const XalanDOMChar* name) { assert(m_xsltProcessor != 0); m_xsltProcessor->startElement(name); } void StylesheetExecutionContextDefault::endElement(const XalanDOMChar* name) { assert(m_xsltProcessor != 0); m_xsltProcessor->endElement(name); } void StylesheetExecutionContextDefault::flushPending() { assert(m_xsltProcessor != 0); m_xsltProcessor->flushPending(); } void StylesheetExecutionContextDefault::cloneToResultTree( const XalanNode& node, const Locator* locator) { m_xsltProcessor->cloneToResultTree(node, getCopyTextNodesOnly(), locator); } void StylesheetExecutionContextDefault::cloneToResultTree( const XalanNode& node, XalanNode::NodeType nodeType, bool overrideStrip, bool shouldCloneAttributes, const Locator* locator) { assert(m_xsltProcessor != 0); m_xsltProcessor->cloneToResultTree( node, nodeType, overrideStrip, shouldCloneAttributes, getCopyTextNodesOnly(), locator); } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void StylesheetExecutionContextDefault::beginCreateXResultTreeFrag(XalanNode* sourceNode) { assert(m_xsltProcessor != 0); XalanSourceTreeDocument* const theDocument = m_usePerInstanceDocumentFactory == true ? m_documentAllocator.create( eDefaultAttributeAllocatorBlockSize, eDefaultAttributeNSAllocatorBlockSize, eDefaultCommentAllocatorBlockSize, eDefaultElementAllocatorBlockSize, eDefaultElementNSAllocatorBlockSize, eDefaultPIAllocatorBlockSize, eDefaultTextAllocatorBlockSize, eDefaultTextIWSAllocatorBlockSize) : getSourceTreeFactory(getMemoryManager()); assert(theDocument != 0); XalanSourceTreeDocumentFragment* const theDocumentFragment = m_documentFragmentAllocator.create(*theDocument); assert(theDocumentFragment != 0); FormatterToSourceTree* const theFormatter = m_formatterToSourceTreeStack.get(); assert(theFormatter != 0); theFormatter->setDocument(theDocument); theFormatter->setDocumentFragment(theDocumentFragment); theFormatter->setPrefixResolver(m_xsltProcessor); pushOutputContext(theFormatter); theFormatter->startDocument(); pushCurrentNode(sourceNode); } const XObjectPtr StylesheetExecutionContextDefault::endCreateXResultTreeFrag() { FormatterToSourceTree* const theFormatter = m_formatterToSourceTreeStack.top(); assert (theFormatter != 0); theFormatter->endDocument(); XalanSourceTreeDocumentFragment* const theDocumentFragment = theFormatter->getDocumentFragment(); assert(theDocumentFragment != 0); XResultTreeFrag* const theXResultTreeFrag = m_xresultTreeFragAllocator.create(*theDocumentFragment); theXResultTreeFrag->setExecutionContext(this); popCurrentNode(); popOutputContext(); m_formatterToSourceTreeStack.release(); return XObjectPtr(theXResultTreeFrag); } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const XObjectPtr StylesheetExecutionContextDefault::createXResultTreeFrag( const ElemTemplateElement& templateChild, XalanNode* sourceNode) { assert(m_xsltProcessor != 0); XalanSourceTreeDocument* const theDocument = m_usePerInstanceDocumentFactory == true ? m_documentAllocator.create( eDefaultAttributeAllocatorBlockSize, eDefaultAttributeNSAllocatorBlockSize, eDefaultCommentAllocatorBlockSize, eDefaultElementAllocatorBlockSize, eDefaultElementNSAllocatorBlockSize, eDefaultPIAllocatorBlockSize, eDefaultTextAllocatorBlockSize, eDefaultTextIWSAllocatorBlockSize) : getSourceTreeFactory(getMemoryManager()); assert(theDocument != 0); XalanSourceTreeDocumentFragment* const theDocumentFragment = m_documentFragmentAllocator.create(*theDocument); assert(theDocumentFragment != 0); GuardCachedObject theGuard(m_formatterToSourceTreeCache); FormatterToSourceTree* const theFormatter = theGuard.get(); assert(theFormatter != 0); theFormatter->setDocument(theDocument); theFormatter->setDocumentFragment(theDocumentFragment); theFormatter->setPrefixResolver(m_xsltProcessor); StylesheetExecutionContext::OutputContextPushPop theOutputContextPushPop( *this, theFormatter); theFormatter->startDocument(); templateChild.executeChildren(*this, sourceNode); theFormatter->endDocument(); XResultTreeFrag* const theXResultTreeFrag = m_xresultTreeFragAllocator.create(*theDocumentFragment); theXResultTreeFrag->setExecutionContext(this); return XObjectPtr(theXResultTreeFrag); } #endif void StylesheetExecutionContextDefault::outputToResultTree( const XObject& xobj, const Locator* locator) { assert(m_xsltProcessor != 0); m_xsltProcessor->outputToResultTree(xobj, getCopyTextNodesOnly(), locator); } void StylesheetExecutionContextDefault::outputResultTreeFragment( const XObject& theTree, const Locator* locator) { assert(m_xsltProcessor != 0); m_xsltProcessor->outputResultTreeFragment(theTree, getCopyTextNodesOnly(), locator); } const XalanDOMString& StylesheetExecutionContextDefault::getXSLNameSpaceURL() const { assert(m_xsltProcessor != 0); return m_xsltProcessor->getXSLNameSpaceURL(); } const XalanDOMString& StylesheetExecutionContextDefault::getXalanXSLNameSpaceURL() const { assert(m_xsltProcessor != 0); return m_xsltProcessor->getXalanXSLNameSpaceURL(); } bool StylesheetExecutionContextDefault::getTraceSelects() const { assert(m_xsltProcessor != 0); return m_xsltProcessor->getTraceSelects(); } void StylesheetExecutionContextDefault::traceSelect( const ElemTemplateElement& theTemplate, const NodeRefListBase& nl, const XPath* xpath) { assert(m_xsltProcessor != 0); m_xsltProcessor->traceSelect(*this, theTemplate, nl, xpath); } bool StylesheetExecutionContextDefault::findOnElementRecursionStack(const ElemTemplateElement* theElement) const { assert(theElement != 0); XALAN_USING_STD(find) const ElementTemplateElementStackType::const_iterator i = find(m_elementRecursionStack.begin(), m_elementRecursionStack.end(), theElement); return i == m_elementRecursionStack.end() ? false : true; } void StylesheetExecutionContextDefault::pushOnElementRecursionStack(const ElemTemplateElement* theElement) { assert(theElement != 0); if (findOnElementRecursionStack(theElement) == true) { const Locator* const theLocator = theElement->getLocator(); const GetCachedString theGuard(*this); throw XSLTProcessorException( getMemoryManager(), XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::InfiniteRecursion_1Param, theElement->getElementName()), theLocator); } m_elementRecursionStack.push_back(theElement); } const ElemTemplateElement* StylesheetExecutionContextDefault::popElementRecursionStack() { assert(m_elementRecursionStack.empty() == false); const ElemTemplateElement* const theTemp = m_elementRecursionStack.back(); m_elementRecursionStack.pop_back(); return theTemp; } bool StylesheetExecutionContextDefault::returnXResultTreeFrag(XResultTreeFrag* theXResultTreeFrag) { assert(theXResultTreeFrag != 0); if (m_xresultTreeFragAllocator.ownsObject(theXResultTreeFrag) == false) { return false; } else { XalanDocumentFragment* const theDocumentFragment = theXResultTreeFrag->release(); const KeyTablesTableType::iterator i = m_keyTables.find(theDocumentFragment); if (i != m_keyTables.end()) { KeyTable* const theTable = (*i).second; m_keyTables.erase(i); theTable->~KeyTable(); m_keyTables.getMemoryManager().deallocate((void*)theTable); } m_xresultTreeFragAllocator.destroy(theXResultTreeFrag); if (m_usePerInstanceDocumentFactory == true) { m_documentAllocator.destroy(static_cast(theDocumentFragment->getOwnerDocument())); } m_documentFragmentAllocator.destroy(static_cast(theDocumentFragment)); return true; } } StylesheetExecutionContextDefault::eEscapeURLs StylesheetExecutionContextDefault::getEscapeURLs() const { return m_escapeURLs; } void StylesheetExecutionContextDefault::setEscapeURLs(eEscapeURLs value) { m_escapeURLs = value; } StylesheetExecutionContextDefault::eOmitMETATag StylesheetExecutionContextDefault::getOmitMETATag() const { return m_omitMETATag; } void StylesheetExecutionContextDefault::setOmitMETATag(eOmitMETATag value) { m_omitMETATag = value; } FormatterListener* StylesheetExecutionContextDefault::createFormatterToXML( Writer& writer, const XalanDOMString& version, bool doIndent, int indent, const XalanDOMString& encoding, const XalanDOMString& mediaType, const XalanDOMString& doctypeSystem, const XalanDOMString& doctypePublic, bool xmlDecl, const XalanDOMString& standalone) { m_formatterListeners.push_back(0); FormatterListener* const theFormatterListener = XalanXMLSerializerFactory::create( getMemoryManager(), writer, version, doIndent, indent, encoding, mediaType, doctypeSystem, doctypePublic, xmlDecl, standalone); assert(theFormatterListener != 0); m_formatterListeners.back() = theFormatterListener; return theFormatterListener; } FormatterListener* StylesheetExecutionContextDefault::createFormatterToHTML( Writer& writer, const XalanDOMString& encoding, const XalanDOMString& mediaType, const XalanDOMString& doctypeSystem, const XalanDOMString& doctypePublic, bool doIndent, int indent, bool escapeURLs, bool omitMetaTag) { m_formatterListeners.push_back(0); FormatterToHTML* const theFormatter = FormatterToHTML::create( getMemoryManager(), writer, encoding, mediaType, doctypeSystem, doctypePublic, doIndent, indent, escapeURLs, omitMetaTag); m_formatterListeners.back() = theFormatter; theFormatter->setPrefixResolver(m_xsltProcessor); return theFormatter; } FormatterListener* StylesheetExecutionContextDefault::createFormatterToText( Writer& writer, const XalanDOMString& encoding) { m_formatterListeners.push_back(0); FormatterToText* const theFormatter = FormatterToText::create(getMemoryManager(), writer, encoding); m_formatterListeners.back() = theFormatter; return theFormatter; } #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) FormatterToText* StylesheetExecutionContextDefault::borrowFormatterToText() { return m_formatterToTextCache.get(); } bool StylesheetExecutionContextDefault::returnFormatterToText(FormatterToText* theFormatter) { return m_formatterToTextCache.release(theFormatter); } #endif #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) NodeSorter* StylesheetExecutionContextDefault::getNodeSorter() { return &m_nodeSorter; } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) NodeSorter* StylesheetExecutionContextDefault::borrowNodeSorter() { return m_nodeSorterCache.get(); } bool StylesheetExecutionContextDefault::returnNodeSorter(NodeSorter* theSorter) { return m_nodeSorterCache.release(theSorter); } #endif StylesheetExecutionContextDefault::XalanNumberFormatAutoPtr StylesheetExecutionContextDefault::createXalanNumberFormat() { return XalanNumberFormatAutoPtr(getMemoryManager(), s_xalanNumberFormatFactory->create(getMemoryManager())); } StylesheetExecutionContextDefault::XalanNumberFormatFactory::XalanNumberFormatFactory() { } StylesheetExecutionContextDefault::XalanNumberFormatFactory::~XalanNumberFormatFactory() { } XalanNumberFormat* StylesheetExecutionContextDefault::XalanNumberFormatFactory::create(MemoryManager& theManager) { return XalanNumberFormat::create(theManager); } StylesheetExecutionContextDefault::XalanNumberFormatFactory* StylesheetExecutionContextDefault::installXalanNumberFormatFactory(XalanNumberFormatFactory* theFactory) { XalanNumberFormatFactory* const theOldFactory = s_xalanNumberFormatFactory; if (theFactory == 0) { s_xalanNumberFormatFactory = &s_defaultXalanNumberFormatFactory; } else { s_xalanNumberFormatFactory = theFactory; } return theOldFactory; } int StylesheetExecutionContextDefault::collationCompare( const XalanDOMString& theLHS, const XalanDOMString& theRHS, XalanCollationServices::eCaseOrder theCaseOrder) { if (m_collationCompareFunctor == 0) { return s_defaultCollationFunctor(theLHS.c_str(), theRHS.c_str(), theCaseOrder); } else { return (*m_collationCompareFunctor)(theLHS.c_str(), theRHS.c_str(), theCaseOrder); } } int StylesheetExecutionContextDefault::collationCompare( const XalanDOMString& theLHS, const XalanDOMString& theRHS, const XalanDOMString& theLocale, XalanCollationServices::eCaseOrder theCaseOrder) { if (m_collationCompareFunctor == 0) { return s_defaultCollationFunctor(theLHS.c_str(), theRHS.c_str(), theLocale.c_str(), theCaseOrder); } else { return (*m_collationCompareFunctor)(theLHS.c_str(), theRHS.c_str(), theLocale.c_str(), theCaseOrder); } } int StylesheetExecutionContextDefault::collationCompare( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, XalanCollationServices::eCaseOrder theCaseOrder) { assert(theLHS != 0 && theRHS != 0); if (m_collationCompareFunctor == 0) { return s_defaultCollationFunctor(theLHS, theRHS, theCaseOrder); } else { return (*m_collationCompareFunctor)(theLHS, theRHS, theCaseOrder); } } int StylesheetExecutionContextDefault::collationCompare( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, const XalanDOMChar* theLocale, XalanCollationServices::eCaseOrder theCaseOrder) { assert(theLHS != 0 && theRHS != 0); if (m_collationCompareFunctor == 0) { return s_defaultCollationFunctor(theLHS, theRHS, theLocale, theCaseOrder); } else { return (*m_collationCompareFunctor)(theLHS, theRHS, theLocale, theCaseOrder); } } StylesheetExecutionContextDefault::DefaultCollationCompareFunctor::DefaultCollationCompareFunctor() { } StylesheetExecutionContextDefault::DefaultCollationCompareFunctor::~DefaultCollationCompareFunctor() { } int StylesheetExecutionContextDefault::DefaultCollationCompareFunctor::operator()( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, XalanCollationServices::eCaseOrder /* theCaseOrder */) const { return XALAN_CPP_NAMESPACE :: collationCompare(theLHS, theRHS); } int StylesheetExecutionContextDefault::DefaultCollationCompareFunctor::operator()( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, const XalanDOMChar* /* theLocale */, XalanCollationServices::eCaseOrder theCaseOrder) const { return (*this)(theLHS, theRHS, theCaseOrder); } const StylesheetExecutionContextDefault::CollationCompareFunctor* StylesheetExecutionContextDefault::installCollationCompareFunctor(CollationCompareFunctor* theFunctor) { assert(theFunctor != 0); const CollationCompareFunctor* const temp = m_collationCompareFunctor; m_collationCompareFunctor = theFunctor; return temp; } StylesheetExecutionContextDefault::CollationCompareFunctor* StylesheetExecutionContextDefault::uninstallCollationCompareFunctor() { if (m_collationCompareFunctor == 0) { return 0; } else { CollationCompareFunctor* const temp = m_collationCompareFunctor; m_collationCompareFunctor = 0; return temp; } } static const XalanQNameByValue theEmptyQName(XalanMemMgrs::getDummyMemMgr()); void StylesheetExecutionContextDefault::formatNumber( double number, const XalanDOMString& pattern, XalanDOMString& theResult, const XalanNode* context, const Locator* locator) { const XalanDecimalFormatSymbols * theDFS = getDecimalFormatSymbols(theEmptyQName); if (m_formatNumberFunctor == 0) { m_xpathExecutionContextDefault.doFormatNumber( number, pattern, theDFS, theResult, context, locator); } else { (*m_formatNumberFunctor)( *this, number, pattern, theDFS, theResult, context, locator); } } void StylesheetExecutionContextDefault::formatNumber( double number, const XalanDOMString& pattern, const XalanDOMString& dfsName, XalanDOMString& theResult, const XalanNode* context, const Locator* locator) { XalanQNameByValue& theDFSQName = m_xpathExecutionContextDefault.getScratchQName(); theDFSQName.set(dfsName, getPrefixResolver(), locator); const XalanDecimalFormatSymbols* theDFS = getDecimalFormatSymbols(theDFSQName); if (theDFS == 0) { const GetCachedString theGuard(*this); problem( eXSLTProcessor, eWarning, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::Decimal_formatElementNotFound_1Param, "format-number()"), locator, context); theDFS = getDecimalFormatSymbols(theEmptyQName); } if (m_formatNumberFunctor == 0) { m_xpathExecutionContextDefault.doFormatNumber(number,pattern,theDFS,theResult,context,locator); } else { (*m_formatNumberFunctor)(*this, number, pattern, theDFS, theResult, context, locator); } } const StylesheetExecutionContextDefault::FormatNumberFunctor* StylesheetExecutionContextDefault::installFormatNumberFunctor(FormatNumberFunctor* theFunctor) { assert(theFunctor != 0); const FormatNumberFunctor * const temp = m_formatNumberFunctor; m_formatNumberFunctor = theFunctor; return temp; } StylesheetExecutionContextDefault::FormatNumberFunctor* StylesheetExecutionContextDefault::uninstallFormatNumberFunctor() { if (m_formatNumberFunctor == 0) { return 0; } else { FormatNumberFunctor * const temp = m_formatNumberFunctor; m_formatNumberFunctor = 0; return temp; } } void StylesheetExecutionContextDefault::reset() { #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) assert(m_elementRecursionStack.empty() == true); #endif m_variablesStack.reset(); #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) m_xobjectPtrStack.clear(); m_paramsVectorStack.clear(); m_elementRecursionStack.clear(); #endif if (m_xsltProcessor != 0) { m_xsltProcessor->reset(); } m_rootDocument = 0; m_stylesheetRoot = 0; m_mode = 0; m_currentTemplateStack.clear(); m_currentTemplateStack.push_back(0); #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) m_formatterToTextCache.reset(); m_formatterToSourceTreeCache.reset(); m_nodeSorterCache.reset(); #endif m_xresultTreeFragAllocator.reset(); m_documentFragmentAllocator.reset(); m_documentAllocator.reset(); // Just in case endDocument() was not called, // clean things up... cleanUpTransients(); // Destroy the source tree factory, which // will destroy all result tree fragment nodes // that were generated... m_sourceTreeResultTreeFactory.reset(); // Reset the default execution context... m_xpathExecutionContextDefault.reset(); m_copyTextNodesOnlyStack.clear(); m_modeStack.clear(); m_currentIndexStack.clear(); #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) m_nodesToTransformStack.clear(); m_processCurrentAttributeStack.clear(); m_skipElementAttributesStack.clear(); m_executeIfStack.clear(); m_elementInvokerStack.clear(); m_useAttributeSetIndexesStack.clear(); m_formatterToSourceTreeStack.reset(); m_stringStack.reset(); m_mutableNodeRefListStack.reset(); m_formatterToTextStack.reset(); #endif } XalanNode* StylesheetExecutionContextDefault::getCurrentNode() const { return m_xpathExecutionContextDefault.getCurrentNode(); } void StylesheetExecutionContextDefault::pushCurrentNode(XalanNode* theCurrentNode) { m_xpathExecutionContextDefault.pushCurrentNode(theCurrentNode); } void StylesheetExecutionContextDefault::popCurrentNode() { m_xpathExecutionContextDefault.popCurrentNode(); } bool StylesheetExecutionContextDefault::isNodeAfter( const XalanNode& node1, const XalanNode& node2) const { return m_xpathExecutionContextDefault.isNodeAfter(node1, node2); } void StylesheetExecutionContextDefault::pushContextNodeList(const NodeRefListBase& theContextNodeList) { m_xpathExecutionContextDefault.pushContextNodeList(theContextNodeList); } void StylesheetExecutionContextDefault::popContextNodeList() { m_xpathExecutionContextDefault.popContextNodeList(); } const NodeRefListBase& StylesheetExecutionContextDefault::getContextNodeList() const { return m_xpathExecutionContextDefault.getContextNodeList(); } StylesheetExecutionContextDefault::size_type StylesheetExecutionContextDefault::getContextNodeListLength() const { return m_xpathExecutionContextDefault.getContextNodeListLength(); } StylesheetExecutionContextDefault::size_type StylesheetExecutionContextDefault::getContextNodeListPosition(const XalanNode& contextNode) const { return m_xpathExecutionContextDefault.getContextNodeListPosition(contextNode); } bool StylesheetExecutionContextDefault::elementAvailable(const XalanQName& theQName) const { if (theQName.getNamespace() == XSLTEngineImpl::getXSLNameSpaceURL()) { const int xslToken = StylesheetConstructionContextDefault::getElementNameToken(theQName.getLocalPart()); return xslToken < 0 ? false : true; } else { return m_xpathExecutionContextDefault.elementAvailable(theQName); } } bool StylesheetExecutionContextDefault::elementAvailable( const XalanDOMString& theName, const Locator* theLocator) const { XalanQNameByValue& theQName = m_xpathExecutionContextDefault.getScratchQName(); theQName.set(theName, getPrefixResolver(), theLocator); return elementAvailable(theQName); } bool StylesheetExecutionContextDefault::functionAvailable(const XalanQName& theQName) const { return m_xpathExecutionContextDefault.functionAvailable(theQName); } bool StylesheetExecutionContextDefault::functionAvailable( const XalanDOMString& theName, const Locator* theLocator) const { return m_xpathExecutionContextDefault.functionAvailable(theName, theLocator); } const XObjectPtr StylesheetExecutionContextDefault::extFunction( const XalanDOMString& theNamespace, const XalanDOMString& functionName, XalanNode* context, const XObjectArgVectorType& argVec, const Locator* locator) { assert(m_xpathExecutionContextDefault.getXPathEnvSupport() != 0); return m_xpathExecutionContextDefault.getXPathEnvSupport()->extFunction(*this, theNamespace, functionName, context, argVec, locator); } XalanDocument* StylesheetExecutionContextDefault::parseXML( MemoryManager& theManager, const XalanDOMString& urlString, const XalanDOMString& base, ErrorHandler* theErrorHandler) const { return m_xpathExecutionContextDefault.parseXML( theManager, urlString, base, theErrorHandler); } MutableNodeRefList* StylesheetExecutionContextDefault::borrowMutableNodeRefList() { return m_xpathExecutionContextDefault.borrowMutableNodeRefList(); } bool StylesheetExecutionContextDefault::returnMutableNodeRefList(MutableNodeRefList* theList) { return m_xpathExecutionContextDefault.returnMutableNodeRefList(theList); } void StylesheetExecutionContextDefault::pushCopyTextNodesOnly(bool copyTextNodesOnly) { m_copyTextNodesOnlyStack.push_back(copyTextNodesOnly); } bool StylesheetExecutionContextDefault::popCopyTextNodesOnly() { assert (m_copyTextNodesOnlyStack.size() > 0); bool copyTextNodesOnly = m_copyTextNodesOnlyStack.back(); m_copyTextNodesOnlyStack.pop_back(); return copyTextNodesOnly; } MutableNodeRefList* StylesheetExecutionContextDefault::createMutableNodeRefList(MemoryManager& theManager) const { return m_xpathExecutionContextDefault.createMutableNodeRefList(theManager); } XalanDOMString& StylesheetExecutionContextDefault::getCachedString() { return m_xpathExecutionContextDefault.getCachedString(); } bool StylesheetExecutionContextDefault::releaseCachedString(XalanDOMString& theString) { return m_xpathExecutionContextDefault.releaseCachedString(theString); } void StylesheetExecutionContextDefault::getNodeSetByKey( XalanNode* context, const XalanQName& qname, const XalanDOMString& ref, const Locator* locator, MutableNodeRefList& nodelist) { assert(m_stylesheetRoot != 0); m_stylesheetRoot->getNodeSetByKey( context, qname, ref, *getPrefixResolver(), nodelist, *this, locator, m_keyTables); } void StylesheetExecutionContextDefault::getNodeSetByKey( XalanNode* context, const XalanDOMString& name, const XalanDOMString& ref, const Locator* locator, MutableNodeRefList& nodelist) { assert(m_stylesheetRoot != 0); const PrefixResolver* const resolver = getPrefixResolver(); assert(resolver != 0); XalanQNameByValue& theQName = m_xpathExecutionContextDefault.getScratchQName(); theQName.set(name, resolver, locator); m_stylesheetRoot->getNodeSetByKey( context, theQName, ref, *resolver, nodelist, *this, locator, m_keyTables); } const XObjectPtr StylesheetExecutionContextDefault::getVariable( const XalanQName& name, const Locator* locator) { bool fFound; const XObjectPtr theValue(m_variablesStack.getVariable(name, *this, fFound)); if(fFound == true) { assert(theValue.null() == false); return theValue; } else { const GetCachedString theGuard(*this); problem( eXSLTProcessor, eWarning, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::VariableIsNotDefined_1Param, name.getLocalPart()), locator, getCurrentNode()); return getXObjectFactory().createUnknown(name.getLocalPart()); } } const PrefixResolver* StylesheetExecutionContextDefault::getPrefixResolver() const { return m_xpathExecutionContextDefault.getPrefixResolver(); } void StylesheetExecutionContextDefault::setPrefixResolver(const PrefixResolver* thePrefixResolver) { m_xpathExecutionContextDefault.setPrefixResolver(thePrefixResolver); } const XalanDOMString* StylesheetExecutionContextDefault::getNamespaceForPrefix(const XalanDOMString& prefix) const { return m_xpathExecutionContextDefault.getNamespaceForPrefix(prefix); } const XalanDOMString& StylesheetExecutionContextDefault::findURIFromDoc(const XalanDocument* owner) const { return m_xpathExecutionContextDefault.findURIFromDoc(owner); } const XalanDOMString& StylesheetExecutionContextDefault::getUnparsedEntityURI( const XalanDOMString& theName, const XalanDocument& theDocument) const { return m_xpathExecutionContextDefault.getUnparsedEntityURI(theName, theDocument); } bool StylesheetExecutionContextDefault::shouldStripSourceNode(const XalanText& node) { assert(m_stylesheetRoot != 0); // assert(node.getData().length() != 0); return m_stylesheetRoot->shouldStripSourceNode(node); } XalanDocument* StylesheetExecutionContextDefault::getSourceDocument(const XalanDOMString& theURI) const { return m_xpathExecutionContextDefault.getSourceDocument(theURI); } void StylesheetExecutionContextDefault::setSourceDocument( const XalanDOMString& theURI, XalanDocument* theDocument) { m_xpathExecutionContextDefault.setSourceDocument(theURI, theDocument); } const XalanDecimalFormatSymbols* StylesheetExecutionContextDefault::getDecimalFormatSymbols(const XalanQName& qname) { if (m_stylesheetRoot == 0) { return 0; } else { return m_stylesheetRoot->getDecimalFormatSymbols(qname); } } PrintWriter* StylesheetExecutionContextDefault::createPrintWriter(XalanOutputStream* theTextOutputStream) { assert(theTextOutputStream != 0); PrintWriter* const thePrintWriter = XalanOutputStreamPrintWriter::create(*theTextOutputStream); m_printWriters.push_back(thePrintWriter); return thePrintWriter; } PrintWriter* StylesheetExecutionContextDefault::createPrintWriter( const XalanDOMString& theFileName, const XalanDOMString& /* theEncoding */) { XalanOutputStream* const theOutputStream = XalanFileOutputStream::create( theFileName, getMemoryManager()); m_outputStreams.push_back(theOutputStream); return createPrintWriter(theOutputStream); } PrintWriter* StylesheetExecutionContextDefault::createPrintWriter(StreamType& theStream) { XalanOutputStream* const theOutputStream = XalanStdOutputStream::create(theStream, getMemoryManager()); m_outputStreams.push_back(theOutputStream); return createPrintWriter(theOutputStream); } PrintWriter* StylesheetExecutionContextDefault::createPrintWriter(FILE* theStream) { XalanOutputStream* const theOutputStream = XalanFStreamOutputStream::create(theStream, getMemoryManager()); m_outputStreams.push_back(theOutputStream); return createPrintWriter(theOutputStream); } CountersTable& StylesheetExecutionContextDefault::getCountersTable() { return m_countersTable; } void StylesheetExecutionContextDefault::characters(const XalanNode& node) { m_xsltProcessor->characters(node); } void StylesheetExecutionContextDefault::characters(const XObjectPtr& xobject) { m_xsltProcessor->characters(xobject); } void StylesheetExecutionContextDefault::charactersRaw(const XalanNode& node) { m_xsltProcessor->charactersRaw(node); } void StylesheetExecutionContextDefault::charactersRaw(const XObjectPtr& xobject) { m_xsltProcessor->charactersRaw(xobject); } StylesheetExecutionContextDefault::tl_size_type StylesheetExecutionContextDefault::getTraceListeners() const { assert(m_xsltProcessor != 0); return m_xsltProcessor->getTraceListeners(); } void StylesheetExecutionContextDefault::fireGenerateEvent(const GenerateEvent& ge) { assert(m_xsltProcessor != 0); m_xsltProcessor->fireGenerateEvent(ge); } void StylesheetExecutionContextDefault::fireTraceEvent(const TracerEvent& te) { assert(m_xsltProcessor != 0); m_xsltProcessor->fireTraceEvent(te); } void StylesheetExecutionContextDefault::fireSelectEvent(const SelectionEvent& se) { assert(m_xsltProcessor != 0); m_xsltProcessor->fireSelectEvent(se); } class PopAndPushContextMarker { public: PopAndPushContextMarker(StylesheetExecutionContext& theExecutionContext) : m_executionContext(theExecutionContext) { m_executionContext.popContextMarker(); } ~PopAndPushContextMarker() { m_executionContext.pushContextMarker(); } private: StylesheetExecutionContext& m_executionContext; }; #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void StylesheetExecutionContextDefault::getParams( const ElemTemplateElement& xslCallTemplateElement, ParamsVectorType& params) { assert(getCurrentNode() != 0); assert(params.empty() == true); const ElemTemplateElement* child = xslCallTemplateElement.getFirstChildElem(); if (0 != child) { // This object will take care of popping, then // pushing the context marker at the top of the // stack, even if an exception is thrown. PopAndPushContextMarker thePopPush(*this); while(0 != child) { if(StylesheetConstructionContext::ELEMNAME_WITH_PARAM == child->getXSLToken()) { const XPath* const pxpath = child->getXPath(); XObjectPtr theXObject; if(0 != pxpath) { theXObject = createVariable( *pxpath, getCurrentNode(), *child); } else { theXObject = createVariable( *child, getCurrentNode()); } const ElemWithParam* const xslParamElement = static_cast(child); params.push_back(ParamsVectorType::value_type(&xslParamElement->getQName(), theXObject)); } child = child->getNextSiblingElem(); } } } #endif XalanSourceTreeDocument* StylesheetExecutionContextDefault::getSourceTreeFactory(MemoryManager& theManager) const { assert(m_xsltProcessor != 0); if (m_sourceTreeResultTreeFactory.get() == 0) { m_sourceTreeResultTreeFactory.reset( &theManager, XalanSourceTreeDocument::create(theManager)); } return m_sourceTreeResultTreeFactory.get(); } bool StylesheetExecutionContextDefault::isCached(const XPath* theXPath) { XPathCacheMapType::const_iterator i = m_matchPatternCache.begin(); const XPathCacheMapType::const_iterator theEnd = m_matchPatternCache.end(); while (i != theEnd) { if ((*i).second.first == theXPath) { return true; } else { ++i; } } return false; } void StylesheetExecutionContextDefault::XPathCacheReturnFunctor::operator()(const XPathCacheMapType::value_type& theCacheEntry) { m_xsltProcessor.returnXPath(theCacheEntry.second.first); } void StylesheetExecutionContextDefault::clearXPathCache() { XALAN_USING_STD(for_each) assert(m_matchPatternCache.empty() == true || m_xsltProcessor != 0); if (m_xsltProcessor != 0) { for_each(m_matchPatternCache.begin(), m_matchPatternCache.end(), XPathCacheReturnFunctor(*m_xsltProcessor)); } m_matchPatternCache.clear(); } void StylesheetExecutionContextDefault::addToXPathCache( const XalanDOMString& pattern, const XPath* theXPath) { assert(m_xsltProcessor != 0); #if defined(XALAN_STRICT_ANSI_HEADERS) ClockType addClock = std::clock(); #else ClockType addClock = clock(); #endif if (m_matchPatternCache.size() == eXPathCacheMax) { // OK, we need to clear something out of the cache... // Initialize the lowest clock time found so far // with the current clock... ClockType lowest = addClock; // Get some iterators ready to search the cache... XPathCacheMapType::iterator i = m_matchPatternCache.begin(); const XPathCacheMapType::iterator theEnd = m_matchPatternCache.end(); XPathCacheMapType::iterator earliest(theEnd); while(i != theEnd) { const ClockType current = (*i).second.second; if (current < lowest) { // OK, found a lower clock time, so // update the everything... lowest = current; earliest = i; } else { ++i; } } assert(earliest != theEnd); // Return the XPath and erase it from the cache. m_xsltProcessor->returnXPath((*earliest).second.first); m_matchPatternCache.erase(earliest); } // Add the XPath with the current clock m_matchPatternCache.insert(pattern, XPathCacheEntry(theXPath, addClock)); } void StylesheetExecutionContextDefault::cleanUpTransients() { XALAN_USING_STD(for_each) for_each(m_formatterListeners.begin(), m_formatterListeners.end(), DeleteFunctor(getMemoryManager())); m_formatterListeners.clear(); for_each(m_printWriters.begin(), m_printWriters.end(), DeleteFunctor(getMemoryManager())); m_printWriters.clear(); for_each(m_outputStreams.begin(), m_outputStreams.end(), DeleteFunctor(getMemoryManager())); m_outputStreams.clear(); // Clean up the key table vector for_each(m_keyTables.begin(), m_keyTables.end(), makeMapValueDeleteFunctor(m_keyTables)); m_keyTables.clear(); m_countersTable.reset(); // Clear any cached XPaths... clearXPathCache(); assert(m_matchPatternCache.empty() == true); } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void StylesheetExecutionContextDefault::createUseAttributeSetIndexesOnStack() { UseAttributeSetIndexes useAttributeSetIndexes; m_useAttributeSetIndexesStack.push_back(useAttributeSetIndexes); } StylesheetExecutionContextDefault::UseAttributeSetIndexes& StylesheetExecutionContextDefault::getUseAttributeSetIndexes() { assert(m_useAttributeSetIndexesStack.size() > 0); return m_useAttributeSetIndexesStack.back(); } void StylesheetExecutionContextDefault::popUseAttributeSetIndexesFromStack() { assert(m_useAttributeSetIndexesStack.size() > 0); m_useAttributeSetIndexesStack.pop_back(); } void StylesheetExecutionContextDefault::pushInvoker(const ElemTemplateElement * invoker) { m_elementInvokerStack.push_back(invoker); } void StylesheetExecutionContextDefault::popInvoker() { assert (m_elementInvokerStack.size() > 0); m_elementInvokerStack.pop_back(); } const ElemTemplateElement* StylesheetExecutionContextDefault::getInvoker() const { assert (m_elementInvokerStack.size() > 0); return m_elementInvokerStack.back(); } XalanDOMString& StylesheetExecutionContextDefault::getAndPushCachedString() { XalanDOMString& theString = *(m_stringStack.get()); theString.clear(); return theString; } XalanDOMString& StylesheetExecutionContextDefault::getLastCachedString() { return *(m_stringStack.top()); } XalanDOMString& StylesheetExecutionContextDefault::getAndPopCachedString() { return *(m_stringStack.release()); } void StylesheetExecutionContextDefault::pushProcessCurrentAttribute(const bool processAttribute) { m_processCurrentAttributeStack.push_back(processAttribute); } bool StylesheetExecutionContextDefault::popProcessCurrentAttribute() { assert (m_processCurrentAttributeStack.size() > 0); bool processAttribute = m_processCurrentAttributeStack.back(); m_processCurrentAttributeStack.pop_back(); return processAttribute; } void StylesheetExecutionContextDefault::pushSkipElementAttributes(bool skipAttributes) { m_skipElementAttributesStack.push_back(skipAttributes); } bool StylesheetExecutionContextDefault::getSkipElementAttributes() const { if (m_skipElementAttributesStack.size() == 0) { return false; } else { return m_skipElementAttributesStack.back(); } } bool StylesheetExecutionContextDefault::popSkipElementAttributes() { assert(m_skipElementAttributesStack.size() > 0); bool skipAttributes = m_skipElementAttributesStack.back(); m_skipElementAttributesStack.pop_back(); return skipAttributes; } void StylesheetExecutionContextDefault::pushExecuteIf(bool executeIf) { m_executeIfStack.push_back(executeIf); } bool StylesheetExecutionContextDefault::popExecuteIf() { assert(m_executeIfStack.size() > 0); bool executeIf = m_executeIfStack.back(); m_executeIfStack.pop_back(); return executeIf; } void StylesheetExecutionContextDefault::beginFormatToText(XalanDOMString& theResult) { FormatterToTextDOMString* const theFormatter = m_formatterToTextStack.get(); assert(theFormatter != 0); theFormatter->setDOMString(theResult); pushOutputContext(theFormatter); theFormatter->startDocument(); } void StylesheetExecutionContextDefault::endFormatToText() { FormatterToText* const theFormatter = m_formatterToTextStack.top(); assert( theFormatter != 0 && theFormatter->getEncoding().empty() == true && theFormatter->getNormalizeLinefeed() == false && theFormatter->getHandleIgnorableWhitespace() == true); theFormatter->endDocument(); popOutputContext(); m_formatterToTextStack.release(); } void StylesheetExecutionContextDefault::pushXObjectPtr(const XObjectPtr & xobjectPtr) { m_xobjectPtrStack.push_back(xobjectPtr); } void StylesheetExecutionContextDefault::popXObjectPtr() { assert(m_xobjectPtrStack.size() > 0); m_xobjectPtrStack.back().release(); m_xobjectPtrStack.pop_back(); } MutableNodeRefList& StylesheetExecutionContextDefault::createAndPushMutableNodeRefList() { MutableNodeRefList& nodeList = *(m_mutableNodeRefListStack.get()); nodeList.clear(); return nodeList; } void StylesheetExecutionContextDefault::releaseAndPopMutableNodeRefList() { m_mutableNodeRefListStack.release(); } void StylesheetExecutionContextDefault::createAndPushNodesToTransformList(const NodeRefListBase* nodeList) { assert(nodeList != 0); NodesToTransform nodesToTransform(nodeList); m_nodesToTransformStack.push_back(nodesToTransform); } XalanNode* StylesheetExecutionContextDefault::getNextNodeToTransform() { assert(m_nodesToTransformStack.size() > 0); return m_nodesToTransformStack.back().next(); } void StylesheetExecutionContextDefault::popNodesToTransformList() { assert(m_nodesToTransformStack.size() > 0); m_nodesToTransformStack.pop_back(); } XalanDOMString StylesheetExecutionContextDefault::FormatterToTextDOMString::s_dummyString(XalanMemMgrs::getDummyMemMgr()); StylesheetExecutionContextDefault::FormatterToTextDOMString::FormatterToTextDOMString(MemoryManager& theManager) : FormatterToText(theManager), m_printWriter(s_dummyString) { setNormalizeLinefeed(false); setWriter(&m_printWriter); } StylesheetExecutionContextDefault::FormatterToTextDOMString::~FormatterToTextDOMString() { assert(s_dummyString.capacity() == 0); } #endif XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/TracerEvent.hpp0000664000175000000640000000612211731656103017761 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_TracerEvent_HEADER_GUARD) #define XALAN_TracerEvent_HEADER_GUARD // Base include file. Must be first. #include // $$$ ToDo: This is necessary while XalanDOMString is a typedef. #include XALAN_CPP_NAMESPACE_BEGIN class XalanNode; class XalanNodeList; class XalanQName; class StylesheetExecutionContext; class ElemTemplateElement; /** * This is the parent class of events generated for tracing the * progress of the XSL processor. */ class XALAN_XSLT_EXPORT TracerEvent { public: /** * Construct a tracer event. * * @param executionContext XSLT processor instance * @param sourceNode current context node * @param styleNode node in the style tree where the event occurs */ TracerEvent( const StylesheetExecutionContext& executionContext, const ElemTemplateElement& styleNode); virtual ~TracerEvent(); /** * Returns a string representation of the node. The string returned for * elements will contain the element name and any attributes enclosed in * angle brackets. The string returned for attributes will be of form, * "name=value." * * @param n any DOM node * @return string representation of the given node */ static XalanDOMString& printNode(const XalanNode& n, XalanDOMString& theResult); /** * Returns a string representation of the node list. The string will contain * the list of nodes inside square braces. Elements will contain the element * name and any attributes enclosed in angle brackets. Attributes will be of * form, "name=value." * * @param l any DOM node list * @return string representation of the given node list */ static XalanDOMString& printNodeList(const XalanNodeList& l, XalanDOMString& theResult); /** * The XSLT processor instance. */ const StylesheetExecutionContext& m_executionContext; /** * The node in the style tree where the event occurs. */ const ElemTemplateElement& m_styleNode; private: // not implemented TracerEvent& operator=(const TracerEvent &); }; XALAN_CPP_NAMESPACE_END #endif //XALAN_TracerEvent_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/ElemVariable.cpp0000664000175000000640000002350211731656103020063 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemVariable.hpp" #include #include #include #include #include #include "SelectionEvent.hpp" #include "Stylesheet.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemVariable::ElemVariable( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ParentType( constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_VARIABLE), m_qname(0), m_selectPattern(0), m_isTopLevel(false), m_value(0), m_varContext(0) { init(constructionContext, stylesheetTree, atts); } ElemVariable::ElemVariable( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber, int xslToken) : ParentType( constructionContext, stylesheetTree, lineNumber, columnNumber, xslToken), m_qname(0), m_selectPattern(0), m_isTopLevel(false), m_value(0), m_varContext(0) { init(constructionContext, stylesheetTree, atts); } ElemVariable::~ElemVariable() { } void ElemVariable::init( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts) { const XalanSize_t nAttrs = atts.getLength(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (equals(aname, Constants::ATTRNAME_SELECT)) { m_selectPattern = constructionContext.createXPath(getLocator(), atts.getValue(i), *this); } else if (equals(aname, Constants::ATTRNAME_NAME)) { m_qname = constructionContext.createXalanQName( atts.getValue(i), stylesheetTree.getNamespaces(), getLocator()); if (m_qname->isValid() == false) { error( constructionContext, XalanMessages::AttributeValueNotValidQName_2Param, Constants::ATTRNAME_NAME.c_str(), atts.getValue(i)); } } else if (isAttrOK( aname, atts, i, constructionContext) == false && processSpaceAttr( Constants::ELEMNAME_VARIABLE_WITH_PREFIX_STRING.c_str(), aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_VARIABLE_WITH_PREFIX_STRING.c_str(), aname); } } if (m_qname == 0) { error( constructionContext, XalanMessages::ElementMustHaveAttribute_2Param, Constants::ELEMNAME_VARIABLE_WITH_PREFIX_STRING, Constants::ATTRNAME_NAME); } } const XalanQName& ElemVariable::getNameAttribute() const { assert(m_qname != 0); return *m_qname; } void ElemVariable::addToStylesheet( StylesheetConstructionContext& constructionContext, Stylesheet& theStylesheet) { // Processing a top-level element only... if (&theStylesheet != &getStylesheet()) { error( constructionContext, XalanMessages::ElemVariableInstanceAddedToWrongStylesheet); } else if (getParentNodeElem() != 0) { error( constructionContext, XalanMessages::ElemVariableInstanceIsAlreadyParented); } else { theStylesheet.setTopLevelVariable(this); m_isTopLevel = true; } } const XalanDOMString& ElemVariable::getElementName() const { return Constants::ELEMNAME_VARIABLE_WITH_PREFIX_STRING; } void ElemVariable::setParentNodeElem(ElemTemplateElement* theParent) { if (m_isTopLevel == true) { throw XalanDOMException(XalanDOMException::HIERARCHY_REQUEST_ERR); } else { ParentType::setParentNodeElem(theParent); } } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemVariable::startElement(StylesheetExecutionContext& executionContext) const { assert(m_qname != 0); ParentType::startElement(executionContext); XObjectPtr theValue; if (m_selectPattern == 0) { if (getFirstChildElem() == 0) { theValue = executionContext.getXObjectFactory().createStringReference(s_emptyString); } else { executionContext.beginCreateXResultTreeFrag(executionContext.getCurrentNode()); return beginExecuteChildren(executionContext); } } else { theValue = m_selectPattern->execute(*this, executionContext); if (0 != executionContext.getTraceListeners()) { executionContext.fireSelectEvent( SelectionEvent( executionContext, executionContext.getCurrentNode(), *this, XalanDOMString("select", executionContext.getMemoryManager()), *m_selectPattern, theValue)); } } if (theValue.null() == false) { executionContext.pushVariable( *m_qname, theValue, getParentNodeElem()); } else { executionContext.pushVariable( *m_qname, this, getParentNodeElem()); } return 0; } void ElemVariable::endElement(StylesheetExecutionContext& executionContext) const { if (0 == m_selectPattern && 0 != getFirstChildElem()) { endExecuteChildren(executionContext); executionContext.pushVariable( *m_qname, executionContext.endCreateXResultTreeFrag(), getParentNodeElem()); } } #else void ElemVariable::execute(StylesheetExecutionContext& executionContext) const { assert(m_qname != 0); ParentType::execute(executionContext); const XObjectPtr theValue(getValue(executionContext, executionContext.getCurrentNode())); if (theValue.null() == false) { executionContext.pushVariable( *m_qname, theValue, getParentNodeElem()); } else { executionContext.pushVariable( *m_qname, this, getParentNodeElem()); } } #endif const XPath* ElemVariable::getXPath(XalanSize_t index) const { return index == 0 ? m_selectPattern : 0; } const XObjectPtr ElemVariable::getValue( StylesheetExecutionContext& executionContext, XalanNode* sourceNode) const { if (m_selectPattern == 0) { if (getFirstChildElem() == 0) { return executionContext.getXObjectFactory().createStringReference(s_emptyString); } else { #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) executionContext.beginCreateXResultTreeFrag(sourceNode); executeChildren(executionContext); return executionContext.endCreateXResultTreeFrag(); #else return executionContext.createXResultTreeFrag(*this, sourceNode); #endif } } else { XObjectPtr theValue; XalanNode* const theCurrentNode = executionContext.getCurrentNode(); if (theCurrentNode == sourceNode) { theValue = m_selectPattern->execute(*this, executionContext); } else { const XPathExecutionContext::CurrentNodePushAndPop theCurrentNodePushAndPop(executionContext, sourceNode); theValue = m_selectPattern->execute(*this, executionContext); } if (0 != executionContext.getTraceListeners()) { executionContext.fireSelectEvent( SelectionEvent( executionContext, sourceNode, *this, XalanDOMString("select", executionContext.getMemoryManager()), *m_selectPattern, theValue)); } return theValue; } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XalanElemValueOfAllocator.cpp0000664000175000000640000000354611731656103022532 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanElemValueOfAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanElemValueOfAllocator::XalanElemValueOfAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanElemValueOfAllocator::~XalanElemValueOfAllocator() { } XalanElemValueOfAllocator::data_type* XalanElemValueOfAllocator::create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type( constructionContext, stylesheetTree, atts, lineNumber, columnNumber); m_allocator.commitAllocation(theBlock); return theResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemSort.cpp0000664000175000000640000001157011731656103017267 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemSort.hpp" #include #include #include #include "Constants.hpp" #include "StylesheetConstructionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemSort::ElemSort( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemTemplateElement(constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_SORT), m_selectPattern(0), m_langAVT(0), m_dataTypeAVT(0), m_orderAVT(0), m_caseOrderAVT(0) { const XalanSize_t nAttrs = atts.getLength(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (equals(aname, Constants::ATTRNAME_SELECT)) { m_selectPattern = constructionContext.createXPath(getLocator(), atts.getValue(i), *this); } else if (equals(aname, Constants::ATTRNAME_LANG)) { m_langAVT = constructionContext.createAVT(getLocator(), aname, atts.getValue(i), *this); } else if (equals(aname, Constants::ATTRNAME_DATATYPE)) { m_dataTypeAVT = constructionContext.createAVT(getLocator(), aname, atts.getValue(i), *this); } else if (equals(aname, Constants::ATTRNAME_ORDER)) { m_orderAVT = constructionContext.createAVT(getLocator(), aname, atts.getValue(i), *this); } else if (equals(aname, Constants::ATTRNAME_CASEORDER)) { m_caseOrderAVT = constructionContext.createAVT(getLocator(), aname, atts.getValue(i), *this); } else if (isAttrOK( aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_SORT_WITH_PREFIX_STRING.c_str(), aname); } } if(0 == m_dataTypeAVT) { m_dataTypeAVT = constructionContext.createAVT( getLocator(), Constants::ATTRNAME_DATATYPE.c_str(), Constants::ATTRVAL_DATATYPE_TEXT.c_str(), *this); } if(0 == m_orderAVT) { m_orderAVT = constructionContext.createAVT( getLocator(), Constants::ATTRNAME_ORDER.c_str(), Constants::ATTRVAL_ORDER_ASCENDING.c_str(), *this); } } ElemSort* ElemSort::create( MemoryManager& theManager, StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) { typedef ElemSort ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( constructionContext, stylesheetTree, atts, lineNumber, columnNumber); theGuard.release(); return theResult; } ElemSort::~ElemSort() { } const XalanDOMString& ElemSort::getElementName() const { return Constants::ELEMNAME_SORT_WITH_PREFIX_STRING; } const XPath* ElemSort::getXPath(XalanSize_t index) const { return index == 0 ? m_selectPattern : 0; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XResultTreeFrag.hpp0000664000175000000640000001052311731656103020565 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XRESULTTREEFRAG_HEADER_GUARD_1357924680) #define XRESULTTREEFRAG_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include // Base class header file. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class ResultTreeFrag; class XALAN_XSLT_EXPORT XResultTreeFrag : public XObject { public: typedef XObject ParentType; /** * Construct an XResultTreeFrag object from a result tree fragment * * @param value The source result tree fragment. * @param theManager The MemoryManager for this instance. */ XResultTreeFrag( XalanDocumentFragment& value, MemoryManager& theManager); /** * Construct an XResultTreeFrag object from another * * @param source source XResultTreeFrag * @param theManager The MemoryManager for this instance. */ XResultTreeFrag( const XResultTreeFrag& source, MemoryManager& theManager); virtual ~XResultTreeFrag(); MemoryManager& getMemoryManager()const { return m_cachedStringValue.getMemoryManager(); } void setExecutionContext(StylesheetExecutionContext* theExecutionContext) { m_executionContext = theExecutionContext; } // These methods are inherited from XObject ... virtual const XalanDOMString& getTypeString() const; virtual double num(XPathExecutionContext& executionContext) const; virtual double num() const; virtual bool boolean(XPathExecutionContext& executionContext) const; virtual const XalanDOMString& str(XPathExecutionContext& executionContext) const; virtual const XalanDOMString& str() const; virtual void str( XPathExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( FormatterListener& formatterListener, MemberFunctionPtr function) const; virtual void str( XPathExecutionContext& executionContext, XalanDOMString& theBuffer) const; virtual void str(XalanDOMString& theBuffer) const; virtual double stringLength(XPathExecutionContext& executionContext) const; virtual const XalanDocumentFragment& rtree() const; virtual void ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject); virtual void ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject) const; /** * Release the ResultTreeFrag held by the instance. */ XalanDocumentFragment* release(); /** * Change the value of an XResultTreeFrag * * @param theValue The new value. */ void set(XalanDocumentFragment& theValue); protected: virtual void dereferenced(); private: //not implemented XResultTreeFrag(); XResultTreeFrag(const XResultTreeFrag&); // Data members... XalanDocumentFragment* m_value; const XalanDOMString* m_singleTextChildValue; StylesheetExecutionContext* m_executionContext; mutable XalanDOMString m_cachedStringValue; mutable double m_cachedNumberValue; }; XALAN_CPP_NAMESPACE_END #endif // XRESULTTREEFRAG_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XSLT/FunctionFunctionAvailable.cpp0000664000175000000640000000417511731656103022634 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionFunctionAvailable.hpp" #include #include #include XALAN_CPP_NAMESPACE_BEGIN FunctionFunctionAvailable::FunctionFunctionAvailable() { } FunctionFunctionAvailable::~FunctionFunctionAvailable() { } XObjectPtr FunctionFunctionAvailable::execute( XPathExecutionContext& executionContext, XalanNode* /* context */, const XObjectPtr arg, const Locator* locator) const { assert(arg.null() == false); return executionContext.getXObjectFactory().createBoolean( executionContext.functionAvailable( arg->str(executionContext), locator)); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionFunctionAvailable* #endif FunctionFunctionAvailable::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionFunctionAvailable::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionRequiresNonNullContextNode_1Param, "function-available()"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemWithParam.cpp0000664000175000000640000001245011731656103020232 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemWithParam.hpp" #include #include #include #include #include "SelectionEvent.hpp" #include "Constants.hpp" #include "Stylesheet.hpp" #include "StylesheetConstructionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemWithParam::ElemWithParam( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemTemplateElement( constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_WITH_PARAM), m_selectPattern(0), m_qname(0) { const XalanSize_t nAttrs = atts.getLength(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (equals(aname, Constants::ATTRNAME_SELECT)) { m_selectPattern = constructionContext.createXPath(getLocator(), atts.getValue(i), *this); } else if (equals(aname, Constants::ATTRNAME_NAME)) { m_qname = constructionContext.createXalanQName( atts.getValue(i), stylesheetTree.getNamespaces(), getLocator()); if (m_qname->isValid() == false) { error( constructionContext, XalanMessages::AttributeValueNotValidQName_2Param, Constants::ATTRNAME_NAME.c_str(), atts.getValue(i)); } } else if (isAttrOK( aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_WITHPARAM_WITH_PREFIX_STRING.c_str(), aname); } } if (m_qname == 0) { error( constructionContext, XalanMessages::ElementMustHaveAttribute_2Param, Constants::ELEMNAME_WITHPARAM_WITH_PREFIX_STRING, Constants::ATTRNAME_NAME); } } ElemWithParam::~ElemWithParam() { } const XalanDOMString& ElemWithParam::getElementName() const { return Constants::ELEMNAME_WITHPARAM_WITH_PREFIX_STRING; } const XPath* ElemWithParam::getXPath(XalanSize_t index) const { return index == 0 ? m_selectPattern : 0; } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemWithParam::startElement(StylesheetExecutionContext& executionContext) const { assert(m_qname != 0); ElemTemplateElement::startElement(executionContext); XObjectPtr theValue; if (m_selectPattern == 0) { if (getFirstChildElem() == 0) { theValue = executionContext.getXObjectFactory().createStringReference(s_emptyString); } else { executionContext.beginCreateXResultTreeFrag(executionContext.getCurrentNode()); return beginExecuteChildren(executionContext); } } else { theValue = m_selectPattern->execute(*this, executionContext); if (0 != executionContext.getTraceListeners()) { const StylesheetExecutionContext::GetCachedString theGuard(executionContext); XalanDOMString& theString = theGuard.get(); theString = "select"; executionContext.fireSelectEvent( SelectionEvent( executionContext, executionContext.getCurrentNode(), *this, theString, *m_selectPattern, theValue)); } } assert(theValue.null() == false); executionContext.pushParam( *m_qname, theValue); return 0; } void ElemWithParam::endElement(StylesheetExecutionContext& executionContext) const { if (0 == m_selectPattern && 0 != getFirstChildElem()) { endExecuteChildren(executionContext); executionContext.pushParam( *m_qname, executionContext.endCreateXResultTreeFrag()); } } #endif XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/FunctionElementAvailable.cpp0000664000175000000640000000407711731656103022441 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionElementAvailable.hpp" #include #include #include XALAN_CPP_NAMESPACE_BEGIN FunctionElementAvailable::FunctionElementAvailable() { } FunctionElementAvailable::~FunctionElementAvailable() { } XObjectPtr FunctionElementAvailable::execute( XPathExecutionContext& executionContext, XalanNode* /* context */, const XObjectPtr arg1, const Locator* locator) const { assert(arg1.null() == false); return executionContext.getXObjectFactory().createBoolean( executionContext.elementAvailable(arg1->str(executionContext), locator)); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionElementAvailable* #endif FunctionElementAvailable::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionElementAvailable::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionAcceptsOneArgument_1Param, "function-available()"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemElement.hpp0000664000175000000640000000765211731656103017744 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMELEMENT_HEADER_GUARD) #define XALAN_ELEMELEMENT_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemUse.hpp" XALAN_CPP_NAMESPACE_BEGIN class AVT; class ElemElement: public ElemUse { public: /** * Construct an object corresponding to an "xsl:element" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemElement( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); virtual ~ElemElement(); // These methods are inherited from ElemUse ... virtual const XalanDOMString& getElementName() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; virtual void endElement(StylesheetExecutionContext& executionContext) const; virtual bool executeChildElement( StylesheetExecutionContext& executionContext, const ElemTemplateElement* element) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif protected: #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) /** * Process the children of a template. * * @param executionContext The current execution context * @param skipAttributeChildren If true, attribute children will not be executed. */ virtual void doExecuteChildren( StylesheetExecutionContext& executionContext, bool skipAttributeChildren) const; #endif virtual void namespacesPostConstruction( StylesheetConstructionContext& constructionContext, const NamespacesHandler& theParentHandler, NamespacesHandler& theHandler); private: /** * Do any necessary fixup for the default namespace * * @param executionContext The current execution context */ void fixupDefaultNamespace(StylesheetExecutionContext& executionContext) const; /** * Get the default namespace from the parent of this element. Returns * an empty string if there's no default namespace. * * @return The default namespace of the parent, if any. */ const XalanDOMString& getParentDefaultNamespace() const; // not implemented ElemElement(const ElemElement &); ElemElement& operator=(const ElemElement &); // Data members... const AVT* m_nameAVT; const AVT* m_namespaceAVT; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMELEMENT_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/ElemEmpty.cpp0000664000175000000640000000540711731656103017440 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemEmpty.hpp" #include #include "StylesheetConstructionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemEmpty::ElemEmpty( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, XalanFileLoc lineNumber, XalanFileLoc columnNumber, const XalanDOMString* elementName) : ElemTemplateElement( constructionContext, stylesheetTree, StylesheetConstructionContext::ELEMNAME_UNDEFINED, XalanDOMString(constructionContext.getMemoryManager()), lineNumber, columnNumber), m_elementName(elementName) { } ElemEmpty::ElemEmpty( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const XalanDOMString* elementName) : ElemTemplateElement( constructionContext, stylesheetTree, StylesheetConstructionContext::ELEMNAME_UNDEFINED), m_elementName(elementName) { } ElemEmpty::~ElemEmpty() { assert(getNextSiblingElem() == 0 && getFirstChildElem() == 0); } const XalanDOMString& ElemEmpty::getElementName() const { return m_elementName != 0 ? *m_elementName : s_emptyString; } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemEmpty::startElement(StylesheetExecutionContext& executionContext) const { assert(false); // really shouldn't be executing empty nodes ElemTemplateElement::startElement(executionContext); return 0; } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemEmpty::execute(StylesheetExecutionContext& executionContext) const { assert(false); // really shouldn't be executing empty nodes ElemTemplateElement::execute(executionContext); } #endif bool ElemEmpty::childTypeAllowed(int /* xslToken */) const { return false; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XalanElemApplyTemplatesAllocator.hpp0000664000175000000640000000743211731656103024140 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANELEMAPPLYTEMPLATESALLOCATOR_INCLUDE_GUARD_12455133) #define XALANELEMAPPLYTEMPLATESALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XSLT_EXPORT XalanElemApplyTemplatesAllocator { public: typedef ElemApplyTemplates data_type; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanElemApplyTemplatesAllocator( MemoryManager& theManager, size_type theBlockCount); ~XalanElemApplyTemplatesAllocator(); /** * Construct an instance * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document * * @return A pointer to the new instance. */ data_type* create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const data_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all objects from the allocator. */ void reset() { m_allocator.reset(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanElemApplyTemplatesAllocator(const XalanElemApplyTemplatesAllocator&); XalanElemApplyTemplatesAllocator& operator=(const XalanElemApplyTemplatesAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANELEMAPPLYTEMPLATESALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XSLT/ElemParam.cpp0000664000175000000640000000655211731656103017404 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemParam.hpp" #include #include "Constants.hpp" #include "Stylesheet.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" #include "StylesheetRoot.hpp" #include "TracerEvent.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemParam::ElemParam( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemVariable(constructionContext, stylesheetTree, atts, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_PARAM) { } const XalanDOMString& ElemParam::getElementName() const { return Constants::ELEMNAME_PARAM_WITH_PREFIX_STRING; } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemParam::startElement(StylesheetExecutionContext& executionContext) const { assert(m_qname != 0); const XObjectPtr obj = executionContext.getParamVariable(*m_qname); // If not found, evaluate as variable for default value if (obj.null() == true) { return ElemVariable::startElement(executionContext); } else { if (0 != executionContext.getTraceListeners()) { executionContext.fireTraceEvent( TracerEvent( executionContext, *this)); } } return 0; } void ElemParam::endElement(StylesheetExecutionContext& executionContext) const { assert(m_qname != 0); const XObjectPtr obj = executionContext.getParamVariable(*m_qname); // If not found, evaluate as variable for default value if (obj.null() == true) { ElemVariable::endElement(executionContext); } } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemParam::execute(StylesheetExecutionContext& executionContext) const { assert(m_qname != 0); const XObjectPtr obj = executionContext.getParamVariable(*m_qname); if (obj.null() == true) { ElemVariable::execute(executionContext); } else { if (0 != executionContext.getTraceListeners()) { executionContext.fireTraceEvent( TracerEvent( executionContext, *this)); } } } #endif XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ResultNamespacesStack.cpp0000664000175000000640000001212211731656103021773 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "ResultNamespacesStack.hpp" XALAN_CPP_NAMESPACE_BEGIN ResultNamespacesStack::ResultNamespacesStack(MemoryManager& theManager) : m_resultNamespaces(theManager, 1), m_stackBegin(m_resultNamespaces.begin()), m_stackPosition(m_stackBegin), m_createNewContextStack(theManager) { // m_resultNamespaces is initialized to a size of // 1, so we always have a dummy entry at the // beginning. This makes the implementation // much simpler. } ResultNamespacesStack::~ResultNamespacesStack() { } void ResultNamespacesStack::addDeclaration( const XalanDOMString& thePrefix, const XalanDOMChar* theNamespaceURI, XalanDOMString::size_type theLength) { assert(theNamespaceURI != 0); assert(m_createNewContextStack.empty() == false); // Check to see if we need to create a new context and do so if necessary... if (m_createNewContextStack.back() == true) { ++m_stackPosition; if (m_stackPosition == m_resultNamespaces.end()) { m_resultNamespaces.resize(m_resultNamespaces.size() + 1); m_stackPosition = m_resultNamespaces.end() - 1; m_stackBegin = m_resultNamespaces.begin(); } m_createNewContextStack.back() = false; } NamespaceVectorType& theCurrentNamespaces = *m_stackPosition; // Add a new namespace at the end of the current namespaces. theCurrentNamespaces.resize(theCurrentNamespaces.size() + 1); NameSpace& theNewNamespace = theCurrentNamespaces.back(); theNewNamespace.setPrefix(thePrefix); theNewNamespace.setURI(theNamespaceURI, theLength); } void ResultNamespacesStack::pushContext() { if (m_createNewContextStack.empty() == true) { m_createNewContextStack.reserve(eDefaultCreateNewContextStackSize); } m_createNewContextStack.push_back(true); } void ResultNamespacesStack::popContext() { assert(m_createNewContextStack.empty() == false); if (m_createNewContextStack.back() == false) { assert(m_resultNamespaces.empty() == false && m_stackPosition != m_resultNamespaces.begin()); (*m_stackPosition).clear(); --m_stackPosition; } m_createNewContextStack.pop_back(); } const XalanDOMString* ResultNamespacesStack::getNamespaceForPrefix(const XalanDOMString& thePrefix) const { if (m_stackPosition == m_stackBegin) { return 0; } else { return XalanQName::getNamespaceForPrefix( m_stackBegin, m_stackPosition + 1, thePrefix); } } const XalanDOMString* ResultNamespacesStack::getPrefixForNamespace(const XalanDOMString& theNamespaceURI) const { if (m_stackPosition == m_stackBegin) { return 0; } else { return XalanQName::getPrefixForNamespace( m_stackBegin, m_stackPosition + 1, theNamespaceURI); } } bool ResultNamespacesStack::prefixIsPresentLocal(const XalanDOMString& thePrefix) { bool fResult = false; // Check to see if we need to create a new context. If so, there are // no prefixes mapped at this level, so return false... if (m_createNewContextStack.back() == false) { const NamespaceVectorType& theNamespaces = *m_stackPosition; NamespaceVectorType::const_iterator i = theNamespaces.begin(); const NamespaceVectorType::const_iterator theEnd = theNamespaces.end(); while(i != theEnd && fResult == false) { const NameSpace& ns = (*i); const XalanDOMString& thisPrefix = ns.getPrefix(); if(thePrefix == thisPrefix) { fResult = true; } else { ++i; } } } return fResult; } void ResultNamespacesStack::clear() { // Since we always keep one dummy entry at the beginning, // swap with an OutputContextStackType instance of size 1. NamespacesStackType temp(XalanMemMgrs::getDummyMemMgr(), 1); temp.swap(m_resultNamespaces); m_stackBegin = m_resultNamespaces.begin(); m_stackPosition = m_stackBegin; m_createNewContextStack.clear(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemWhen.cpp0000664000175000000640000000714711731656103017246 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemWhen.hpp" #include #include #include #include "Constants.hpp" #include "StylesheetConstructionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemWhen::ElemWhen( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemTemplateElement( constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_WHEN), m_test(0) { const XalanSize_t nAttrs = atts.getLength(); for (XalanSize_t i = 0; i < nAttrs; ++i) { const XalanDOMChar* const aname = atts.getName(i); if (equals(aname, Constants::ATTRNAME_TEST)) { m_test = constructionContext.createXPath(getLocator(), atts.getValue(i), *this); } else if (isAttrOK( aname, atts, i, constructionContext) == false && processSpaceAttr( Constants::ELEMNAME_WHEN_WITH_PREFIX_STRING.c_str(), aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_WHEN_WITH_PREFIX_STRING.c_str(), aname); } } if (0 == m_test) { error( constructionContext, XalanMessages::ElementMustHaveAttribute_2Param, Constants::ELEMNAME_WHEN_WITH_PREFIX_STRING, Constants::ATTRNAME_TEST); } } const XalanDOMString& ElemWhen::getElementName() const { return Constants::ELEMNAME_WHEN_WITH_PREFIX_STRING; } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemWhen::startElement(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::startElement(executionContext); return beginExecuteChildren(executionContext); } void ElemWhen::endElement(StylesheetExecutionContext& executionContext) const { endExecuteChildren(executionContext); } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemWhen::execute(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::execute(executionContext); executeChildren(executionContext); } #endif const XPath* ElemWhen::getXPath(XalanSize_t index) const { return index == 0 ? m_test : 0; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XSLTProcessorEnvSupportDefault.cpp0000664000175000000640000002061511731656103023602 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XSLTProcessorEnvSupportDefault.hpp" #include #include #include "xercesc/util/XMLEntityResolver.hpp" #include "xercesc/util/XMLResourceIdentifier.hpp" #include #include #include #include #include "xalanc/PlatformSupport/XSLException.hpp" #include #include #include #include "KeyTable.hpp" #include "StylesheetRoot.hpp" #include "XSLTProcessor.hpp" #include "XSLTInputSource.hpp" XALAN_CPP_NAMESPACE_BEGIN XSLTProcessorEnvSupportDefault::XSLTProcessorEnvSupportDefault( MemoryManager& theManager, XSLTProcessor* theProcessor) : XSLTProcessorEnvSupport(), m_defaultSupport(theManager), m_processor(theProcessor) { } XSLTProcessorEnvSupportDefault::~XSLTProcessorEnvSupportDefault() { reset(); } void XSLTProcessorEnvSupportDefault::installExternalFunctionGlobal( const XalanDOMString& theNamespace, const XalanDOMString& functionName, const Function& function) { XPathEnvSupportDefault::installExternalFunctionGlobal(theNamespace, functionName, function); } void XSLTProcessorEnvSupportDefault::uninstallExternalFunctionGlobal( const XalanDOMString& theNamespace, const XalanDOMString& functionName) { XPathEnvSupportDefault::uninstallExternalFunctionGlobal(theNamespace, functionName); } void XSLTProcessorEnvSupportDefault::installExternalFunctionLocal( const XalanDOMString& theNamespace, const XalanDOMString& functionName, const Function& function) { m_defaultSupport.installExternalFunctionLocal(theNamespace, functionName, function); } void XSLTProcessorEnvSupportDefault::uninstallExternalFunctionLocal( const XalanDOMString& theNamespace, const XalanDOMString& functionName) { m_defaultSupport.uninstallExternalFunctionLocal(theNamespace, functionName); } void XSLTProcessorEnvSupportDefault::reset() { m_defaultSupport.reset(); } XalanDocument* XSLTProcessorEnvSupportDefault::parseXML( MemoryManager& theManager, const XalanDOMString& urlString, const XalanDOMString& base, ErrorHandler* theErrorHandler) { if (m_processor == 0) { return m_defaultSupport.parseXML( theManager, urlString, base, theErrorHandler); } else { typedef URISupport::URLAutoPtrType URLAutoPtrType; // $$$ ToDo: we should re-work this code to only use // XMLRUL when necessary. const URLAutoPtrType xslURL = URISupport::getURLFromString(urlString, base, theManager); const XalanDOMString urlText(xslURL->getURLText(), theManager); // First see if it's already been parsed... XalanDocument* theDocument = getSourceDocument(urlText); if (theDocument == 0) { XMLParserLiaison& parserLiaison = m_processor->getXMLParserLiaison(); EntityResolver* const theResolver = parserLiaison.getEntityResolver(); XMLEntityResolver* const theXMLResolver = parserLiaison.getXMLEntityResolver(); XalanAutoPtr resolverInputSource; const XalanDOMString theEmptyString(theManager); if (theResolver != 0) { resolverInputSource.reset(theResolver->resolveEntity(0, urlString.c_str())); } else if (theXMLResolver != 0) { XALAN_USING_XERCES(XMLResourceIdentifier); XMLResourceIdentifier theIndentifier( XMLResourceIdentifier::ExternalEntity, urlString.c_str()); resolverInputSource.reset( theXMLResolver->resolveEntity(&theIndentifier)); } typedef XMLParserLiaison::EnsureResetErrorHandler EnsureResetErrorHandler; EnsureResetErrorHandler theGuard; if (theErrorHandler != 0) { theGuard.set( &parserLiaison, theErrorHandler); } if (resolverInputSource.get() != 0) { theDocument = parserLiaison.parseXMLStream( *resolverInputSource.get(), theEmptyString); } else { const XSLTInputSource inputSource(urlText.c_str(), theManager); theDocument = parserLiaison.parseXMLStream( inputSource, theEmptyString); } if (theDocument != 0) { setSourceDocument(urlText, theDocument); } } return theDocument; } } XalanDocument* XSLTProcessorEnvSupportDefault::getSourceDocument(const XalanDOMString& theURI) const { return m_defaultSupport.getSourceDocument(theURI); } void XSLTProcessorEnvSupportDefault::setSourceDocument( const XalanDOMString& theURI, XalanDocument* theDocument) { m_defaultSupport.setSourceDocument(theURI, theDocument); } const XalanDOMString& XSLTProcessorEnvSupportDefault::findURIFromDoc(const XalanDocument* owner) const { return m_defaultSupport.findURIFromDoc(owner); } bool XSLTProcessorEnvSupportDefault::elementAvailable( const XalanDOMString& theNamespace, const XalanDOMString& functionName) const { return m_defaultSupport.elementAvailable(theNamespace, functionName); } bool XSLTProcessorEnvSupportDefault::functionAvailable( const XalanDOMString& theNamespace, const XalanDOMString& functionName) const { return m_defaultSupport.functionAvailable(theNamespace, functionName); } XObjectPtr XSLTProcessorEnvSupportDefault::extFunction( XPathExecutionContext& executionContext, const XalanDOMString& theNamespace, const XalanDOMString& functionName, XalanNode* context, const XObjectArgVectorType& argVec, const Locator* locator) const { return m_defaultSupport.extFunction( executionContext, theNamespace, functionName, context, argVec, locator); } void XSLTProcessorEnvSupportDefault::problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode) { m_processor->problem( source, classification, msg, locator, sourceNode); } void XSLTProcessorEnvSupportDefault::problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode) { m_processor->problem( source, classification, msg, sourceNode); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ProblemListener.cpp0000664000175000000640000000210511731656103020635 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "ProblemListener.hpp" // Necessary for the static asserts below... #include "xalanc/XPath/XPathEnvSupport.hpp" XALAN_CPP_NAMESPACE_BEGIN ProblemListener::ProblemListener() { } ProblemListener::~ProblemListener() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemIf.hpp0000664000175000000640000000466411731656103016711 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMIF_HEADER_GUARD) #define XALAN_ELEMIF_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemTemplateElement.hpp" XALAN_CPP_NAMESPACE_BEGIN class XPath; class ElemIf: public ElemTemplateElement { public: /** * Construct an object corresponding to an "xsl:if" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemIf( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); // These methods are inherited from ElemTemplateElement ... virtual const XalanDOMString& getElementName() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; virtual void endElement(StylesheetExecutionContext& executionContext) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif virtual const XPath* getXPath(XalanSize_t index) const; private: const XPath* m_test; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMIF_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/ElemCopyOf.hpp0000664000175000000640000000463411731656103017547 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMCOPYOF_HEADER_GUARD) #define XALAN_ELEMCOPYOF_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemTemplateElement.hpp" XALAN_CPP_NAMESPACE_BEGIN class NodeRefListBase; class XPath; class ElemCopyOf: public ElemTemplateElement { public: /** * Construct an object corresponding to an "xsl:copy-of" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemCopyOf( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); // These methods are inherited from ElemTemplateElement ... virtual const XalanDOMString& getElementName() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif virtual const XPath* getXPath(XalanSize_t index) const; private: const XPath* m_selectPattern; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMCOPYOF_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/ElemApplyTemplates.cpp0000664000175000000640000002346711731656103021314 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemApplyTemplates.hpp" #include #include #include #include "Constants.hpp" #include "Stylesheet.hpp" #include "StylesheetRoot.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" #include "TracerEvent.hpp" XALAN_CPP_NAMESPACE_BEGIN static const XalanQNameByValue s_defaultMode(XalanMemMgrs::getDummyMemMgr()); ElemApplyTemplates::ElemApplyTemplates( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ParentType( constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_APPLY_TEMPLATES), m_mode(0) { const XalanSize_t nAttrs = atts.getLength(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (equals(aname, Constants::ATTRNAME_SELECT)) { m_selectPattern = constructionContext.createXPath(getLocator(), atts.getValue(i), *this); } else if (equals(aname, Constants::ATTRNAME_MODE)) { m_mode = constructionContext.createXalanQName(atts.getValue(i), getStylesheet().getNamespaces(), getLocator()); if (m_mode->isValid() == false) { error( constructionContext, XalanMessages::AttributeValueNotValidQName_2Param, aname, atts.getValue(i)); } } else if (isAttrOK( aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_APPLY_TEMPLATES_WITH_PREFIX_STRING.c_str(), aname); } } if(0 == m_selectPattern) { m_selectPattern = constructionContext.createXPath( getLocator(), Constants::PSEUDONAME_NODE, *this); } if (m_mode == 0) { m_mode = &s_defaultMode; } assert(m_selectPattern != 0 && m_mode != 0); } ElemApplyTemplates::~ElemApplyTemplates() { } const XalanDOMString& ElemApplyTemplates::getElementName() const { return Constants::ELEMNAME_APPLY_TEMPLATES_WITH_PREFIX_STRING; } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemApplyTemplates::startElement(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::startElement(executionContext); if (isDefaultTemplate() == false) { executionContext.pushCurrentMode(m_mode); } executionContext.pushInvoker(this); return getFirstChildElemToExecute(executionContext); } void ElemApplyTemplates::endElement(StylesheetExecutionContext& executionContext) const { executionContext.popContextNodeList(); executionContext.popNodesToTransformList(); releaseSelectedAndSortedNodeList(executionContext); if (isDefaultTemplate() == false) { executionContext.popCurrentMode(); } executionContext.popContextMarker(); executionContext.popInvoker(); ElemTemplateElement::endElement(executionContext); } const ElemTemplateElement* ElemApplyTemplates::getNextChildElemToExecute( StylesheetExecutionContext& executionContext, const ElemTemplateElement* currentElem) const { if (currentElem->getXSLToken() == StylesheetConstructionContext::ELEMNAME_TEMPLATE) { executionContext.popCurrentNode(); return findNextTemplateToExecute(executionContext); } else { const ElemTemplateElement* nextElement = ElemTemplateElement::getNextChildElemToExecute(executionContext, currentElem); if (nextElement == 0) { const NodeRefListBase* nodesToTransform = createSelectedAndSortedNodeList( executionContext); executionContext.createAndPushNodesToTransformList(nodesToTransform); executionContext.pushContextNodeList(*nodesToTransform); executionContext.pushContextMarker(); executionContext.endParams(); return findNextTemplateToExecute(executionContext); } return nextElement; } } const ElemTemplateElement* ElemApplyTemplates::getFirstChildElemToExecute( StylesheetExecutionContext& executionContext) const { const ElemTemplateElement* firstElement = getFirstChildElem(); if (firstElement != 0) { executionContext.beginParams(); return firstElement; } else { const NodeRefListBase* nodesToTransform = createSelectedAndSortedNodeList( executionContext); executionContext.createAndPushNodesToTransformList(nodesToTransform); executionContext.pushContextNodeList(*nodesToTransform); executionContext.pushContextMarker(); return findNextTemplateToExecute(executionContext); } } const ElemTemplateElement* ElemApplyTemplates::findNextTemplateToExecute( StylesheetExecutionContext& executionContext) const { const ElemTemplateElement* selectedTemplate = 0; do { XalanNode* nextNode = executionContext.getNextNodeToTransform(); if (nextNode == 0) { break; } executionContext.pushCurrentNode(nextNode); selectedTemplate = findTemplateToTransformChild( executionContext, *this, 0, nextNode); if (0 == selectedTemplate) { executionContext.popCurrentNode(); } } while (0 == selectedTemplate); return selectedTemplate; } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemApplyTemplates::execute(StylesheetExecutionContext& executionContext) const { assert(m_selectPattern != 0 && m_mode != 0); if(0 != executionContext.getTraceListeners()) { executionContext.fireTraceEvent(TracerEvent( executionContext, *this)); } ParentType::transformSelectedChildren( executionContext, 0); } void ElemApplyTemplates::transformChild( StylesheetExecutionContext& executionContext, const ElemTemplateElement& xslInstruction, const ElemTemplateElement* theTemplate, XalanNode* child) const { assert(child != 0); const XalanNode::NodeType nodeType = child->getNodeType(); // Filter out any attributes nodes that are namespace declarations if (nodeType != XalanNode::ATTRIBUTE_NODE || DOMServices::isNamespaceDeclaration(static_cast(*child)) == false) { ParentType::transformChild( executionContext, xslInstruction, theTemplate, child, nodeType); } } void ElemApplyTemplates::selectAndSortChildren( StylesheetExecutionContext& executionContext, const ElemTemplateElement* theTemplate, NodeSorter* sorter, int /* selectStackFrameIndex */) const { int savedStackFrameIndex; // Push the params & stack frame, but then execute the select // expression inside transformSelectedChildren, which must be // executed in the stack frame before the new stack frame. const StylesheetExecutionContext::ParamsPushPop thePushPop( executionContext, *this, savedStackFrameIndex); const XalanQName* const currentMode = executionContext.getCurrentMode(); assert(currentMode != 0); if (isDefaultTemplate() == false && !m_mode->equals(*currentMode)) { executionContext.pushCurrentMode(m_mode); ParentType::selectAndSortChildren( executionContext, theTemplate, sorter, savedStackFrameIndex); executionContext.popCurrentMode(); } else { ParentType::selectAndSortChildren( executionContext, theTemplate, sorter, savedStackFrameIndex); } } #endif bool ElemApplyTemplates::childTypeAllowed(int xslToken) const { bool fResult = false; switch(xslToken) { case StylesheetConstructionContext::ELEMNAME_SORT: case StylesheetConstructionContext::ELEMNAME_WITH_PARAM: fResult = true; break; default: break; } return fResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/FunctionUnparsedEntityURI.hpp0000664000175000000640000000425011731656103022603 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONUNPARSEDENTITYURI_HEADER_GUARD_1357924680) #define FUNCTIONUNPARSEDENTITYURI_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file... #include XALAN_CPP_NAMESPACE_BEGIN // Implementation of the XSLT function UnparsedEntityURI. // class XALAN_XSLT_EXPORT FunctionUnparsedEntityURI : public Function { public: typedef Function ParentType; FunctionUnparsedEntityURI(); virtual ~FunctionUnparsedEntityURI(); // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionUnparsedEntityURI* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: // Not implemented... FunctionUnparsedEntityURI& operator=(const FunctionUnparsedEntityURI&); bool operator==(const FunctionUnparsedEntityURI&) const; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONUNPARSEDENTITYURI_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XSLT/XSLTProcessorException.cpp0000664000175000000640000000436111731656103022106 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XSLTProcessorException.hpp" #include XALAN_CPP_NAMESPACE_BEGIN const XalanDOMChar XSLTProcessorException::m_type[] = { XalanUnicode::charLetter_X, XalanUnicode::charLetter_S, XalanUnicode::charLetter_L, XalanUnicode::charLetter_T, XalanUnicode::charLetter_P, XalanUnicode::charLetter_r, XalanUnicode::charLetter_o, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charLetter_s, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charLetter_E, XalanUnicode::charLetter_x, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_p, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; XSLTProcessorException::XSLTProcessorException( MemoryManager& theManager, const XalanDOMString& theMessage, const Locator* theLocator) : XSLException( theMessage, theManager, theLocator) { } XSLTProcessorException::XSLTProcessorException( MemoryManager& theManager, const XalanDOMString& theMessage) : XSLException( theMessage, theManager) { } XSLTProcessorException::~XSLTProcessorException() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemExtensionCall.cpp0000664000175000000640000001052311731656103021105 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemExtensionCall.hpp" #include #include "Constants.hpp" #include "Stylesheet.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemExtensionCall::ElemExtensionCall( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const XalanDOMChar* name, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber, ExtensionNSHandler& ns) : ElemLiteralResult(constructionContext, stylesheetTree, name, atts, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_EXTENSION_CALL), m_qname( constructionContext.createXalanQName( name, getStylesheet().getNamespaces(), getLocator())), m_nsh(ns) { assert(m_qname != 0); } ElemExtensionCall* ElemExtensionCall::create( MemoryManager& theManager, StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const XalanDOMChar* name, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber, ExtensionNSHandler& ns) { typedef ElemExtensionCall ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType(constructionContext, stylesheetTree, name, atts, lineNumber, columnNumber, ns); theGuard.release(); return theResult; } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemExtensionCall::startElement(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::startElement(executionContext); warn( executionContext, XalanMessages::XalanHandleExtensions); return ElemTemplateElement::getFirstChildElemToExecute(executionContext); } void ElemExtensionCall::endElement(StylesheetExecutionContext& /*executionContext*/) const { } bool ElemExtensionCall::executeChildElement( StylesheetExecutionContext& /*executionContext*/, const ElemTemplateElement* element) const { return element->getXSLToken() == StylesheetConstructionContext::ELEMNAME_FALLBACK; } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemExtensionCall::execute(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::execute(executionContext); warn( executionContext, XalanMessages::XalanHandleExtensions); for (const ElemTemplateElement* child = getFirstChildElem(); child != 0; child = child->getNextSiblingElem()) { if(child->getXSLToken() == StylesheetConstructionContext::ELEMNAME_FALLBACK) { child->execute(executionContext); } } } #endif bool ElemExtensionCall::elementAvailable(StylesheetExecutionContext& executionContext) const { return executionContext.elementAvailable(*m_qname); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XalanElemAttributeSetAllocator.hpp0000664000175000000640000000740411731656103023612 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANELEMATTRIBUTESETALLOCATOR_INCLUDE_GUARD_12455133) #define XALANELEMATTRIBUTESETALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XSLT_EXPORT XalanElemAttributeSetAllocator { public: typedef ElemAttributeSet data_type; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanElemAttributeSetAllocator( MemoryManager& theManager, size_type theBlockCount); ~XalanElemAttributeSetAllocator(); /** * Construct an instance * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document * * @return A pointer to the new instance. */ data_type* create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const data_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all objects from the allocator. */ void reset() { m_allocator.reset(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanElemAttributeSetAllocator(const XalanElemAttributeSetAllocator&); XalanElemAttributeSetAllocator& operator=(const XalanElemAttributeSetAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANELEMATTRIBUTESETALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XSLT/FunctionGenerateID.cpp0000664000175000000640000000730011731656103021206 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionGenerateID.hpp" #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN const XalanDOMString FunctionGenerateID::s_emptyString(XalanMemMgrs::getDummyMemMgr()); FunctionGenerateID::FunctionGenerateID() : Function() { } FunctionGenerateID::~FunctionGenerateID() { } // Append the suffix to the provided string. inline void getSuffix( const XalanNode* theNode, XalanDOMString& theResult) { assert(theNode != 0); // We're assuming here that each node has an implementation with a // unique address that we can convert into a string... PointerToDOMString(theNode->getOwnerDocument(), theResult); theResult.append(1, XalanUnicode::charLetter_N); PointerToDOMString(theNode, theResult); } XObjectPtr FunctionGenerateID::execute( XPathExecutionContext& executionContext, XalanNode* context, const Locator* locator) const { if (context == 0) { const GetCachedString theGuard(executionContext); executionContext.problem( XPathExecutionContext::eXPath, XPathExecutionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::FunctionRequiresNonNullContextNode_1Param, "generate-id()"), locator, context); return XObjectPtr(); } else { GetCachedString theID(executionContext); theID.get() = XalanUnicode::charLetter_N; getSuffix(context, theID.get()); return executionContext.getXObjectFactory().createString(theID); } } XObjectPtr FunctionGenerateID::execute( XPathExecutionContext& executionContext, XalanNode* /* context */, const XObjectPtr arg1, const Locator* locator) const { assert(arg1.null() == false); const NodeRefListBase& theNodeList = arg1->nodeset(); if (theNodeList.getLength() == 0) { return executionContext.getXObjectFactory().createStringReference(s_emptyString); } else { return execute(executionContext, theNodeList.item(0), locator); } } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionGenerateID* #endif FunctionGenerateID::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionGenerateID::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionTakesZeroOrOneArg_1Param, "generate-id"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ExtensionFunctionHandler.cpp0000664000175000000640000000652011731656103022514 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ExtensionFunctionHandler.hpp" #include #include #include XALAN_CPP_NAMESPACE_BEGIN const XalanDOMChar ExtensionFunctionHandler::s_tokenDelimiterCharacters[] = { XalanUnicode::charSpace, XalanUnicode::charHTab, XalanUnicode::charLF, XalanUnicode::charCR, 0 }; ExtensionFunctionHandler::ExtensionFunctionHandler(const XalanDOMString& namespaceUri, MemoryManager& theManager) : m_namespaceUri(namespaceUri,theManager), m_scriptLang(theManager), m_scriptSrc(theManager), m_scriptSrcURL(theManager), m_javaObject(0), m_functions(theManager), m_componentStarted(false) { } ExtensionFunctionHandler::~ExtensionFunctionHandler() { } ExtensionFunctionHandler::ExtensionFunctionHandler ( MemoryManager& theManager, const XalanDOMString& namespaceUri, const XalanDOMString& funcNames, const XalanDOMString& lang, const XalanDOMString& srcURL, const XalanDOMString& src) : m_namespaceUri(namespaceUri, theManager), m_scriptLang(lang, theManager), m_scriptSrc(src, theManager), m_scriptSrcURL(srcURL, theManager), m_javaObject(0), m_functions(theManager), m_componentStarted(false) { setFunctions (funcNames); } void ExtensionFunctionHandler::setFunctions(const XalanDOMString& funcNames) { if (funcNames.empty()) { return; } StringTokenizer st(funcNames, s_tokenDelimiterCharacters, false); XalanDOMString theBuffer(getMemoryManager()); while (st.hasMoreTokens() == true) { st.nextToken(theBuffer); m_functions.insert(theBuffer); } } void ExtensionFunctionHandler::setScript( const XalanDOMString& lang, const XalanDOMString& srcURL, const XalanDOMString& scriptSrc) { m_scriptLang = lang; m_scriptSrcURL = srcURL; m_scriptSrc = scriptSrc; } bool ExtensionFunctionHandler::isFunctionAvailable (const XalanDOMString& function) const { return m_functions.find(function) != m_functions.end(); } XObjectPtr ExtensionFunctionHandler::callFunction( const XalanDOMString& /* funcName */, const ArgVectorType& /* args */) { assert(0); // @@ TODO: Not implemented return XObjectPtr(); } void ExtensionFunctionHandler::startupComponent() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XalanAVTPartSimpleAllocator.cpp0000664000175000000640000000317711731656103023021 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanAVTPartSimpleAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanAVTPartSimpleAllocator::XalanAVTPartSimpleAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanAVTPartSimpleAllocator::~XalanAVTPartSimpleAllocator() { } XalanAVTPartSimpleAllocator::data_type* XalanAVTPartSimpleAllocator::create( StylesheetConstructionContext& constructionContext, const XalanDOMChar* val, XalanDOMString::size_type len) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type(constructionContext, val, len); m_allocator.commitAllocation(theBlock); return theResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XalanElemTextAllocator.hpp0000664000175000000640000000736411731656103022124 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANELEMTEXTALLOCATOR_INCLUDE_GUARD_12455133) #define XALANELEMTEXTALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XSLT_EXPORT XalanElemTextAllocator { public: typedef ElemText data_type; typedef ReusableArenaAllocator ArenaAllocatorType; typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanElemTextAllocator( MemoryManager& theManager, size_type theBlockCount); ~XalanElemTextAllocator(); /** * Construct an instance * * @param constructionContext The current construction context * @param stylesheetTree The stylesheet containing element * @param atts The list of attributes for the element * @param lineNumber The line number in the document * @param columnNumber The column number in the document * * @return A pointer to the new instance. */ data_type* create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); /** * Destroy an instance previously created. * * @param theObject A pointer to the instance to destroy. * * @return true if the instance was destroyed, false if not. */ bool destroy(data_type* theObject) { return m_allocator.destroyObject(theObject); } /** * Determine if an object is owned by the allocator... */ bool ownsObject(const data_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all objects from the allocator. */ void reset() { m_allocator.reset(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanElemTextAllocator(const XalanElemTextAllocator&); XalanElemTextAllocator& operator=(const XalanElemTextAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANELEMTEXTALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XSLT/XalanElemVariableAllocator.hpp0000664000175000000640000000733011731656103022716 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANELEMVARIABLEALLOCATOR_INCLUDE_GUARD_12455133) #define XALANELEMVARIABLEALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XSLT_EXPORT XalanElemVariableAllocator { public: typedef ElemVariable data_type; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanElemVariableAllocator( MemoryManager& theManager, size_type theBlockCount); ~XalanElemVariableAllocator(); /** * Construct an instance * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document * * @return A pointer to the new instance. */ data_type* create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const data_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all objects from the allocator. */ void reset() { m_allocator.reset(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanElemVariableAllocator(const XalanElemVariableAllocator&); XalanElemVariableAllocator& operator=(const XalanElemVariableAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANELEMVARIABLEALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XSLT/FunctionDocument.cpp0000664000175000000640000004070211731656103021020 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionDocument.hpp" #include "xercesc/sax/ErrorHandler.hpp" #include "xercesc/sax/SAXParseException.hpp" #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN FunctionDocument::FunctionDocument() { } FunctionDocument::~FunctionDocument() { } typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; typedef Function::GetCachedString GetCachedString; inline void doWarn( XPathExecutionContext& executionContext, const XalanDOMString& uri, const XalanDOMString& base, const XalanNode* sourceNode, const Locator* locator) { const GetCachedString theGuard(executionContext); XalanDOMString& theMessage = theGuard.get(); const XalanMessages::Codes theMessageID = base.empty() ? XalanMessages::CantLoadReqDocument_1Param : XalanMessages::CantLoadReqDocument_2Param; XalanMessageLoader::getMessage( theMessage, theMessageID, uri, base); executionContext.problem( XPathExecutionContext::eXSLTProcessor, XPathExecutionContext::eWarning, theMessage, locator, sourceNode); } inline void doWarnFragID( XPathExecutionContext& executionContext, const XalanDOMString& uri, const XalanDOMString& fragID, const XalanNode* sourceNode, const Locator* locator) { const GetCachedString theGuard(executionContext); XalanDOMString& theMessage = theGuard.get(); XalanMessageLoader::getMessage( theMessage, XalanMessages::CannotFindFragment_2Param, uri, fragID); executionContext.problem( XPathExecutionContext::eXSLTProcessor, XPathExecutionContext::eWarning, theMessage, locator, sourceNode); } class LocalErrorHandler : public ErrorHandler { public: LocalErrorHandler( XPathExecutionContext& theExecutionContext, const Locator* theLocator, const XalanNode* theSourceNode) : m_executionContext(theExecutionContext), m_locator(theLocator), m_sourceNode(theSourceNode), m_fatal(false) { } virtual void warning(const XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException& exc) { const GetCachedString theGuard(m_executionContext); XalanDOMString& theMessage = theGuard.get(); theMessage = exc.getMessage(); m_executionContext.problem( XPathExecutionContext::eXMLParser, XPathExecutionContext::eWarning, theMessage, m_locator, m_sourceNode); } virtual void error(const XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException& exc) { warning(exc); } virtual void fatalError(const XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException& exc) { m_fatal = true; warning(exc); throw exc; } virtual void resetErrors() { } bool getFatalError() const { return m_fatal; } private: XPathExecutionContext& m_executionContext; const Locator* const m_locator; const XalanNode* const m_sourceNode; bool m_fatal; }; inline XalanDocument* parseDoc( XPathExecutionContext& executionContext, const XalanDOMString& uri, const XalanDOMString& base, const XalanNode* sourceNode, const Locator* locator) { LocalErrorHandler theErrorHandler(executionContext, locator, sourceNode); try { return executionContext.parseXML( executionContext.getMemoryManager(), uri, base, &theErrorHandler); } catch(...) { if (theErrorHandler.getFatalError()) { doWarn(executionContext, uri, base, sourceNode, locator); } } return 0; } static void getDoc( XPathExecutionContext& executionContext, const XalanDOMString& uri, const XalanDOMString& base, BorrowReturnMutableNodeRefList& mnl, const XalanNode* sourceNode, const Locator* locator) { const XalanDOMString::size_type fragIndex = indexOf(uri, XalanUnicode::charNumberSign); const GetCachedString theGuard1(executionContext); const GetCachedString theGuard2(executionContext); XalanDOMString& newURI = theGuard1.get(); XalanDOMString& fragID = theGuard2.get(); if (fragIndex == uri.length()) { newURI = uri; } else { substring(uri, newURI, 0, fragIndex); substring(uri, fragID, fragIndex + 1); } XalanDocument* newDoc = executionContext.getSourceDocument(newURI); if (newDoc == 0) { if (newURI.length() != 0) { newDoc = parseDoc(executionContext, newURI, base, sourceNode, locator); } else { assert(executionContext.getPrefixResolver() != 0); newDoc = parseDoc( executionContext, executionContext.getPrefixResolver()->getURI(), base, sourceNode, locator); } } if (newDoc != 0) { if (fragID.length() == 0) { mnl->addNodeInDocOrder(newDoc, executionContext); } else { XalanNode* const theNode = newDoc->getElementById(fragID); if (theNode != 0) { mnl->addNodeInDocOrder(theNode, executionContext); } else { doWarnFragID(executionContext, fragID, newURI, sourceNode, locator); } } } } inline void getDoc( XPathExecutionContext& executionContext, const XalanDOMString& uri, BorrowReturnMutableNodeRefList& mnl, const XalanNode* sourceNode, const Locator* locator) { getDoc( executionContext, uri, XalanDOMString(executionContext.getMemoryManager()), mnl, sourceNode, locator); } inline void getDoc( XPathExecutionContext& executionContext, const XalanDOMString& uri, const XalanNode* resolver, BorrowReturnMutableNodeRefList& mnl, const Locator* locator) { assert(resolver != 0); const XalanDocument* const ownerDocument = XalanNode::DOCUMENT_NODE == resolver->getNodeType() ? static_cast(resolver) : resolver->getOwnerDocument(); getDoc( executionContext, uri, executionContext.findURIFromDoc(ownerDocument), mnl, resolver, locator); } XObjectPtr FunctionDocument::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const Locator* locator) const { assert(arg1.null() == false); if (arg1->getType() == XObject::eTypeNodeSet) { return doExecute(executionContext, context, arg1, 0, 1, locator); } else { const GetCachedString theGuard(executionContext); XalanDOMString& base = theGuard.get(); assert(executionContext.getPrefixResolver() != 0); base = executionContext.getPrefixResolver()->getURI(); return doExecute(executionContext, context, arg1, &base, 1, locator); } } XObjectPtr FunctionDocument::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const XObjectPtr arg2, const Locator* locator) const { assert(arg1.null() == false && arg2.null() == false); const GetCachedString theGuard(executionContext); XalanDOMString& base = theGuard.get(); bool fNoRelativeURI = false; if (context == 0) { const GetCachedString theGuard1(executionContext); executionContext.problem( XPathExecutionContext::eXSLTProcessor, XPathExecutionContext::eError, XalanMessageLoader::getMessage( theGuard1.get(), XalanMessages::FunctionRequiresNonNullContextNode_1Param, "document"), locator, context); return XObjectPtr(); } else { if (XObject::eTypeNodeSet != arg2->getType()) { const GetCachedString theGuard1(executionContext); executionContext.problem( XPathExecutionContext::eXSLTProcessor, XPathExecutionContext::eError, XalanMessageLoader::getMessage( theGuard1.get(), XalanMessages::SecondArgumentToFunctionMustBeNode_set_1Param, "document"), locator, context); } else { const NodeRefListBase& nodeset = arg2->nodeset(); if (nodeset.getLength() == 0) { // The errata require that we refuse to resolve a relative URI if // an empty node-set is provided as the second argument. fNoRelativeURI = true; } else { XalanNode* const baseNode = nodeset.item(0); assert(baseNode != 0); XalanDocument* const baseDoc = XalanNode::DOCUMENT_NODE == baseNode->getNodeType() ? static_cast(baseNode) : baseNode->getOwnerDocument(); base = executionContext.findURIFromDoc(baseDoc); } } } return doExecute(executionContext, context, arg1, &base, 2, locator, fNoRelativeURI); } XObjectPtr FunctionDocument::doExecute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr& arg, XalanDOMString* base, int argCount, const Locator* locator, bool fNoRelativeURI) const { // This list will hold the nodes... BorrowReturnMutableNodeRefList mnl(executionContext); const XObject::eObjectType theType = arg->getType(); const NodeRefListBase::size_type nRefs = XObject::eTypeNodeSet == theType ? arg->nodeset().getLength() : 1; for (NodeRefListBase::size_type i = 0; i < nRefs; i++) { assert(XObject::eTypeNodeSet != theType || arg->nodeset().item(i) != 0); const XalanNode* resolver = 0; const GetCachedString theGuard(executionContext); XalanDOMString& ref = theGuard.get(); if (theType != XObject::eTypeNodeSet) { ref = arg->str(executionContext); } else { resolver = arg->nodeset().item(i); assert(resolver != 0); DOMServices::getNodeData(*resolver, executionContext, ref); } // This is the case where the function was called with // an empty string, which refers to the stylesheet itself. if (nRefs == 1 && ref.empty() == true && argCount == 1) { if (base != 0) { base->clear(); } ref = executionContext.getPrefixResolver()->getURI(); } if (!ref.empty()) { // From http://www.ics.uci.edu/pub/ietf/uri/rfc1630.txt // A partial form can be distinguished from an absolute form in that the // latter must have a colon and that colon must occur before any slash // characters. Systems not requiring partial forms should not use any // unencoded slashes in their naming schemes. If they do, absolute URIs // will still work, but confusion may result. const XalanDOMString::size_type theLength = ref.length(); const XalanDOMString::size_type indexOfColon = indexOf(ref, XalanUnicode::charColon); XalanDOMString::size_type indexOfSlash = indexOf(ref, XalanUnicode::charSolidus); #if defined(XALAN_WINDOWS) // $$$TODO // Note this is hackish code for Windows, and we should try to remove it. const XalanDOMString::size_type indexOfBackSlash = indexOf(ref, XalanUnicode::charReverseSolidus); if(indexOfBackSlash > indexOfSlash && indexOfBackSlash < theLength) { indexOfSlash = indexOfBackSlash; } #endif if (indexOfColon < theLength && indexOfSlash < theLength && indexOfColon < indexOfSlash) { // The ref is absolute... getDoc(executionContext, ref, mnl, context, locator); } else { // The ref is relative. If there was a base URI // provided, use that... if (fNoRelativeURI == true) { const GetCachedString theGuard(executionContext); executionContext.problem( XPathExecutionContext::eXSLTProcessor, XPathExecutionContext::eWarning, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::CannotResolveURIInDocumentFunction), locator, context); } else if (base != 0) { getDoc(executionContext, ref, *base, mnl, context, locator); } else { // If there's no resolver, then try using the // relative ref... if (resolver == 0) { getDoc(executionContext, ref, mnl, context, locator); } else { getDoc(executionContext, ref, resolver, mnl, locator); } } } } } assert(mnl->checkForDuplicates(executionContext.getMemoryManager()) == false); mnl->setDocumentOrder(); return executionContext.getXObjectFactory().createNodeSet(mnl); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionDocument* #endif FunctionDocument::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionDocument::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionAcceptsOneTwoArguments_1Param, "document()"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/AVTPartXPath.cpp0000664000175000000640000000345211731656103017763 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "AVTPartXPath.hpp" #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN /** * Construct a simple AVT part. * @param val A pure string section of an AVT. */ AVTPartXPath::AVTPartXPath(const XPath* xpath) : AVTPart(), m_pXPath(xpath) { } void AVTPartXPath::evaluate( XalanDOMString& buf, XalanNode* contextNode, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext) const { m_pXPath->execute(contextNode, prefixResolver, executionContext, buf); } void AVTPartXPath::evaluate( XalanDOMString& buf, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext) const { m_pXPath->execute(prefixResolver, executionContext, buf); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/StylesheetExecutionContext.hpp0000664000175000000640000016122211731656103023124 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(STYLESHEETEXECUTIONCONTEXT_HEADER_GUARD_1357924680) #define STYLESHEETEXECUTIONCONTEXT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include // Base class header file... #include #include #if defined(XALAN_AUTO_PTR_REQUIRES_DEFINITION) #include #endif #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN #if defined(XALAN_STRICT_ANSI_HEADERS) using std::FILE; #endif class CountersTable; class ElemTemplate; class ElemTemplateElement; class ElemVariable; class FormatterListener; class FormatterToText; class GenerateEvent; class PrefixResolver; class NodeRefListBase; class NodeSorter; class PrintWriter; class XalanQName; class SelectionEvent; class Stylesheet; class StylesheetRoot; class XalanOutputStream; class TracerEvent; class Writer; class XalanDocument; class XalanDocumentFragment; class XalanElement; class XalanNode; class XalanNumberFormat; class XPath; class XObject; class XObjectPtr; class XResultTreeFrag; // // An abstract class which provides support for executing stylesheets. // class XALAN_XSLT_EXPORT StylesheetExecutionContext : public XPathExecutionContext { public: typedef XalanSize_t tl_size_type; typedef FormatterListener::size_type fl_size_type; #if defined(XALAN_NO_STD_NAMESPACE) typedef ostream StreamType; #else typedef std::ostream StreamType; #endif explicit StylesheetExecutionContext( MemoryManager& theMemoryManager, XObjectFactory* theXObjectFactory = 0); virtual ~StylesheetExecutionContext(); // These interfaces are new... /** * Determine whether conflicts should be reported. * * @return true if conflicts should not be warned */ virtual bool getQuietConflictWarnings() const = 0; /** * If this function returns true, only text nodes can * be copied to the result tree. * * @return true or false */ virtual bool getCopyTextNodesOnly() const = 0; /** * Set the flag that determines if only text nodes * can be copied to the result tree. * * @param copyTextNodesOnly The value of the flag */ virtual void pushCopyTextNodesOnly(bool copyTextNodesOnly) = 0; /** * Pop the last flag setting that determines if only text nodes * can be copied to the result tree. */ virtual bool popCopyTextNodesOnly() = 0; /* * A class to manage setting and restoring the flag * for restricting copying only text nodes to the * result tree */ class SetAndRestoreCopyTextNodesOnly { public: SetAndRestoreCopyTextNodesOnly( StylesheetExecutionContext& executionContext, bool fValue) : m_executionContext(executionContext) { executionContext.pushCopyTextNodesOnly(fValue); } ~SetAndRestoreCopyTextNodesOnly() { m_executionContext.popCopyTextNodesOnly(); } private: // Not implemented... SetAndRestoreCopyTextNodesOnly(const SetAndRestoreCopyTextNodesOnly&); SetAndRestoreCopyTextNodesOnly& operator=(const SetAndRestoreCopyTextNodesOnly&); // Data members... StylesheetExecutionContext& m_executionContext; }; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) /** * Set the flag that determines if the current attribute should be executed * @param processAttribute the value of the flag */ virtual void pushProcessCurrentAttribute(bool processAttribute) = 0; /** * Pops the last flag setting that determines if the current attribute should be executed */ virtual bool popProcessCurrentAttribute() = 0; /** * Set the flag that determines if an element's attributes should be skipped * * @param skipAttributes the value of the flag */ virtual void pushSkipElementAttributes(bool skipAttributes) = 0; /** * Get the last flag setting that determines if an element's attributes should be skipped * @returns the value of the flag */ virtual bool getSkipElementAttributes() const = 0; /** * Pops the last flag setting that determines if an element's attributes should be skipped */ virtual bool popSkipElementAttributes() = 0; /** * Set flag that determines if the if test was true * * @param executeIf the value of the flag */ virtual void pushExecuteIf(bool executeIf) = 0; /** * Pop the flag that determines if the if test was true * * @param executeIf the value of the flag */ virtual bool popExecuteIf() = 0; #endif /** * Retrieve root document for stylesheet. Note that * this does not have to be a XalanDocument -- it can * be any node in a document. * * @return root document */ virtual XalanNode* getRootDocument() const = 0; /** * Set root document for stylesheet. Note that * this does not have to be a XalanDocument -- it can * be any node in a document. * * @param theDocument root document */ virtual void setRootDocument(XalanNode* theDocument) = 0; /** * Set root stylesheet for stylesheet. * * @param theStylesheet root stylesheet */ virtual void setStylesheetRoot(const StylesheetRoot* theStylesheet) = 0; /** * Retrieve the current mode. * * @return QName for mode */ virtual const XalanQName* getCurrentMode() const = 0; /** * Set the current mode. * * @param theMode QName for mode */ virtual void pushCurrentMode(const XalanQName* theMode) = 0; /** * Pop the current mode */ virtual void popCurrentMode() =0; /** * Retrieve the current template * * @return The current template instance or null if there is no current template */ virtual const ElemTemplate* getCurrentTemplate() const = 0; /** * Set the current template * * @param theTemplate The current template instance */ virtual void pushCurrentTemplate(const ElemTemplate* theTemplate) = 0; virtual void popCurrentTemplate() = 0; #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) /* * A class to manage pushing and popping the current * template instance. */ class PushAndPopCurrentTemplate { public: PushAndPopCurrentTemplate( StylesheetExecutionContext& executionContext, const ElemTemplate* theTemplate) : m_executionContext(executionContext) { executionContext.pushCurrentTemplate(theTemplate); } ~PushAndPopCurrentTemplate() { m_executionContext.popCurrentTemplate(); } private: // Data members... StylesheetExecutionContext& m_executionContext; }; #endif /** * See if there is an element pending. */ virtual bool isElementPending() const = 0; /** * Replace the contents of a pending attribute. * * @param theName name of attribute * @param theNewType type of attribute * @param theNewValue new value of attribute */ virtual void replacePendingAttribute( const XalanDOMChar* theName, const XalanDOMChar* theNewType, const XalanDOMChar* theNewValue) = 0; /** * Get the current formatter listener. * * @return pointer to formatter listener */ virtual FormatterListener* getFormatterListener() const = 0; /** * Set the current formatter listener. * * @param flistener pointer to new formatter listener */ virtual void setFormatterListener(FormatterListener* flistener) = 0; virtual void pushOutputContext(FormatterListener* flistener = 0) = 0; virtual void popOutputContext() = 0; class OutputContextPushPop { public: /** * Construct an object to push and pop the current output context. * * @param theExecutionContext a reference to the current execution context * @param theNewListener the new FormatterListener to set. */ OutputContextPushPop( StylesheetExecutionContext& theExecutionContext, FormatterListener* theNewListener = 0) : m_executionContext(theExecutionContext) { m_executionContext.pushOutputContext(theNewListener); } ~OutputContextPushPop() { m_executionContext.popOutputContext(); } private: StylesheetExecutionContext& m_executionContext; }; /** * Add a result attribute to the list of pending attributes. * * @param aname name of attribute * @param value value of attribute */ virtual void addResultAttribute( const XalanDOMString& aname, const XalanDOMString& value) = 0; /** * Add a result attribute to the list of pending attributes. * * @param aname name of attribute * @param value value of attribute */ virtual void addResultAttribute( const XalanDOMString& aname, const XalanDOMChar* value) = 0; /** * Add namespace attributes for a node to the list of pending attributes. * * @param src source node */ virtual void copyNamespaceAttributes(const XalanNode& src) = 0; /** * Retrieve the result prefix corresponding to a namespace. * * @param theNamespace namespace for prefix * * @return A pointer to a string containing the prefix, or 0 if the namespace is not mapped. */ virtual const XalanDOMString* getResultPrefixForNamespace(const XalanDOMString& theNamespace) const = 0; /** * Retrieve the result namespace corresponding to a prefix. * * @param thePrefix prefix for namespace * * @return A pointer to a string containing the namespace, or 0 if the prefix is not mapped. */ virtual const XalanDOMString* getResultNamespaceForPrefix(const XalanDOMString& thePrefix) const = 0; /** * Determine whether or not a prefix is in use on the pending element or * the pending attributes. * * @param thePrefix prefix for namespace * * @return true if the prefix is in use, false if not. */ virtual bool isPendingResultPrefix(const XalanDOMString& thePrefix) = 0; /** * Generate a random namespace prefix guaranteed to be unique. * * @param theValue A string for returning the new prefix */ virtual void getUniqueNamespaceValue(XalanDOMString& theValue) const = 0; /** * Retrieve the current number of spaces to indent. * * @return number of spaces */ virtual int getIndent() const = 0; /** * Set the current number of spaces to indent. * * @param indentAmount The number of spaces to indent. Use -1 for the default amount. */ virtual void setIndent(int indentAmount) = 0; /** * Create and initialize an xpath and return it. This is to be used to * create an XPath that is only used during execution. * * @param str string expression for XPath evaluation * @param resolver resolver for namespace resolution * @return pointer to resulting XPath */ virtual const XPath* createMatchPattern( const XalanDOMString& str, const PrefixResolver& resolver) = 0; /** * Return the XPath created by createMatchPattern(). * * @param xpath The XPath to return. */ virtual void returnXPath(const XPath* xpath) = 0; // A helper class to automatically return an XPath instance. class XPathGuard { public: XPathGuard( StylesheetExecutionContext& context, const XPath* xpath = 0) : m_context(context), m_xpath(xpath) { } ~XPathGuard() { if (m_xpath != 0) { m_context.returnXPath(m_xpath); } } const XPath* get() const { return m_xpath; } const XPath* release() { const XPath* const temp = m_xpath; m_xpath = 0; return temp; } void reset(const XPath* xpath) { if (m_xpath != 0) { m_context.returnXPath(m_xpath); } m_xpath = xpath; } private: StylesheetExecutionContext& m_context; const XPath* m_xpath; }; typedef XalanVector ParamVectorType; /** * Set a list of top level variables in the specified execution context * stylesheet. * * @param topLevelParams list of top level parameters */ virtual void pushTopLevelVariables(const ParamVectorType& topLevelParams) = 0; /** * Execute the supplied XPath and and create a * variable in the current context. * * @param str string expression for XPath evaluation * @param contextNode current node in the source tree * @param resolver resolver for namespace resolution * @return a pointer to the XObject result */ virtual const XObjectPtr createVariable( const XPath& xpath, XalanNode* contextNode, const PrefixResolver& resolver) = 0; #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) /** * Create an ResultTreeFragment as a variable and push it * on to the stack with the current context. * * @param templateChild result tree fragment to use. * @param sourceNode source node * @return a pointer to the XObject result */ virtual const XObjectPtr createVariable( const ElemTemplateElement& templateChild, XalanNode* sourceNode) = 0; #endif /** * Execute an XPath using the provided expression, * and push the result as a variable in the context of * the supplied element. * * @param name name of variable * @param element element marker for variable * @param str string expression for XPath evaluation * @param contextNode current node in the source tree * @param resolver resolver for namespace resolution * @return nothing */ virtual void pushVariable( const XalanQName& name, const ElemTemplateElement* element, const XalanDOMString& str, XalanNode* contextNode, const PrefixResolver& resolver) = 0; /** * Execute the supplied XPath and push the result as a * variable in the current context. * * @param name name of variable * @param element element marker for variable * @param str string expression for XPath evaluation * @param contextNode current node in the source tree * @param resolver resolver for namespace resolution * @return nothing */ virtual void pushVariable( const XalanQName& name, const ElemTemplateElement* element, const XPath& xpath, XalanNode* contextNode, const PrefixResolver& resolver) = 0; #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) /** * Create an ResultTreeFragment as a variable and push it * on to the stack with the current context. * * @param name name of variable * @param element element marker for variable * @param templateChild result tree fragment to use. * @param sourceNode source node */ virtual void pushVariable( const XalanQName& name, const ElemTemplateElement* element, const ElemTemplateElement& templateChild, XalanNode* sourceNode) = 0; #endif /** * Push a named variable onto the variables stack. * The variable has already been evaluated. * * @param name name of variable * @param val pointer to XObject value * @param element element marker for variable */ virtual void pushVariable( const XalanQName& name, const XObjectPtr val, const ElemTemplateElement* element) = 0; /** * Push a named variable onto the processor variable stack * The variable will be evaluated when first referenced. * * @param name name of variable * @param var pointer to ElemVariable instance * @param element element marker for variable */ virtual void pushVariable( const XalanQName& name, const ElemVariable* var, const ElemTemplateElement* element) = 0; /** * Push a context marker onto the stack to let us know when to stop * searching for a var. */ virtual void pushContextMarker() = 0; /** * Pop the current context from the current context stack. */ virtual void popContextMarker() = 0; #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) /* * A class to manage pushing and popping an element's stack * frame context. */ class PushAndPopContextMarker { public: PushAndPopContextMarker(StylesheetExecutionContext& executionContext) : m_executionContext(executionContext) { executionContext.pushContextMarker(); } PushAndPopContextMarker( StylesheetExecutionContext& executionContext, int& currentStackFrameIndex) : m_executionContext(executionContext) { currentStackFrameIndex = executionContext.getCurrentStackFrameIndex(); executionContext.pushContextMarker(); } ~PushAndPopContextMarker() { m_executionContext.popContextMarker(); } StylesheetExecutionContext& getExecutionContext() const { return m_executionContext; } private: StylesheetExecutionContext& m_executionContext; }; #endif /** * Resolve the params that were pushed by the caller. */ virtual void resolveTopLevelParams() = 0; /** * Reset the vector of top level parameters. */ virtual void clearTopLevelParams() = 0; #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) class ResolveAndClearTopLevelParams { public: ResolveAndClearTopLevelParams(StylesheetExecutionContext& executionContext) : m_executionContext(executionContext) { m_executionContext.resolveTopLevelParams(); } ~ResolveAndClearTopLevelParams() { m_executionContext.clearTopLevelParams(); } private: StylesheetExecutionContext& m_executionContext; }; /** * Given a template, search for the arguments and push them on the stack. * Also, push default arguments on the stack. * * @param xslCallTemplateElement "call-template" element */ virtual void pushParams(const ElemTemplateElement& xslCallTemplateElement) = 0; #else /** * Initiate context to accept a new set of parameters */ virtual void beginParams() = 0; /** * Indicate parameter set is complete */ virtual void endParams() = 0; /** * Push a single paramter onto the latest initialized paramter set * @param qName the name of the parameter * @param theValue the value of the parameter */ virtual void pushParam(const XalanQName& qName,const XObjectPtr& theValue) = 0; #endif /** * Given a name, return a string representing the value, but don't look in * the global space. * * @param theName name of variable * @return An XObjectPtr instance. Call XObjectPtr::null() on the instance * to determine if the variable was found. If XObjectPtr::null() * returns true, the variable was not found, and no other operations * on the XObject instance are permitted. */ virtual const XObjectPtr getParamVariable(const XalanQName& theName) = 0; /** * Push a frame marker for an element. * * @param elem the element */ virtual void pushElementFrame(const ElemTemplateElement* elem) = 0; /** * Pop a frame marker for an element. * * @param elem the element */ virtual void popElementFrame() = 0; #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) /* * A class to manage pushing and popping an element's stack * frame context. */ class PushAndPopElementFrame { public: PushAndPopElementFrame( StylesheetExecutionContext& executionContext, const ElemTemplateElement* element) : m_executionContext(executionContext) { executionContext.pushElementFrame(element); } ~PushAndPopElementFrame() { m_executionContext.popElementFrame(); } private: StylesheetExecutionContext& m_executionContext; }; #endif /** * Get the top of the global stack frame. * * @return current value of index */ virtual int getGlobalStackFrameIndex() const = 0; /** * Get the top of the stack frame from where a search * for a variable or param should take place. * * @return current value of index */ virtual int getCurrentStackFrameIndex() const = 0; /** * Set the top of the stack frame from where a search * for a variable or param should take place. * * @param currentStackFrameIndex new value of index */ virtual void pushCurrentStackFrameIndex(int currentStackFrameIndex = -1) = 0; /** * Pop the last stack frame index setting */ virtual void popCurrentStackFrameIndex() = 0; /* * A class to manage the state of the variable stacks frame index. */ class SetAndRestoreCurrentStackFrameIndex { public: SetAndRestoreCurrentStackFrameIndex( StylesheetExecutionContext& executionContext, int newIndex) : m_executionContext(executionContext), m_savedIndex(executionContext.getCurrentStackFrameIndex()) { executionContext.pushCurrentStackFrameIndex(newIndex); } ~SetAndRestoreCurrentStackFrameIndex() { m_executionContext.popCurrentStackFrameIndex(); } private: StylesheetExecutionContext& m_executionContext; const int m_savedIndex; }; #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) /* * A class to manage stack state during execution. */ class ParamsPushPop : public PushAndPopContextMarker { public: ParamsPushPop( StylesheetExecutionContext& executionContext, const ElemTemplateElement& xslCallTemplateElement) : PushAndPopContextMarker(executionContext) { doPush(xslCallTemplateElement); } ParamsPushPop( StylesheetExecutionContext& executionContext, const ElemTemplateElement& xslCallTemplateElement, int& savedStackFrameIndex) : PushAndPopContextMarker(executionContext, savedStackFrameIndex) { doPush( xslCallTemplateElement, savedStackFrameIndex); } ~ParamsPushPop() { } private: void doPush( const ElemTemplateElement& xslCallTemplateElement, int stackFrameIndex); void doPush(const ElemTemplateElement& xslCallTemplateElement); }; #endif /** * Receive notification of the beginning of a document. * *

    The SAX parser will invoke this method only once, before any * other methods in this interface or in DTDHandler (except for * setDocumentLocator).

    * * @exception SAXException */ virtual void startDocument() = 0; /** * Receive notification of the end of a document. * *

    The SAX parser will invoke this method only once, and it will * be the last method invoked during the parse. The parser shall * not invoke this method until it has either abandoned parsing * (because of an unrecoverable error) or reached the end of * input.

    * * @exception SAXException */ virtual void endDocument() = 0; /** * Receive notification of the beginning of an element. * * @param name element type name */ virtual void startElement(const XalanDOMChar* name) = 0; /** * Receive notification of the end of an element. * * @param name element type name */ virtual void endElement(const XalanDOMChar* name) = 0; /** * Receive notification of character data. * * @param ch pointer to characters from the XML document * @param start start position in the array * @param length number of characters to read from the array */ virtual void characters( const XalanDOMChar* ch, fl_size_type start, fl_size_type length) = 0; /** * Receive notification of character data. If available, when the * disable-output-escaping attribute is used, output raw text without * escaping. * * @param ch pointer to characters from the XML document * @param start start position in the array * @param length number of characters to read from the array */ virtual void charactersRaw( const XalanDOMChar* ch, fl_size_type start, fl_size_type length) = 0; /** * Called when a Comment is to be constructed. * * @param data pointer to comment data */ virtual void comment(const XalanDOMChar* data) = 0; /** * Receive notification of a processing instruction. * * @param target processing instruction target * @param data processing instruction data, or null if none was supplied */ virtual void processingInstruction( const XalanDOMChar* target, const XalanDOMChar* data) = 0; /** * Flush the pending element. */ virtual void flushPending() = 0; /** * Clone a node to the result tree * * @param node node to clone * @param locator The Locator, if any */ virtual void cloneToResultTree( const XalanNode& node, const Locator* locator) = 0; /** * Clone a node to the result tree * * @param node node to clone * @param nodeType the type of the node * @param overrideStrip false if white space stripping should be done * @param shouldCloneAttributes true if attributes should be cloned * @param locator The Locator, if any */ virtual void cloneToResultTree( const XalanNode& node, XalanNode::NodeType nodeType, bool overrideStrip, bool shouldCloneAttributes, const Locator* locator) = 0; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) /** * Initiate creation of a result tree fragment * @param sourceNode the source Node */ virtual void beginCreateXResultTreeFrag( XalanNode* sourceNode) = 0; /** * Indicate sthe completion of result tree fragment * @return a pointer to the result tree fragment */ virtual const XObjectPtr endCreateXResultTreeFrag() = 0; /** * Initiate to put execution result in string * * @param theResult the string to contain the result */ virtual void beginFormatToText( XalanDOMString& theResult) = 0; /** * Indicates the completion of the result string * */ virtual void endFormatToText() = 0; #else /** * Create an XObject that represents a Result tree fragment. * * @param templateChild result tree fragment to use. * @param sourceNode source node * @return XObject instance */ virtual const XObjectPtr createXResultTreeFrag( const ElemTemplateElement& templateChild, XalanNode* sourceNode) = 0; #endif /** * Output an object to the result tree by doing the right conversions. * This is public for access by extensions. * * @param obj the XObject to output * @param locator The Locator, if any */ virtual void outputToResultTree( const XObject& xobj, const Locator* locator) = 0; /** * Given a result tree fragment, walk the tree and * output it to the result stream. * * @param theTree result tree fragment * @param locator The Locator, if any */ virtual void outputResultTreeFragment( const XObject& theTree, const Locator* locator) = 0; /** * Determine the full XSLT Namespace URI. * * @return Xalan namespace URI */ virtual const XalanDOMString& getXSLNameSpaceURL() const = 0; /** * Special Xalan namespace for built-in extensions. * * @return Xalan namespace for extensions */ virtual const XalanDOMString& getXalanXSLNameSpaceURL() const = 0; /** * Determine if an element is on the recursion stack. * * @return true if element on stack */ virtual bool findOnElementRecursionStack(const ElemTemplateElement* theElement) const = 0; /** * Push an element onto the recursion stack. * * @param theElement pointer to element to push */ virtual void pushOnElementRecursionStack(const ElemTemplateElement* theElement) = 0; /** * Pop an element off the recursion stack. * * @return pointer to element popped */ virtual const ElemTemplateElement* popElementRecursionStack() = 0; /** * Class for keeping track of elements pushed on the element recursion stack */ class ElementRecursionStackPusher { public: /** * Construct an instance of the recursion stack pusher. * * @param executionContext current execution context * @param element pointer to element to push */ ElementRecursionStackPusher( StylesheetExecutionContext& executionContext, const ElemTemplateElement* element) : m_executionContext(executionContext) { m_executionContext.pushOnElementRecursionStack(element); } ~ElementRecursionStackPusher() { m_executionContext.popElementRecursionStack(); } private: StylesheetExecutionContext& m_executionContext; }; /** * This is a hook that XResultTreeFrag instances (which are reference * counted), can notify the owning StylesheetExecutionContext instance * when they are dereferenced and can be cleaned up. * * @param theXResultTreeFrag The instance that is being returned. * * @return true if the XResultTreeFrag instance belongs to the execution context. false if not. */ virtual bool returnXResultTreeFrag(XResultTreeFrag* theXResultTreeFrag) = 0; enum eDummy { eDefaultXMLIndentAmount = 0, eDefaultHTMLIndentAmount = 0 }; /** * Enums to determine whether or not run-time escaping of URLs has been set. */ enum eEscapeURLs { eEscapeURLsDefault, // Use the value in the stylesheet eEscapeURLsNo, // Don't escape URLs eEscapeURLsYes // Escape URLs }; /** * Get the value for run-time escaping of URLs. This can * override the property specified by the stylesheet. The * default behavior is to honor the property in the stylesheet. * * @return The value of the enum */ virtual eEscapeURLs getEscapeURLs() const = 0; /** * Set the value for run-time escaping of URLs. This can * override the property specified by the stylesheet. The * default behavior is to honor the property in the stylesheet. * * @param value The value of the enum */ virtual void setEscapeURLs(eEscapeURLs value) = 0; /** * Enums to determine whether or not run-time omission of the META tag has been set. */ enum eOmitMETATag { eOmitMETATagDefault, // Use the value in the stylesheet eOmitMETATagNo, // Don't omit the META tag eOmitMETATagYes // Omit the META tag }; /** * Get the value for run-time omission of URLs. This can * override the property specified by the stylesheet. The * default behavior is to honor the property in the stylesheet. * * @return The value of the enum */ virtual eOmitMETATag getOmitMETATag() const = 0; /** * Get the value for run-time omission of URLs. This can * override the property specified by the stylesheet. The * default behavior is to honor the property in the stylesheet. * * @param value The value of the enum */ virtual void setOmitMETATag(eOmitMETATag value) = 0; /** * Create a new FormatterToXML instance. The execution context * owns the instance and will delete it when reset. * * @param writer character output stream to use * @param version version of the output method * @param doIndent true if output is to be indented * @param indent number of spaces to indent at each nesting level * @param encoding character encoding for the writer * @param mediaType media type (MIME content type) of the data * @param doctypeSystem system identifier to be used in the document * type declaration * @param doctypePublic public identifier to be used in the document * type declaration * @param xmlDecl true if the XSLT processor should output an XML * declaration * @param standalone true if the XSLT processor should output a * standalone document declaration * @return a pointer to the new instance. */ virtual FormatterListener* createFormatterToXML( Writer& writer, const XalanDOMString& version = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), bool doIndent = false, int indent = eDefaultXMLIndentAmount, const XalanDOMString& encoding = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), const XalanDOMString& mediaType = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), const XalanDOMString& doctypeSystem = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), const XalanDOMString& doctypePublic = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), bool xmlDecl = true, const XalanDOMString& standalone = XalanDOMString(XalanMemMgrs::getDummyMemMgr())) = 0; /** * Create a new FormatterToHTML instance. The execution context * owns the instance and will delete it when reset. * * @param writer character output stream to use * @param encoding character encoding for the writer * @param mediaType media type (MIME content type) of the data * @param doctypeSystem system identifier to be used in the document * type declaration * @param doctypePublic public identifier to be used in the document * type declaration * @param doIndent true if output is to be indented * @param indent number of spaces to indent at each nesting level * @param escapeURLs Whether or not to escape URLs according to the recommendation. The default is true. * @param omitMetaTag Whether or not to output a META TAG according to the recommendation. The default is false. * @return a pointer to the new instance. */ virtual FormatterListener* createFormatterToHTML( Writer& writer, const XalanDOMString& encoding = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), const XalanDOMString& mediaType = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), const XalanDOMString& doctypeSystem = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), const XalanDOMString& doctypePublic = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), bool doIndent = true, int indent = eDefaultHTMLIndentAmount, bool escapeURLs = true, bool omitMetaTag = false) = 0; /** * FormatterToText instance constructor. * * @param writer writer for output * @param encoding character encoding for the writer */ virtual FormatterListener* createFormatterToText( Writer& writer, const XalanDOMString& encoding) = 0; #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) class BorrowReturnFormatterToText { public: BorrowReturnFormatterToText( StylesheetExecutionContext& executionContext, Writer& writer, bool normalizeLinefeed = true, bool handleIgnorableWhitespace = true); ~BorrowReturnFormatterToText() { assert(m_formatter != 0); m_executionContext.returnFormatterToText(m_formatter); } FormatterToText& operator*() const { assert(m_formatter != 0); return *m_formatter; } FormatterToText* get() const { assert(m_formatter != 0); return m_formatter; } FormatterToText* operator->() const { return get(); } private: StylesheetExecutionContext& m_executionContext; FormatterToText* m_formatter; }; friend class BorrowReturnFormatterToText; #endif #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) /** * Get node sorter instance */ virtual NodeSorter* getNodeSorter() = 0; #else /** * Borrow a cached NodeSorter instance. * * @return A pointer to the instance. */ virtual NodeSorter* borrowNodeSorter() = 0; /** * Return a previously borrowed NodeSorter instance. * * @param theSorter A pointer the to previously borrowed instance. * @return true if the instance was previously borrowed, false if not. */ virtual bool returnNodeSorter(NodeSorter* theSorter) = 0; class BorrowReturnNodeSorter { public: BorrowReturnNodeSorter(StylesheetExecutionContext& executionContext) : m_executionContext(executionContext), m_sorter(executionContext.borrowNodeSorter()) { assert(m_sorter != 0); } ~BorrowReturnNodeSorter() { assert(m_sorter != 0); m_executionContext.returnNodeSorter(m_sorter); } NodeSorter& operator*() const { assert(m_sorter != 0); return *m_sorter; } NodeSorter* get() const { assert(m_sorter != 0); return m_sorter; } NodeSorter* operator->() const { return get(); } private: StylesheetExecutionContext& m_executionContext; NodeSorter* m_sorter; }; #endif typedef XalanMemMgrAutoPtr XalanNumberFormatAutoPtr; /** * Create a new XalanNumberFormat instance. * * @return an XalanNumberFormatAutoPtr that owns a new * XalanNumberFormat instance. */ virtual XalanNumberFormatAutoPtr createXalanNumberFormat() = 0; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) /* * A class to manage the attribute sets that have been executed * by an element */ struct UseAttributeSetIndexes { UseAttributeSetIndexes() : attributeSetNameIndex(0), matchingAttributeSetIndex(0) {} size_type attributeSetNameIndex; size_type matchingAttributeSetIndex; }; virtual void createUseAttributeSetIndexesOnStack() = 0; virtual UseAttributeSetIndexes& getUseAttributeSetIndexes() = 0; virtual void popUseAttributeSetIndexesFromStack() = 0; /** * Push the element that will invoke * non children elements (i.e templates, attribute-sets) * * @param invokers the element that will invoke non children elements */ virtual void pushInvoker(const ElemTemplateElement * invoker) = 0; /** * Pop the element that invoked non children elements */ virtual void popInvoker() = 0; /** * Get the lastest element that has invoked * a non-child element */ virtual const ElemTemplateElement* getInvoker() const = 0; #endif /** * Determine the number of trace listeners. * * @return number of listeners */ virtual tl_size_type getTraceListeners() const = 0; /** * Fire a generate event. * * @param ge generate event to fire */ virtual void fireGenerateEvent(const GenerateEvent& ge) = 0; /** * Fire a trace event. * * @param te trace event to fire */ virtual void fireTraceEvent(const TracerEvent& te) = 0; /** * Fire a selection event. * * @param se selection event to fire */ virtual void fireSelectEvent(const SelectionEvent& se) = 0; /** * If this is set to true, simple traces of template calls are made. * * @return true if traces made */ virtual bool getTraceSelects() const = 0; /** * Compose a diagnostic trace of the current selection * * @param theStylesheetElement The executing stylesheet element * @param nl The list of selected nodes * @param xpath A pointer to the XPath which generated the list of nodes, if any. */ virtual void traceSelect( const ElemTemplateElement& theStylesheetElement, const NodeRefListBase& nl, const XPath* xpath) = 0; /** * Compare two strings using the collation of the * current locale. * * @param theLHS a string to compare * @param theRHS a string to compare * @param theCaseOrder the case order for the comparison * @return < 0 if theLHS is before theRHS, 0 if they are equal, or > 0 if theLHS is after theRHS */ virtual int collationCompare( const XalanDOMString& theLHS, const XalanDOMString& theRHS, XalanCollationServices::eCaseOrder theCaseOrder = XalanCollationServices::eDefault) = 0; /** * Compare two strings using the collation of the * supplied locale. * * @param theLHS a string to compare * @param theRHS a string to compare * @param theLocal a string that specifies the locale * @param theCaseOrder the case order for the comparison * @return < 0 if theLHS is before theRHS, 0 if they are equal, or > 0 if theLHS is after theRHS */ virtual int collationCompare( const XalanDOMString& theLHS, const XalanDOMString& theRHS, const XalanDOMString& theLocale, XalanCollationServices::eCaseOrder theCaseOrder = XalanCollationServices::eDefault) = 0; /** * Compare two strings using the collation of the * current locale. * * @param theLHS a string to compare * @param theRHS a string to compare * @param theCaseOrder the case order for the comparison * @return < 0 if theLHS is before theRHS, 0 if they are equal, or > 0 if theLHS is after theRHS */ virtual int collationCompare( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, XalanCollationServices::eCaseOrder theCaseOrder = XalanCollationServices::eDefault) = 0; /** * Compare two strings using the collation of the * current locale. * * @param theLHS a string to compare * @param theRHS a string to compare * @param theLocal a string that specifies the locale * @param theCaseOrder the case order for the comparison * @return < 0 if theLHS is before theRHS, 0 if they are equal, or > 0 if theLHS is after theRHS */ virtual int collationCompare( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, const XalanDOMChar* theLocale, XalanCollationServices::eCaseOrder theCaseOrder = XalanCollationServices::eDefault) = 0; /** * Create a PrintWriter for the provided stream. * * @param theTextOutputStream The output stream for the PrintWriter. * @return The new instance. */ virtual PrintWriter* createPrintWriter(XalanOutputStream* theTextOutputStream) = 0; /** * Create a PrintWriter. Create an appropriate output stream * using the provided file name and encoding. * * @param theFileName The file name for the output stream * @param theEncoding The encoding for the output stream * @return The new instance. */ virtual PrintWriter* createPrintWriter( const XalanDOMString& theFileName, const XalanDOMString& theEncoding) = 0; /** * Create a PrintWriter using the provided ostream instance. * * @param theStream The output stream for the PrintWriter. * @return The new instance. */ virtual PrintWriter* createPrintWriter(StreamType& theStream) = 0; /** * Create a PrintWriter using the provided FILE instance. * * @param theStream The output stream for the PrintWriter. * @return The new instance. */ virtual PrintWriter* createPrintWriter(FILE* theStream) = 0; /** * Get the counters table, which is a table of cached * results that is used by ElemNumber. * * @return A reference to the counters table. */ virtual CountersTable& getCountersTable() = 0; /** * Send character data from a node to the result tree. * * @param node The node to send. */ virtual void characters(const XalanNode& node) = 0; /** * Send character data from an XObject to the result tree. * * @param node The xobject to send. */ virtual void characters(const XObjectPtr& xobject) = 0; /** * Send raw character data from a node to the result tree. * * @param node The node to send. * @param length number of characters to read from the array */ virtual void charactersRaw(const XalanNode& node) = 0; /** * Send raw character data from an XObject to the result tree. * * @param node The xobject to send. */ virtual void charactersRaw(const XObjectPtr& xobject) = 0; // These interfaces are inherited from XPathExecutionContext... virtual void reset() = 0; virtual XalanNode* getCurrentNode() const = 0; virtual void pushCurrentNode(XalanNode* theCurrentNode) = 0; virtual void popCurrentNode() = 0; virtual bool isNodeAfter( const XalanNode& node1, const XalanNode& node2) const = 0; virtual void pushContextNodeList(const NodeRefListBase& theList) = 0; virtual void popContextNodeList() = 0; virtual const NodeRefListBase& getContextNodeList() const = 0; virtual size_type getContextNodeListLength() const = 0; virtual size_type getContextNodeListPosition(const XalanNode& contextNode) const = 0; /** * Determine if an external element is available. * * @param theQName The QName of the element * * @return whether the given element is available or not */ virtual bool elementAvailable(const XalanQName& theQName) const = 0; /** * Determine if an external element is available by resolving * a string to a QName. * * @param theName The name of the element * @param locator A Locator instance for error reporting * * @return whether the given element is available or not */ virtual bool elementAvailable( const XalanDOMString& theName, const Locator* locator) const = 0; /** * Determine if a function is available. * * @param theQName The QName of the function * * @return whether the function is available or not */ virtual bool functionAvailable(const XalanQName& theQName) const = 0; /** * Determine if a function is available. * * @param theName The name of the function * @param locator A Locator instance for error reporting * * @return whether the function is available or not */ virtual bool functionAvailable( const XalanDOMString& theName, const Locator* locator) const = 0; virtual const XObjectPtr extFunction( const XalanDOMString& theNamespace, const XalanDOMString& functionName, XalanNode* context, const XObjectArgVectorType& argVec, const Locator* locator) = 0; virtual XalanDocument* parseXML( MemoryManager& theManager, const XalanDOMString& urlString, const XalanDOMString& base, ErrorHandler* theErrorHandler = 0) const = 0; virtual MutableNodeRefList* borrowMutableNodeRefList() = 0; virtual bool returnMutableNodeRefList(MutableNodeRefList* theList) = 0; virtual MutableNodeRefList* createMutableNodeRefList(MemoryManager& theManager) const = 0; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual MutableNodeRefList& createAndPushMutableNodeRefList() = 0; virtual void releaseAndPopMutableNodeRefList() = 0; virtual void pushXObjectPtr(const XObjectPtr& xobjectPtr) = 0; virtual void popXObjectPtr() = 0; virtual void createAndPushNodesToTransformList(const NodeRefListBase* nodeList) = 0; virtual XalanNode* getNextNodeToTransform() = 0; virtual void popNodesToTransformList() = 0; /** * Get a string that is cached on a stack * @returns a cached string */ virtual XalanDOMString& getAndPushCachedString() = 0; /** * Gets the last string that was cached on the stack * @returns the last string to be cached */ virtual XalanDOMString& getLastCachedString() = 0; /** * Gets the last string to be cached on the stack and * pops it from the stack. The reference is valid until * the next request is made for a cached string * * @returns the last string to be cached */ virtual XalanDOMString& getAndPopCachedString() = 0; #endif virtual XalanDOMString& getCachedString() = 0; virtual bool releaseCachedString(XalanDOMString& theString) = 0; virtual void getNodeSetByKey( XalanNode* context, const XalanQName& qname, const XalanDOMString& ref, const Locator* locator, MutableNodeRefList& nodelist) = 0; virtual void getNodeSetByKey( XalanNode* context, const XalanDOMString& name, const XalanDOMString& ref, const Locator* locator, MutableNodeRefList& nodelist) = 0; virtual const XObjectPtr getVariable( const XalanQName& name, const Locator* locator = 0) = 0; virtual const PrefixResolver* getPrefixResolver() const = 0; virtual void setPrefixResolver(const PrefixResolver* thePrefixResolver) = 0; virtual const XalanDOMString* getNamespaceForPrefix(const XalanDOMString& prefix) const = 0; virtual const XalanDOMString& findURIFromDoc(const XalanDocument* owner) const = 0; virtual const XalanDOMString& getUnparsedEntityURI( const XalanDOMString& theName, const XalanDocument& theDocument) const = 0; virtual bool shouldStripSourceNode(const XalanText& node) = 0; virtual XalanDocument* getSourceDocument(const XalanDOMString& theURI) const = 0; virtual void setSourceDocument( const XalanDOMString& theURI, XalanDocument* theDocument) = 0; virtual void formatNumber( double number, const XalanDOMString& pattern, XalanDOMString& theResult, const XalanNode* context = 0, const Locator* locator = 0) = 0; virtual void formatNumber( double number, const XalanDOMString& pattern, const XalanDOMString& dfsName, XalanDOMString& theResult, const XalanNode* context = 0, const Locator* locator = 0) = 0; // These interfaces are inherited from ExecutionContext... virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode) = 0; virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode) = 0; #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) protected: /** * Borrow a cached FormatterToText instance. * * @return A pointer to the instance. */ virtual FormatterToText* borrowFormatterToText() = 0; /** * Return a previously borrowed FormatterToText instance. * * @param theFormatter A pointer the to previously borrowed instance. * @return true if the instance was previously borrowed, false if not. */ virtual bool returnFormatterToText(FormatterToText* theFormatter) = 0; #endif }; XALAN_CPP_NAMESPACE_END #endif // STYLESHEETEXECUTIONCONTEXT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XSLT/ElemText.cpp0000664000175000000640000000540011731656103017257 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemText.hpp" #include #include #include #include "Constants.hpp" #include "Stylesheet.hpp" #include "StylesheetConstructionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN /** * This primarily acts as a marker on the element * stack to signal that whitespace should be preserved. */ ElemText::ElemText( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemTemplateElement( constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_TEXT) { const XalanSize_t nAttrs = atts.getLength(); for(XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (equals(aname, Constants::ATTRNAME_DISABLE_OUTPUT_ESCAPING)) { disableOutputEscaping( stylesheetTree.getYesOrNo( aname, atts.getValue(i), constructionContext)); } else if (isAttrOK( aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_TEXT_WITH_PREFIX_STRING.c_str(), aname); } } } ElemText::~ElemText() { } const XalanDOMString& ElemText::getElementName() const { return Constants::ELEMNAME_TEXT_WITH_PREFIX_STRING; } bool ElemText::childTypeAllowed(int /* xslToken */) const { return false; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemTemplateElement.cpp0000664000175000000640000012304611731656103021427 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemTemplateElement.hpp" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "Constants.hpp" #include "ElemCallTemplate.hpp" #include "ElemForEach.hpp" #include "ElemTemplate.hpp" #include "ElemTextLiteral.hpp" #include "NamespacesHandler.hpp" #include "NodeSorter.hpp" #include "Stylesheet.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" #include "StylesheetRoot.hpp" #include "SelectionEvent.hpp" #include "TracerEvent.hpp" XALAN_CPP_NAMESPACE_BEGIN const XalanDOMString ElemTemplateElement::s_emptyString(XalanMemMgrs::getDummyMemMgr()); const XalanQNameByReference ElemTemplateElement::s_emptyQName(s_emptyString, s_emptyString); ElemTemplateElement::ElemTemplateElement( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, XalanFileLoc lineNumber, XalanFileLoc columnNumber, int xslToken) : PrefixResolver(), m_stylesheet(stylesheetTree), m_namespacesHandler( constructionContext, stylesheetTree.getNamespacesHandler(), stylesheetTree.getNamespaces(), stylesheetTree.getXSLTNamespaceURI()), m_xslToken(xslToken), m_parentNode(0), m_nextSibling(0), m_previousSibling(0), m_firstChild(0), m_locatorProxy( lineNumber, columnNumber, constructionContext.getPooledString(stylesheetTree.getCurrentIncludeBaseIdentifier())), m_flags(eCanGenerateAttributes) { } ElemTemplateElement::ElemTemplateElement( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, int xslToken, const XalanDOMString& baseURI, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : PrefixResolver(), m_stylesheet(stylesheetTree), m_namespacesHandler(constructionContext.getMemoryManager()), m_xslToken(xslToken), m_parentNode(0), m_nextSibling(0), m_previousSibling(0), m_firstChild(0), m_locatorProxy( lineNumber, columnNumber, constructionContext.getPooledString(baseURI)), m_flags(eCanGenerateAttributes) { } ElemTemplateElement::~ElemTemplateElement() { } const Locator* ElemTemplateElement::getLocator() const { return &m_locatorProxy; } bool ElemTemplateElement::isWhitespace() const { return false; } bool ElemTemplateElement::isAttrOK( const XalanDOMChar* attrName, const AttributeListType& atts, XalanSize_t which, StylesheetConstructionContext& constructionContext) const { return m_stylesheet.isAttrOK(attrName, atts, which, constructionContext); } bool ElemTemplateElement::processSpaceAttr( const XalanDOMChar* elementName, const XalanDOMChar* aname, const AttributeListType& atts, XalanSize_t which, StylesheetConstructionContext& constructionContext) { if(constructionContext.isXMLSpaceAttribute( aname, getStylesheet(), getLocator()) == false) { return false; } else { const XalanDOMChar* const spaceVal = atts.getValue(which); if(equals(spaceVal, Constants::ATTRVAL_PRESERVE) == true) { m_flags |= eSpacePreserve; } else if (equals(spaceVal, Constants::ATTRVAL_DEFAULT) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttributeValue_3Param, elementName, aname, spaceVal); } return true; } } bool ElemTemplateElement::isValidNCName(const XalanDOMString& s) { return XalanQName::isValidNCName(s); } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemTemplateElement::startElement(StylesheetExecutionContext& executionContext) const { if(0 != executionContext.getTraceListeners()) { executionContext.fireTraceEvent( TracerEvent(executionContext, *this)); } return 0; } void ElemTemplateElement::endElement(StylesheetExecutionContext& /*executionContext*/) const { } void ElemTemplateElement::execute(StylesheetExecutionContext& executionContext) const { const ElemTemplateElement* const invoker = getParentNodeElem(); const ElemTemplateElement* currentElement = this; const ElemTemplateElement* nextElement = 0; executionContext.pushInvoker(invoker); while (currentElement != 0) { nextElement = currentElement->startElement(executionContext); while (0 == nextElement) { currentElement->endElement(executionContext); if (currentElement->getInvoker(executionContext) == invoker) { nextElement = 0; break; } const ElemTemplateElement* const localInvoker = currentElement->getInvoker(executionContext); assert(localInvoker != 0); nextElement = localInvoker->getNextChildElemToExecute( executionContext, currentElement); if (0 == nextElement) { currentElement = currentElement->getInvoker(executionContext); } } currentElement = nextElement; } executionContext.popInvoker(); } void ElemTemplateElement::executeChildren(StylesheetExecutionContext& executionContext) const { const ElemTemplateElement* element = beginExecuteChildren(executionContext); while (element != 0) { element->execute(executionContext); element = getNextChildElemToExecute(executionContext,element); } endExecuteChildren(executionContext); } const ElemTemplateElement* ElemTemplateElement::beginExecuteChildren(StylesheetExecutionContext& executionContext) const { if (hasParams() == true || hasVariables() == true) { assert(hasDirectTemplate() == false); executionContext.pushElementFrame(this); } return getFirstChildElemToExecute(executionContext); } void ElemTemplateElement::endExecuteChildren(StylesheetExecutionContext& executionContext) const { if (hasParams() == true || hasVariables() == true) { executionContext.popElementFrame(); } else if (hasDirectTemplate() == true) { executionContext.popInvoker(); executionContext.popContextMarker(); } } const ElemTemplateElement* ElemTemplateElement::beginChildrenToString( StylesheetExecutionContext& executionContext, XalanDOMString& result) const { if (hasSingleTextChild() == true) { assert(m_textLiteralChild != 0); result.assign(m_textLiteralChild->getText(), m_textLiteralChild->getLength()); return 0; } else { result.reserve(result.length() + 1024); executionContext.beginFormatToText(result); return beginExecuteChildren(executionContext); } } void ElemTemplateElement::endChildrenToString( StylesheetExecutionContext& executionContext) const { if (hasSingleTextChild() == false) { endExecuteChildren(executionContext); executionContext.endFormatToText(); } } const ElemTemplateElement* ElemTemplateElement::getInvoker(StylesheetExecutionContext& /*executionContext*/) const { return getParentNodeElem(); } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemTemplateElement::execute(StylesheetExecutionContext& executionContext) const { if(0 != executionContext.getTraceListeners()) { executionContext.fireTraceEvent( TracerEvent(executionContext, *this)); } } void ElemTemplateElement::executeChildren(StylesheetExecutionContext& executionContext) const { if (hasChildren() == true) { if (hasDirectTemplate() == true) { assert(m_directTemplate != 0); // This is temporary, until we can process stylesheet in such a way that we // can detect variable references... const StylesheetExecutionContext::PushAndPopContextMarker thePushAndPop(executionContext); m_directTemplate->execute(executionContext); } else { if (hasParams() == true || hasVariables() == true) { const StylesheetExecutionContext::PushAndPopElementFrame thePushAndPop(executionContext, this); for (ElemTemplateElement* node = m_firstChild; node != 0; node = node->m_nextSibling) { node->execute(executionContext); } } else { for (ElemTemplateElement* node = m_firstChild; node != 0; node = node->m_nextSibling) { node->execute(executionContext); } } } } } void ElemTemplateElement::executeChildren( StylesheetExecutionContext& executionContext, XalanNode* sourceNode) const { if (hasChildren() == true) { XalanNode* const theCurrentNode = executionContext.getCurrentNode(); if (theCurrentNode == sourceNode) { executeChildren(executionContext); } else { const XPathExecutionContext::CurrentNodePushAndPop theCurrentNodePushAndPop(executionContext, sourceNode); executeChildren(executionContext); } } } XalanDOMString& ElemTemplateElement::doChildrenToString( StylesheetExecutionContext& executionContext, XalanDOMString& result) const { reserve(result, length(result) + 1024); // Create a print writer and formatter to generate the children as // a string. DOMStringPrintWriter thePrintWriter(result); // Borrow a FormatterToText, and don't normalize CR/LF, since we don't want // this text to be normalized. Finally, have the formatter handle any ignorable // whitespace events. StylesheetExecutionContext::BorrowReturnFormatterToText theFormatter( executionContext, thePrintWriter, false, true); // Create an object to set and restore the execution state. StylesheetExecutionContext::OutputContextPushPop theOutputContextPushPop( executionContext, theFormatter.get()); theFormatter->startDocument(); executeChildren(executionContext); theFormatter->endDocument(); return result; } const XalanDOMString& ElemTemplateElement::childrenToString( StylesheetExecutionContext& executionContext, XalanDOMString& result) const { if (hasSingleTextChild() == true) { assert(m_textLiteralChild != 0); assign(result, m_textLiteralChild->getText(), m_textLiteralChild->getLength()); } else { doChildrenToString(executionContext, result); } return result; } void ElemTemplateElement::childrenToResultAttribute( StylesheetExecutionContext& executionContext, const XalanDOMString& theName) const { if (hasSingleTextChild() == true) { executionContext.addResultAttribute( theName, m_textLiteralChild->getText()); } else { const StylesheetExecutionContext::GetCachedString theResult(executionContext); childrenToString(executionContext, theResult.get()); executionContext.addResultAttribute( theName, theResult.get()); } } void ElemTemplateElement::childrenToResultComment(StylesheetExecutionContext& executionContext) const { const StylesheetExecutionContext::GetCachedString theGuard(executionContext); XalanDOMString& theData = theGuard.get(); childrenToString(executionContext, theData); XalanDOMString::iterator theEnd = theData.end(); XalanDOMString::iterator theCurrent = theData.begin(); // We need to fix up any occurrences of the sequence '--' in // the comment's data by inserting a space between them. Also, // if the data ends with a '-', then we must append a space to // the data. while(theCurrent != theEnd) { const XalanDOMChar theChar = *theCurrent; if (theChar == XalanUnicode::charHyphenMinus) { XalanDOMString::iterator theNext = theCurrent + 1; if (theNext == theEnd || *theNext == XalanUnicode::charHyphenMinus) { theCurrent = theData.insert( theNext, XalanUnicode::charSpace); theEnd = theData.end(); } } ++theCurrent; } executionContext.comment(theData.c_str()); } void ElemTemplateElement::childrenToResultPI( StylesheetExecutionContext& executionContext, const XalanDOMString& theTarget) const { const StylesheetExecutionContext::GetCachedString theGuard(executionContext); XalanDOMString& theData = theGuard.get(); childrenToString(executionContext, theData); XalanDOMString::iterator theEnd = theData.end(); XalanDOMString::iterator theCurrent = theData.begin(); // We need to fix up any occurrences of the sequence '?>' in // the PI's data by inserting a space between them. while(theCurrent != theEnd) { const XalanDOMChar theChar = *theCurrent; if (theChar == XalanUnicode::charQuestionMark) { XalanDOMString::iterator theNext = theCurrent + 1; if (theNext != theEnd && *theNext == XalanUnicode::charGreaterThanSign) { theCurrent = theData.insert( theNext, XalanUnicode::charSpace); theEnd = theData.end(); // Move forward, since we're not interested in // the '>' character. ++theCurrent; } } ++theCurrent; } executionContext.processingInstruction( theTarget.c_str(), theData.c_str()); } #endif typedef StylesheetExecutionContext::GetCachedString ECGetCachedString; typedef StylesheetConstructionContext::GetCachedString CCGetCachedString; void ElemTemplateElement::error( StylesheetExecutionContext& theContext, XalanMessages::Codes theCode) const { const ECGetCachedString theGuard(theContext); theContext.problem( StylesheetExecutionContext::eXSLTProcessor, StylesheetExecutionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), theCode), getLocator(), theContext.getCurrentNode()); } void ElemTemplateElement::error( StylesheetExecutionContext& theContext, XalanMessages::Codes theCode, const XalanDOMString& theToken) const { const ECGetCachedString theGuard(theContext); theContext.problem( StylesheetExecutionContext::eXSLTProcessor, StylesheetExecutionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), theCode, theToken), getLocator(), theContext.getCurrentNode()); } void ElemTemplateElement::error( StylesheetExecutionContext& theContext, XalanMessages::Codes theCode, const Locator* theLocator) const { const ECGetCachedString theGuard(theContext); theContext.problem( StylesheetExecutionContext::eXSLTProcessor, StylesheetExecutionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), theCode), theLocator, theContext.getCurrentNode()); } void ElemTemplateElement::warn( StylesheetExecutionContext& theContext, XalanMessages::Codes theCode) const { const ECGetCachedString theGuard(theContext); theContext.problem( StylesheetExecutionContext::eXSLTProcessor, StylesheetExecutionContext::eWarning, XalanMessageLoader::getMessage( theGuard.get(), theCode), getLocator(), theContext.getCurrentNode()); } void ElemTemplateElement::warn( StylesheetExecutionContext& theContext, XalanMessages::Codes theCode, const Locator* theLocator) const { const ECGetCachedString theGuard(theContext); theContext.problem( StylesheetExecutionContext::eXSLTProcessor, StylesheetExecutionContext::eWarning, XalanMessageLoader::getMessage( theGuard.get(), theCode), theLocator, theContext.getCurrentNode()); } void ElemTemplateElement::warn( StylesheetExecutionContext& theContext, XalanMessages::Codes theCode, const XalanDOMString& theToken) const { const ECGetCachedString theGuard(theContext); theContext.problem( StylesheetExecutionContext::eXSLTProcessor, StylesheetExecutionContext::eWarning, XalanMessageLoader::getMessage( theGuard.get(), theCode, theToken), getLocator(), theContext.getCurrentNode()); } void ElemTemplateElement::warn( StylesheetConstructionContext& theContext, XalanMessages::Codes theCode, const XalanDOMChar* theToken1, const XalanDOMChar* theToken2, const XalanDOMChar* theToken3) { const CCGetCachedString theGuard(theContext); theContext.problem( StylesheetConstructionContext::eXSLTProcessor, StylesheetConstructionContext::eWarning, XalanMessageLoader::getMessage( theGuard.get(), theCode, theToken1, theToken2, theToken3), getLocator(), 0); } void ElemTemplateElement::error( StylesheetConstructionContext& theContext, XalanMessages::Codes theCode) { const CCGetCachedString theGuard(theContext); theContext.problem( StylesheetConstructionContext::eXSLTProcessor, StylesheetConstructionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), theCode), getLocator(), 0); } void ElemTemplateElement::error( StylesheetConstructionContext& theContext, XalanMessages::Codes theCode, const XalanDOMString& theToken, const Locator* theLocator) { const CCGetCachedString theGuard(theContext); theContext.problem( StylesheetConstructionContext::eXSLTProcessor, StylesheetConstructionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), theCode, theToken), theLocator, 0); } void ElemTemplateElement::error( StylesheetConstructionContext& theContext, XalanMessages::Codes theCode, const XalanDOMString& theToken) { const CCGetCachedString theGuard(theContext); theContext.problem( StylesheetConstructionContext::eXSLTProcessor, StylesheetConstructionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), theCode, theToken), getLocator(), 0); } void ElemTemplateElement::error( StylesheetConstructionContext& theContext, XalanMessages::Codes theCode, const XalanDOMString& theToken1, const XalanDOMString& theToken2) { const CCGetCachedString theGuard(theContext); theContext.problem( StylesheetConstructionContext::eXSLTProcessor, StylesheetConstructionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), theCode, theToken1, theToken2), getLocator(), 0); } void ElemTemplateElement::error( StylesheetConstructionContext& theContext, XalanMessages::Codes theCode, const XalanDOMChar* theToken1, const XalanDOMChar* theToken2) { const CCGetCachedString theGuard(theContext); theContext.problem( StylesheetConstructionContext::eXSLTProcessor, StylesheetConstructionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), theCode, theToken1, theToken2), getLocator(), 0); } void ElemTemplateElement::error( StylesheetConstructionContext& theContext, XalanMessages::Codes theCode, const XalanDOMChar* theToken1, const XalanDOMChar* theToken2, const XalanDOMChar* theToken3) { const CCGetCachedString theGuard(theContext); theContext.problem( StylesheetConstructionContext::eXSLTProcessor, StylesheetConstructionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), theCode, theToken1, theToken2, theToken3), getLocator(), 0); } const XalanQName& ElemTemplateElement::getNameAttribute() const { return s_emptyQName; } void ElemTemplateElement::addToStylesheet( StylesheetConstructionContext& /* constructionContext */, Stylesheet& /* theStylesheet */) { // An illegal call to addToStylesheet() was made during compilation of the stylesheet. assert ( false ); } void ElemTemplateElement::processSortElement( StylesheetConstructionContext& constructionContext, Stylesheet& /* theStylesheet */, const AttributeListType& /* atts */, const Locator* locator) { error( constructionContext, XalanMessages::ElementIsNotAllowedAtThisPosition_1Param, Constants::ELEMNAME_SORT_WITH_PREFIX_STRING, locator); } void ElemTemplateElement::setDefaultTemplate(bool value) { m_flags |= eDefaultTemplate; for (ElemTemplateElement* node = m_firstChild; node != 0; node = node->m_nextSibling) { node->setDefaultTemplate(value); } } ElemTemplateElement* ElemTemplateElement::getFirstChildElem() const { return m_firstChild; } void ElemTemplateElement::setFirstChildElem(ElemTemplateElement* theElement) { m_firstChild = theElement; } ElemTemplateElement* ElemTemplateElement::getLastChildElem() const { ElemTemplateElement* lastChild = 0; for (ElemTemplateElement* node = m_firstChild; node != 0; node = node->m_nextSibling) { lastChild = node; } return lastChild; } ElemTemplateElement* ElemTemplateElement::getNextSiblingElem() const { return m_nextSibling; } void ElemTemplateElement::setNextSiblingElem(ElemTemplateElement* theSibling) { m_nextSibling = theSibling; } ElemTemplateElement* ElemTemplateElement::getPreviousSiblingElem() const { return m_previousSibling; } void ElemTemplateElement::setPreviousSiblingElem(ElemTemplateElement* theSibling) { m_previousSibling = theSibling; } ElemTemplateElement* ElemTemplateElement::getParentNodeElem() const { return m_parentNode; } void ElemTemplateElement::setParentNodeElem(ElemTemplateElement* theParent) { m_parentNode = theParent; } ElemTemplateElement* ElemTemplateElement::appendChildElem(ElemTemplateElement* newChild) { assert(newChild != 0); assert(newChild->getXSLToken() != StylesheetConstructionContext::ELEMNAME_TEXT); assert(newChild->getXSLToken() != StylesheetConstructionContext::ELEMNAME_UNDEFINED); if (childTypeAllowed(newChild->getXSLToken()) == false) { throw XalanDOMException(XalanDOMException::HIERARCHY_REQUEST_ERR); } else if(0 == m_firstChild) { m_firstChild = newChild; newChild->setPreviousSiblingElem(0); } else { ElemTemplateElement* const last = getLastChildElem(); assert(last != 0); last->setNextSiblingElem(newChild); newChild->setPreviousSiblingElem(last); } newChild->setParentNodeElem(this); newChild->setNextSiblingElem(0); return newChild; } const XPath* ElemTemplateElement::getXPath(XalanSize_t /* index */) const { return 0; } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemTemplateElement::findTemplateToTransformChild( StylesheetExecutionContext& executionContext, const ElemTemplateElement& xslInstruction, const ElemTemplateElement* theTemplate, XalanNode* child) const { assert(child != 0); return findTemplateToTransformChild( executionContext, xslInstruction, theTemplate, child, child->getNodeType()); } const ElemTemplateElement* ElemTemplateElement::findTemplateToTransformChild( StylesheetExecutionContext& executionContext, const ElemTemplateElement& xslInstruction, const ElemTemplateElement* theTemplate, XalanNode* child, XalanNode::NodeType nodeType) const { assert(child != 0); if(0 == theTemplate) { // Find the XSL template that is the best match for the // element... const bool isApplyImports = xslInstruction.getXSLToken() == StylesheetConstructionContext::ELEMNAME_APPLY_IMPORTS; assert(isApplyImports == false || executionContext.getCurrentTemplate() != 0); const Stylesheet* stylesheetTree = isApplyImports == true ? &executionContext.getCurrentTemplate()->getStylesheet() : &getStylesheet().getStylesheetRoot(); theTemplate = stylesheetTree->findTemplate( executionContext, child, nodeType, *executionContext.getCurrentMode(), isApplyImports); } if(0 == theTemplate) { switch(nodeType) { case XalanNode::DOCUMENT_FRAGMENT_NODE: case XalanNode::ELEMENT_NODE: theTemplate = getStylesheet().getStylesheetRoot().getDefaultRule(); break; case XalanNode::CDATA_SECTION_NODE: case XalanNode::TEXT_NODE: theTemplate = getStylesheet().getStylesheetRoot().getDefaultTextRule(); break; case XalanNode::ATTRIBUTE_NODE: if (DOMServices::isNamespaceDeclaration(static_cast(*child)) == false) { theTemplate = getStylesheet().getStylesheetRoot().getDefaultTextRule(); } break; case XalanNode::DOCUMENT_NODE: theTemplate = getStylesheet().getStylesheetRoot().getDefaultRootRule(); break; default: break; } } if(0 != theTemplate) { if(theTemplate == getStylesheet().getStylesheetRoot().getDefaultTextRule()) { switch(nodeType) { case XalanNode::CDATA_SECTION_NODE: case XalanNode::TEXT_NODE: executionContext.cloneToResultTree( *child, XalanNode::TEXT_NODE, true, false, getLocator()); break; case XalanNode::ATTRIBUTE_NODE: { const XalanDOMString& val = child->getNodeValue(); const XalanDOMString::size_type len = val.length(); if (len > 0) { executionContext.characters( val.c_str(), 0, len); } } break; default: assert(false); break; } } else { if(0 != executionContext.getTraceListeners()) { const TracerEvent te(executionContext, *theTemplate); executionContext.fireTraceEvent(te); } return theTemplate; } } return 0; } #else void ElemTemplateElement::transformChild( StylesheetExecutionContext& executionContext, const ElemTemplateElement& xslInstruction, const ElemTemplateElement* theTemplate, XalanNode* child) const { assert(child != 0); transformChild( executionContext, xslInstruction, theTemplate, child, child->getNodeType()); } void ElemTemplateElement::transformChild( StylesheetExecutionContext& executionContext, const ElemTemplateElement& xslInstruction, const ElemTemplateElement* theTemplate, XalanNode* child, XalanNode::NodeType nodeType) const { assert(child != 0); if(0 == theTemplate) { // Find the XSL template that is the best match for the // element... const bool isApplyImports = xslInstruction.getXSLToken() == StylesheetConstructionContext::ELEMNAME_APPLY_IMPORTS; assert(isApplyImports == false || executionContext.getCurrentTemplate() != 0); const Stylesheet* stylesheetTree = isApplyImports == true ? &executionContext.getCurrentTemplate()->getStylesheet() : &getStylesheet().getStylesheetRoot(); theTemplate = stylesheetTree->findTemplate( executionContext, child, nodeType, *executionContext.getCurrentMode(), isApplyImports); } if(0 == theTemplate) { switch(nodeType) { case XalanNode::DOCUMENT_FRAGMENT_NODE: case XalanNode::ELEMENT_NODE: theTemplate = getStylesheet().getStylesheetRoot().getDefaultRule(); break; case XalanNode::CDATA_SECTION_NODE: case XalanNode::TEXT_NODE: case XalanNode::ATTRIBUTE_NODE: theTemplate = getStylesheet().getStylesheetRoot().getDefaultTextRule(); break; case XalanNode::DOCUMENT_NODE: theTemplate = getStylesheet().getStylesheetRoot().getDefaultRootRule(); break; default: break; } } if(0 != theTemplate) { if(theTemplate == getStylesheet().getStylesheetRoot().getDefaultTextRule()) { switch(nodeType) { case XalanNode::CDATA_SECTION_NODE: case XalanNode::TEXT_NODE: executionContext.cloneToResultTree( *child, XalanNode::TEXT_NODE, true, false, getLocator()); break; case XalanNode::ATTRIBUTE_NODE: { const XalanDOMString& val = child->getNodeValue(); const XalanDOMString::size_type len = length(val); if (len > 0) { executionContext.characters( val.c_str(), 0, len); } } break; default: assert(false); break; } } else { if(0 != executionContext.getTraceListeners()) { const TracerEvent te(executionContext, *theTemplate); executionContext.fireTraceEvent(te); } theTemplate->executeChildren(executionContext, child); } } } #endif void ElemTemplateElement::postConstruction( StylesheetConstructionContext& constructionContext, const NamespacesHandler& theParentHandler) { namespacesPostConstruction( constructionContext, theParentHandler, m_namespacesHandler); if (hasChildren() == true) { for (ElemTemplateElement* node = m_firstChild; node != 0; node = node->m_nextSibling) { node->postConstruction(constructionContext, m_namespacesHandler); const int theToken = node->getXSLToken(); if (hasVariables() == false && (theToken == StylesheetConstructionContext::ELEMNAME_VARIABLE || theToken == StylesheetConstructionContext::ELEMNAME_PARAM)) { m_flags |= eHasVariables; } if (hasParams() == false && theToken == StylesheetConstructionContext::ELEMNAME_WITH_PARAM) { m_flags |= eHasParams; } } assert(m_firstChild != 0); const int theToken = m_firstChild->getXSLToken(); // There are opportunities for optimization if there's only one // xsl:text child node. See childrenToString()... if (theToken == StylesheetConstructionContext::ELEMNAME_TEXT_LITERAL_RESULT && m_firstChild->getNextSiblingElem() == 0) { m_flags |= eHasSingleTextChild; } else if (theToken == StylesheetConstructionContext::ELEMNAME_CALL_TEMPLATE && m_firstChild->getNextSiblingElem() == 0) { // Just a single xsl:call-template child, so we don't need to // execute it if it has no params -- we can just execute the // template directly... if (m_firstChild->hasParams() == false) { m_flags |= eHasDirectTemplate; ElemCallTemplate* const theCallTemplateChild = static_cast(m_firstChild); m_directTemplate = theCallTemplateChild->getTemplate(); } } else if (canGenerateAttributes() == false && theToken != StylesheetConstructionContext::ELEMNAME_LITERAL_RESULT) { m_flags |= eCanGenerateAttributes; } } } void ElemTemplateElement::namespacesPostConstruction( StylesheetConstructionContext& constructionContext, const NamespacesHandler& theParentHandler, NamespacesHandler& theHandler) { theHandler.postConstruction( constructionContext, true, getElementName(), &theParentHandler); } const XalanDOMString* ElemTemplateElement::getNamespaceForPrefix(const XalanDOMString& prefix) const { return getNamespaceForPrefixInternal(prefix); } bool ElemTemplateElement::processPrefixControl( StylesheetConstructionContext& constructionContext, const Stylesheet& stylesheetTree, const XalanDOMString& localName, const XalanDOMChar* attrValue) { if(equals(localName, Constants::ATTRNAME_EXTENSIONELEMENTPREFIXES)) { m_namespacesHandler.processExtensionElementPrefixes( constructionContext, attrValue, stylesheetTree.getNamespaces()); return true; } else if (equals(localName, Constants::ATTRNAME_EXCLUDE_RESULT_PREFIXES)) { m_namespacesHandler.processExcludeResultPrefixes( constructionContext, attrValue, stylesheetTree.getNamespaces()); return true; } else { return false; } } const XalanDOMString* ElemTemplateElement::getNamespaceForPrefixInternal(const XalanDOMString& prefix) const { const XalanDOMString* nameSpace = 0; if(getFinishedConstruction() == false) { nameSpace = getStylesheet().getNamespaceForPrefixFromStack(prefix); } else { if (equals(prefix, DOMServices::s_XMLString) == true) { nameSpace = &DOMServices::s_XMLNamespaceURI; } else { nameSpace = getNamespacesHandler().getNamespace(prefix); if(nameSpace == 0) { if (m_parentNode != 0) { nameSpace = m_parentNode->getNamespaceForPrefixInternal(prefix); } // Try one last time with the stylesheet... if (nameSpace == 0) { nameSpace = getStylesheet().getNamespaceForPrefix(prefix); } } } } return nameSpace; } const XalanDOMString& ElemTemplateElement::getURI() const { return m_locatorProxy.getURI(); } ElemTemplateElement::LocatorProxy::LocatorProxy( XalanFileLoc theLineNumber, XalanFileLoc theColumnNumber, const XalanDOMString& theURI) : m_lineNumber(theLineNumber), m_columnNumber(theColumnNumber), m_uri(theURI) { } ElemTemplateElement::LocatorProxy::~LocatorProxy() { } XalanFileLoc ElemTemplateElement::LocatorProxy::getLineNumber() const { return m_lineNumber; } XalanFileLoc ElemTemplateElement::LocatorProxy::getColumnNumber() const { return m_columnNumber; } const XMLCh* ElemTemplateElement::LocatorProxy::getPublicId() const { return 0; } const XMLCh* ElemTemplateElement::LocatorProxy::getSystemId() const { return m_uri.size() == 0 ? 0 : m_uri.c_str(); } bool ElemTemplateElement::childTypeAllowed(int /* xslToken */) const { return true; } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemTemplateElement::getNextChildElemToExecute(StylesheetExecutionContext& executionContext, const ElemTemplateElement* currentElem) const { if (hasDirectTemplate() == true) { return 0; } assert(currentElem != 0); const ElemTemplateElement* nextElement; while((nextElement = currentElem->getNextSiblingElem()) != 0 && !executeChildElement(executionContext, nextElement)) { currentElem = nextElement; } return nextElement; } const ElemTemplateElement* ElemTemplateElement::getFirstChildElemToExecute(StylesheetExecutionContext& executionContext) const { if (hasDirectTemplate() == true) { assert(m_directTemplate != 0); executionContext.pushContextMarker(); executionContext.pushInvoker(this); return m_directTemplate; } const ElemTemplateElement * firstElement = getFirstChildElem(); if (firstElement != 0 && !executeChildElement(executionContext, firstElement)) { firstElement = ElemTemplateElement::getNextChildElemToExecute(executionContext,firstElement); } return firstElement; } bool ElemTemplateElement::executeChildElement( StylesheetExecutionContext& /*executionContext*/, const ElemTemplateElement* /*element*/) const { return true; } #endif XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/FunctionCurrent.cpp0000664000175000000640000000355511731656103020671 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionCurrent.hpp" #include #include XALAN_CPP_NAMESPACE_BEGIN FunctionCurrent::FunctionCurrent() { } FunctionCurrent::~FunctionCurrent() { } XObjectPtr FunctionCurrent::execute( XPathExecutionContext& executionContext, XalanNode* /* context */, const Locator* const /* locator */) const { assert(executionContext.getCurrentNode() != 0); return executionContext.getXObjectFactory().createNodeSet(executionContext.getCurrentNode()); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionCurrent* #endif FunctionCurrent::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionCurrent::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionDoesNotAcceptAnyArguments_1Param, "current()"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/Stylesheet.cpp0000664000175000000640000014450011731656103017666 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "Stylesheet.hpp" #include #include #include #include #include #include #include #include #include #include #include #include "Constants.hpp" #include "ElemAttributeSet.hpp" #include "ElemDecimalFormat.hpp" #include "ElemTemplate.hpp" #include "ElemTemplateElement.hpp" #include "ElemVariable.hpp" #include "ExtensionNSHandler.hpp" #include "KeyTable.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" #include "XalanMatchPatternData.hpp" XALAN_CPP_NAMESPACE_BEGIN const XalanDOMString Stylesheet::s_emptyString(XalanMemMgrs::getDummyMemMgr()); const Stylesheet::PatternTableVectorType Stylesheet::s_emptyTemplateList(XalanMemMgrs::getDummyMemMgr()); const XalanQNameByReference Stylesheet::s_emptyQName; Stylesheet::Stylesheet( StylesheetRoot& root, const XalanDOMString& baseIdentifier, StylesheetConstructionContext& constructionContext) : PrefixResolver(), m_stylesheetRoot(root), m_baseIdent(baseIdentifier,constructionContext.getMemoryManager()), m_keyDeclarations(constructionContext.getMemoryManager()), m_whitespaceElements(constructionContext.getMemoryManager()), m_XSLTNamespaceURI(constructionContext.getXSLTNamespaceURI(),constructionContext.getMemoryManager()), m_imports(constructionContext.getMemoryManager()), m_importsSize(0), m_namespaces(constructionContext.getMemoryManager()), m_namespaceDecls(constructionContext.getMemoryManager()), m_isWrapperless(false), m_extensionNamespaces(constructionContext.getMemoryManager()), m_firstTemplate(0), m_includeStack(constructionContext.getMemoryManager()), m_namedTemplates(constructionContext.getMemoryManager()), m_topLevelVariables(constructionContext.getMemoryManager()), m_XSLTVerDeclared(1.0L), m_elementPatternTable(constructionContext.getMemoryManager()), m_elementPatternTableEnd(m_elementPatternTable.end()), m_elementAnyPatternList(constructionContext.getMemoryManager()), m_attributePatternTable(constructionContext.getMemoryManager()), m_attributePatternTableEnd(m_attributePatternTable.end()), m_attributeAnyPatternList(constructionContext.getMemoryManager()), m_textPatternList(constructionContext.getMemoryManager()), m_commentPatternList(constructionContext.getMemoryManager()), m_rootPatternList(constructionContext.getMemoryManager()), m_piPatternList(constructionContext.getMemoryManager()), m_nodePatternList(constructionContext.getMemoryManager()), m_patternCount(0), m_elemDecimalFormats(constructionContext.getMemoryManager()), m_namespacesHandler(constructionContext.getMemoryManager()) { if (m_baseIdent.empty() == true) { m_includeStack.push_back(m_baseIdent); } else { try { const GetCachedString theGuard(constructionContext); XalanDOMString& urlString = theGuard.get(); constructionContext.getURLStringFromString(m_baseIdent, urlString); if (urlString.empty() == false) { m_includeStack.push_back(urlString); m_baseIdent = urlString; } } catch(const XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtilsException&) { // Assume that any exception here relates to get the urlString from // m_baseIdent. We'll assume that it's just a fake base identifier // since the parser will throw the real error if the base identifier // can't be resolved. m_includeStack.push_back(baseIdentifier); } } } Stylesheet* Stylesheet::create( MemoryManager& theManager, StylesheetRoot& root, const XalanDOMString& baseIdentifier, StylesheetConstructionContext& constructionContext) { Stylesheet* theInstance; return XalanConstruct( theManager, theInstance, root, baseIdentifier, constructionContext); } Stylesheet::~Stylesheet() { #if !defined(XALAN_NO_STD_NAMESPACE) using std::for_each; #endif // Clean up all entries in the imports vector. for_each( m_imports.begin(), m_imports.end(), DeleteFunctor(m_imports.getMemoryManager())); // Clean up the decimal formats vector for_each( m_elemDecimalFormats.begin(), m_elemDecimalFormats.end(), DeleteFunctor(m_elemDecimalFormats.getMemoryManager())); for_each( m_extensionNamespaces.begin(), m_extensionNamespaces.end(), makeMapValueDeleteFunctor(m_extensionNamespaces)); } void Stylesheet::error( StylesheetConstructionContext& theContext, XalanMessages::Codes theErrorCode, const Locator* theLocator, const XalanDOMChar* theParam1, const XalanDOMChar* theParam2, const XalanDOMChar* theParam3) const { const GetCachedString theGuard(theContext); theContext.problem( StylesheetConstructionContext::eXSLTProcessor, StylesheetConstructionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), theErrorCode, theParam1, theParam2, theParam3), theLocator, 0); } ElemTemplateElement* Stylesheet::initWrapperless( StylesheetConstructionContext& constructionContext, const Locator* locator) { if (m_isWrapperless == true) { error( constructionContext, XalanMessages::StylesheetHasWrapperlessTemplate, locator); } assert(m_firstTemplate == 0); m_isWrapperless = true; AttributeListImpl templateAttrs(constructionContext.getMemoryManager()); templateAttrs.addAttribute(Constants::ATTRNAME_NAME.c_str(), Constants::ATTRTYPE_CDATA.c_str(), Constants::ATTRVAL_SIMPLE.c_str()); ElemTemplateElement* const theNewTemplate = constructionContext.createElement( StylesheetConstructionContext::ELEMNAME_TEMPLATE, *this, templateAttrs, locator); theNewTemplate->addToStylesheet(constructionContext, *this); assert(m_firstTemplate == theNewTemplate); return theNewTemplate; } void Stylesheet::processKeyElement( const PrefixResolver& nsContext, const AttributeListType& atts, const Locator* locator, StylesheetConstructionContext& constructionContext) { const XalanQName* theQName = 0; XPath* matchAttr = 0; XPath* useAttr = 0; const XalanSize_t nAttrs = atts.getLength(); for(XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (equals(aname, Constants::ATTRNAME_NAME)) { theQName = constructionContext.createXalanQName(atts.getValue(i), m_namespaces, locator); // $$$TODO: It's not clear of this code will ever be executed, since // constructing an invalid QName is not possibly right now. assert(theQName->isValid() == true); if (theQName->isValid() == false) { error( constructionContext, XalanMessages::AttributeValueNotValidQName_2Param, locator, Constants::ATTRNAME_NAME.c_str(), atts.getValue(i)); } } else if(equals(aname, Constants::ATTRNAME_MATCH)) { const GetCachedString theGuard(constructionContext); XalanDOMString& theBuffer = theGuard.get(); theBuffer.assign(atts.getValue(i)); matchAttr = constructionContext.createMatchPattern( 0, theBuffer, nsContext, false, false); } else if(equals(aname, Constants::ATTRNAME_USE)) { useAttr = constructionContext.createXPath( 0, atts.getValue(i), nsContext, false, false); } else if (isAttrOK(aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, locator, Constants::ELEMNAME_KEY_WITH_PREFIX_STRING.c_str(), aname); } } if (0 == theQName) { error( constructionContext, XalanMessages::ElementRequiresAttribute_2Param, locator, Constants::ELEMNAME_KEY_WITH_PREFIX_STRING.c_str(), Constants::ATTRNAME_NAME.c_str()); } if (0 == matchAttr) { error( constructionContext, XalanMessages::ElementRequiresAttribute_2Param, locator, Constants::ELEMNAME_KEY_WITH_PREFIX_STRING.c_str(), Constants::ATTRNAME_MATCH.c_str()); } if (0 == useAttr) { error( constructionContext, XalanMessages::ElementRequiresAttribute_2Param, locator, Constants::ELEMNAME_KEY_WITH_PREFIX_STRING.c_str(), Constants::ATTRNAME_USE.c_str()); } m_keyDeclarations.push_back( KeyDeclaration( *theQName, *matchAttr, *useAttr, m_baseIdent, XalanLocator::getLineNumber(locator), XalanLocator::getColumnNumber(locator))); } void Stylesheet::pushNamespaces(const AttributeListType& atts) { const XalanSize_t nAttrs = atts.getLength(); NamespaceVectorType namespaces(getMemoryManager()); XalanDOMString prefix(getMemoryManager()); for(XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); const XalanDOMChar* const value = atts.getValue(i); const bool isPrefix = startsWith(aname, DOMServices::s_XMLNamespaceWithSeparator); if (equals(aname, DOMServices::s_XMLNamespace) || isPrefix) { if (isPrefix == false) { prefix.clear(); } else { substring(aname, prefix, DOMServices::s_XMLNamespaceWithSeparatorLength); } const NameSpace newNS(prefix, XalanDOMString(value, getMemoryManager()), getMemoryManager()); namespaces.push_back(newNS); } } m_namespaces.push_back(namespaces); } class attrSetCompare { public: attrSetCompare(const ElemAttributeSet& theAttrSet) : m_attrSet(theAttrSet) { } bool operator()(const ElemAttributeSet* theRHS) const { assert(theRHS != 0); return m_attrSet == *theRHS; } private: const ElemAttributeSet& m_attrSet; }; static void addToList( Stylesheet::PatternTableVectorType& theList, const XalanMatchPatternData* thePattern) { assert(thePattern != 0); const double thePatternPriority = thePattern->getPriorityOrDefault(); const XalanSize_t thePatternPosition = thePattern->getPosition(); typedef Stylesheet::PatternTableVectorType PatternTableListType; typedef PatternTableListType::iterator iterator; iterator theCurrent = theList.begin(); const iterator theEnd = theList.end(); while (theCurrent != theEnd) { const double theCurrentPriority = (*theCurrent)->getPriorityOrDefault(); if (thePatternPriority > theCurrentPriority) { break; } else if (thePatternPriority == theCurrentPriority && thePatternPosition > (*theCurrent)->getPosition()) { break; } ++theCurrent; } theList.insert(theCurrent, thePattern); } static void addToTable( Stylesheet::PatternTableMapType& theTable, const Stylesheet::PatternTableVectorType& theList) { typedef Stylesheet::PatternTableMapType PatternTableMapType; typedef Stylesheet::PatternTableVectorType PatternTableListType; PatternTableMapType::iterator theCurrentTable = theTable.begin(); const PatternTableMapType::iterator theTableEnd = theTable.end(); const PatternTableListType::const_iterator theListEnd = theList.end(); while(theCurrentTable != theTableEnd) { PatternTableListType::const_iterator theCurrent = theList.begin(); while(theCurrent != theListEnd) { addToList((*theCurrentTable).second, *theCurrent); ++theCurrent; } ++theCurrentTable; } } void Stylesheet::addWhitespaceElement(const XalanSpaceNodeTester& theTester) { typedef WhitespaceElementsVectorType::iterator iterator; const XPath::eMatchScore theMatchScore = theTester.getMatchScore(); iterator i = m_whitespaceElements.begin(); while(i != m_whitespaceElements.end()) { if (theMatchScore >= (*i).getMatchScore()) { break; } else { ++i; } } m_whitespaceElements.insert(i, theTester); } void Stylesheet::postConstruction(StylesheetConstructionContext& constructionContext) { KeyDeclarationVectorType::size_type theKeyDeclarationsCount = 0; WhitespaceElementsVectorType::size_type theWhitespaceElementsCount = 0; { m_importsSize = m_imports.size(); // Call postConstruction() on any imported stylesheets, in reverse order, // so namespace aliases are processed properly. Also, get any key // declarations and preserve/strip space information. const StylesheetVectorType::reverse_iterator theEnd = m_imports.rend(); StylesheetVectorType::reverse_iterator i = m_imports.rbegin(); while(i != theEnd) { (*i)->postConstruction(constructionContext); m_namespacesHandler.copyNamespaceAliases((*i)->getNamespacesHandler()); theKeyDeclarationsCount += (*i)->m_keyDeclarations.size(); theWhitespaceElementsCount += (*i)->m_whitespaceElements.size(); ++i; } } { // Call postConstruction() on any imported stylesheets, in import order, // and process preserve/strip space information. const StylesheetVectorType::iterator theEnd = m_imports.end(); StylesheetVectorType::iterator i = m_imports.begin(); m_keyDeclarations.reserve( m_keyDeclarations.size() + theKeyDeclarationsCount); m_whitespaceElements.reserve( m_whitespaceElements.size() + theWhitespaceElementsCount); while(i != theEnd) { m_keyDeclarations.insert( m_keyDeclarations.end(), (*i)->m_keyDeclarations.begin(), (*i)->m_keyDeclarations.end()); { KeyDeclarationVectorType temp(getMemoryManager()); temp.swap((*i)->m_keyDeclarations); } m_whitespaceElements.insert( m_whitespaceElements.end(), (*i)->m_whitespaceElements.begin(), (*i)->m_whitespaceElements.end()); { WhitespaceElementsVectorType temp(getMemoryManager()); temp.swap((*i)->m_whitespaceElements); } ++i; } } // Call postConstruction() on our own namespaces handler... m_namespacesHandler.postConstruction(constructionContext); { for (ElemTemplateElement* node = m_firstTemplate; node != 0; node = node->getNextSiblingElem()) { node->postConstruction(constructionContext, m_namespacesHandler); } } { for (ElemVariableVectorType::iterator it = m_topLevelVariables.begin(); it != m_topLevelVariables.end(); ++it) { (*it)->postConstruction(constructionContext, m_namespacesHandler); } } addToTable(m_elementPatternTable, m_elementAnyPatternList); addToTable(m_attributePatternTable, m_attributeAnyPatternList); } bool Stylesheet::isAttrOK( const XalanDOMChar* attrName, const AttributeListType& /* atts */, XalanSize_t /* which */, StylesheetConstructionContext& constructionContext) const { // Namespace declarations are OK by definition bool attrOK = equals( attrName, DOMServices::s_XMLNamespace) || startsWith(attrName, DOMServices::s_XMLNamespaceWithSeparator); if(!attrOK) { // Others are OK if their prefix has been // bound to a non-null Namespace URI other than XSLT's const XalanDOMString::size_type indexOfNSSep = indexOf(attrName, XalanUnicode::charColon); if(indexOfNSSep < length(attrName)) { const GetCachedString theGuard(constructionContext); XalanDOMString& prefix = theGuard.get(); prefix.assign(attrName, indexOfNSSep); const XalanDOMString* ns = getNamespaceForPrefixFromStack(prefix); attrOK = ns != 0 && !ns->empty() && *ns != constructionContext.getXSLTNamespaceURI(); } else if (m_XSLTVerDeclared > constructionContext.getXSLTVersionSupported()) { attrOK = true; } } return attrOK; } const XalanDOMString* Stylesheet::getNamespaceFromStack(const XalanDOMChar* nodeName, XalanDOMString& theBuffer) const { assert(nodeName != 0); const XalanDOMString::size_type indexOfNSSep = indexOf(nodeName, XalanUnicode::charColon); if (indexOfNSSep == length(nodeName)) { return getNamespaceForPrefixFromStack(s_emptyString); } else { theBuffer.assign(nodeName, indexOfNSSep); return getNamespaceForPrefixFromStack(theBuffer); } } const XalanDOMString* Stylesheet::getNamespaceForPrefix( const XalanDOMString& prefix, StylesheetConstructionContext& constructionContext) const { const XalanDOMString* const theURI = getNamespaceForPrefix(prefix); if (theURI == 0) { error( constructionContext, XalanMessages::PrefixIsNotDeclared_1Param, constructionContext.getLocatorFromStack(), prefix.c_str()); } return theURI; } const XalanDOMString* Stylesheet::getNamespaceForPrefix( const XalanDOMChar* prefix, StylesheetConstructionContext& constructionContext) const { const GetCachedString theGuard(constructionContext); XalanDOMString& theTemp = theGuard.get(); theTemp.assign(prefix); return getNamespaceForPrefix(theTemp, constructionContext); } bool Stylesheet::getYesOrNo( const XalanDOMChar* aname, const XalanDOMChar* val, StylesheetConstructionContext& constructionContext) const { if(equals(val, Constants::ATTRVAL_YES)) { return true; } else if(equals(val, Constants::ATTRVAL_NO)) { return false; } else { error( constructionContext, XalanMessages::AttributeMustBe_3Params, constructionContext.getLocatorFromStack(), aname, Constants::ATTRVAL_YES.c_str(), Constants::ATTRVAL_NO.c_str()); return false; } } void Stylesheet::addTemplate( ElemTemplate* theTemplate, StylesheetConstructionContext& constructionContext) { assert(theTemplate != 0); if (m_isWrapperless == true) { if (m_firstTemplate != 0) { error( constructionContext, XalanMessages::StylesheetHasWrapperlessTemplate, theTemplate->getLocator()); } else { m_firstTemplate = theTemplate; } } else if (0 == m_firstTemplate) { m_firstTemplate = theTemplate; } else { ElemTemplateElement* next = m_firstTemplate; // Find the last one, then append the new one. while (0 != next) { if (0 == next->getNextSiblingElem()) { next->setNextSiblingElem(theTemplate); theTemplate->setNextSiblingElem(0); // just to play it safe. theTemplate->setPreviousSiblingElem(next); break; } next = next->getNextSiblingElem(); } } // If it's a named template, then we need to // and it to the map of named templates. const XalanQName& theName = theTemplate->getNameAttribute(); if (theName.isEmpty() == false) { if (m_namedTemplates.find(theName) == m_namedTemplates.end()) { m_namedTemplates[theName] = theTemplate; } else { const GetCachedString theGuard(constructionContext); error( constructionContext, XalanMessages::StylesheetHasDuplicateNamedTemplate_1Param, theTemplate->getLocator(), theName.format(theGuard.get()).c_str()); } } // Now, process the match pattern associated with the // template. const XPath* const xp = theTemplate->getMatchPattern(); if (0 != xp) { /* Each string has a list of pattern tables associated with it; if the * string is not in the map, then create a list of pattern tables with one * entry for the string, otherwise add to the existing pattern table list * for that string */ typedef XPath::TargetDataVectorType TargetDataVectorType; TargetDataVectorType data(constructionContext.getMemoryManager()); xp->getTargetData(data); TargetDataVectorType::size_type nTargets = data.size(); if (nTargets != 0) { const GetCachedString theGuard(constructionContext); XalanDOMString& tempString = theGuard.get(); for (TargetDataVectorType::size_type i = 0; i < nTargets; ++i) { assert(data[i].getString() != 0); tempString = data[i].getString(); const XalanMatchPatternData* const newMatchPat = constructionContext.createXalanMatchPatternData( *theTemplate, m_patternCount, tempString, *xp, xp->getExpression().getCurrentPattern(), data[i].getDefaultPriority()); ++m_patternCount; // Always put things on the front of the list, so // templates later in the stylesheet are always // selected first. if (equals(tempString, XPath::PSEUDONAME_TEXT) == true) { addToList(m_textPatternList, newMatchPat); } else if (equals(tempString, XPath::PSEUDONAME_COMMENT) == true) { addToList(m_commentPatternList, newMatchPat); } else if (equals(tempString, XPath::PSEUDONAME_ROOT) == true) { addToList(m_rootPatternList, newMatchPat); } else if (equals(tempString, XPath::PSEUDONAME_PI) == true) { addToList(m_piPatternList, newMatchPat); } else if (equals(tempString, XPath::PSEUDONAME_NODE) == true) { addToList(m_nodePatternList, newMatchPat); addToList(m_elementAnyPatternList, newMatchPat); addToList(m_attributeAnyPatternList, newMatchPat); addToList(m_commentPatternList, newMatchPat); addToList(m_textPatternList, newMatchPat); addToList(m_piPatternList, newMatchPat); } else if (equals(tempString, XPath::PSEUDONAME_ANY) == true) { if (data[i].getTargetType() == XPath::TargetData::eElement) { addToList(m_elementAnyPatternList, newMatchPat); } else if (data[i].getTargetType() == XPath::TargetData::eAttribute) { addToList(m_attributeAnyPatternList, newMatchPat); } else if (data[i].getTargetType() == XPath::TargetData::eAny) { addToList(m_elementAnyPatternList, newMatchPat); addToList(m_attributeAnyPatternList, newMatchPat); } } else { if (data[i].getTargetType() == XPath::TargetData::eElement) { addToList(m_elementPatternTable[tempString], newMatchPat); } else if (data[i].getTargetType() == XPath::TargetData::eAttribute) { addToList(m_attributePatternTable[tempString], newMatchPat); } } } } } } const ElemTemplate* Stylesheet::findNamedTemplate(const XalanQName& qname) const { const ElemTemplateMapType::const_iterator it = m_namedTemplates.find(qname); if(it != m_namedTemplates.end()) { return (*it).second; } else { const ElemTemplate* namedTemplate = 0; // Look for the template in the imports const StylesheetVectorType::size_type importsCount = m_imports.size(); for(StylesheetVectorType::size_type i = 0; i < importsCount; ++i) { const Stylesheet* const stylesheet = m_imports[i]; namedTemplate = stylesheet->findNamedTemplate(qname); if(0 != namedTemplate) break; } return namedTemplate; } } void Stylesheet::addObjectIfNotFound( const XalanMatchPatternData* thePattern, PatternTableVectorType& theVector) { XALAN_USING_STD(find) const PatternTableVectorType::const_iterator theResult = find( theVector.begin(), theVector.end(), thePattern); // Did we find it? if(theResult == theVector.end()) { theVector.push_back(thePattern); } } inline void Stylesheet::addObjectIfNotFound( const XalanMatchPatternData* thePattern, const XalanMatchPatternData* thePatternArray[], XalanSize_t& thePatternArraySize) { assert(thePattern != 0 && thePatternArray != 0); if (thePatternArraySize == 0) { thePatternArray[0] = thePattern; ++thePatternArraySize; } else { XalanSize_t i = 0; while(i < thePatternArraySize) { if (thePatternArray[i] != thePattern) { ++i; } else { break; } } if (i == thePatternArraySize) { thePatternArray[thePatternArraySize++] = thePattern; } } } inline const Stylesheet::PatternTableVectorType* Stylesheet::locateElementMatchPatternDataList(const XalanDOMString& theName) const { assert(m_elementPatternTableEnd == m_elementPatternTable.end()); const PatternTableMapType::const_iterator i = m_elementPatternTable.find(theName); if (i != m_elementPatternTableEnd) { return &(*i).second; } else { return &m_elementAnyPatternList; } } inline const Stylesheet::PatternTableVectorType* Stylesheet::locateAttributeMatchPatternDataList(const XalanDOMString& theName) const { assert(m_attributePatternTableEnd == m_attributePatternTable.end()); const PatternTableMapType::const_iterator i = m_attributePatternTable.find(theName); if (i != m_attributePatternTableEnd) { return &(*i).second; } else { return &m_attributeAnyPatternList; } } inline const Stylesheet::PatternTableVectorType* Stylesheet::locateMatchPatternDataList( const XalanNode& theNode, XalanNode::NodeType targetNodeType) const { assert(theNode.getNodeType() == targetNodeType); switch(targetNodeType) { case XalanNode::ELEMENT_NODE: return locateElementMatchPatternDataList(DOMServices::getLocalNameOfNode(theNode)); break; case XalanNode::PROCESSING_INSTRUCTION_NODE: return &m_piPatternList; break; case XalanNode::ATTRIBUTE_NODE: if ((DOMServices::isNamespaceDeclaration(static_cast(theNode)) == true)) { return &s_emptyTemplateList; } else { return locateAttributeMatchPatternDataList(DOMServices::getLocalNameOfNode(theNode)); } break; case XalanNode::CDATA_SECTION_NODE: case XalanNode::TEXT_NODE: return &m_textPatternList; break; case XalanNode::COMMENT_NODE: return &m_commentPatternList; break; case XalanNode::DOCUMENT_NODE: case XalanNode::DOCUMENT_FRAGMENT_NODE: return &m_rootPatternList; break; default: break; } return &m_nodePatternList; } inline const ElemTemplate* Stylesheet::findTemplateInImports( StylesheetExecutionContext& executionContext, XalanNode* targetNode, XalanNode::NodeType targetNodeType, const XalanQName& mode) const { assert(targetNode->getNodeType() == targetNodeType); assert(m_importsSize == m_imports.size()); for(StylesheetVectorType::size_type i = 0; i < m_importsSize; i++) { const Stylesheet* const stylesheet = m_imports[i]; const ElemTemplate* const bestMatchedRule = stylesheet->findTemplate( executionContext, targetNode, targetNodeType, mode, false); if(bestMatchedRule != 0) { return bestMatchedRule; } } return 0; } const ElemTemplate* Stylesheet::findTemplate( StylesheetExecutionContext& executionContext, XalanNode* targetNode, XalanNode::NodeType targetNodeType, const XalanQName& mode, bool onlyUseImports) const { assert(targetNode != 0); assert(targetNode->getNodeType() == targetNodeType); if(m_isWrapperless == true) { return m_firstTemplate; } else if (onlyUseImports == true) { return findTemplateInImports(executionContext, targetNode, targetNodeType, mode); } else { const ElemTemplate* bestMatchedRule = 0; if (executionContext.getQuietConflictWarnings() == true) { // Points to the current list of match patterns. Note // that this may point to more than one table. const PatternTableVectorType* matchPatternList = locateMatchPatternDataList(*targetNode, targetNodeType); assert(matchPatternList != 0); PatternTableVectorType::const_iterator theCurrentEntry = matchPatternList->begin(); const PatternTableVectorType::const_iterator theTableEnd = matchPatternList->end(); while (theCurrentEntry != theTableEnd) { const XalanMatchPatternData* matchPat = *theCurrentEntry; assert(matchPat != 0); const ElemTemplate* const rule = matchPat->getTemplate(); assert(rule != 0); // We'll be needing to match rules according to what // mode we're in. const XalanQName& ruleMode = rule->getMode(); // The logic here should be that if we are not in a mode AND // the rule does not have a node, then go ahead. // OR if we are in a mode, AND the rule has a node, // AND the rules match, then go ahead. const bool haveMode = !mode.isEmpty(); const bool haveRuleMode = !ruleMode.isEmpty(); if ((!haveMode && !haveRuleMode) || (haveMode && haveRuleMode && ruleMode.equals(mode))) { const XPath* const xpath = matchPat->getExpression(); XPath::eMatchScore score = xpath->getMatchScore(targetNode, *this, executionContext); if(XPath::eMatchScoreNone != score) { bestMatchedRule = rule; break; } } ++theCurrentEntry; } if(0 == bestMatchedRule) { bestMatchedRule = findTemplateInImports(executionContext, targetNode, targetNodeType, mode); } } else { const PatternTableVectorType* matchPatternList = locateMatchPatternDataList(*targetNode, targetNodeType); assert(matchPatternList != 0); PatternTableVectorType::const_iterator theCurrentEntry = matchPatternList->begin(); const PatternTableVectorType::const_iterator theTableEnd = matchPatternList->end(); if (theCurrentEntry != theTableEnd) { const XalanMatchPatternData* bestMatchedPattern = 0; // Syncs with bestMatchedRule const double matchScoreNoneValue = XPath::getMatchScoreValue(XPath::eMatchScoreNone); double bestMatchPatPriority = matchScoreNoneValue; XalanSize_t nConflicts = 0; // Use a stack-based array when possible... const XalanMatchPatternData* conflictsArray[100]; XalanVector conflictsVector(executionContext.getMemoryManager()); const XalanMatchPatternData** conflicts = 0; const XalanDOMString* prevPat = 0; const XalanMatchPatternData* prevMatchPat = 0; do { const XalanMatchPatternData* matchPat = *theCurrentEntry; double matchPatPriority = matchScoreNoneValue; assert(matchPat != 0); const ElemTemplate* const rule = matchPat->getTemplate(); assert(rule != 0); // We'll be needing to match rules according to what // mode we're in. const XalanQName& ruleMode = rule->getMode(); // The logic here should be that if we are not in a mode AND // the rule does not have a node, then go ahead. // OR if we are in a mode, AND the rule has a node, // AND the rules match, then go ahead. const bool haveMode = !mode.isEmpty(); const bool haveRuleMode = !ruleMode.isEmpty(); if ((!haveMode && !haveRuleMode) || (haveMode && haveRuleMode && ruleMode.equals(mode))) { const XalanDOMString* patterns = matchPat->getPattern(); assert(patterns != 0); if(!patterns->empty() && !(prevMatchPat != 0 && (prevPat != 0 && equals(*prevPat, *patterns)) && prevMatchPat->getTemplate()->getPriority() == matchPat->getTemplate()->getPriority())) { prevPat = patterns; prevMatchPat = matchPat; matchPatPriority = matchScoreNoneValue; const XPath* const xpath = matchPat->getExpression(); XPath::eMatchScore score = xpath->getMatchScore(targetNode, *this, executionContext); if(XPath::eMatchScoreNone != score) { const double priorityVal = rule->getPriority(); const double priorityOfRule = (matchScoreNoneValue != priorityVal) ? priorityVal : XPath::getMatchScoreValue(score); matchPatPriority = priorityOfRule; const double priorityOfBestMatched = (0 != bestMatchedPattern) ? bestMatchPatPriority : matchScoreNoneValue; if(priorityOfRule > priorityOfBestMatched) { nConflicts = 0; bestMatchedRule = rule; bestMatchedPattern = matchPat; bestMatchPatPriority = matchPatPriority; } else if(priorityOfRule == priorityOfBestMatched) { if (conflicts == 0) { if (m_patternCount > sizeof(conflictsArray) / sizeof(conflictsArray[0])) { conflictsVector.resize(m_patternCount); conflicts = conflictsVector.begin(); } else { conflicts = conflictsArray; } } assert(conflicts != 0); // Add the best matched pattern so far. addObjectIfNotFound(bestMatchedPattern, conflicts, nConflicts); // Add the pattern that caused the conflict... conflicts[nConflicts++] = matchPat; bestMatchedRule = rule; bestMatchedPattern = matchPat; bestMatchPatPriority = matchPatPriority; } } } } ++theCurrentEntry; } while(theCurrentEntry != theTableEnd); if(nConflicts > 0) { assert(conflicts != 0 && nConflicts <= m_patternCount); // Since the templates are arranged by their // priority and reverse order in the stylesheet, // the template with the highest priority that // was last in the stylesheet will be the // first one in the array. bestMatchedPattern = conflicts[0]; bestMatchedRule = bestMatchedPattern->getTemplate(); const StylesheetExecutionContext::GetCachedString theGuard(executionContext); executionContext.problem( StylesheetExecutionContext::eXSLTProcessor, StylesheetExecutionContext::eWarning, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::ConflictsFound), bestMatchedRule->getLocator(), targetNode); } } if (0 == bestMatchedRule) { bestMatchedRule = findTemplateInImports(executionContext, targetNode, targetNodeType, mode); } } return bestMatchedRule; } } void Stylesheet::processExtensionNamespace( StylesheetConstructionContext& theConstructionContext, const XalanDOMString& uri) { XalanMemMgrAutoPtr theGuard( theConstructionContext.getMemoryManager(), ExtensionNSHandler::create( uri, theConstructionContext.getMemoryManager())); m_extensionNamespaces.insert(uri, theGuard.get()); theGuard.release(); m_namespacesHandler.addExtensionNamespaceURI(theConstructionContext, uri); } void Stylesheet::pushTopLevelVariables( StylesheetExecutionContext& executionContext, const ParamVectorType& topLevelParams) const { { // First, push any imports... const StylesheetVectorType::const_reverse_iterator rend = m_imports.rend(); for (StylesheetVectorType::const_reverse_iterator i = m_imports.rbegin(); i != rend; ++i) { const Stylesheet* const stylesheet = *i; assert(stylesheet != 0); stylesheet->pushTopLevelVariables(executionContext, topLevelParams); } } const ParamVectorType::size_type nVars = m_topLevelVariables.size(); for (ParamVectorType::size_type i = 0; i < nVars; ++i) { ElemVariable* const var = m_topLevelVariables[i]; bool isParam = StylesheetConstructionContext::ELEMNAME_PARAM == var->getXSLToken(); if(isParam == true) { isParam = false; const ParamVectorType::size_type n = topLevelParams.size(); for(ParamVectorType::size_type k = 0; k < n; k++) { const ParamVectorType::value_type& arg = topLevelParams[k]; if(arg.getName().equals(var->getNameAttribute())) { isParam = true; if (arg.getXObject().null() == false) { executionContext.pushVariable( arg.getName(), arg.getXObject(), 0); } else { executionContext.pushVariable( arg.getName(), 0, arg.getExpression(), executionContext.getRootDocument(), *this); } break; } } } if (isParam == false) { executionContext.pushVariable(var->getNameAttribute(), var, var->getParentNodeElem()); } } } void Stylesheet::processNSAliasElement( const XalanDOMChar* name, const AttributeListType& atts, StylesheetConstructionContext& constructionContext) { const XalanSize_t nAttrs = atts.getLength(); const XalanDOMString* stylesheetNamespace = 0; const XalanDOMString* resultNamespace = 0; for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (aname == Constants::ATTRNAME_STYLESHEET_PREFIX) { const XalanDOMChar* const value = atts.getValue(i); if (equals(value, Constants::ATTRVAL_DEFAULT_PREFIX) == true) { stylesheetNamespace = getNamespaceForPrefix( DOMServices::s_emptyString, constructionContext); } else { stylesheetNamespace = getNamespaceForPrefix( value, constructionContext); } } else if (aname == Constants::ATTRNAME_RESULT_PREFIX) { const XalanDOMChar* const value = atts.getValue(i); if (equals(value, Constants::ATTRVAL_DEFAULT_PREFIX) == true) { resultNamespace = getNamespaceForPrefix( DOMServices::s_emptyString, constructionContext); } else { resultNamespace = getNamespaceForPrefix( value, constructionContext); } } else if (!isAttrOK(aname, atts, i, constructionContext)) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, constructionContext.getLocatorFromStack(), name, aname); } } // Build a table of aliases, the key is the stylesheet uri and the // value is the result uri if (stylesheetNamespace == 0) { error( constructionContext, XalanMessages::ElementMustHaveAttribute_2Param, constructionContext.getLocatorFromStack(), name, Constants::ATTRNAME_STYLESHEET_PREFIX.c_str()); } else if (resultNamespace == 0) { error( constructionContext, XalanMessages::ElementMustHaveAttribute_2Param, constructionContext.getLocatorFromStack(), name, Constants::ATTRNAME_RESULT_PREFIX.c_str()); } else { assert(stylesheetNamespace->empty() == false && resultNamespace->empty() == false); m_namespacesHandler.setNamespaceAlias( constructionContext, *stylesheetNamespace, *resultNamespace); } } void Stylesheet::processDecimalFormatElement( StylesheetConstructionContext& constructionContext, const AttributeListType& atts, const Locator* locator) { const XalanFileLoc lineNumber = XalanLocator::getLineNumber(locator); const XalanFileLoc columnNumber = XalanLocator::getColumnNumber(locator); m_elemDecimalFormats.reserve(m_elemDecimalFormats.size() + 1); ElemDecimalFormat* theInstance; XalanConstruct( constructionContext.getMemoryManager(), theInstance, constructionContext, *this, atts, lineNumber, columnNumber); m_elemDecimalFormats.push_back(theInstance); } const XalanDecimalFormatSymbols* Stylesheet::getDecimalFormatSymbols(const XalanQName& theQName) const { const XalanDecimalFormatSymbols* dfs = 0; const ElemDecimalFormatVectorType::size_type theSize = m_elemDecimalFormats.size(); if (theSize > 0) { // Start from the top of the stack for (ElemDecimalFormatVectorType::size_type i = theSize; i > 0; --i) { assert(m_elemDecimalFormats[i - 1] != 0); const ElemDecimalFormat* const theCurrent = m_elemDecimalFormats[i - 1]; assert(theCurrent != 0); if (theCurrent->getQName().equals(theQName) == true) { dfs = &theCurrent->getDecimalFormatSymbols(); break; } } } // If dfs is null at this point, it should // mean there wasn't an xsl:decimal-format declared // with the given name. So go up the import hierarchy // and see if one of the imported stylesheets declared // it. if (dfs == 0) { for (StylesheetVectorType::size_type i = 0; i < m_importsSize; ++i) { dfs = m_imports[i]->getDecimalFormatSymbols(theQName); if (dfs != 0) { break; } } } return dfs; } const XalanDOMString* Stylesheet::getNamespaceForPrefix(const XalanDOMString& prefix) const { return XalanQName::getNamespaceForPrefix(m_namespaceDecls, prefix); } const XalanDOMString& Stylesheet::getURI() const { return m_baseIdent; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemNumber.cpp0000664000175000000640000017556711731656103017611 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemNumber.hpp" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "AVT.hpp" #include "Constants.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemNumber::ElemNumber( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber, unsigned long id) : ElemTemplateElement(constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_NUMBER), m_countMatchPattern(0), m_fromMatchPattern(0), m_valueExpr(0), m_level(eSingle), m_format_avt(0), m_lang_avt(0), m_lettervalue_avt(0), m_groupingSeparator_avt(0), m_groupingSize_avt(0), m_id(id) { const XalanSize_t nAttrs = atts.getLength(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (equals(aname, s_levelString)) { const XalanDOMChar* const levelValue = atts.getValue(i); if (equals(s_multipleString, levelValue)) { m_level = eMultiple; } else if (equals(s_anyString, levelValue)) { m_level = eAny; } else if (equals(s_singleString, levelValue)) { m_level = eSingle; } else { error( constructionContext, XalanMessages::ElementHasIllegalAttributeValue_3Param, Constants::ELEMNAME_NUMBER_WITH_PREFIX_STRING.c_str(), aname, levelValue); } } else if (equals(aname, Constants::ATTRNAME_COUNT)) { m_countMatchPattern = constructionContext.createMatchPattern(getLocator(), atts.getValue(i), *this); } else if (equals(aname, Constants::ATTRNAME_FROM)) { m_fromMatchPattern = constructionContext.createMatchPattern(getLocator(), atts.getValue(i), *this); } else if (equals(aname, Constants::ATTRNAME_VALUE)) { m_valueExpr = constructionContext.createXPath(getLocator(), atts.getValue(i), *this); } else if (equals(aname, Constants::ATTRNAME_FORMAT)) { m_format_avt = constructionContext.createAVT(getLocator(), aname, atts.getValue(i), *this); } else if (equals(aname, Constants::ATTRNAME_LANG)) { m_lang_avt = constructionContext.createAVT(getLocator(), aname, atts.getValue(i), *this); } else if (equals(aname, Constants::ATTRNAME_LETTERVALUE)) { m_lettervalue_avt = constructionContext.createAVT(getLocator(), aname, atts.getValue(i), *this); } else if (equals(aname,Constants::ATTRNAME_GROUPINGSEPARATOR)) { m_groupingSeparator_avt = constructionContext.createAVT(getLocator(), aname, atts.getValue(i), *this); } else if (equals(aname,Constants::ATTRNAME_GROUPINGSIZE)) { m_groupingSize_avt = constructionContext.createAVT(getLocator(), aname, atts.getValue(i), *this); } else if (isAttrOK( aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_NUMBER_WITH_PREFIX_STRING.c_str(), aname); } } } ElemNumber* ElemNumber::create( MemoryManager& theManager, StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber, unsigned long id) { typedef ElemNumber ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( constructionContext, stylesheetTree, atts, lineNumber, columnNumber, id); theGuard.release(); return theResult; } ElemNumber::~ElemNumber() { } const XalanDOMString& ElemNumber::getElementName() const { return Constants::ELEMNAME_NUMBER_WITH_PREFIX_STRING; } typedef XPathExecutionContext::GetCachedString GetCachedString; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemNumber::startElement(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::startElement(executionContext); const GetCachedString theGuard(executionContext); XalanDOMString& countString = theGuard.get(); getCountString(executionContext, countString); if (!countString.empty()) { executionContext.characters( countString.c_str(), 0, countString.length()); } return 0; } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemNumber::execute(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::execute(executionContext); const GetCachedString theGuard(executionContext); XalanDOMString& countString = theGuard.get(); getCountString(executionContext, countString); if (!countString.empty()) { executionContext.characters(countString.c_str(), 0, countString.length()); } } #endif XalanNode* ElemNumber::findAncestor( StylesheetExecutionContext& executionContext, const XPath* fromMatchPattern, const XPath* countMatchPattern, XalanNode* context) const { XalanNode* contextCopy = context; while (contextCopy != 0) { if (0 != fromMatchPattern) { if (fromMatchPattern->getMatchScore( contextCopy, *this, executionContext) != XPath::eMatchScoreNone) { break; } } if (0 != countMatchPattern) { if(countMatchPattern->getMatchScore( contextCopy, *this, executionContext) != XPath::eMatchScoreNone) { break; } } contextCopy = DOMServices::getParentOfNode(*contextCopy); } return contextCopy; } XalanNode* ElemNumber::findPrecedingOrAncestorOrSelf( StylesheetExecutionContext& executionContext, const XPath* fromMatchPattern, const XPath* countMatchPattern, XalanNode* context) const { XalanNode* thePos = context; while (thePos != 0) { if (0 != fromMatchPattern) { if (fromMatchPattern->getMatchScore( thePos, *this, executionContext) != XPath::eMatchScoreNone) { thePos = 0; break; } } if (0 != countMatchPattern) { if (countMatchPattern->getMatchScore( thePos, *this, executionContext) != XPath::eMatchScoreNone) { break; } } XalanNode* const previousSibling = thePos->getPreviousSibling(); if (previousSibling == 0) { // Move up to the parent if thePos is the first child // of its parent. Note that we don't descend into the // parent, since that's where we came from. thePos = DOMServices::getParentOfNode(*thePos); } else { thePos = previousSibling; // Descend into the subtree all the way to the // last node, which we reach by looking down // the last child chain. XalanNode* lastChild = thePos->getLastChild(); while (lastChild != 0) { thePos = lastChild; lastChild = thePos->getLastChild(); } } } return thePos; } const XPath* ElemNumber::getCountMatchPattern( StylesheetExecutionContext& executionContext, XalanNode* contextNode) const { const XPath* countMatchPattern = 0; switch (contextNode->getNodeType()) { case XalanNode::ELEMENT_NODE: { // Check to see if we have any fiddling to do with the match pattern // we create... const XalanDOMString& theNamespaceURI = contextNode->getNamespaceURI(); const XalanDOMString& theNodeName = contextNode->getNodeName(); if (theNamespaceURI.empty() == true) { // We can pass any PrefixResolver instance, so just // pass ourself... countMatchPattern = executionContext.createMatchPattern(theNodeName, *this); } else if (theNodeName.length() != contextNode->getLocalName().length()) { // OK, there's a prefix, so create a prefix resolver so the // prefix can be properly resolved... const XalanElement* const theElement = static_cast(contextNode); const ElementPrefixResolverProxy theProxy( theElement, executionContext.getMemoryManager()); countMatchPattern = executionContext.createMatchPattern(theNodeName, theProxy); } else { // OK, this is ugly. We have to get a unique prefix and // construct a match pattern with that prefix... const GetCachedString thePrefix(executionContext); executionContext.getUniqueNamespaceValue(thePrefix.get()); const GetCachedString theMatchPatternString(executionContext); theMatchPatternString.get().assign(thePrefix.get()); theMatchPatternString.get().append(1, XalanUnicode::charColon); theMatchPatternString.get().append(theNodeName); // Use this class to resolve the synthesized prefix to the // appropriate namespace URI. We could see if a prefix is // already in scope for the namespace URI, but it would take // more effort to find that out than it would to just // create this simple resolver. const XalanSimplePrefixResolver theResolver( thePrefix.get(), theNamespaceURI, getURI()); countMatchPattern = executionContext.createMatchPattern( theMatchPatternString.get(), theResolver); } } break; case XalanNode::ATTRIBUTE_NODE: { const XalanAttr* const theAttribute = static_cast(contextNode); assert(theAttribute->getOwnerElement() != 0); const XalanDOMString& theNodeName = theAttribute->getNodeName(); const ElementPrefixResolverProxy theProxy(theAttribute->getOwnerElement(), executionContext.getMemoryManager()); const GetCachedString theMatchPatternString(executionContext); theMatchPatternString.get().assign(s_atString); theMatchPatternString.get().append(theNodeName); countMatchPattern = executionContext.createMatchPattern( theMatchPatternString.get(), theProxy); } break; case XalanNode::CDATA_SECTION_NODE: case XalanNode::TEXT_NODE: countMatchPattern = executionContext.createMatchPattern( s_textString, *this); break; case XalanNode::COMMENT_NODE: countMatchPattern = executionContext.createMatchPattern( s_commentString, *this); break; case XalanNode::DOCUMENT_NODE: countMatchPattern = executionContext.createMatchPattern( s_slashString, *this); break; case XalanNode::PROCESSING_INSTRUCTION_NODE: { const GetCachedString theMatchPatternString(executionContext); theMatchPatternString.get() = s_piString; theMatchPatternString.get().append(contextNode->getNodeName()); theMatchPatternString.get().append(1, XalanUnicode::charRightParenthesis); countMatchPattern = executionContext.createMatchPattern( theMatchPatternString.get(), *this); } break; default: break; } return countMatchPattern; } inline void ElemNumber::getCountString( StylesheetExecutionContext& executionContext, const MutableNodeRefList& ancestors, CountersTable& ctable, CountType numberList[], NodeRefListBase::size_type numberListLength, XalanDOMString& theResult) const { for (NodeRefListBase::size_type i = 0; i < numberListLength; i++) { XalanNode* const target = ancestors.item(numberListLength - i - 1); numberList[i] = ctable.countNode( executionContext, *this, target); } formatNumberList( executionContext, numberList, numberListLength, theResult); } void ElemNumber::getCountString( StylesheetExecutionContext& executionContext, XalanDOMString& theResult) const { XalanNode* sourceNode = executionContext.getCurrentNode(); assert(sourceNode != 0); if (0 != m_valueExpr) { double theValue; m_valueExpr->execute(*this, executionContext, theValue); // Note these checks are in a specific order... if (DoubleSupport::isNaN(theValue) == true || DoubleSupport::isPositiveInfinity(theValue) == true || DoubleSupport::isNegativeInfinity(theValue) == true || DoubleSupport::lessThan(theValue, 0.5) == true) { NumberToDOMString(theValue, theResult); } else { const CountType theNumber = CountType(DoubleSupport::round(theValue)); formatNumberList( executionContext, &theNumber, 1, theResult); } } else { CountersTable& ctable = executionContext.getCountersTable(); if (eAny == m_level) { const CountType theNumber = ctable.countNode(executionContext, *this, sourceNode); if (theNumber != 0) { formatNumberList( executionContext, &theNumber, 1, theResult); } } else { typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList ancestors(executionContext); getMatchingAncestors( executionContext, sourceNode, eSingle == m_level, *ancestors.get()); const NodeRefListBase::size_type lastIndex = ancestors->getLength(); if (lastIndex > 0) { const NodeRefListBase::size_type theStackArrayThreshold = 100; if (lastIndex < theStackArrayThreshold) { CountType numberList[theStackArrayThreshold]; getCountString( executionContext, *ancestors.get(), ctable, numberList, lastIndex, theResult); } else { CountTypeArrayType numberList(executionContext.getMemoryManager()); numberList.resize(lastIndex, 0); getCountString( executionContext, *ancestors.get(), ctable, &*numberList.begin(), lastIndex, theResult); } } } } } XalanNode* ElemNumber::getPreviousNode( StylesheetExecutionContext& executionContext, XalanNode* pos) const { // Create an XPathGuard, since we may need to // create a new XPath... StylesheetExecutionContext::XPathGuard xpathGuard( executionContext); const XPath* countMatchPattern = m_countMatchPattern; if (countMatchPattern == 0) { // Get the XPath... xpathGuard.reset(getCountMatchPattern(executionContext, pos)); countMatchPattern = xpathGuard.get(); } if (eAny == m_level) { const XPath* const fromMatchPattern = m_fromMatchPattern; // Do a backwards document-order walk 'till a node is found that matches // the 'from' pattern, or a node is found that matches the 'count' pattern, // or the top of the tree is found. while(0 != pos) { // Get the previous sibling, if there is no previous sibling, // then count the parent, but if there is a previous sibling, // dive down to the lowest right-hand (last) child of that sibling. XalanNode* next = pos->getPreviousSibling(); if(0 == next) { next = pos->getParentNode(); if(0 != next && next->getNodeType() == XalanNode::DOCUMENT_NODE || (0 != fromMatchPattern && fromMatchPattern->getMatchScore( next, *this, executionContext) != XPath::eMatchScoreNone)) { pos = 0; // return 0 from function. break; // from while loop } } else { // dive down to the lowest right child. XalanNode* child = next; while(0 != child) { child = next->getLastChild(); if(0 != child) next = child; } } pos = next; if(0 != pos && (0 == countMatchPattern || countMatchPattern->getMatchScore( pos, *this, executionContext) != XPath::eMatchScoreNone)) { break; } } } else // NUMBERLEVEL_MULTI or NUMBERLEVEL_SINGLE { while (0 != pos) { pos = pos->getPreviousSibling(); if (0 != pos && (0 == countMatchPattern || countMatchPattern->getMatchScore( pos, *this, executionContext) != XPath::eMatchScoreNone)) { break; } } } return pos; } XalanNode* ElemNumber::getTargetNode( StylesheetExecutionContext& executionContext, XalanNode* sourceNode) const { XalanNode* target = 0; // Create an XPathGuard, since we may need to // create a new XPath... StylesheetExecutionContext::XPathGuard xpathGuard( executionContext); const XPath* countMatchPattern = m_countMatchPattern; if (countMatchPattern == 0) { // Get the XPath... xpathGuard.reset(getCountMatchPattern(executionContext, sourceNode)); countMatchPattern = xpathGuard.get(); } if (eAny == m_level) { target = findPrecedingOrAncestorOrSelf( executionContext, m_fromMatchPattern, countMatchPattern, sourceNode); } else { target = findAncestor( executionContext, m_fromMatchPattern, countMatchPattern, sourceNode); } return target; } void ElemNumber::getMatchingAncestors( StylesheetExecutionContext& executionContext, XalanNode* node, bool stopAtFirstFound, MutableNodeRefList& ancestors) const { // Create an XPathGuard, since we may need to // create a new XPath... StylesheetExecutionContext::XPathGuard xpathGuard(executionContext); const XPath* countMatchPattern = m_countMatchPattern; if (countMatchPattern == 0) { // Get the XPath... xpathGuard.reset(getCountMatchPattern(executionContext, node)); countMatchPattern = xpathGuard.get(); } while (0 != node) { if (0 != m_fromMatchPattern && m_fromMatchPattern->getMatchScore( node, *this, executionContext) != XPath::eMatchScoreNone) { // The following if statement gives level="single" different // behavior from level="multiple", which seems incorrect according // to the XSLT spec. For now we are leaving this in to replicate // the same behavior in XT, but, for all intents and purposes we // think this is a bug, or there is something about level="single" // that we still don't understand. if(!stopAtFirstFound) { break; } } assert(0 != countMatchPattern); if(countMatchPattern->getMatchScore(node, *this, executionContext) != XPath::eMatchScoreNone) { ancestors.addNode(node); if (stopAtFirstFound) { break; } } node = DOMServices::getParentOfNode(*node); } } XalanNumberFormat* ElemNumber::getNumberFormatter(StylesheetExecutionContext& executionContext) const { // Helper to format local specific numbers to strings. XalanMemMgrAutoPtr formatter(executionContext.createXalanNumberFormat()); typedef XPathExecutionContext::GetCachedString GetCachedString; const GetCachedString theGuard1(executionContext); XalanDOMString& digitGroupSepValue = theGuard1.get(); if (0 != m_groupingSeparator_avt) { m_groupingSeparator_avt->evaluate(digitGroupSepValue, *this, executionContext); } if (digitGroupSepValue.length() > 1) { error( executionContext, XalanMessages::GroupingSeparatorValueMustBeOneCharacterLength); } GetCachedString theGuard2(executionContext); XalanDOMString& nDigitsPerGroupValue = theGuard2.get(); if (0 != m_groupingSize_avt) { m_groupingSize_avt->evaluate(nDigitsPerGroupValue, *this, executionContext); } // 7.7.1 If one is empty, it is ignored (numb81 conf test) if (!digitGroupSepValue.empty() && !nDigitsPerGroupValue.empty()) { formatter->setGroupingUsed(true); formatter->setGroupingSeparator(digitGroupSepValue); formatter->setGroupingSize(DOMStringToUnsignedLong(nDigitsPerGroupValue)); } return formatter.releasePtr(); } void ElemNumber::formatNumberList( StylesheetExecutionContext& executionContext, const CountType theList[], NodeRefListBase::size_type theListLength, XalanDOMString& theResult) const { XalanDOMChar numberType = XalanUnicode::charDigit_1; XalanDOMString::size_type numberWidth = 1; typedef XalanVector StringVectorType; typedef StringVectorType::iterator StringVectorTypeIterator; // Construct an array of tokens. We need to be able to check if the last // token in non-alphabetic, in which case the penultimate non-alphabetic is // the repeating separator. // // We should be able to replace this with a vector of the indexes in // the evaluated string where the tokens start. But for now, this will // have to do... StringVectorType tokenVector(executionContext. getMemoryManager()) ; { const GetCachedString theGuard1(executionContext); XalanDOMString& formatValue = theGuard1.get(); if (m_format_avt != 0) { m_format_avt->evaluate(formatValue, *this, executionContext); } if (formatValue.empty() == true) { formatValue = XalanUnicode::charDigit_1; } NumberFormatStringTokenizer formatTokenizer(formatValue); const NumberFormatStringTokenizer::size_type theTokenCount = formatTokenizer.countTokens(); tokenVector.resize(theTokenCount); // Tokenize directly into the vector... for (NumberFormatStringTokenizer::size_type i = 0; i < theTokenCount; ++i) { formatTokenizer.nextToken(tokenVector[i]); } assert(theTokenCount == tokenVector.size()); } // These are iterators which will either point to tokenVector.end(), // or the appropriate string in the vector... StringVectorTypeIterator leaderStrIt = tokenVector.end(); StringVectorTypeIterator trailerStrIt = leaderStrIt; StringVectorTypeIterator sepStringIt = leaderStrIt; const StringVectorTypeIterator endIt = leaderStrIt; StringVectorTypeIterator it = tokenVector.begin(); const StringVectorType::size_type theVectorSize = tokenVector.size(); if (theVectorSize > 0) { if (!isXMLLetterOrDigit((*it)[0])) { leaderStrIt = it; // Move the iterator up one, so it // points at the first numbering token... ++it; } if (theVectorSize > 1) { if (!isXMLLetterOrDigit(tokenVector.back()[0])) { // Move the iterator back one, so it's pointing // at the trailing string... --trailerStrIt; } } } // Now we're left with a sequence of alpha,non-alpha tokens, format them // with the corresponding entry in the format string, or the last one if no // more matching ones if (leaderStrIt != endIt) { theResult += *leaderStrIt; } const GetCachedString theGuard2(executionContext); XalanDOMString& theIntermediateResult = theGuard2.get(); for (NodeRefListBase::size_type i = 0; i < theListLength; i++) { if (it != trailerStrIt) { assert(isXMLLetterOrDigit((*it)[0])); numberWidth = it->length(); numberType = (*it)[numberWidth - 1]; ++it; } if (it != trailerStrIt) { assert(!isXMLLetterOrDigit((*it)[0])); sepStringIt = it; ++it; } getFormattedNumber( executionContext, numberType, numberWidth, theList[i], theIntermediateResult); theResult += theIntermediateResult; // All but the last one if (i < theListLength - 1) { if (sepStringIt != endIt) { theResult += *sepStringIt; } else { theResult += XalanUnicode::charFullStop; } theIntermediateResult.clear(); } } if (trailerStrIt != endIt) { theResult += *trailerStrIt; } } void ElemNumber::evaluateLetterValueAVT( StylesheetExecutionContext& executionContext, XalanDOMString& value) const { if (m_lettervalue_avt == 0) { value.clear(); } else { m_lettervalue_avt->evaluate( value, *this, executionContext); } } void ElemNumber::traditionalAlphaCount( CountType theValue, const XalanNumberingResourceBundle& theResourceBundle, XalanDOMString& theResult) const { typedef XalanNumberingResourceBundle::NumberTypeVectorType NumberTypeVectorType; typedef XalanNumberingResourceBundle::DigitsTableVectorType DigitsTableVectorType; typedef XalanNumberingResourceBundle::eNumberingMethod eNumberingMethod; typedef XalanNumberingResourceBundle::eMultiplierOrder eMultiplierOrder; bool fError = false; // if this number is larger than the largest number we can represent, error! //if (val > theResourceBundle.getMaxNumericalValue()) //return XSLTErrorResources.ERROR_STRING; XalanDOMCharVectorType table(theResult.getMemoryManager()); // index in table of the last character that we stored NumberTypeVectorType::size_type lookupIndex = 1; // start off with anything other than zero to make correction work // Create a buffer to hold the result // TODO: size of the table can be determined by computing // logs of the radix. For now, we fake it. XalanDOMChar buf[100]; //some languages go left to right(ie. english), right to left (ie. Hebrew), //top to bottom (ie.Japanese), etc... Handle them differently //String orientation = thisBundle.getString(Constants.LANG_ORIENTATION); // next character to set in the buffer XalanDOMString::size_type charPos = 0; // array of number groups: ie.1000, 100, 10, 1 const NumberTypeVectorType& groups = theResourceBundle.getNumberGroups(); const NumberTypeVectorType::size_type groupsSize = groups.size(); // array of tables of hundreds, tens, digits. Indexes into the vectors // in the digits table. const NumberTypeVectorType& tables = theResourceBundle.getDigitsTableTable(); const DigitsTableVectorType& digitsTable = theResourceBundle.getDigitsTable(); assert(tables.size() == digitsTable.size()); // some languages have additive alphabetical notation, // some multiplicative-additive, etc... Handle them differently. const eNumberingMethod numbering = theResourceBundle.getNumberingMethod(); // do multiplicative part first if (numbering == XalanNumberingResourceBundle::eMultiplicativeAdditive) { const eMultiplierOrder mult_order = theResourceBundle.getMultiplierOrder(); const NumberTypeVectorType& multiplier = theResourceBundle.getMultipliers(); const NumberTypeVectorType::size_type multiplierSize = multiplier.size(); const XalanDOMCharVectorType& zeroChar = theResourceBundle.getZeroChar(); const XalanDOMCharVectorType::size_type zeroCharSize = zeroChar.size(); const XalanDOMCharVectorType& multiplierChars = theResourceBundle.getMultiplierChars(); CountTypeArrayType::size_type i = 0; // skip to correct multiplier while (i < multiplierSize && theValue < multiplier[i]) { ++i; } do { if (i >= multiplierSize) { break; //number is smaller than multipliers } // some languages (ie chinese) put a zero character (and only one) when // the multiplier is multiplied by zero. (ie, 1001 is 1X1000 + 0X100 + 0X10 + 1) // 0X100 is replaced by the zero character, we don't need one for 0X10 if (theValue < multiplier[i]) { if (zeroCharSize == 0) { ++i; } else { if (charPos == 0 || buf[charPos - 1] != zeroChar[0]) { buf[charPos++] = zeroChar[0]; } ++i; } } else if (theValue >= multiplier[i]) { const CountType mult = theValue / multiplier[i]; theValue = theValue % multiplier[i]; // save this. CountTypeArrayType::size_type k = 0; while (k < groupsSize) { lookupIndex = 1; // initialize for each table if (mult / groups[k] <= 0) // look for right table { k++; } else { assert(digitsTable.size() > DigitsTableVectorType::size_type(tables[k])); // get the table const XalanDOMCharVectorType& THEletters = digitsTable[tables[k]]; const XalanDOMCharVectorType::size_type THElettersSize = THEletters.size(); table.resize(THElettersSize + 1); const CountTypeArrayType::size_type tableSize = table.size(); XalanDOMCharVectorType::size_type j = 0; for (; j < THElettersSize; j++) { table[j + 1] = THEletters[j]; } table[0] = THEletters[j - 1]; // don't need this // index in "table" of the next char to emit lookupIndex = mult / groups[k]; //this should not happen if (lookupIndex == 0 && mult == 0) { break; } assert(i < multiplierChars.size()); const XalanDOMChar multiplierChar = multiplierChars[i]; // put out the next character of output if (lookupIndex < tableSize) { if(mult_order == XalanNumberingResourceBundle::ePrecedes) { buf[charPos++] = multiplierChar; buf[charPos++] = table[lookupIndex]; } else { // don't put out 1 (ie 1X10 is just 10) if (lookupIndex == 1 && i == multiplierSize - 1) { } else { buf[charPos++] = table[lookupIndex]; } buf[charPos++] = multiplierChar; } break; // all done! } else { fError = true; break; } } //end else } // end while i++; } // end else if } // end do while while (i < multiplierSize && fError == false); } // Now do additive part... CountTypeArrayType::size_type count = 0; // do this for each table of hundreds, tens, digits... while (count < groupsSize) { if (theValue / groups[count] <= 0) { // look for correct table count++; } else { const XalanDOMCharVectorType& theletters = digitsTable[tables[count]]; const XalanDOMCharVectorType::size_type thelettersSize = theletters.size(); table.resize(thelettersSize + 1); const CountTypeArrayType::size_type tableSize = table.size(); XalanDOMCharVectorType::size_type j = 0; // need to start filling the table up at index 1 for (; j < thelettersSize; j++) { table[j + 1] = theletters[j]; } table[0] = theletters[j - 1]; // don't need this // index in "table" of the next char to emit lookupIndex = theValue / groups[count]; // shift input by one "column" theValue = theValue % groups[count]; // this should not happen if (lookupIndex == 0 && theValue == 0) break; if (lookupIndex < tableSize) { // put out the next character of output buf[charPos++] = table[lookupIndex]; // left to right or top to bottom } else { fError = true; break; } count++; } } // end while if (fError == true) { theResult = s_errorString; } else { theResult.assign(buf, charPos); } } const XalanDOMChar elalphaNumberType = 0x03B1; void ElemNumber::getFormattedNumber( StylesheetExecutionContext& executionContext, XalanDOMChar numberType, XalanDOMString::size_type numberWidth, CountType listElement, XalanDOMString& theResult) const { switch(numberType) { case XalanUnicode::charLetter_A: int2alphaCount(listElement, s_alphaCountTable, s_alphaCountTableSize, theResult); break; case XalanUnicode::charLetter_a: { int2alphaCount(listElement, s_alphaCountTable, s_alphaCountTableSize, theResult); toLowerCaseASCII(theResult); } break; case XalanUnicode::charLetter_I: toRoman(listElement, true, theResult); break; case XalanUnicode::charLetter_i: toRoman(listElement, true, theResult); toLowerCaseASCII(theResult); break; case 0x3042: case 0x3044: case 0x30A2: case 0x30A4: case 0x4E00: case 0x58F9: case 0x0E51: case 0x05D0: case 0x10D0: case 0x0430: { StylesheetExecutionContext::GetCachedString theGuard(executionContext); error( executionContext, XalanMessages::NumberingFormatNotSupported_1Param, NumberToHexDOMString(numberType, theGuard.get())); break; } // Handle the special case of Greek letters for now case elalphaNumberType: { const GetCachedString theGuard(executionContext); XalanDOMString& letterVal = theGuard.get(); evaluateLetterValueAVT(executionContext, letterVal); if (equals(letterVal, s_traditionalString) == true) { traditionalAlphaCount(listElement, s_elalphaResourceBundle, theResult); } else if (equals(letterVal, s_alphabeticString) == true) { int2alphaCount(listElement, s_elalphaCountTable, s_elalphaCountTableSize, theResult); } else { error( executionContext, XalanMessages::LegalValuesForLetterValue); } } break; default: // "1" { StylesheetExecutionContext::XalanNumberFormatAutoPtr formatter( executionContext.getMemoryManager(), getNumberFormatter(executionContext)); formatter->format(listElement, theResult); const XalanDOMString::size_type lengthNumString = theResult.length(); if (numberWidth > lengthNumString) { const XalanDOMString::size_type nPadding = numberWidth - lengthNumString; const GetCachedString theGuard(executionContext); XalanDOMString& padString = theGuard.get(); formatter->format(0, padString); theResult.reserve(nPadding * padString.length() + lengthNumString + 1); for (XalanDOMString::size_type i = 0; i < nPadding; i++) { theResult.insert(0, padString); } } } break; } } void ElemNumber::int2singlealphaCount( CountType val, const XalanDOMString& table, XalanDOMString& theResult) { assert(int(table.length()) == table.length()); const CountType radix = table.length(); // TODO: throw error on out of range input if (val > radix) { theResult = s_errorString; } else { const XalanDOMChar theChar = table[val - 1]; theResult.assign(1, theChar); } } void ElemNumber::int2alphaCount( CountType val, const XalanDOMChar table[], XalanDOMString::size_type length, XalanDOMString& theResult) { assert(length != 0); const CountType radix = length; // Create a buffer to hold the result // TODO: size of the table can be determined by computing // logs of the radix. For now, we fake it. const size_t buflen = 100; XalanDOMChar buf[buflen + 1]; #if defined(XALAN_STRICT_ANSI_HEADERS) std::memset(buf, 0, (buflen + 1) * sizeof(XalanDOMChar)); #else memset(buf, 0, (buflen + 1) * sizeof(XalanDOMChar)); #endif // next character to set in the buffer XalanDOMString::size_type charPos = buflen - 1 ; // work backward through buf[] // index in table of the last character that we stored size_t lookupIndex = 1; // start off with anything other than zero to make correction work // Correction number // // Correction can take on exactly two values: // // 0 if the next character is to be emitted is usual // // radix - 1 // if the next char to be emitted should be one less than // you would expect // // For example, consider radix 10, where 1="A" and 10="J" // // In this scheme, we count: A, B, C ... H, I, J (not A0 and certainly // not AJ), A1 // // So, how do we keep from emitting AJ for 10? After correctly emitting the // J, lookupIndex is zero. We now compute a correction number of 9 (radix-1). // In the following line, we'll compute (val+correction) % radix, which is, // (val+9)/10. By this time, val is 1, so we compute (1+9) % 10, which // is 10 % 10 or zero. So, we'll prepare to emit "JJ", but then we'll // later suppress the leading J as representing zero (in the mod system, // it can represent either 10 or zero). In summary, the correction value of // "radix-1" acts like "-1" when run through the mod operator, but with the // desireable characteristic that it never produces a negative number. CountType correction = 0; // TODO: throw error on out of range input do { // most of the correction calculation is explained above, the reason for the // term after the "|| " is that it correctly propagates carries across // multiple columns. correction = ((lookupIndex == 0) || (correction != 0 && lookupIndex == radix - 1 )) ? (radix - 1) : 0; // index in "table" of the next char to emit lookupIndex = (val + correction) % radix; // shift input by one "column" val = (val / radix); // if the next value we'd put out would be a leading zero, we're done. if (lookupIndex == 0 && val == 0) { break; } // put out the next character of output buf[charPos--] = table[lookupIndex]; } while (val > 0); theResult.assign(buf + charPos + 1, buflen - charPos - 1); } void ElemNumber::toRoman( CountType val, bool prefixesAreOK, XalanDOMString& theResult) { if(val == 0) { theResult = XalanUnicode::charDigit_0; } else if (val > 3999) { theResult = s_errorString; } else { theResult.clear(); size_t place = 0; DecimalToRoman::ValueType localValue = val; do { assert(place < s_romanConvertTableSize); const DecimalToRoman& theCurrent = s_romanConvertTable[place]; while (localValue >= theCurrent.m_postValue) { theResult += theCurrent.m_postLetter; localValue -= theCurrent.m_postValue; } if (prefixesAreOK) { if (localValue >= theCurrent.m_preValue) { theResult += theCurrent.m_preLetter; localValue -= theCurrent.m_preValue; } } ++place; } while (localValue > 0); assert(localValue == 0); } } ElemNumber::NumberFormatStringTokenizer::NumberFormatStringTokenizer( const XalanDOMString& theString) : m_currentPosition(0), m_maxPosition(theString.length()), m_string(&theString) { } void ElemNumber::NumberFormatStringTokenizer::setString(const XalanDOMString& theString) { m_string = &theString; m_currentPosition = 0; m_maxPosition = theString.length(); } void ElemNumber::NumberFormatStringTokenizer::nextToken(XalanDOMString& theToken) { if (m_currentPosition >= m_maxPosition) { theToken.clear(); } const size_type start = m_currentPosition; if (isXMLLetterOrDigit((*m_string)[m_currentPosition])) { while (m_currentPosition < m_maxPosition && isXMLLetterOrDigit((*m_string)[m_currentPosition])) { m_currentPosition++; } } else { while (m_currentPosition < m_maxPosition && !isXMLLetterOrDigit((*m_string)[m_currentPosition])) { m_currentPosition++; } } substring(*m_string, theToken, start, m_currentPosition); } ElemNumber::NumberFormatStringTokenizer::size_type ElemNumber::NumberFormatStringTokenizer::countTokens() const { size_type count = 0; size_type currpos = m_currentPosition; // Tokens consist of sequences of alphabetic characters and sequences of // non-alphabetic characters while (currpos < m_maxPosition) { if (isXMLLetterOrDigit((*m_string)[currpos])) { while (currpos < m_maxPosition && isXMLLetterOrDigit((*m_string)[currpos])) { currpos++; } } else { while (currpos < m_maxPosition && !isXMLLetterOrDigit((*m_string)[currpos])) { currpos++; } } count++; } return count; } #define ELEMNUMBER_SIZE(str) ((sizeof(str) / sizeof(str[0]) - 1)) const XalanDOMChar ElemNumber::s_alphaCountTable[] = { XalanUnicode::charLetter_Z, XalanUnicode::charLetter_A, XalanUnicode::charLetter_B, XalanUnicode::charLetter_C, XalanUnicode::charLetter_D, XalanUnicode::charLetter_E, XalanUnicode::charLetter_F, XalanUnicode::charLetter_G, XalanUnicode::charLetter_H, XalanUnicode::charLetter_I, XalanUnicode::charLetter_J, XalanUnicode::charLetter_K, XalanUnicode::charLetter_L, XalanUnicode::charLetter_M, XalanUnicode::charLetter_N, XalanUnicode::charLetter_O, XalanUnicode::charLetter_P, XalanUnicode::charLetter_Q, XalanUnicode::charLetter_R, XalanUnicode::charLetter_S, XalanUnicode::charLetter_T, XalanUnicode::charLetter_U, XalanUnicode::charLetter_V, XalanUnicode::charLetter_W, XalanUnicode::charLetter_X, XalanUnicode::charLetter_Y, 0 }; const XalanDOMString::size_type ElemNumber::s_alphaCountTableSize = ELEMNUMBER_SIZE(s_alphaCountTable); const XalanDOMChar ElemNumber::s_elalphaCountTable[] = { 0x03c9, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0 }; const XalanDOMString::size_type ElemNumber::s_elalphaCountTableSize = ELEMNUMBER_SIZE(s_elalphaCountTable); static XalanDOMString s_staticTextString(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_staticCommentString(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_staticSlashString(XalanMemMgrs::getDummyMemMgr()); const XalanDOMChar ElemNumber::s_atString[] = { XalanUnicode::charAmpersand, 0 }; const XalanDOMString& ElemNumber::s_textString = s_staticTextString; const XalanDOMString& ElemNumber::s_commentString = s_staticCommentString; const XalanDOMString& ElemNumber::s_slashString = s_staticSlashString; const XalanDOMChar ElemNumber::s_piString[] = { XalanUnicode::charLetter_p, XalanUnicode::charLetter_r, XalanUnicode::charLetter_o, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_u, XalanUnicode::charLetter_c, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, XalanUnicode::charLeftParenthesis, 0 }; const XalanDOMChar ElemNumber::s_levelString[] = { XalanUnicode::charLetter_l, XalanUnicode::charLetter_e, XalanUnicode::charLetter_v, XalanUnicode::charLetter_e, XalanUnicode::charLetter_l, 0 }; const XalanDOMChar ElemNumber::s_multipleString[] = { XalanUnicode::charLetter_m, XalanUnicode::charLetter_u, XalanUnicode::charLetter_l, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_p, XalanUnicode::charLetter_l, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar ElemNumber::s_anyString[] = { XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_y, 0 }; const XalanDOMChar ElemNumber::s_singleString[] = { XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, XalanUnicode::charLetter_l, XalanUnicode::charLetter_e, 0 }; const XalanDOMChar ElemNumber::s_alphabeticString[] = { XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_p, XalanUnicode::charLetter_h, XalanUnicode::charLetter_a, XalanUnicode::charLetter_b, XalanUnicode::charLetter_e, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_c, 0 }; const XalanDOMChar ElemNumber::s_traditionalString[] = { XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_d, XalanUnicode::charLetter_i, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, 0 }; const XalanDOMChar ElemNumber::s_errorString[] = { XalanUnicode::charNumberSign, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, XalanUnicode::charLetter_r, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, 0 }; const DecimalToRoman ElemNumber::s_romanConvertTable[] = { { 1000, { XalanUnicode::charLetter_M, 0 }, 900, { XalanUnicode::charLetter_C, XalanUnicode::charLetter_M, 0 } }, { 500, { XalanUnicode::charLetter_D, 0 }, 400, { XalanUnicode::charLetter_C, XalanUnicode::charLetter_D, 0 } }, { 100, { XalanUnicode::charLetter_C, 0 }, 90, { XalanUnicode::charLetter_X, XalanUnicode::charLetter_C, 0 } }, { 50, { XalanUnicode::charLetter_L, 0 }, 40, { XalanUnicode::charLetter_X, XalanUnicode::charLetter_L, 0 } }, { 10, { XalanUnicode::charLetter_X, 0 }, 9, { XalanUnicode::charLetter_I, XalanUnicode::charLetter_X, 0 } }, { 5, { XalanUnicode::charLetter_V, 0 }, 4, { XalanUnicode::charLetter_I, XalanUnicode::charLetter_V, 0 } }, { 1, { XalanUnicode::charLetter_I, 0 }, 1, { XalanUnicode::charLetter_I, 0 } } }; const size_t ElemNumber::s_romanConvertTableSize = sizeof(s_romanConvertTable) / sizeof(s_romanConvertTable[0]); static XalanNumberingResourceBundle s_staticElalphaResourceBundle(XalanMemMgrs::getDummyMemMgr()); const XalanNumberingResourceBundle& ElemNumber::s_elalphaResourceBundle = s_staticElalphaResourceBundle; static void initializeTraditionalElalphaBundle( MemoryManager& theManager, XalanNumberingResourceBundle& theBundle) { // The following are a bunch of static data the comprise the contents of the bundle. static const XalanDOMChar elalphaAlphabet[] = { 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, 0 }; static const XalanDOMChar elalphaTraditionalAlphabet[] = { XalanUnicode::charLetter_A, XalanUnicode::charLetter_B, XalanUnicode::charLetter_C, XalanUnicode::charLetter_D, XalanUnicode::charLetter_E, XalanUnicode::charLetter_F, XalanUnicode::charLetter_G, XalanUnicode::charLetter_H, XalanUnicode::charLetter_I, XalanUnicode::charLetter_J, XalanUnicode::charLetter_K, XalanUnicode::charLetter_L, XalanUnicode::charLetter_M, XalanUnicode::charLetter_N, XalanUnicode::charLetter_O, XalanUnicode::charLetter_P, XalanUnicode::charLetter_Q, XalanUnicode::charLetter_R, XalanUnicode::charLetter_S, XalanUnicode::charLetter_T, XalanUnicode::charLetter_U, XalanUnicode::charLetter_V, XalanUnicode::charLetter_W, XalanUnicode::charLetter_X, XalanUnicode::charLetter_Y, XalanUnicode::charLetter_Z, 0 }; typedef XalanNumberingResourceBundle::NumberType NumberType; static const NumberType elalphaNumberGroups[] = { 100, 10, 1 }; const size_t elalphaNumberGroupsCount = sizeof(elalphaNumberGroups) / sizeof(elalphaNumberGroups[0]); static const NumberType elalphaMultipliers[] = { 1000 }; const size_t elalphaMultipliersCount = sizeof(elalphaMultipliers) / sizeof(elalphaMultipliers[0]); static const XalanDOMChar elalphaMultiplierChars[] = { 0x03d9, 0 }; static const XalanDOMChar elalphaDigits[] = { 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03db, 0x03b6, 0x03b7, 0x03b8, 0 }; static const XalanDOMChar elalphaTens[] = { 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03df, 0 }; static const XalanDOMChar elalphaHundreds[] = { 0x03c1, 0x03c2, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x03e1, 0 }; typedef XalanNumberingResourceBundle::DigitsTableVectorType DigitsTableVectorType; typedef XalanNumberingResourceBundle::NumberTypeVectorType NumberTypeVectorType; // Create the table of characters for the various digit positions... DigitsTableVectorType theElalphaDigitsTable(theManager); // Since we know the size, create the empty vectors in the table... theElalphaDigitsTable.resize(3); // Swap the empty tables with temporary ones... XalanDOMCharVectorType( elalphaDigits, elalphaDigits + length(elalphaDigits), theManager).swap(theElalphaDigitsTable[0]); XalanDOMCharVectorType( elalphaTens, elalphaTens + length(elalphaTens), theManager).swap(theElalphaDigitsTable[1]); XalanDOMCharVectorType( elalphaHundreds, elalphaHundreds + length(elalphaHundreds), theManager).swap(theElalphaDigitsTable[2]); // This table will indicate which positions the vectors of digits are in // the table... NumberTypeVectorType theDigitsTableTable(theManager); theDigitsTableTable.reserve(3); // Push the positions on in reverse order, since that's how things work... theDigitsTableTable.push_back(2); theDigitsTableTable.push_back(1); theDigitsTableTable.push_back(0); const XalanDOMString theLanguageString("el", theManager); // Create an instance... XalanNumberingResourceBundle theElaphaBundle( theLanguageString, theLanguageString, theLanguageString, XalanDOMCharVectorType( elalphaAlphabet, elalphaAlphabet + length(elalphaAlphabet), theManager), XalanDOMCharVectorType( elalphaTraditionalAlphabet, elalphaTraditionalAlphabet + length(elalphaTraditionalAlphabet), theManager), XalanNumberingResourceBundle::eLeftToRight, XalanNumberingResourceBundle::eMultiplicativeAdditive, XalanNumberingResourceBundle::ePrecedes, ~NumberType(0), NumberTypeVectorType( elalphaNumberGroups, elalphaNumberGroups + elalphaNumberGroupsCount, theManager), NumberTypeVectorType( elalphaMultipliers, elalphaMultipliers + elalphaMultipliersCount, theManager), XalanDOMCharVectorType(theManager), XalanDOMCharVectorType( elalphaMultiplierChars, elalphaMultiplierChars + length(elalphaMultiplierChars), theManager), theElalphaDigitsTable, theDigitsTableTable, theManager); // Swap it with the one (this avoids making a copy...) theBundle.swap(theElaphaBundle); } static const XalanDOMChar s_textStringChars[] = { XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_x, XalanUnicode::charLetter_t, XalanUnicode::charLeftParenthesis, XalanUnicode::charRightParenthesis, 0 }; static const XalanDOMChar s_commentStringChars[] = { XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_m, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, XalanUnicode::charLeftParenthesis, XalanUnicode::charRightParenthesis, 0 }; static const XalanDOMChar s_solidusStringChars[] = { XalanUnicode::charSolidus, 0 }; void ElemNumber::initialize(MemoryManager& theManager) { s_staticTextString.reset(theManager, s_textStringChars); s_staticCommentString.reset(theManager, s_commentStringChars); s_staticSlashString.reset(theManager, s_solidusStringChars); initializeTraditionalElalphaBundle(theManager, s_staticElalphaResourceBundle); } void ElemNumber::terminate() { MemoryManager& theManager = XalanMemMgrs::getDummyMemMgr(); releaseMemory(s_staticTextString, theManager); releaseMemory(s_staticCommentString, theManager); releaseMemory(s_staticSlashString, theManager); XalanNumberingResourceBundle(theManager).swap(s_staticElalphaResourceBundle); } const XPath* ElemNumber::getXPath(XalanSize_t index) const { const XPath* result = 0; switch(index) { case 0: result = m_valueExpr; break; case 1: result = m_countMatchPattern; break; case 2: result = m_fromMatchPattern; break; default: break; } return result; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/GenerateEvent.cpp0000664000175000000640000000577711731656103020305 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "GenerateEvent.hpp" XALAN_CPP_NAMESPACE_BEGIN GenerateEvent::GenerateEvent(EventType eventType, MemoryManager& theManager) : m_eventType(eventType), m_characters(theManager), m_start(0), m_length(0), m_name(theManager), m_data(theManager), m_pAtts(0) { } GenerateEvent::GenerateEvent( EventType eventType, MemoryManager& theManager, const XalanDOMChar* name, AttributeListType* atts) : m_eventType(eventType), m_characters(theManager), m_start(0), m_length(0), m_name(name, theManager), m_data(theManager), m_pAtts(atts) { } GenerateEvent::GenerateEvent( EventType eventType, MemoryManager& theManager, const XalanDOMString& name, const AttributeListType* atts) : m_eventType(eventType), m_characters(theManager), m_start(0), m_length(0), m_name(name, theManager), m_data(theManager), m_pAtts(atts) { } GenerateEvent::GenerateEvent( EventType eventType, MemoryManager& theManager, const XalanDOMChar* ch, XalanDOMString::size_type start, XalanDOMString::size_type length) : m_eventType(eventType), m_characters(ch + start, theManager, length), m_start(start), m_length(length), m_name(theManager), m_data(theManager), m_pAtts(0) { } GenerateEvent::GenerateEvent( EventType eventType, MemoryManager& theManager, const XalanDOMChar* name, const XalanDOMChar* data) : m_eventType(eventType), m_characters(theManager), m_start(0), m_length(0), m_name(name, theManager), m_data(data, theManager), m_pAtts(0) { } GenerateEvent::GenerateEvent( EventType eventType, MemoryManager& theManager, const XalanDOMChar* data) : m_eventType(eventType), m_characters(theManager), m_start(0), m_length(0), m_name(theManager), m_data(data, theManager), m_pAtts(0) { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XalanSourceTreeDocumentFragmentAllocator.hpp0000664000175000000640000000673411731656103025640 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEDOCUMENTFRAGMENTALLOCATOR_INCLUDE_GUARD_12455133) #define XALANSOURCETREEDOCUMENTFRAGMENTALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XSLT_EXPORT XalanSourceTreeDocumentFragmentAllocator { public: typedef XalanSourceTreeDocumentFragment data_type; typedef ReusableArenaAllocator ArenaAllocatorType; typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanSourceTreeDocumentFragmentAllocator(MemoryManager& theManager, size_type theBlockCount); ~XalanSourceTreeDocumentFragmentAllocator(); /** * Create a XalanSourceTreeDocumentFragment object. * * @param theValue The constructor parameter * * @return pointer to a node */ data_type* create(XalanSourceTreeDocument& theValue); /** * Create an XalanSourceTreeDocumentFragment object. * * @param theSource source instance * * @return pointer to a node */ data_type* create(const data_type& theSource); /** * Delete an XalanSourceTreeDocumentFragment object from allocator. */ bool destroy(data_type* theObject); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const data_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all XalanSourceTreeDocumentFragment objects from allocator. */ void reset(); /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanSourceTreeDocumentFragmentAllocator(const XalanSourceTreeDocumentFragmentAllocator&); XalanSourceTreeDocumentFragmentAllocator& operator=(const XalanSourceTreeDocumentFragmentAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANSOURCETREEDOCUMENTFRAGMENTALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XSLT/StylesheetRoot.cpp0000664000175000000640000007677511731656103020554 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file #include "StylesheetRoot.hpp" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "Constants.hpp" #include "ElemApplyTemplates.hpp" #include "ElemAttributeSet.hpp" #include "ElemTemplate.hpp" #include "ElemValueOf.hpp" #include "KeyTable.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" #include "TraceListener.hpp" #include "XSLTResultTarget.hpp" //#define XALAN_VQ_SPECIAL_TRACE #if defined(XALAN_VQ_SPECIAL_TRACE) #include "C:/Program Files/Rational/Quantify/pure.h" #endif XALAN_CPP_NAMESPACE_BEGIN StylesheetRoot::StylesheetRoot( const XalanDOMString& baseIdentifier, StylesheetConstructionContext& constructionContext) : Stylesheet(*this, baseIdentifier, constructionContext), m_version(constructionContext.getMemoryManager()), m_indentResult(eIndentNoImplicit), m_encoding(constructionContext.getMemoryManager()), m_mediatype(constructionContext.getMemoryManager()), m_doctypeSystem(constructionContext.getMemoryManager()), m_doctypePublic(constructionContext.getMemoryManager()), m_omitxmlDecl(false), m_standalone(constructionContext.getMemoryManager()), m_resultNameSpaceURL(constructionContext.getMemoryManager()), m_outputMethod(FormatterListener::OUTPUT_METHOD_NONE), m_cdataSectionElems(constructionContext.getMemoryManager()), m_hasCDATASectionElems(false), m_importStack(constructionContext.getMemoryManager()), m_defaultTextRule(0), m_defaultRule(0), m_defaultRootRule(0), m_needToBuildKeysTable(false), m_outputEscapeURLs(true), m_indentAmount(-1), m_omitMETATag(false), m_elemNumberNextID(0), m_attributeSetsMap(constructionContext.getMemoryManager()), m_hasStripOrPreserveSpace(false) { // Our base class has already resolved the URI and pushed it on // the back of the include stack, so get it from there... assert(getIncludeStack().empty() == false); m_importStack.push_back(getIncludeStack().back()); } StylesheetRoot* StylesheetRoot::create( MemoryManager& theManager, const XalanDOMString& baseIdentifier, StylesheetConstructionContext& constructionContext) { typedef StylesheetRoot ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( baseIdentifier, constructionContext); theGuard.release(); return theResult; } StylesheetRoot::~StylesheetRoot() { } void StylesheetRoot::postConstruction(StylesheetConstructionContext& constructionContext) { // Chain-up first... Stylesheet::postConstruction(constructionContext); initDefaultRule(constructionContext); { AttributeSetMapType::iterator theCurrentMap = m_attributeSetsMap.begin(); const AttributeSetMapType::iterator theEndMap = m_attributeSetsMap.end(); while(theCurrentMap != theEndMap) { AttributeSetVectorType::iterator theCurrentVector = (*theCurrentMap).second.begin(); const AttributeSetVectorType::iterator theEndVector = (*theCurrentMap).second.end(); while(theCurrentVector != theEndVector) { (*theCurrentVector)->postConstruction(constructionContext, getNamespacesHandler()); ++theCurrentVector; } ++theCurrentMap; } } // We may need to build keys, since we may have inherited them from // our imports. if (m_needToBuildKeysTable == false && m_keyDeclarations.empty() == false) { m_needToBuildKeysTable = true; } // cdata-section-elements only applies to the XML output method... if (m_outputMethod != FormatterListener::OUTPUT_METHOD_XML && m_outputMethod != FormatterListener::OUTPUT_METHOD_NONE) { m_cdataSectionElems.clear(); } else if (m_cdataSectionElems.empty() == false) { XALAN_USING_STD(sort) sort( m_cdataSectionElems.begin(), m_cdataSectionElems.end(), pointer_less()); m_hasCDATASectionElems = true; } m_hasStripOrPreserveSpace = m_whitespaceElements.empty() == false; } typedef StylesheetExecutionContext::GetCachedString GetCachedString; void StylesheetRoot::process( XalanNode* sourceTree, XSLTResultTarget& outputTarget, StylesheetExecutionContext& executionContext) const { assert(m_defaultRule != 0); assert(m_defaultTextRule != 0); assert(m_defaultRootRule != 0); // Find the root pattern in the XSL. const ElemTemplateElement* rootRule = findTemplate(executionContext, sourceTree); if(0 == rootRule) { rootRule = m_defaultRootRule; } assert(rootRule != 0); executionContext.setStylesheetRoot(this); setupFormatterListener(outputTarget, executionContext); executionContext.setRootDocument(sourceTree); #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) typedef StylesheetExecutionContext::PushAndPopContextMarker PushAndPopContextMarker; typedef StylesheetExecutionContext::PushAndPopElementFrame PushAndPopElementFrame; typedef StylesheetExecutionContext::ResolveAndClearTopLevelParams ResolveAndClearTopLevelParams; PushAndPopContextMarker thePushAndPopContextMarker(executionContext); PushAndPopElementFrame thePushAndPopElementFrame( executionContext, 0); ResolveAndClearTopLevelParams theResolveAndClearTopLevelParams(executionContext); #else executionContext.pushContextMarker(); executionContext.pushElementFrame(0); executionContext.resolveTopLevelParams(); #endif #if defined(XALAN_VQ_SPECIAL_TRACE) QuantifyStartRecordingData(); #endif executionContext.startDocument(); executionContext.pushCurrentMode(&s_emptyQName); const XPathExecutionContext::CurrentNodePushAndPop theCurrentNodePushAndPop(executionContext, sourceTree); // Output the action of the found root rule. All processing // occurs from here. rootRule->execute(executionContext); // At this point, anything transient during the tranformation // may have been deleted, so we may not refer to anything the // execution context may have created for us. executionContext.endDocument(); #if defined(XALAN_VQ_SPECIAL_TRACE) QuantifyStopRecordingData(); #endif #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) executionContext.clearTopLevelParams(); executionContext.popElementFrame(); executionContext.popContextMarker(); #endif } const XalanDOMString& StylesheetRoot::getEncoding(const XSLTResultTarget& outputTarget) const { const XalanDOMString& theEncoding = outputTarget.getEncoding(); if (theEncoding.length() != 0) { return theEncoding; } else { return m_encoding; } } FormatterListener* StylesheetRoot::setupFormatterListener( XSLTResultTarget& outputTarget, StylesheetExecutionContext& executionContext) const { typedef StylesheetExecutionContext::GetCachedString GetCachedString; FormatterListener* flistener = outputTarget.getFormatterListener(); if (flistener != 0) { // Do encoding stuff here... } else if (0 != outputTarget.getCharacterStream() || 0 != outputTarget.getByteStream() || 0 != outputTarget.getStream() || !outputTarget.getFileName().empty()) { /* * Output target has a character or byte stream or file */ Writer* pw = 0; if (0 != outputTarget.getCharacterStream()) { pw = outputTarget.getCharacterStream(); } else { if (0 != outputTarget.getByteStream()) { pw = executionContext.createPrintWriter(*outputTarget.getByteStream()); } else if (0 != outputTarget.getStream()) { pw = executionContext.createPrintWriter(outputTarget.getStream()); } else if (!outputTarget.getFileName().empty()) { const GetCachedString theGuard(executionContext); pw = executionContext.createPrintWriter( outputTarget.getFileName(), theGuard.get()); } else { const GetCachedString theGuard(executionContext); executionContext.problem( StylesheetExecutionContext::eXSLTProcessor, StylesheetExecutionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::NoValidResultTarget), 0, executionContext.getCurrentNode()); } } int indentAmount = executionContext.getIndent(); // If the indent amount is less than 0, that means use // the value specified in the stylesheet. if (indentAmount < 0) { indentAmount = m_indentAmount; } const bool doIndent = (indentAmount > -1) ? true : getOutputIndent(); const XalanDOMString& theEncoding = getEncoding(outputTarget); switch(m_outputMethod) { case FormatterListener::OUTPUT_METHOD_HTML: { if (doIndent == true && indentAmount < 0) { indentAmount = FormatterToHTML::eDefaultIndentAmount; } // Start with the default that was set in the stylesheet... bool outputEscapeURLs = m_outputEscapeURLs; { const StylesheetExecutionContext::eEscapeURLs eEscapeURLs = executionContext.getEscapeURLs(); // If it's anything other than StylesheetExecutionContext::eEscapeURLsDefault, // use the property from the execution context... if (eEscapeURLs == StylesheetExecutionContext::eEscapeURLsNo) { outputEscapeURLs = false; } else if (eEscapeURLs == StylesheetExecutionContext::eEscapeURLsYes) { outputEscapeURLs = true; } } // Start with the default that was set in the stylesheet... bool omitMETATag = m_omitMETATag; { const StylesheetExecutionContext::eOmitMETATag eOmitMETATag = executionContext.getOmitMETATag(); // If it's anything other than StylesheetExecutionContext::eOmitMETATagDefault, // use the property from the execution context... if (eOmitMETATag == StylesheetExecutionContext::eOmitMETATagNo) { omitMETATag = false; } else if (eOmitMETATag == StylesheetExecutionContext::eOmitMETATagYes) { omitMETATag = true; } } flistener = executionContext.createFormatterToHTML( *pw, theEncoding, m_mediatype, m_doctypeSystem, m_doctypePublic, doIndent, indentAmount, outputEscapeURLs, omitMETATag); } break; case FormatterListener::OUTPUT_METHOD_TEXT: flistener = executionContext.createFormatterToText(*pw, theEncoding); break; case FormatterListener::OUTPUT_METHOD_NONE: case FormatterListener::OUTPUT_METHOD_XML: default: // Make sure we don't have a negative indent amount if we're // indenting if (doIndent == true && indentAmount < 0) { indentAmount = FormatterToXML::eDefaultIndentAmount; } flistener = executionContext.createFormatterToXML( *pw, m_version, doIndent, indentAmount, theEncoding, m_mediatype, m_doctypeSystem, m_doctypePublic, !m_omitxmlDecl, m_standalone); break; } executionContext.setFormatterListener(flistener); } else { const GetCachedString theGuard(executionContext); executionContext.problem( StylesheetExecutionContext::eXSLTProcessor, StylesheetExecutionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::NoValidResultTarget), 0, executionContext.getCurrentNode()); } executionContext.setFormatterListener(flistener); return flistener; } void StylesheetRoot::processOutputSpec( const XalanDOMChar* name, const AttributeListType& atts, StylesheetConstructionContext& constructionContext) { const XalanSize_t nAttrs = atts.getLength(); const Locator* const theLocator = constructionContext.getLocatorFromStack(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (equals(aname, Constants::ATTRNAME_OUTPUT_METHOD)) { const XalanDOMChar* const method = atts.getValue(i); if (equals(method, Constants::ATTRVAL_OUTPUT_METHOD_HTML)) { m_outputMethod = FormatterListener::OUTPUT_METHOD_HTML; } else if (equals(method, Constants::ATTRVAL_OUTPUT_METHOD_XML)) { m_outputMethod = FormatterListener::OUTPUT_METHOD_XML; } else if (equals(method, Constants::ATTRVAL_OUTPUT_METHOD_TEXT)) { m_outputMethod = FormatterListener::OUTPUT_METHOD_TEXT; } else { const StylesheetConstructionContext::GetCachedString theGuard(constructionContext); constructionContext.problem( StylesheetConstructionContext::eXSLTProcessor, StylesheetConstructionContext::eWarning, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::OutputHasAnUnknownMethod_1Param, method), theLocator, 0); } } else if (equals(aname, Constants::ATTRNAME_OUTPUT_VERSION)) { m_version = atts.getValue(i); } else if (equals(aname,Constants::ATTRNAME_OUTPUT_INDENT)) { m_indentResult = getYesOrNo(aname, atts.getValue(i), constructionContext) == true ? eIndentYesExplicit : eIndentNoExplicit; } else if (equals(aname,Constants::ATTRNAME_OUTPUT_ENCODING)) { m_encoding = atts.getValue(i); } else if (equals(aname,Constants::ATTRNAME_OUTPUT_MEDIATYPE)) { m_mediatype = atts.getValue(i); } else if (equals(aname,Constants::ATTRNAME_OUTPUT_DOCTYPE_SYSTEM)) { m_doctypeSystem = atts.getValue(i); } else if (equals(aname,Constants::ATTRNAME_OUTPUT_DOCTYPE_PUBLIC)) { m_doctypePublic = atts.getValue(i); } else if (equals(aname,Constants::ATTRNAME_OUTPUT_OMITXMLDECL)) { m_omitxmlDecl = getYesOrNo(aname, atts.getValue(i), constructionContext); } else if (equals(aname,Constants::ATTRNAME_OUTPUT_STANDALONE)) { m_standalone = atts.getValue(i); } else if (equals(aname,Constants::ATTRNAME_OUTPUT_CDATA_SECTION_ELEMENTS)) { if (m_outputMethod == FormatterListener::OUTPUT_METHOD_NONE || m_outputMethod == FormatterListener::OUTPUT_METHOD_XML) { StringTokenizer theTokenizer(atts.getValue(i)); StringTokenizer::size_type theTokenCount = theTokenizer.countTokens(); m_cdataSectionElems.reserve(m_cdataSectionElems.size() + theTokenCount); const StylesheetConstructionContext::GetCachedString theGuard(constructionContext); XalanDOMString& theToken = theGuard.get(); while (theTokenCount > 0) { theTokenizer.nextToken(theToken); --theTokenCount; m_cdataSectionElems.push_back( constructionContext.createXalanQName(theToken, getNamespaces(), theLocator, true)); } assert(theTokenizer.hasMoreTokens() == false); } } else { const XalanQNameByValue theAttributeName(aname, getNamespaces(), constructionContext.getMemoryManager(), theLocator ); if (theAttributeName.getNamespace() == constructionContext.getXalanXSLNameSpaceURL()) { if (theAttributeName.getLocalPart() == Constants::ATTRNAME_ESCAPE_URLS) { m_outputEscapeURLs = getYesOrNo(aname, atts.getValue(i), constructionContext); } else if (theAttributeName.getLocalPart() == Constants::ATTRNAME_INDENTAMOUNT) { m_indentAmount = WideStringToInt(atts.getValue(i)); if (m_indentAmount < 0) { m_indentAmount = 0; } } else if (theAttributeName.getLocalPart() == Constants::ATTRNAME_OMIT_META_TAG) { m_omitMETATag = getYesOrNo(aname, atts.getValue(i), constructionContext); } else { const StylesheetConstructionContext::GetCachedString theGuard(constructionContext); constructionContext.problem( StylesheetConstructionContext::eXSLTProcessor, StylesheetConstructionContext::eWarning, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::UnsupportedXalanSpecificAttribute_1Param, theAttributeName.getLocalPart()), theLocator, 0); } } else if (isAttrOK(aname, atts, i, constructionContext) == false) { const StylesheetConstructionContext::GetCachedString theGuard(constructionContext); constructionContext.problem( StylesheetConstructionContext::eXSLTProcessor, StylesheetConstructionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::HasIllegalAttribute_2Param, name, aname), theLocator, 0); } } } // If HTML output if (m_outputMethod == FormatterListener::OUTPUT_METHOD_HTML && m_indentResult == eIndentNoImplicit) { m_indentResult = eIndentYesImplicit; } } void StylesheetRoot::initDefaultRule(StylesheetConstructionContext& constructionContext) { if (m_defaultRule == 0) { assert(m_defaultTextRule == 0); assert(m_defaultRootRule == 0); AttributeListImpl attrs(constructionContext.getMemoryManager()); attrs.addAttribute( Constants::ATTRNAME_MATCH.c_str(), Constants::ATTRTYPE_CDATA.c_str(), XPath::PSEUDONAME_ANY); m_defaultRule = constructionContext.createElement( StylesheetConstructionContext::ELEMNAME_TEMPLATE, *this, attrs); assert(m_defaultRule != 0); attrs.clear(); ElemTemplateElement* childrenElement = constructionContext.createElement( StylesheetConstructionContext::ELEMNAME_APPLY_TEMPLATES, *this, attrs); assert(childrenElement != 0); m_defaultRule->appendChildElem(childrenElement); m_defaultRule->setDefaultTemplate(true); // ----------------------------- attrs.clear(); attrs.addAttribute( Constants::ATTRNAME_MATCH.c_str(), Constants::ATTRTYPE_CDATA.c_str(), Constants::ATTRVAL_DEFAULT_TEXT_RULE.c_str()); m_defaultTextRule = constructionContext.createElement( StylesheetConstructionContext::ELEMNAME_TEMPLATE, *this, attrs); assert(m_defaultTextRule != 0); attrs.clear(); attrs.addAttribute( Constants::ATTRNAME_SELECT.c_str(), Constants::ATTRTYPE_CDATA.c_str(), Constants::ATTRVAL_THIS.c_str()); childrenElement = constructionContext.createElement( StylesheetConstructionContext::ELEMNAME_VALUE_OF, *this, attrs); assert(childrenElement != 0); m_defaultTextRule->appendChildElem(childrenElement); m_defaultTextRule->setDefaultTemplate(true); //-------------------------------- attrs.clear(); attrs.addAttribute( Constants::ATTRNAME_MATCH.c_str(), Constants::ATTRTYPE_CDATA.c_str(), XPath::PSEUDONAME_ROOT); m_defaultRootRule = constructionContext.createElement( StylesheetConstructionContext::ELEMNAME_TEMPLATE, *this, attrs); assert(m_defaultRootRule != 0); attrs.clear(); childrenElement = constructionContext.createElement( StylesheetConstructionContext::ELEMNAME_APPLY_TEMPLATES, *this, attrs); assert(childrenElement != 0); m_defaultRootRule->appendChildElem(childrenElement); m_defaultRootRule->setDefaultTemplate(true); } assert(m_defaultRule != 0); assert(m_defaultTextRule != 0); assert(m_defaultRootRule != 0); } bool StylesheetRoot::isCDATASectionElementName(const XalanQName& theQName) const { XALAN_USING_STD(find_if) return find_if( m_cdataSectionElems.begin(), m_cdataSectionElems.end(), pointer_equals_predicate(&theQName)) != m_cdataSectionElems.end() ? true : false; } inline XalanNode* getKeyNode(XalanNode* context) { assert(context != 0); XalanDocument* const docNode = XalanNode::DOCUMENT_NODE == context->getNodeType() ? static_cast(context) : context->getOwnerDocument(); assert(docNode != 0); // This is a big hack for dealing with result tree fragments coerced to node-sets using the // node-set extension function. For such cases, the "document" is really the // XalanDocumentFragment instance that owns the nodes, not the owner document. if (docNode->getFirstChild() != 0) { return docNode; } else { XalanNode* currentNode = context; // OK, the current node belongs to the document, but the document // is just a factory for fragments. This loop will find the // parent document fragment. for(;;) { if (currentNode->getNodeType() == XalanNode::DOCUMENT_FRAGMENT_NODE) { break; } else { currentNode = DOMServices::getParentOfNode(*currentNode); assert(currentNode != 0); } } return currentNode; } } void StylesheetRoot::getNodeSetByKey( XalanNode* context, const XalanQName& qname, const XalanDOMString& ref, const PrefixResolver& resolver, MutableNodeRefList& nodelist, StylesheetExecutionContext& executionContext, const Locator* locator, KeyTablesTableType& theKeysTable) const { assert( nodelist.empty() == true || nodelist.getDocumentOrder() == true); const MutableNodeRefList* nl = 0; XalanNode* const theKeyNode = getKeyNode(context); assert(theKeyNode != 0); if (m_needToBuildKeysTable == true) { assert(m_keyDeclarations.empty() == false); const KeyTablesTableType::const_iterator i = theKeysTable.find(theKeyNode); if (i != theKeysTable.end()) { nl = i->second->getNodeSetByKey(qname, ref); } else { XalanMemMgrAutoPtr kt( executionContext.getMemoryManager(), KeyTable::create( executionContext.getMemoryManager(), theKeyNode, resolver, m_keyDeclarations, executionContext)); theKeysTable[theKeyNode] = kt.get(); const KeyTable* const theNewTable = kt.releasePtr(); nl = theNewTable->getNodeSetByKey(qname, ref); } } if (nl == 0) { typedef StylesheetExecutionContext::GetCachedString GetCachedString; const GetCachedString theGuard1(executionContext); const GetCachedString theGuard2(executionContext); executionContext.problem( StylesheetExecutionContext::eXSLTProcessor, StylesheetExecutionContext::eError, XalanMessageLoader::getMessage( theGuard1.get(), XalanMessages::UnknownKey_1Param, qname.format(theGuard2.get())), locator, executionContext.getCurrentNode()); } else if (nodelist.empty() == true) { nodelist = *nl; } else { nodelist.addNodesInDocOrder(*nl, executionContext); } } bool StylesheetRoot::internalShouldStripSourceNode(const XalanText& textNode) const { assert( textNode.isWhitespace() == true && hasPreserveOrStripSpaceElements() == true); const XalanNode* const parent = textNode.getParentNode(); // assert(parent != 0); // Constructed nodesets may not have parents - see xalan:nodeset() if (parent == 0) return false; if (parent->getNodeType() == XalanNode::ELEMENT_NODE) { const XalanElement* const theElement = static_cast(parent); typedef WhitespaceElementsVectorType::const_iterator const_iterator; const_iterator i = m_whitespaceElements.begin(); do { const XalanSpaceNodeTester& theTester = *i; if (theTester(*theElement) != XPath::eMatchScoreNone) { return theTester.getType() == XalanSpaceNodeTester::eStrip; } ++i; } while (i != m_whitespaceElements.end()); } return false; } void StylesheetRoot::addAttributeSet(ElemAttributeSet& theAttributeSet) { m_attributeSetsMap[&theAttributeSet.getQName()].push_back(&theAttributeSet); } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemAttributeSet* StylesheetRoot::getAttributeSet( StylesheetExecutionContext& executionContext, const XalanQName& theQName, size_type matchingIndex, const Locator* theLocator) const { const AttributeSetMapType::const_iterator i = m_attributeSetsMap.find(&theQName); if (i == m_attributeSetsMap.end()) { const StylesheetExecutionContext::GetCachedString theGuard(executionContext); executionContext.problem( StylesheetExecutionContext::eXSLTProcessor, StylesheetExecutionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::UnknownNodeType_1Param, Constants::ELEMNAME_ATTRIBUTESET_WITH_PREFIX_STRING), theLocator, executionContext.getCurrentNode()); } else { const AttributeSetVectorType& theAttributeSets = i->second; if (matchingIndex < theAttributeSets.size()) { return theAttributeSets[matchingIndex]; } } return 0; } #else void StylesheetRoot::executeAttributeSet( StylesheetExecutionContext& theExecutionContext, const XalanQName& theQName, const Locator* theLocator) const { const AttributeSetMapType::const_iterator i = m_attributeSetsMap.find(&theQName); if (i == m_attributeSetsMap.end()) { const GetCachedString theGuard(theExecutionContext); theExecutionContext.error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::UnknownNodeType_1Param, Constants::ELEMNAME_ATTRIBUTESET_WITH_PREFIX_STRING), theExecutionContext.getCurrentNode(), theLocator); } else { const AttributeSetVectorType& theAttributeSets = (*i).second; const AttributeSetVectorType::const_iterator theEnd = theAttributeSets.end(); for(AttributeSetVectorType::const_iterator i = theAttributeSets.begin(); i != theEnd; ++i) { assert(*i != 0); (*i)->execute(theExecutionContext); } } } #endif XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemUse.cpp0000664000175000000640000001754611731656103017105 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemUse.hpp" #include #include "xercesc/sax/AttributeList.hpp" #include "xalanc/PlatformSupport/StringTokenizer.hpp" #include "Constants.hpp" #include "ElemAttributeSet.hpp" #include "StylesheetRoot.hpp" #include "StylesheetConstructionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN /** * This acts as a superclass for ElemCopy, ElemAttributeSet, * ElemElement, and ElemLiteralResult, on order to implement * shared behavior the use-attribute-sets attribute. */ ElemUse::ElemUse( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, XalanFileLoc lineNumber, XalanFileLoc columnNumber, int xslToken) : ElemTemplateElement(constructionContext, stylesheetTree, lineNumber, columnNumber, xslToken), m_attributeSetsNames(0), m_attributeSetsNamesCount(0) { } ElemUse::~ElemUse() { } const XalanDOMString& ElemUse::getElementName() const { return s_emptyString; } void ElemUse::postConstruction( StylesheetConstructionContext& constructionContext, const NamespacesHandler& theParentHandler) { if (m_attributeSetsNamesCount > 0) { canGenerateAttributes(true); } // OK, now we can chain-up... ElemTemplateElement::postConstruction(constructionContext, theParentHandler); } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemUse::startElement(StylesheetExecutionContext& executionContext) const { if (m_attributeSetsNamesCount > 0) { assert(canGenerateAttributes() == true); executionContext.pushInvoker(this); executionContext.createUseAttributeSetIndexesOnStack(); return getNextAttributeSet(executionContext); } return 0; } void ElemUse::endElement(StylesheetExecutionContext& executionContext) const { if (m_attributeSetsNamesCount > 0) { executionContext.popInvoker(); executionContext.popUseAttributeSetIndexesFromStack(); } } const ElemTemplateElement* ElemUse::getNextChildElemToExecute( StylesheetExecutionContext& executionContext, const ElemTemplateElement* currentElem) const { const ElemTemplateElement* nextElement = 0; if (m_attributeSetsNamesCount > 0) { nextElement = getNextAttributeSet(executionContext); } // no more attribute sets, check for next child element if (0 == nextElement) { nextElement = ElemTemplateElement::getNextChildElemToExecute(executionContext, currentElem); } // if next element to execute is the first child after executing attribute set(s), // evalute the element's AVTs first if (0 == nextElement && currentElem->getXSLToken() == StylesheetConstructionContext::ELEMNAME_ATTRIBUTE_SET) { evaluateAVTs(executionContext); nextElement = ElemTemplateElement::getFirstChildElemToExecute(executionContext); } return nextElement; } const ElemTemplateElement* ElemUse::getFirstChildElemToExecute(StylesheetExecutionContext& executionContext) const { assert(executionContext.getCurrentNode() != 0); const ElemTemplateElement* nextElement = 0; if (getXSLToken() != StylesheetConstructionContext::ELEMNAME_COPY || executionContext.getCurrentNode()->getNodeType() == XalanNode::ELEMENT_NODE) { if (m_attributeSetsNamesCount > 0) { // reset executionContext.getUseAttributeSetIndexes().attributeSetNameIndex = 0; executionContext.getUseAttributeSetIndexes().matchingAttributeSetIndex = 0; nextElement = getNextAttributeSet(executionContext); } else { evaluateAVTs(executionContext); } } if (0 == nextElement) { nextElement = ElemTemplateElement::getFirstChildElemToExecute(executionContext); } return nextElement; } const ElemTemplateElement* ElemUse::getNextAttributeSet( StylesheetExecutionContext& executionContext) const { const StylesheetRoot& theStylesheetRoot = getStylesheet().getStylesheetRoot(); StylesheetExecutionContext::UseAttributeSetIndexes& useAttributeSetIndexes = executionContext.getUseAttributeSetIndexes(); const ElemTemplateElement* attributeSet = 0; while (0 == attributeSet && useAttributeSetIndexes.attributeSetNameIndex < m_attributeSetsNamesCount) { attributeSet = theStylesheetRoot.getAttributeSet( executionContext, *m_attributeSetsNames[useAttributeSetIndexes.attributeSetNameIndex], useAttributeSetIndexes.matchingAttributeSetIndex++, getLocator()); if (0 == attributeSet) { useAttributeSetIndexes.attributeSetNameIndex++; useAttributeSetIndexes.matchingAttributeSetIndex = 0; } } return attributeSet; } void ElemUse::evaluateAVTs(StylesheetExecutionContext& /*executionContext*/) const { } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemUse::execute(StylesheetExecutionContext& executionContext) const { doExecute(executionContext, true); } void ElemUse::doExecute( StylesheetExecutionContext& executionContext, bool applyAttributeSets) const { assert(m_attributeSetsNamesCount == 0 || m_attributeSetsNames != 0); ElemTemplateElement::execute(executionContext); if(applyAttributeSets == true && m_attributeSetsNamesCount > 0) { assert(canGenerateAttributes() == true); const StylesheetRoot& theStylesheetRoot = getStylesheet().getStylesheetRoot(); const Locator* const theLocator = getLocator(); for(size_type i = 0; i < m_attributeSetsNamesCount; ++i) { theStylesheetRoot.executeAttributeSet(executionContext, *m_attributeSetsNames[i], theLocator); } } } #endif bool ElemUse::processUseAttributeSets( StylesheetConstructionContext& constructionContext, const XalanDOMChar* attrName, const AttributeListType& atts, XalanSize_t which) { bool isUAS = false; if(StylesheetConstructionContext::ELEMNAME_LITERAL_RESULT == getXSLToken()) { isUAS = constructionContext.isXSLUseAttributeSetsAttribute( attrName, getStylesheet(), getLocator()); } else { isUAS = equals(attrName, Constants::ATTRNAME_USEATTRIBUTESETS); } if(isUAS == true) { m_attributeSetsNames = constructionContext.tokenizeQNames( m_attributeSetsNamesCount, atts.getValue(which), getStylesheet().getNamespaces(), getLocator()); assert(m_attributeSetsNamesCount == 0 || m_attributeSetsNames != 0); } return isUAS; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XSLTInputSource.hpp0000664000175000000640000001744611731656103020545 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_XSLTINPUTSOURCE_HEADER_GUARD) #define XALAN_XSLTINPUTSOURCE_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include "xercesc/sax/InputSource.hpp" #include "xalanc/Include/XalanMemoryManagement.hpp" XALAN_DECLARE_XERCES_CLASS(Locator) XALAN_CPP_NAMESPACE_BEGIN typedef XERCES_CPP_NAMESPACE_QUALIFIER BinInputStream BinInputStreamType; typedef XERCES_CPP_NAMESPACE_QUALIFIER InputSource InputSourceType; XALAN_USING_XERCES(MemoryManager) class XalanDOMString; class XalanNode; class XALAN_XSLT_EXPORT XSLTInputSource : public InputSourceType { public: #if defined(XALAN_NO_STD_NAMESPACE) typedef istream StreamType; #else typedef std::istream StreamType; #endif explicit XSLTInputSource(MemoryManager& theMemoryManager = XalanMemMgrs::getDefault()); /** * Copy constructor. */ XSLTInputSource( const XSLTInputSource& theSource, MemoryManager& theMemoryManager = XalanMemMgrs::getDefault()); /** * Assignment operator. */ XSLTInputSource& operator=(const XSLTInputSource& theRHS); /** * Create a new input source with a system identifier. * *

    Applications may use setPublicId to include a public identifier as * well, or setEncoding to specify the character encoding, if known.

    * *

    If the system identifier is a URL, it must be full resolved.

    * * @param systemId system identifier (URI) * @param theMemoryManager The MemoryManager instance to use. */ XSLTInputSource( const XMLCh* systemId, MemoryManager& theMemoryManager = XalanMemMgrs::getDefault()); /** * Create a new input source with a system identifier. * *

    Applications may use setPublicId to include a public identifier as * well, or setEncoding to specify the character encoding, if known.

    * *

    If the system identifier is a URL, it must be full resolved.

    * * @param systemId system identifier (URI) * @param theMemoryManager The MemoryManager instance to use. */ XSLTInputSource( const XalanDOMString& systemId, MemoryManager& theMemoryManager = XalanMemMgrs::getDefault()); /** * Create a new input source with a system identifier. * *

    Applications may use setPublicId to include a public identifier as * well, or setEncoding to specify the character encoding, if known.

    * *

    If the system identifier is a URL, it must be full resolved.

    * * @param systemId system identifier (URI) * @param theMemoryManager The MemoryManager instance to use. */ XSLTInputSource( const char* systemId, MemoryManager& theMemoryManager = XalanMemMgrs::getDefault()); /** * Create a new input source with a system identifier and a public * identifier. * *

    If the system identifier is a URL, it must be full resolved.

    * * @param systemId system identifier (URI) * @param publicId public identifier * @param theMemoryManager The MemoryManager instance to use. */ XSLTInputSource( const char* systemId, const char* publicId, MemoryManager& theMemoryManager = XalanMemMgrs::getDefault()); /** * Create a new input source with a system identifier and a public * identifier. * *

    If the system identifier is a URL, it must be full resolved.

    * * @param systemId system identifier (URI) * @param publicId public identifier * @param theMemoryManager The MemoryManager instance to use. */ XSLTInputSource( const XMLCh* systemId, const XMLCh* publicId, MemoryManager& theMemoryManager = XalanMemMgrs::getDefault()); /** * Create a new input source with a system identifier and a public * identifier. * *

    If the system identifier is a URL, it must be full resolved.

    * * @param systemId system identifier (URI) * @param publicId public identifier * @param theMemoryManager The MemoryManager instance to use. */ XSLTInputSource( const XalanDOMString& systemId, const XalanDOMString& publicId, MemoryManager& theMemoryManager = XalanMemMgrs::getDefault()); /** * Create a new input source with a DOM node. * *

    Application writers may use setSystemId() to provide a base for * resolving relative URIs, and setPublicId to include a public * identifier.

    * * @param node DOM node that is root of the document * @param theMemoryManager The MemoryManager instance to use. */ XSLTInputSource( XalanNode* node, MemoryManager& theMemoryManager = XalanMemMgrs::getDefault()); /** * Create a new input source with std stream. * *

    Application writers may use setSystemId() to provide a base for * resolving relative URIs, and setPublicId to include a public * identifier.

    * * @param stream the input stream... * @param theMemoryManager The MemoryManager instance to use. */ XSLTInputSource( StreamType* stream, MemoryManager& theMemoryManager = XalanMemMgrs::getDefault()); /** * Create a new input source with std stream. * *

    Application writers may use setSystemId() to provide a base for * resolving relative URIs, and setPublicId to include a public * identifier.

    * * @param stream the input stream... * @param theMemoryManager The MemoryManager instance to use. */ XSLTInputSource( StreamType& stream, MemoryManager& theMemoryManager = XalanMemMgrs::getDefault()); /** * Makes the byte stream for this input source. * *

    The SAX parser will ignore this if there is also a character * stream specified, but it will use a byte stream in preference * to opening a URI connection itself.

    * * * @return pointer to byte stream created */ virtual BinInputStreamType* makeStream() const; /** * Set the DOM node for this input source. * * @param node DOM node that is root of the document */ void setNode(XalanNode* node) { m_node = node; } /** * Retrieve the DOM node for this input source. * * @return DOM node that is root of the document */ XalanNode* getNode() const { return m_node; } StreamType* getStream() const { return m_stream; } void setStream(StreamType* stream) { m_stream = stream; } private: StreamType* m_stream; XalanNode* m_node; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_XSLTINPUTSOURCE_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/KeyTable.cpp0000664000175000000640000002257611731656103017245 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file #include "KeyTable.hpp" #include #include #include #include #include #include #include #include #include "KeyDeclaration.hpp" #include "StylesheetExecutionContext.hpp" #include "XSLTProcessorException.hpp" XALAN_CPP_NAMESPACE_BEGIN const MutableNodeRefList KeyTable::s_dummyList(XalanMemMgrs::getDummyMemMgr()); KeyTable::KeyTable( XalanNode* startNode, const PrefixResolver& resolver, const KeyDeclarationVectorType& keyDeclarations, StylesheetExecutionContext& executionContext) : m_keys(executionContext.getMemoryManager()) { XalanNode* pos = startNode; m_allKeys=keyDeclarations; const KeyDeclarationVectorType::size_type nDeclarations = keyDeclarations.size(); // Do a non-recursive pre-walk over the tree. while (0 != pos) { // We're going to have to walk the attribute list // if it's an element, so get the attributes. const XalanNamedNodeMap* attrs = 0; XalanSize_t nNodes = 1; XalanSize_t nAttrNodes = 0; if (XalanNode::ELEMENT_NODE == pos->getNodeType()) { attrs = pos->getAttributes(); nAttrNodes = attrs->getLength(); if (0 == nAttrNodes) { attrs = 0; } else { nNodes += nAttrNodes; } } // Walk the primary node, and each of the attributes. // This loop is a little strange... it is meant to always // execute once, then execute for each of the attributes. XalanNode* testNode = pos; XalanSize_t nodeIndex = 0; for (XalanSize_t i = 0; i < nNodes; ++i) { // Walk through each of the declarations made with xsl:key for (KeyDeclarationVectorType::size_type i = 0; i < nDeclarations; ++i) { const KeyDeclaration& kd = keyDeclarations[i]; // See if our node matches the given key declaration according to // the match attribute on xsl:key. assert(kd.getMatchPattern() != 0); const XPath::eMatchScore score = kd.getMatchPattern()->getMatchScore( testNode, resolver, executionContext); if (score != XPath::eMatchScoreNone) { processKeyDeclaration( m_keys, kd, testNode, resolver, executionContext); } } if (0 != attrs && nodeIndex < nAttrNodes) { testNode = attrs->item(nodeIndex); ++nodeIndex; } } // The rest of this is getting the next pre-walk position in // the tree. XalanNode* nextNode = pos->getFirstChild(); while(0 == nextNode) { if(startNode == pos) { break; } else { nextNode = pos->getNextSibling(); if(0 == nextNode) { pos = pos->getParentNode(); if((startNode == pos) || (0 == pos)) { nextNode = 0; break; } } } } pos = nextNode; } // while(0 != pos) if (m_keys.empty() == false) { const KeysMapType::iterator theEnd = m_keys.end(); KeysMapType::iterator theCurrent = m_keys.begin(); assert(theCurrent != theEnd); do { NodeListMapType& theCurrentNodeListMap = (*theCurrent).second; if (theCurrentNodeListMap.empty() == false) { const NodeListMapType::iterator theEnd = theCurrentNodeListMap.end(); NodeListMapType::iterator theCurrent = theCurrentNodeListMap.begin(); assert(theCurrent != theEnd); do { (*theCurrent).second.setDocumentOrder(); ++theCurrent; } while(theCurrent != theEnd); } ++theCurrent; } while(theCurrent != theEnd); } } // end constructor KeyTable* KeyTable::create( MemoryManager& theManager, XalanNode* startNode, const PrefixResolver& resolver, const KeyDeclarationVectorType& keyDeclarations, StylesheetExecutionContext& executionContext) { typedef KeyTable ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( startNode, resolver, keyDeclarations, executionContext); theGuard.release(); return theResult; } KeyTable::~KeyTable() { } const MutableNodeRefList* KeyTable::getNodeSetByKey( const XalanQName& qname, const XalanDOMString& ref) const { const KeysMapType::const_iterator i = m_keys.find(qname); if (i != m_keys.end()) { const NodeListMapType& theMap = (*i).second; const NodeListMapType::const_iterator j = theMap.find(ref); if (j != theMap.end()) { return &(*j).second; } else { return &s_dummyList; } } else { size_type nDeclarations=m_allKeys.size(); for (KeyDeclarationVectorType::size_type i = 0; i < nDeclarations; ++i) { if (*m_allKeys[i].getQName()==qname) { return &s_dummyList; } } } return 0; } inline void addIfNotFound( StylesheetExecutionContext& executionContext, MutableNodeRefList& theNodeList, XalanNode* theNode) { theNodeList.addNodeInDocOrder(theNode, executionContext); } static const NodeRefList theEmptyList(XalanMemMgrs::getDummyMemMgr()); void KeyTable::processKeyDeclaration( KeysMapType& theKeys, const KeyDeclaration& kd, XalanNode* testNode, const PrefixResolver& resolver, StylesheetExecutionContext& executionContext) { // Query from the node, according the the select pattern in the // use attribute in xsl:key. assert(kd.getUse() != 0); const XObjectPtr xuse(kd.getUse()->execute(testNode, resolver, theEmptyList, executionContext)); if(xuse->getType() != XObject::eTypeNodeSet) { assert(kd.getQName() != 0); addIfNotFound( executionContext, theKeys[*kd.getQName()][xuse->str(executionContext)], testNode); } else { const NodeRefListBase& nl = xuse->nodeset(); // Use each node in the node list as a key value that we'll be // able to use to look up the given node. const NodeRefListBase::size_type nUseValues = nl.getLength(); const StylesheetExecutionContext::GetCachedString theGuard(executionContext); XalanDOMString& nodeData = theGuard.get(); // Use each node in the node list as a key value that we'll be // able to use to look up the given node. for (NodeRefListBase::size_type i = 0; i < nUseValues; ++i) { // Get the string value of the node to use as the result of the // expression. assert(nl.item(i) != 0); DOMServices::getNodeData(*nl.item(i), executionContext, nodeData); assert(kd.getQName() != 0); addIfNotFound( executionContext, theKeys[*kd.getQName()][nodeData], testNode); nodeData.clear(); } } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XalanElemTemplateAllocator.cpp0000664000175000000640000000355711731656103022746 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanElemTemplateAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanElemTemplateAllocator::XalanElemTemplateAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanElemTemplateAllocator::~XalanElemTemplateAllocator() { } XalanElemTemplateAllocator::data_type* XalanElemTemplateAllocator::create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type( constructionContext, stylesheetTree, atts, lineNumber, columnNumber); m_allocator.commitAllocation(theBlock); return theResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemValueOf.cpp0000664000175000000640000002477711731656103017716 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemValueOf.hpp" #include #include #include #include #include #include #include "Constants.hpp" #include "SelectionEvent.hpp" #include "Stylesheet.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" #include "StylesheetRoot.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemValueOf::ElemValueOf( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemTemplateElement( constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_VALUE_OF), m_selectPattern(0) { bool isSelectCurrentNode = false; const XalanSize_t nAttrs = atts.getLength(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (equals(aname, Constants::ATTRNAME_SELECT)) { const XalanDOMChar* const avalue = atts.getValue(i); assert(avalue != 0); if (avalue[0] == XalanUnicode::charFullStop && avalue[1] == 0) { isSelectCurrentNode = true; } else { m_selectPattern = constructionContext.createXPath( getLocator(), avalue, *this); } } else if (equals(aname, Constants::ATTRNAME_DISABLE_OUTPUT_ESCAPING)) { disableOutputEscaping( getStylesheet().getYesOrNo( aname, atts.getValue(i), constructionContext)); } else if (isAttrOK( aname, atts, i, constructionContext) == false && processSpaceAttr( Constants::ELEMNAME_VALUEOF_WITH_PREFIX_STRING.c_str(), aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_VALUEOF_WITH_PREFIX_STRING.c_str(), aname); } } if (isSelectCurrentNode == false && m_selectPattern == 0) { error( constructionContext, XalanMessages::ElementRequiresAttribute_2Param, Constants::ELEMNAME_VALUEOF_WITH_PREFIX_STRING, Constants::ATTRNAME_SELECT); } } ElemValueOf::~ElemValueOf() { } const XalanDOMString& ElemValueOf::getElementName() const { return Constants::ELEMNAME_VALUEOF_WITH_PREFIX_STRING; } class FormatterListenerAdapater : public FormatterListener { public: FormatterListenerAdapater(StylesheetExecutionContext& executionContext) : FormatterListener(OUTPUT_METHOD_NONE), m_executionContext(executionContext) { } ~FormatterListenerAdapater() { } void setDocumentLocator(const Locator* const /* locator */) { } void startDocument() { } void endDocument() { } void startElement( const XMLCh* const /* name */, AttributeListType& /* attrs */) { } void endElement(const XMLCh* const /* name */) { } void characters( const XMLCh* const chars, const size_type length) { m_executionContext.characters(chars, 0, length); } void charactersRaw( const XMLCh* const chars, const size_type length) { m_executionContext.charactersRaw(chars, 0, length); } void entityReference(const XMLCh* const /* name */) { } void ignorableWhitespace( const XMLCh* const /* chars */, const size_type /* length */) { } void processingInstruction( const XMLCh* const target, const XMLCh* const data) { m_executionContext.processingInstruction(target, data); } void resetDocument() { } void comment(const XMLCh* const data) { m_executionContext.comment(data); } void cdata( const XMLCh* const /* ch */, const size_type /* length */) { } private: StylesheetExecutionContext& m_executionContext; }; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemValueOf::startElement(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::startElement(executionContext); XalanNode* const sourceNode = executionContext.getCurrentNode(); assert(sourceNode != 0); if (m_selectPattern == 0) { if (disableOutputEscaping() == false) { executionContext.characters(*sourceNode); } else { executionContext.charactersRaw(*sourceNode); } if (0 != executionContext.getTraceListeners()) { const StylesheetExecutionContext::GetCachedString theString(executionContext); DOMServices::getNodeData(*sourceNode, executionContext, theString.get()); fireSelectionEvent(executionContext, sourceNode, theString.get()); } } else { FormatterListenerAdapater theAdapter(executionContext); XPath::MemberFunctionPtr theFunction = disableOutputEscaping() == false ? &FormatterListener::characters : &FormatterListener::charactersRaw; m_selectPattern->execute(*this, executionContext, theAdapter, theFunction); if (0 != executionContext.getTraceListeners()) { const XObjectPtr value(m_selectPattern->execute(sourceNode, *this, executionContext)); if (value.null() == false) { fireSelectionEvent(executionContext, sourceNode, value); } } } return 0; } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemValueOf::execute(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::execute(executionContext); XalanNode* const sourceNode = executionContext.getCurrentNode(); assert(sourceNode != 0); if (m_selectPattern == 0) { if (disableOutputEscaping() == false) { executionContext.characters(*sourceNode); } else { executionContext.charactersRaw(*sourceNode); } if (0 != executionContext.getTraceListeners()) { const StylesheetExecutionContext::GetCachedString theString(executionContext); DOMServices::getNodeData(*sourceNode, executionContext, theString.get()); fireSelectionEvent(executionContext, sourceNode, theString.get()); } } else { FormatterListenerAdapater theAdapter(executionContext); XPath::MemberFunctionPtr theFunction = disableOutputEscaping() == false ? &FormatterListener::characters : &FormatterListener::charactersRaw; m_selectPattern->execute(*this, executionContext, theAdapter, theFunction); if (0 != executionContext.getTraceListeners()) { const XObjectPtr value(m_selectPattern->execute(sourceNode, *this, executionContext)); if (value.null() == false) { fireSelectionEvent(executionContext, sourceNode, value); } } } } #endif const XPath* ElemValueOf::getXPath(XalanSize_t index) const { return index == 0 ? m_selectPattern : 0; } void ElemValueOf::fireSelectionEvent( StylesheetExecutionContext& executionContext, XalanNode* sourceNode, const XalanDOMString& theValue) const { const XObjectPtr value(executionContext.getXObjectFactory().createStringReference(theValue)); fireSelectionEvent(executionContext, sourceNode, value); } void ElemValueOf::fireSelectionEvent( StylesheetExecutionContext& executionContext, XalanNode* sourceNode, const XObjectPtr theValue) const { if (m_selectPattern != 0) { fireSelectionEvent( executionContext, sourceNode, theValue, m_selectPattern->getExpression().getCurrentPattern()); } else { const StylesheetExecutionContext::GetCachedString thePattern(executionContext); thePattern.get() = "."; fireSelectionEvent( executionContext, sourceNode, theValue, thePattern.get()); } } void ElemValueOf::fireSelectionEvent( StylesheetExecutionContext& executionContext, XalanNode* sourceNode, const XObjectPtr theValue, const XalanDOMString& thePattern) const { executionContext.fireSelectEvent( SelectionEvent( executionContext, sourceNode, *this, XalanDOMString("select", executionContext.getMemoryManager()), thePattern, theValue)); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/CountersTable.cpp0000664000175000000640000001211111731656103020277 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "CountersTable.hpp" #include #include "ElemNumber.hpp" #include "StylesheetExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN inline void appendBtoFList( CountersTable::NodeVectorType& flist, const CountersTable::NodeVectorType& blist) { XALAN_USING_STD(back_inserter) XALAN_USING_STD(copy) flist.reserve(flist.size() + blist.size()); copy( blist.rbegin(), blist.rend(), back_inserter(flist)); } CountersTable::CountType CountersTable::countNode( StylesheetExecutionContext& support, const ElemNumber& numberElem, XalanNode* node) { assert(numberElem.getID() < m_countersVector.size()); CountType count = 0; CounterVectorType& counters = m_countersVector[numberElem.getID()]; const CounterVectorType::size_type nCounters = counters.size(); XalanNode* target = numberElem.getTargetNode(support, node); if(0 != target) { for(CounterVectorType::size_type i = 0; i < nCounters; i++) { const Counter& counter = counters[i]; count = counter.getPreviouslyCounted(support, target); if(count > 0) { return count; } } // In the loop below, we collect the nodes in backwards doc order, so // we don't have to do inserts, but then we store the nodes in forwards // document order, so we don't have to insert nodes into that list, // so that's what the appendBtoFList stuff is all about. In cases // of forward counting by one, this will mean a single node copy from // the backwards list (m_newFound) to the forwards list // (counter.m_countNodes). count = 0; for(; 0 != target; target = numberElem.getPreviousNode(support, target)) { // First time in, we should not have to check for previous counts, // since the original target node was already checked in the // block above. if(0 != count) { for(CounterVectorType::size_type i = 0; i < nCounters; ++i) { Counter& counter = counters[i]; const Counter::NodeVectorType::size_type cacheLen = counter.m_countNodes.size(); assert(cacheLen == CountType(cacheLen)); if(cacheLen > 0 && counter.m_countNodes[cacheLen - 1] == target) { count += CountType(cacheLen) + counter.m_countNodesStartCount; if(cacheLen > 0) { appendBtoFList(counter.m_countNodes, m_newFound); } m_newFound.clear(); return count; } } } m_newFound.push_back(target); ++count; } // If we got to this point, then we didn't find a counter, so make // one and add it to the list. counters.resize(counters.size() + 1); Counter& counter = counters.back(); counter.m_numberElem = &numberElem; appendBtoFList(counter.m_countNodes, m_newFound); m_newFound.clear(); } return count; } Counter::CountType Counter::getPreviouslyCounted( StylesheetExecutionContext& executionContext, const XalanNode* node) const { const NodeVectorType::size_type n = m_countNodes.size(); assert(CountType(n) == n); CountType result = 0; for(NodeVectorType::size_type i = n; i > 0; --i) { const XalanNode* const countedNode = m_countNodes[i - 1]; if(node == countedNode) { // Since the list is in backwards order, the count is // how many are in the rest of the list. result = CountType(i) + m_countNodesStartCount; break; } // Try to see if the given node falls after the counted node... // if it does, don't keep searching backwards. if(executionContext.isNodeAfter(*countedNode, *node)) { break; } } return result; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemCopy.cpp0000664000175000000640000001377611731656103017264 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemCopy.hpp" #include #include #include #include "Constants.hpp" #include "Stylesheet.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" #include "StylesheetRoot.hpp" #include "TracerEvent.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemCopy::ElemCopy( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemUse(constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_COPY) { const XalanSize_t nAttrs = atts.getLength(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (processUseAttributeSets( constructionContext, aname, atts, i) == false && processSpaceAttr( Constants::ELEMNAME_COPY_WITH_PREFIX_STRING.c_str(), aname, atts, i, constructionContext) == false && isAttrOK( aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_COPY_WITH_PREFIX_STRING.c_str(), aname); } } } const XalanDOMString& ElemCopy::getElementName() const { return Constants::ELEMNAME_COPY_WITH_PREFIX_STRING; } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemCopy::startElement(StylesheetExecutionContext& executionContext) const { XalanNode* const sourceNode = executionContext.getCurrentNode(); assert(sourceNode != 0); const XalanNode::NodeType nodeType = sourceNode->getNodeType(); if(XalanNode::DOCUMENT_NODE != nodeType) { executionContext.cloneToResultTree( *sourceNode, nodeType, true, false, getLocator()); if(XalanNode::ELEMENT_NODE == nodeType) { ElemUse::startElement(executionContext); executionContext.copyNamespaceAttributes(*sourceNode); return beginExecuteChildren(executionContext); } else { if(0 != executionContext.getTraceListeners()) { executionContext.fireTraceEvent(TracerEvent(executionContext, *this)); } } } else { if(0 != executionContext.getTraceListeners()) { executionContext.fireTraceEvent(TracerEvent(executionContext, *this)); } ElemUse::startElement(executionContext); return beginExecuteChildren(executionContext); } return 0; } void ElemCopy::endElement(StylesheetExecutionContext& executionContext) const { XalanNode* const sourceNode = executionContext.getCurrentNode(); assert(sourceNode != 0); const XalanNode::NodeType nodeType = sourceNode->getNodeType(); if(XalanNode::DOCUMENT_NODE != nodeType) { if(XalanNode::ELEMENT_NODE == nodeType) { endExecuteChildren(executionContext); executionContext.endElement(sourceNode->getNodeName().c_str()); ElemUse::endElement(executionContext); } } else { endExecuteChildren(executionContext); ElemUse::endElement(executionContext); } } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemCopy::execute(StylesheetExecutionContext& executionContext) const { XalanNode* const sourceNode = executionContext.getCurrentNode(); assert(sourceNode != 0); const XalanNode::NodeType nodeType = sourceNode->getNodeType(); if(XalanNode::DOCUMENT_NODE != nodeType) { executionContext.cloneToResultTree( *sourceNode, nodeType, true, false, getLocator()); if(XalanNode::ELEMENT_NODE == nodeType) { ElemUse::execute(executionContext); executionContext.copyNamespaceAttributes(*sourceNode); executeChildren(executionContext); executionContext.endElement(sourceNode->getNodeName().c_str()); } else { if(0 != executionContext.getTraceListeners()) { executionContext.fireTraceEvent(TracerEvent(executionContext, *this)); } } } else { if(0 != executionContext.getTraceListeners()) { executionContext.fireTraceEvent(TracerEvent(executionContext, *this)); } ElemUse::execute(executionContext); executeChildren(executionContext); } } #endif XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/NamespacesHandler.cpp0000664000175000000640000006206011731656103021112 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "NamespacesHandler.hpp" #include #include #include #include "AVT.hpp" #include "Constants.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN template const typename VectorType::value_type* find( const VectorType& theVector, const XalanDOMString& theString, MemberFunctionType theMemberFunction) { const typename VectorType::const_iterator theEnd(theVector.end()); typename VectorType::const_iterator theCurrent(theVector.begin()); while(theCurrent != theEnd) { if (((*theCurrent).*theMemberFunction)() == theString) { return &*theCurrent; } else { ++theCurrent; } } return 0; } template typename VectorType::value_type* findNonConst( VectorType& theVector, const XalanDOMString& theString, MemberFunctionType theMemberFunction) { const typename VectorType::iterator theEnd(theVector.end()); typename VectorType::iterator theCurrent(theVector.begin()); while(theCurrent != theEnd) { if (((*theCurrent).*theMemberFunction)() == theString) { return &*theCurrent; } else { ++theCurrent; } } return 0; } template const typename VectorType::value_type* findByPrefix( const VectorType& theVector, const XalanDOMString& thePrefix) { typedef typename VectorType::value_type value_type; return find(theVector, thePrefix, &value_type::getPrefix); } template typename VectorType::value_type* findByPrefixNonConst( VectorType& theVector, const XalanDOMString& thePrefix) { typedef typename VectorType::value_type value_type; return findNonConst(theVector, thePrefix, &value_type::getPrefix); } template const typename VectorType::value_type* findByURI( const VectorType& theVector, const XalanDOMString& theNamespaceURI) { typedef typename VectorType::value_type value_type; return find(theVector, theNamespaceURI, &value_type::getURI); } template bool addByPrefix( StylesheetConstructionContext& theConstructionContext, VectorType& theVector, const XalanDOMString& thePrefix, const XalanDOMString& theURI) { typedef typename VectorType::value_type value_type; const value_type* const theEntry = findByPrefix(theVector, thePrefix); if (theEntry != 0) { return false; } else { theVector.push_back( value_type( theConstructionContext.getPooledString(thePrefix), theConstructionContext.getPooledString(theURI))); return true; } } template bool addOrUpdateByPrefix( StylesheetConstructionContext& theConstructionContext, VectorType& theVector, const XalanDOMString& thePrefix, const XalanDOMString& theURI) { typedef typename VectorType::value_type value_type; value_type* const theEntry = findByPrefixNonConst(theVector, thePrefix); if (theEntry == 0) { theVector.push_back( value_type( theConstructionContext.getPooledString(thePrefix), theConstructionContext.getPooledString(theURI))); return true; } else { if (theEntry->getURI() == theURI) { return false; } else { theEntry->setURI(theConstructionContext.getPooledString(theURI)); return true; } } } template const XalanDOMString* findNamespace( const VectorType& theVector, const XalanDOMString& thePrefix) { typedef typename VectorType::value_type value_type; const value_type* const theEntry = findByPrefix(theVector, thePrefix); if (theEntry == 0) { return 0; } else { return &theEntry->getURI(); } } const XalanDOMString NamespacesHandler::Namespace::s_emptyString(XalanMemMgrs::getDummyMemMgr()); NamespacesHandler::PrefixChecker::PrefixChecker() { } NamespacesHandler::PrefixChecker::~PrefixChecker() { } NamespacesHandler::NamespacesHandler(MemoryManager& theManager) : m_excludedResultPrefixes(theManager), m_namespaceDeclarations(theManager), m_extensionNamespaceURIs(theManager), m_namespaceAliases(theManager) { } NamespacesHandler::NamespacesHandler( StylesheetConstructionContext& theConstructionContext, const NamespacesHandler& /* stylesheetNamespacesHandler */, const NamespacesStackType& theCurrentNamespaces, const XalanDOMString& theXSLTNamespaceURI) : m_excludedResultPrefixes(theConstructionContext.getMemoryManager()), m_namespaceDeclarations(theConstructionContext.getMemoryManager()), m_extensionNamespaceURIs(theConstructionContext.getMemoryManager()), m_namespaceAliases(theConstructionContext.getMemoryManager()) { // Go through the namespaces stack in reverse order... const NamespacesStackType::const_reverse_iterator theEnd = theCurrentNamespaces.rend(); NamespacesStackType::const_reverse_iterator i = theCurrentNamespaces.rbegin(); for(; i != theEnd; ++i) { // Process each namespace in the current vector... const NamespaceVectorType::const_iterator theVectorEnd = (*i).end(); NamespaceVectorType::const_iterator j = (*i).begin(); for(; j != theVectorEnd; ++j) { const NameSpace& theNamespace = *j; const XalanDOMString& theURI = theNamespace.getURI(); const XalanDOMString& thePrefix = theNamespace.getPrefix(); if(shouldExcludeResultNamespaceNode( theXSLTNamespaceURI, theURI) == false) { addByPrefix( theConstructionContext, m_namespaceDeclarations, thePrefix, theURI); } else { addByPrefix( theConstructionContext, m_excludedResultPrefixes, thePrefix, theURI); assert(findByPrefix(m_excludedResultPrefixes, thePrefix) != 0 && findByPrefix(m_excludedResultPrefixes, thePrefix)->getURI() == theURI); } } } } NamespacesHandler::~NamespacesHandler() { } void NamespacesHandler::addExtensionNamespaceURI( StylesheetConstructionContext& theConstructionContext, const XalanDOMString& theURI) { m_extensionNamespaceURIs.push_back(&theConstructionContext.getPooledString(theURI)); } const XalanDOMString* NamespacesHandler::getNamespace(const XalanDOMString& thePrefix) const { const NamespacesVectorType::value_type* theNamespace = findByPrefix(m_excludedResultPrefixes, thePrefix); if (theNamespace != 0) { return &theNamespace->getURI(); } else { return findNamespace(m_namespaceDeclarations, thePrefix); } } void NamespacesHandler::copyNamespaceAliases(const NamespacesHandler& parentNamespacesHandler) { copyNamespaceAliases(parentNamespacesHandler.m_namespaceAliases); } const XalanDOMString* NamespacesHandler::getNamespaceAlias(const XalanDOMString& theStylesheetNamespace) const { if (m_namespaceAliases.empty() == true) { return 0; } else { const NamespaceAliasesMapType::const_iterator i = m_namespaceAliases.find(&theStylesheetNamespace); if (i != m_namespaceAliases.end()) { return (*i).second; } else { return 0; } } } void NamespacesHandler::setNamespaceAlias( StylesheetConstructionContext& theConstructionContext, const XalanDOMString& theStylesheetNamespace, const XalanDOMString& theResultNamespace) { m_namespaceAliases[&theConstructionContext.getPooledString(theStylesheetNamespace)] = &theConstructionContext.getPooledString(theResultNamespace); } typedef StylesheetConstructionContext::GetCachedString GetCachedString; void NamespacesHandler::processExcludeResultPrefixes( StylesheetConstructionContext& theConstructionContext, const XalanDOMChar* theValue, const NamespacesStackType& theCurrentNamespaces) { StringTokenizer tokenizer( theValue, Constants::DEFAULT_WHITESPACE_SEPARATOR_STRING); const GetCachedString theGuard(theConstructionContext); XalanDOMString& thePrefix = theGuard.get(); while(tokenizer.hasMoreTokens() == true) { tokenizer.nextToken(thePrefix); if(equalsIgnoreCaseASCII(thePrefix, Constants::ATTRVAL_DEFAULT_PREFIX) == true) { thePrefix.clear(); } const XalanDOMString* const theNamespaceURI = XalanQName::getNamespaceForPrefix(theCurrentNamespaces, thePrefix); if(theNamespaceURI == 0) { const GetCachedString theGuard(theConstructionContext); theConstructionContext.problem( StylesheetConstructionContext::eXSLTProcessor, StylesheetConstructionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::PrefixIsNotDeclared_1Param, thePrefix), theConstructionContext.getLocatorFromStack(), 0); } addOrUpdateByPrefix( theConstructionContext, m_excludedResultPrefixes, thePrefix, *theNamespaceURI); assert(findByPrefix(m_excludedResultPrefixes, thePrefix) != 0 && findByPrefix(m_excludedResultPrefixes, thePrefix)->getURI() == *theNamespaceURI); } } void NamespacesHandler::processExtensionElementPrefixes( StylesheetConstructionContext& theConstructionContext, const XalanDOMChar* theValue, const NamespacesStackType& theCurrentNamespaces) { StringTokenizer tokenizer( theValue, Constants::DEFAULT_WHITESPACE_SEPARATOR_STRING); const GetCachedString theGuard(theConstructionContext); XalanDOMString& thePrefix = theGuard.get(); while(tokenizer.hasMoreTokens() == true) { tokenizer.nextToken(thePrefix); if(equalsIgnoreCaseASCII(thePrefix, Constants::ATTRVAL_DEFAULT_PREFIX) == true) { thePrefix.clear(); } const XalanDOMString* const theNamespace = XalanQName::getNamespaceForPrefix(theCurrentNamespaces, thePrefix); if(theNamespace == 0) { const GetCachedString theGuard(theConstructionContext); theConstructionContext.problem( StylesheetConstructionContext::eXSLTProcessor, StylesheetConstructionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::PrefixIsNotDeclared_1Param, thePrefix), theConstructionContext.getLocatorFromStack(), 0); } assert(theNamespace != 0); m_extensionNamespaceURIs.push_back(&theConstructionContext.getPooledString(*theNamespace)); } } void NamespacesHandler::postConstruction( StylesheetConstructionContext& theConstructionContext, bool fProcessNamespaceAliases, const XalanDOMString& theElementName, const NamespacesHandler* parentNamespacesHandler, const PrefixChecker* prefixChecker) { // Copy everything from the parent handler, if there is one... if (parentNamespacesHandler != 0) { copyNamespaceAliases(parentNamespacesHandler->m_namespaceAliases); copyExtensionNamespaceURIs(parentNamespacesHandler->m_extensionNamespaceURIs); copyExcludeResultPrefixes(parentNamespacesHandler->m_excludedResultPrefixes); } // Figure out the prefix of the owning element, to make sure we // don't exclude its prefix. const XalanDOMString::size_type indexOfNSSep = indexOf(theElementName, XalanUnicode::charColon); const GetCachedString theGuard(theConstructionContext); XalanDOMString& thePrefix = theGuard.get(); if (indexOfNSSep < theElementName.length()) { substring(theElementName, thePrefix, 0, indexOfNSSep); } processExcludeResultPrefixes(theConstructionContext, thePrefix, prefixChecker); if (fProcessNamespaceAliases == true) { // $$ ToDo: Does this happen before or after exclude-result-prefixes? processNamespaceAliases(); } createResultAttributeNames(theConstructionContext); } NamespacesHandler& NamespacesHandler::operator=(const NamespacesHandler& theRHS) { if (&theRHS != this) { m_excludedResultPrefixes = theRHS.m_excludedResultPrefixes; m_namespaceDeclarations = theRHS.m_namespaceDeclarations; m_extensionNamespaceURIs = theRHS.m_extensionNamespaceURIs; m_namespaceAliases = theRHS.m_namespaceAliases; } return *this; } bool NamespacesHandler::shouldExcludeResultNamespaceNode( const XalanDOMString& theXSLTNamespaceURI, const XalanDOMString& theURI) const { // These are commone namespaces that are always excluded... if(equals(theURI, theXSLTNamespaceURI) || isExtensionNamespaceURI(theURI) == true || equals(theURI, DOMServices::s_XMLNamespaceURI)) { return true; } else if (isExcludedNamespaceURI(theURI) == true) { // It was found in the excluded result prefixes URIs... return true; } else { return false; } } void NamespacesHandler::outputResultNamespaces( StylesheetExecutionContext& theExecutionContext, bool supressDefault) const { // Write out the namespace declarations... if (m_namespaceDeclarations.empty() == false) { const NamespaceExtendedVectorType::const_iterator theEnd = m_namespaceDeclarations.end(); NamespaceExtendedVectorType::const_iterator i = m_namespaceDeclarations.begin(); for(; i != theEnd; ++i) { const NamespaceExtended& theNamespace = *i; const XalanDOMString& thePrefix = theNamespace.getPrefix(); // If we're not supposed to suppress the default namespace, or // there's a prefix (so it's not the default), we can continue // to see if we need to add the result namespace. if (supressDefault == false || thePrefix.empty() == false) { const XalanDOMString& theResultURI = theNamespace.getURI(); assert(theNamespace.getResultAttributeName().empty() == false); // Get the any namespace declaration currently active for the // prefix. const XalanDOMString* const desturi = theExecutionContext.getResultNamespaceForPrefix(thePrefix); // Is there already an active namespace declaration? if(desturi == 0 || !equals(theResultURI, *desturi)) { // No, so add one... theExecutionContext.addResultAttribute(theNamespace.getResultAttributeName(), theResultURI); } } } } } bool NamespacesHandler::isExcludedNamespaceURI(const XalanDOMString& theNamespaceURI) const { return findByURI(m_excludedResultPrefixes, theNamespaceURI) != 0 ? true : false; } bool NamespacesHandler::findString( const XalanDOMString& theString, const XalanDOMStringPointerVectorType& theVector) { const XalanDOMStringPointerVectorType::const_iterator theEnd = theVector.end(); XalanDOMStringPointerVectorType::const_iterator theCurrent = theVector.begin(); while(theCurrent != theEnd) { assert(*theCurrent != 0); const XalanDOMString* const theCurrentString = *theCurrent; if (theString == *theCurrentString) { return true; } ++theCurrent; } return false; } void NamespacesHandler::clear() { m_excludedResultPrefixes.clear(); m_namespaceDeclarations.clear(); m_extensionNamespaceURIs.clear(); m_namespaceAliases.clear(); } void NamespacesHandler::swap(NamespacesHandler& theOther) { m_excludedResultPrefixes.swap(theOther.m_excludedResultPrefixes); m_namespaceDeclarations.swap(theOther.m_namespaceDeclarations); m_extensionNamespaceURIs.swap(theOther.m_extensionNamespaceURIs); m_namespaceAliases.swap(theOther.m_namespaceAliases); } void NamespacesHandler::createResultAttributeNames(StylesheetConstructionContext& theConstructionContext) { // Go through all of the result namespaces and create the attribute // name that will be used when they're written to the result tree. // This is more efficient if the stylesheet is used multiple times. if (m_namespaceDeclarations.empty() == false) { const NamespaceExtendedVectorType::iterator theEnd = m_namespaceDeclarations.end(); NamespaceExtendedVectorType::iterator i = m_namespaceDeclarations.begin(); const GetCachedString theGuard(theConstructionContext); XalanDOMString& theName = theGuard.get(); for(; i != theEnd; ++i) { NamespaceExtended& theNamespace = *i; const XalanDOMString& thePrefix = theNamespace.getPrefix(); if (thePrefix.empty() == false) { // Create a name of the form xmlns:prefix, where "prefix" is the // text of the prefix. // Reserve the appropriate amount of space in the string. theName.reserve(DOMServices::s_XMLNamespaceWithSeparatorLength + thePrefix.length() + 1); theName = DOMServices::s_XMLNamespaceWithSeparator; theName += thePrefix; theNamespace.setResultAttributeName(theConstructionContext.getPooledString(theName)); } else { // It's the default namespace... theNamespace.setResultAttributeName(DOMServices::s_XMLNamespace); } } } } void NamespacesHandler::processExcludeResultPrefixes( StylesheetConstructionContext& theConstructionContext, const XalanDOMString& theElementPrefix, const PrefixChecker* prefixChecker) { if (m_excludedResultPrefixes.empty() == false) { NamespaceExtendedVectorType::iterator i = m_namespaceDeclarations.begin(); // Check for any result prefixes we should exclude... while(i != m_namespaceDeclarations.end()) { const Namespace& theNamespace = *i; const XalanDOMString& thePrefix = theNamespace.getPrefix(); const XalanDOMString& theURI = theNamespace.getURI(); // We can never exclude the prefix of our owner element, so // check that first... if (equals(thePrefix, theElementPrefix) == false && (prefixChecker == 0 || prefixChecker->isActive(thePrefix) == false) && (isExcludedNamespaceURI(theURI) == true || isExtensionNamespaceURI(theURI) == true)) { // Add it to the excluded prefixes, in case we need it later... m_excludedResultPrefixes.push_back( NamespacesVectorType::value_type( theConstructionContext.getPooledString(thePrefix), theConstructionContext.getPooledString(theURI))); // It's excluded, so remove it... i = m_namespaceDeclarations.erase(i); } else { ++i; } } } } void NamespacesHandler::processNamespaceAliases() { if (m_namespaceDeclarations.empty() == false) { const NamespaceExtendedVectorType::iterator theEnd = m_namespaceDeclarations.end(); NamespaceExtendedVectorType::iterator i = m_namespaceDeclarations.begin(); // Look at everyone of my namespaces for an alias, and substitute the // alias as appropriate... for(; i != theEnd; ++i) { Namespace& theNamespace = *i; const XalanDOMString& theURI = theNamespace.getURI(); const XalanDOMString* const theAlias = getNamespaceAlias(theURI); // Is there a local alias? if (theAlias != 0) { // Yup, so use it... theNamespace.setURI(*theAlias); } } } } void NamespacesHandler::copyNamespaceAliases(const NamespaceAliasesMapType& theNamespaceAliases) { if (theNamespaceAliases.empty() == false) { if (m_namespaceAliases.empty() == true) { m_namespaceAliases = theNamespaceAliases; } else { const NamespaceAliasesMapType::const_iterator theEnd = theNamespaceAliases.end(); NamespaceAliasesMapType::const_iterator i = theNamespaceAliases.begin(); // Add them in... while(i != theEnd) { m_namespaceAliases.insert(*i); ++i; } } } } void NamespacesHandler::copyExtensionNamespaceURIs(const XalanDOMStringPointerVectorType& theExtensionNamespaceURIs) { if (theExtensionNamespaceURIs.empty() == false) { if (m_extensionNamespaceURIs.empty() == true) { m_extensionNamespaceURIs = theExtensionNamespaceURIs; } else { const XalanDOMStringPointerVectorType::const_iterator theEnd = theExtensionNamespaceURIs.end(); XalanDOMStringPointerVectorType::const_iterator i = theExtensionNamespaceURIs.begin(); // Add them in... while(i != theEnd) { assert(*i != 0); if (isExtensionNamespaceURI(**i) == false) { m_extensionNamespaceURIs.push_back(*i); } ++i; } } } } void NamespacesHandler::copyExcludeResultPrefixes(const NamespacesVectorType& theExcludeResultPrefixes) { if (theExcludeResultPrefixes.empty() == false) { if (m_excludedResultPrefixes.empty() == true) { m_excludedResultPrefixes = theExcludeResultPrefixes; } else { const NamespacesVectorType::const_iterator theEnd = theExcludeResultPrefixes.end(); NamespacesVectorType::const_iterator i = theExcludeResultPrefixes.begin(); // Add them in... while(i != theEnd) { if (findByPrefix(m_excludedResultPrefixes, (*i).getPrefix()) == 0) { m_excludedResultPrefixes.push_back(*i); } ++i; } } } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XalanAVTAllocator.cpp0000664000175000000640000000343611731656103021016 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanAVTAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanAVTAllocator::XalanAVTAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanAVTAllocator::~XalanAVTAllocator() { } XalanAVTAllocator::data_type* XalanAVTAllocator::create( StylesheetConstructionContext& constructionContext, const Locator* locator, const XalanDOMChar* name, const XalanDOMChar* stringedValue, const PrefixResolver& resolver) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type( constructionContext, locator, name, stringedValue, resolver); m_allocator.commitAllocation(theBlock); return theResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XalanNumberingResourceBundle.hpp0000664000175000000640000001306011731656103023312 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_NUMBERINGRESOURCEBUNDLE_HEADER_GUARD) #define XALAN_NUMBERINGRESOURCEBUNDLE_HEADER_GUARD // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN XALAN_USES_MEMORY_MANAGER(XalanDOMCharVectorType) class XalanNumberingResourceBundle { public: typedef unsigned long NumberType; typedef XalanVector NumberTypeVectorType; typedef XalanVector DigitsTableVectorType; // Enum to describe language orientation. (English is left-to-right, // Hebrew is right-to-left, etc.) enum eOrientation { eLeftToRight, eRightToLeft, eTopToBottom, eBottomToTop }; // Enum to describe how numbering is done. enum eNumberingMethod { eAdditive, eMultiplicativeAdditive }; // Enum to describe the where the multiplier goes. enum eMultiplierOrder { eFollows, ePrecedes }; XalanNumberingResourceBundle( const XalanDOMString& theLanguage, const XalanDOMString& theUILanguage, const XalanDOMString& theHelpLanguage, const XalanDOMCharVectorType& theAlphabet, const XalanDOMCharVectorType& theTraditionalAlphabet, eOrientation theOrientation, eNumberingMethod theNumberingMethod, eMultiplierOrder theMultiplierOrder, NumberType theMaxNumericalValue, const NumberTypeVectorType& theNumberGroups, const NumberTypeVectorType& theMultipliers, const XalanDOMCharVectorType& theZeroChar, const XalanDOMCharVectorType& theMultiplierChars, const DigitsTableVectorType& theDigitsTable, const NumberTypeVectorType& theDigitsTableTable, MemoryManager& theManager); explicit XalanNumberingResourceBundle(MemoryManager& theManager); XalanNumberingResourceBundle(const XalanNumberingResourceBundle& theSource, MemoryManager& theManager); ~XalanNumberingResourceBundle(); MemoryManager& getMemoryManager() { return m_language.getMemoryManager(); } bool operator==(const XalanNumberingResourceBundle& theRHS) const { return equals(m_language, theRHS.m_language); } const XalanDOMString& getLanguage() const { return m_language; } const XalanDOMString& getUILanguage() const { return m_uiLanguage; } const XalanDOMString& getHelpLanguage() const { return m_helpLanguage; } const XalanDOMCharVectorType& getAlphabet() const { return m_alphabet; } const XalanDOMCharVectorType& getTraditionalAlphabet() const { return m_traditionalAlphabet; } eOrientation getOrientation() const { return m_orientation; } eNumberingMethod getNumberingMethod() const { return m_numberingMethod; } eMultiplierOrder getMultiplierOrder() const { return m_multiplierOrder; } NumberType getMaxNumericalValue() const { return m_maxNumericalValue; } const NumberTypeVectorType& getNumberGroups() const { return m_numberGroups; } const NumberTypeVectorType& getMultipliers() const { return m_multipliers; } const XalanDOMCharVectorType& getZeroChar() const { return m_zeroChar; } const XalanDOMCharVectorType& getMultiplierChars() const { return m_multiplierChars; } const DigitsTableVectorType& getDigitsTable() const { return m_digitsTable; } const NumberTypeVectorType& getDigitsTableTable() const { return m_digitsTableTable; } void swap(XalanNumberingResourceBundle& theOther); private: XalanDOMString m_language; XalanDOMString m_uiLanguage; XalanDOMString m_helpLanguage; XalanDOMCharVectorType m_alphabet; XalanDOMCharVectorType m_traditionalAlphabet; eOrientation m_orientation; eNumberingMethod m_numberingMethod; eMultiplierOrder m_multiplierOrder; NumberType m_maxNumericalValue; NumberTypeVectorType m_numberGroups; NumberTypeVectorType m_multipliers; XalanDOMCharVectorType m_zeroChar; XalanDOMCharVectorType m_multiplierChars; DigitsTableVectorType m_digitsTable; NumberTypeVectorType m_digitsTableTable; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_NUMBERINGRESOURCEBUNDLE_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/StylesheetConstructionContextDefault.hpp0000664000175000000640000005157211731656103025166 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(STYLESHEETCONSTRUCTIONCONTEXTDEFAULT_HEADER_GUARD_1357924680) #define STYLESHEETCONSTRUCTIONCONTEXTDEFAULT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include #include #if defined(XALAN_AUTO_PTR_REQUIRES_DEFINITION) || defined(XALAN_BUILD_DLL) #include #endif #include #include #include #include #include // Base class header file... #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "xalanc/XSLT/XalanMatchPatternDataAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN class XPathEnvSupport; class XPathFactory; class XPathProcessor; class XSLTEngineImpl; /** * * An default implementation of an abtract class which provides support for * constructing the internal representation of a stylesheet. * */ class XALAN_XSLT_EXPORT StylesheetConstructionContextDefault : public StylesheetConstructionContext { public: typedef XalanArrayAllocator XalanDOMCharVectorAllocatorType; typedef XalanArrayAllocator PointerVectorAllocatorType; typedef XalanDOMCharVectorAllocatorType::size_type VectorAllocatorSizeType; // Default size for vector allocation. enum { eDefaultXalanDOMCharVectorBlockSize = 1024, eDefaultAVTBlockSize = 128, eDefaultAVTPartSimpleBlockSize = 128, eDefaultAVTPartXPathBlockSize = 128, eDefaultXalanQNameByValueBlockSize = 32, eDefaultPointerVectorBlockSize = 512, eDefaultElemApplyTemplatesBlockSize = 10, eDefaultElemAttributeBlockSize = 10, eDefaultElemAttributeSetBlockSize = 10, eDefaultElemCallTemplateBlockSize = 10, eDefaultElemElementBlockSize = 10, eDefaultElemLiteralResultBlockSize = 20, eDefaultElemTemplateBlockSize = 10, eDefaultElemTextLiteralBlockSize = 20, eDefaultElemValueOfBlockSize = 10, eDefaultElemVariableBlockSize = 10, eDefaultMatchPatternDataBlockSize = 10 }; /* * Construct an instance. If the stylesheet(s) constructed is/are meant to be reused (a.k.a. "compiled"), * the XObjectFactory and XPathFactory instance must exist for the lifetime of the construction context * and, therefore, for the lifetime of the stylesheet(s). Otherwise, XObject and XPath instance will be * destroyed when the corresponding factories are destryed, leaving pointers to destroyed objects in the. * stylesheet(s). * * @param processor a reference to an XSLTEngineImpl instance. Used for error reporting. * @param xpathFactory a reference to an XPathFactory instance. See comments above for important details. * @param theXalanDOMCharVectorAllocatorBlockSize The block size to use for allocating vectors of XalanDOMChars * @param theAVTAllocatorBlockSize The block size to use for allocating AVT instances. * @param theAVTPartSimpleAllocatorBlockSize The block size to use for allocating AVTPartSimple instances. * @param theAVTPartXPathAllocatorBlockSize The block size to use for allocating AVTPartXPath instances. * @param theXalanQNameByValueAllocatorBlockSize The block size to use for allocating XalanQNameByValue instances. * @param thePointerVectorAllocatorBlockSize The block size to use for allocating vectors of pointers. */ StylesheetConstructionContextDefault( MemoryManager& theManager, XSLTEngineImpl& processor, XPathFactory& xpathFactory, VectorAllocatorSizeType theXalanDOMCharVectorAllocatorBlockSize = eDefaultXalanDOMCharVectorBlockSize, XalanAVTAllocator::size_type theAVTAllocatorBlockSize = eDefaultAVTBlockSize, XalanAVTPartSimpleAllocator::size_type theAVTPartSimpleAllocatorBlockSize = eDefaultAVTPartSimpleBlockSize, XalanAVTPartXPathAllocator::size_type theAVTPartXPathAllocatorBlockSize = eDefaultAVTPartXPathBlockSize, XalanQNameByValueAllocator::size_type theXalanQNameByValueAllocatorBlockSize = eDefaultXalanQNameByValueBlockSize, VectorAllocatorSizeType thePointerVectorAllocatorBlockSize = eDefaultPointerVectorBlockSize); virtual ~StylesheetConstructionContextDefault(); // These interfaces are inherited from StylesheetConstructionContext... virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode); virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode); virtual void reset(); virtual const XalanDOMString& getPooledString(const XalanDOMString& theString); virtual const XalanDOMString& getPooledString( const XalanDOMChar* theString, XalanDOMString::size_type theLength = XalanDOMString::npos); virtual XalanDOMString& getCachedString(); virtual bool releaseCachedString(XalanDOMString& theString); virtual StylesheetRoot* create(const XalanDOMString& theBaseIdentifier); virtual StylesheetRoot* create(const XSLTInputSource& theInputSource); virtual Stylesheet* create( StylesheetRoot& theStylesheetRoot, const XalanDOMString& theBaseIdentifier); virtual void destroy(StylesheetRoot* theStylesheetRoot); virtual URLAutoPtrType getURLFromString(const XalanDOMString& urlString); virtual XalanDOMString& getURLStringFromString( const XalanDOMString& urlString, XalanDOMString& theResult); virtual URLAutoPtrType getURLFromString( const XalanDOMString& urlString, const XalanDOMString& base); virtual XalanDOMString& getURLStringFromString( const XalanDOMString& urlString, const XalanDOMString& base, XalanDOMString& theResult); virtual const XalanDOMString& getXSLTNamespaceURI() const; virtual XPath* createMatchPattern( const Locator* locator, const XalanDOMString& str, const PrefixResolver& resolver, bool allowVariableReferences = true, bool allowKeyFunction = true); virtual XPath* createMatchPattern( const Locator* locator, const XalanDOMChar* str, const PrefixResolver& resolver, bool allowVariableReferences = true, bool allowKeyFunction = true); virtual XPath* createXPath( const Locator* locator, const XalanDOMString& str, const PrefixResolver& resolver, bool allowVariableReferences = true, bool allowKeyFunction = true); virtual XPath* createXPath( const Locator* locator, const XalanDOMChar* str, const PrefixResolver& resolver, bool allowVariableReferences = true, bool allowKeyFunction = true); virtual XPath* createXPath( const Locator* locator, const XalanDOMChar* str, XalanDOMString::size_type len, const PrefixResolver& resolver, bool allowVariableReferences = true, bool allowKeyFunction = true); virtual const Locator* getLocatorFromStack() const; virtual void pushLocatorOnStack(const Locator* locator); virtual void popLocatorStack(); virtual const XalanDOMString& getXalanXSLNameSpaceURL() const; virtual XalanDocument* parseXML( const XalanDOMString& urlString, DocumentHandler* docHandler, XalanDocument* docToRegister, ErrorHandler* theErrorHandler = 0); virtual bool isXMLSpaceAttribute( const XalanDOMChar* theAttributeName, const Stylesheet& theStylesheet, const Locator* theLocator = 0); virtual bool isXSLUseAttributeSetsAttribute( const XalanDOMChar* theAttributeName, const Stylesheet& theStylesheet, const Locator* theLocator = 0); virtual bool isValidQName( const XalanDOMChar* theName, const Stylesheet& theStylesheet, const Locator* theLocator = 0); virtual eElementToken getElementToken(const XalanDOMString& name) const; virtual double getXSLTVersionSupported() const; virtual XalanDOMChar* allocateXalanDOMCharVector(XalanDOMString::size_type theLength); virtual XalanDOMChar* allocateXalanDOMCharVector( const XalanDOMChar* theString, XalanDOMString::size_type theLength = XalanDOMString::npos, bool fTerminate = true); virtual const AVT* createAVT( const Locator* locator, const XalanDOMChar* name, const XalanDOMChar* stringedValue, const PrefixResolver& resolver); virtual const AVTPart* createAVTPart( const XalanDOMChar* theString, XalanDOMString::size_type theLength = XalanDOMString::npos); virtual const AVTPart* createAVTPart( const Locator* locator, const XalanDOMChar* str, XalanDOMString::size_type len, const PrefixResolver& resolver); virtual const AVT** allocateAVTPointerVector(size_type theLength); virtual const AVTPart** allocateAVTPartPointerVector(size_type theLength); virtual const XalanQName* createXalanQName( const XalanDOMString& qname, const NamespacesStackType& namespaces, const Locator* locator = 0, bool fUseDefault = false); virtual const XalanQName* createXalanQName( const XalanDOMChar* qname, const NamespacesStackType& namespaces, const Locator* locator = 0, bool fUseDefault = false); virtual const XalanQName** tokenizeQNames( size_type& count, const XalanDOMChar* qnameTokens, const NamespacesStackType& namespaces, const Locator* locator = 0, bool fUseDefault = false); virtual ElemTemplateElement* createElement( int token, Stylesheet& stylesheetTree, const AttributeListType& atts, const Locator* locator = 0); virtual ElemTemplateElement* createElement( int token, Stylesheet& stylesheetTree, const XalanDOMChar* name, const AttributeListType& atts, const Locator* locator = 0); virtual ElemTemplateElement* createElement( Stylesheet& stylesheetTree, const XalanDOMChar* chars, XalanDOMString::size_type length, bool preserveSpace, bool disableOutputEscaping, const Locator* locator = 0); virtual ElemTemplateElement* createElement( Stylesheet& stylesheetTree, const XalanDOMChar* name, const AttributeListType& atts, ExtensionNSHandler& handler, const Locator* locator = 0); virtual const XalanMatchPatternData* createXalanMatchPatternData( const ElemTemplate& theTemplate, size_type thePosition, const XalanDOMString& theTargetString, const XPath& theMatchPattern, const XalanDOMString& thePatternString, XPath::eMatchScore thePriority); static eElementToken getElementNameToken(const XalanDOMString& name); typedef XalanVector StylesheetVectorType; typedef XalanVector ElemTemplateElementVectorType; private: const AVT** doAllocateAVTPointerVector(size_type theSize) { assert(sizeof(AVT**) == sizeof(PointerVectorAllocatorType::value_type)); return reinterpret_cast(m_pointerVectorAllocator.allocate(theSize)); } const AVTPart** doAllocateAVTPartPointerVector(size_type theSize) { assert(sizeof(AVTPart**) == sizeof(PointerVectorAllocatorType::value_type)); return reinterpret_cast(m_pointerVectorAllocator.allocate(theSize)); } const XalanQName** doAllocateXalanQNamePointerVector(size_type theSize) { assert(sizeof(XalanQName**) == sizeof(PointerVectorAllocatorType::value_type)); return reinterpret_cast(m_pointerVectorAllocator.allocate(theSize)); } XSLTEngineImpl& m_processor; XPathFactory& m_xpathFactory; typedef XalanMemMgrAutoPtr XPathProcessAutoPtr; XPathProcessAutoPtr m_xpathProcessor; StylesheetVectorType m_stylesheets; XalanDOMStringPool m_stringPool; XalanDOMCharVectorAllocatorType m_xalanDOMCharVectorAllocator; mutable XalanDOMString m_tempBuffer; XalanQNameByValue m_scratchQName; XalanDOMStringCache m_stringCache; XalanAVTAllocator m_avtAllocator; XalanAVTPartSimpleAllocator m_avtPartSimpleAllocator; XalanAVTPartXPathAllocator m_avtPartXPathAllocator; XalanQNameByValueAllocator m_xalanQNameByValueAllocator; const XalanQNameByReference m_useAttributeSetsQName; PointerVectorAllocatorType m_pointerVectorAllocator; ElemTemplateElementVectorType m_allocatedElements; XalanElemApplyTemplatesAllocator m_elemApplyTemplatesAllocator; XalanElemAttributeAllocator m_elemAttributeAllocator; XalanElemAttributeSetAllocator m_elemAttributeSetAllocator; XalanElemCallTemplateAllocator m_elemCallTemplateAllocator; XalanElemElementAllocator m_elemElementAllocator; XalanElemLiteralResultAllocator m_elemLiteralResultAllocator; XalanElemTemplateAllocator m_elemTemplateAllocator; XalanElemTextLiteralAllocator m_elemTextLiteralAllocator; XalanElemValueOfAllocator m_elemValueOfAllocator; XalanElemVariableAllocator m_elemVariableAllocator; XalanMatchPatternDataAllocator m_matchPatternDataAllocator; const XalanQNameByReference m_spaceAttrQName; // Static strings for stylesheet compilation... // The string "if" static const XalanDOMChar s_if[]; // The string "key" static const XalanDOMChar s_key[]; // The string "copy" static const XalanDOMChar s_copy[]; // The string "sort" static const XalanDOMChar s_sort[]; // The string "text" static const XalanDOMChar s_text[]; // The string "when" static const XalanDOMChar s_when[]; // The string "empty" static const XalanDOMChar s_empty[]; // The string "param" static const XalanDOMChar s_param[]; // The string "choose" static const XalanDOMChar s_choose[]; // The string "import" static const XalanDOMChar s_import[]; // The string "number" static const XalanDOMChar s_number[]; // The string "output" static const XalanDOMChar s_output[]; // The string "comment" static const XalanDOMChar s_comment[]; // The string "copy-of" static const XalanDOMChar s_copyOf[]; // The string "element" static const XalanDOMChar s_element[]; // The string "include" static const XalanDOMChar s_include[]; // The string "message" static const XalanDOMChar s_message[]; // The string "fallback" static const XalanDOMChar s_fallback[]; // The string "for-each" static const XalanDOMChar s_forEach[]; // The string "template" static const XalanDOMChar s_template[]; // The string "value-of" static const XalanDOMChar s_valueOf[]; // The string "variable" static const XalanDOMChar s_variable[]; // The string "attribute" static const XalanDOMChar s_attribute[]; // The string "otherwise" static const XalanDOMChar s_otherwise[]; // The string "transform" static const XalanDOMChar s_transform[]; // The string "stylesheet" static const XalanDOMChar s_stylesheet[]; // The string "with-param" static const XalanDOMChar s_withParam[]; // The string "strip-space" static const XalanDOMChar s_stripSpace[]; // The string "apply-imports" static const XalanDOMChar s_applyImports[]; // The string "attribute-set" static const XalanDOMChar s_attributeSet[]; // The string "call-template" static const XalanDOMChar s_callTemplate[]; // The string "decimal-format" static const XalanDOMChar s_decimalFormat[]; // The string "preserve-space" static const XalanDOMChar s_preserveSpace[]; // The string "apply-templates" static const XalanDOMChar s_applyTemplates[]; // The string "namespace-alias" static const XalanDOMChar s_namespaceAlias[]; // The string "processing-instruction" static const XalanDOMChar s_processingInstruction[]; // A struct for an array that maps stylesheet element names // to int tokens. struct ElementTokenTableEntry { const XalanDOMChar* m_name; eElementToken m_token; }; static const ElementTokenTableEntry s_elementTokenTable[]; static const XalanSize_t s_elementTokenTableSize; static const ElementTokenTableEntry& s_elementTokenTableLast; static const ElementTokenTableEntry& s_elementTokenTableDummy; }; XALAN_CPP_NAMESPACE_END #endif // STYLESHEETCONSTRUCTIONCONTEXTDEFAULT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XSLT/ElemMessage.cpp0000664000175000000640000001524211731656103017724 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemMessage.hpp" #include #include #include #include "Constants.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemMessage::ElemMessage( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemTemplateElement(constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_MESSAGE), m_terminate(false) { const XalanSize_t nAttrs = atts.getLength(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (equals(aname, Constants::ATTRNAME_TERMINATE) == true) { const XalanDOMChar* const avalue = atts.getValue(i); if (equals(avalue, Constants::ATTRVAL_YES) == true) { m_terminate = true; } else if (equals(avalue, Constants::ATTRVAL_NO) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttributeValue_3Param, Constants::ELEMNAME_MESSAGE_WITH_PREFIX_STRING.c_str(), aname, avalue); } } else if ( isAttrOK( aname, atts, i, constructionContext) == false && processSpaceAttr( Constants::ELEMNAME_MESSAGE_WITH_PREFIX_STRING.c_str(), aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_MESSAGE_WITH_PREFIX_STRING.c_str(), aname); } } } const XalanDOMString& ElemMessage::getElementName() const { return Constants::ELEMNAME_MESSAGE_WITH_PREFIX_STRING; } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemMessage::startElement(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::startElement(executionContext); XalanDOMString& theResult = executionContext.getAndPushCachedString(); return beginChildrenToString(executionContext,theResult); } void ElemMessage::endElement(StylesheetExecutionContext& executionContext) const { endChildrenToString(executionContext); XalanDOMString& theResult = executionContext.getAndPopCachedString(); const Locator* const theLocator = getLocator(); executionContext.problem( StylesheetExecutionContext::eXSLTProcessor, StylesheetExecutionContext::eMessage, theResult, theLocator, executionContext.getCurrentNode()); if (m_terminate == true) { throw ElemMessageTerminateException(executionContext.getMemoryManager(), theResult, theLocator); } } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemMessage::execute(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::execute(executionContext); const StylesheetExecutionContext::GetCachedString theResult(executionContext); const XalanDOMString& theString = childrenToString( executionContext, theResult.get()); const Locator* const theLocator = getLocator(); executionContext.message( theString, executionContext.getCurrentNode(), theLocator); if (m_terminate == true) { if (theLocator != 0) { throw ElemMessageTerminateException( executionContext.getMemoryManager(), *theLocator, theString); } else { throw ElemMessageTerminateException( executionContext.getMemoryManager(), theString); } } } #endif const XalanDOMChar ElemMessage::ElemMessageTerminateException::m_type[] = { XalanUnicode::charLetter_E, XalanUnicode::charLetter_l, XalanUnicode::charLetter_e, XalanUnicode::charLetter_m, XalanUnicode::charLetter_M, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charLetter_s, XalanUnicode::charLetter_a, XalanUnicode::charLetter_g, XalanUnicode::charLetter_e, XalanUnicode::charLetter_T, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, XalanUnicode::charLetter_m, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_a, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_E, XalanUnicode::charLetter_x, XalanUnicode::charLetter_p, XalanUnicode::charLetter_r, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; ElemMessage::ElemMessageTerminateException::ElemMessageTerminateException( MemoryManager& theManager, const XalanDOMString& theMessage, const Locator* theLocator) : XSLTProcessorException( theManager, theMessage, theLocator) { } ElemMessage::ElemMessageTerminateException::~ElemMessageTerminateException() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/OutputContextStack.cpp0000664000175000000640000000456611731656103021377 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "OutputContextStack.hpp" #include XALAN_CPP_NAMESPACE_BEGIN OutputContextStack::OutputContextStack(MemoryManager& theManager) : m_stack(theManager, 1 ), m_stackPosition(m_stack.begin()), m_stackSize(0) { // m_stack is initialized to a size of 1, so that // we always have a dummy entry at the beginning // of the deque. This makes the implementation // much simpler. } OutputContextStack::~OutputContextStack() { } void OutputContextStack::pushContext(FormatterListener* theListener) { ++m_stackPosition; ++m_stackSize; if (m_stackPosition == m_stack.end()) { m_stack.resize(m_stack.size() + 1); m_stackPosition = m_stack.end() - 1; } if (theListener != 0) { (*m_stackPosition).m_flistener = theListener; } } void OutputContextStack::popContext() { assert(m_stackPosition != m_stack.begin()); OutputContext& theCurrentContext = *m_stackPosition; theCurrentContext.reset(); --m_stackPosition; --m_stackSize; } void OutputContextStack::clear() { // Since we always keep one dummy entry at the beginning, // swap with an OutputContextStackType instance of size 1. OutputContextStackType temp( XalanMemMgrs::getDummyMemMgr(), 1); temp.swap(m_stack); m_stackPosition = m_stack.begin(); m_stackSize = 0; } void OutputContextStack::reset() { while(m_stackPosition != m_stack.begin()) { popContext(); } assert(empty() == true); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/StylesheetExecutionContextDefault.hpp0000664000175000000640000011057411731656103024435 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(STYLESHEETEXECUTIONCONTEXTDEFAULT_HEADER_GUARD_1357924680) #define STYLESHEETEXECUTIONCONTEXTDEFAULT_HEADER_GUARD_1357924680 // Base class include file. #include #include #include #include #include #include #include #include #include #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) #include #endif #include #include #if defined(XALAN_AUTO_PTR_REQUIRES_DEFINITION) #include #endif #include #include #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanSourceTreeDocument; class XPathProcessor; class XSLTEngineImpl; typedef VariablesStack::ParamsVectorType ParamsVectorTypeDecl; XALAN_USES_MEMORY_MANAGER(ParamsVectorTypeDecl) // // An class which provides support for executing stylesheets. // class XALAN_XSLT_EXPORT StylesheetExecutionContextDefault : public StylesheetExecutionContext { public: #if defined(XALAN_STRICT_ANSI_HEADERS) typedef std::clock_t ClockType; #else typedef clock_t ClockType; #endif typedef XalanVector FormatterListenerVectorType; typedef XalanVector PrintWriterVectorType; typedef XalanVector OutputStreamVectorType; typedef XalanVector ElementTemplateElementStackType; typedef XALAN_STD_QUALIFIER pair XPathCacheEntry; typedef XalanMap XPathCacheMapType; typedef XalanVector CurrentTemplateStackType; typedef Stylesheet::KeyTablesTableType KeyTablesTableType; typedef ParamsVectorTypeDecl ParamsVectorType; /** * Construct a StylesheetExecutionContextDefault object * * @param theXPathEnvSupport XPath environment support class instance * @param theDOMSupport DOMSupport class instance * @param theXobjectFactory factory class instance for XObjects * @param theCurrentNode current node in the source tree * @param theContextNodeList node list for current context * @param thePrefixResolver pointer to prefix resolver to use */ StylesheetExecutionContextDefault( MemoryManager& theManager, XSLTEngineImpl& xsltProcessor, XPathEnvSupport& theXPathEnvSupport, DOMSupport& theDOMSupport, XObjectFactory& theXObjectFactory, XalanNode* theCurrentNode = 0, const NodeRefListBase* theContextNodeList = 0, const PrefixResolver* thePrefixResolver = 0); /** * Construct a StylesheetExecutionContextDefault object * * @param theXPathEnvSupport XPath environment support class instance * @param theDOMSupport DOMSupport class instance * @param theXobjectFactory factory class instance for XObjects * @param theCurrentNode current node in the source tree * @param theContextNodeList node list for current context * @param thePrefixResolver pointer to prefix resolver to use */ explicit StylesheetExecutionContextDefault( MemoryManager& theManager, XalanNode* theCurrentNode = 0, const NodeRefListBase* theContextNodeList = 0, const PrefixResolver* thePrefixResolver = 0); static StylesheetExecutionContextDefault* create( MemoryManager& theManager, XalanNode* theCurrentNode = 0, const NodeRefListBase* theContextNodeList = 0, const PrefixResolver* thePrefixResolver = 0); virtual ~StylesheetExecutionContextDefault(); /** * Set the XPathEnvSupport instance. * * @param theSupport a reference to the instance to use. */ void setXPathEnvSupport(XPathEnvSupport* theSupport) { m_xpathExecutionContextDefault.setXPathEnvSupport(theSupport); } /** * Set the DOMSupport instance. * * @param theDOMSupport a reference to the instance to use. */ void setDOMSupport(DOMSupport* theDOMSupport) { m_xpathExecutionContextDefault.setDOMSupport(theDOMSupport); } /** * Set the XObjectFactory instance. * * @param theFactory a reference to the instance to use. */ void setXObjectFactory(XObjectFactory* theXObjectFactory) { m_xpathExecutionContextDefault.setXObjectFactory(theXObjectFactory); m_xobjectFactory = theXObjectFactory; } /** * Set the DOMSupport instance. * * @param theDOMSupport a reference to the instance to use. */ void setXSLTProcessor(XSLTEngineImpl* theProcessor) { m_xsltProcessor = theProcessor; } bool getUsePerInstanceDocumentFactory() const { return m_usePerInstanceDocumentFactory; } void setUsePerInstanceDocumentFactory(bool fValue) { m_usePerInstanceDocumentFactory = fValue; } // These interfaces are inherited from StylesheetExecutionContext... virtual bool getQuietConflictWarnings() const; virtual bool getCopyTextNodesOnly() const; virtual void pushCopyTextNodesOnly(bool copyTextNodesOnly); virtual bool popCopyTextNodesOnly(); #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual void pushProcessCurrentAttribute(bool processAttribute); virtual bool popProcessCurrentAttribute(); virtual void pushSkipElementAttributes(bool skipAttributes); virtual bool getSkipElementAttributes() const; virtual bool popSkipElementAttributes(); virtual void pushExecuteIf(bool executeIf); virtual bool popExecuteIf(); #endif virtual XalanNode* getRootDocument() const; virtual void setRootDocument(XalanNode* theDocument); virtual void setStylesheetRoot(const StylesheetRoot* theStylesheet); virtual const XalanQName* getCurrentMode() const; virtual void pushCurrentMode(const XalanQName* theMode); virtual void popCurrentMode(); virtual const ElemTemplate* getCurrentTemplate() const; virtual void pushCurrentTemplate(const ElemTemplate* theTemplate); virtual void popCurrentTemplate(); virtual bool isElementPending() const; virtual void replacePendingAttribute( const XalanDOMChar* theName, const XalanDOMChar* theNewType, const XalanDOMChar* theNewValue); virtual void pushOutputContext(FormatterListener* flistener = 0); virtual void popOutputContext(); virtual void addResultAttribute( const XalanDOMString& aname, const XalanDOMString& value); virtual void addResultAttribute( const XalanDOMString& aname, const XalanDOMChar* value); virtual void copyNamespaceAttributes(const XalanNode& src); virtual const XalanDOMString* getResultPrefixForNamespace(const XalanDOMString& theNamespace) const; virtual const XalanDOMString* getResultNamespaceForPrefix(const XalanDOMString& thePrefix) const; virtual bool isPendingResultPrefix(const XalanDOMString& thePrefix); virtual void getUniqueNamespaceValue(XalanDOMString& theValue) const; virtual FormatterListener* getFormatterListener() const; virtual void setFormatterListener(FormatterListener* flistener); virtual int getIndent() const; virtual void setIndent(int indentAmount); virtual const XPath* createMatchPattern( const XalanDOMString& str, const PrefixResolver& resolver); virtual void returnXPath(const XPath* xpath); virtual void pushTopLevelVariables(const ParamVectorType& topLevelParams); virtual const XObjectPtr createVariable( const XPath& xpath, XalanNode* contextNode, const PrefixResolver& resolver); #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const XObjectPtr createVariable( const ElemTemplateElement& templateChild, XalanNode* sourceNode); #endif virtual void pushVariable( const XalanQName& name, const ElemTemplateElement* element, const XalanDOMString& str, XalanNode* contextNode, const PrefixResolver& resolver); virtual void pushVariable( const XalanQName& name, const XObjectPtr val, const ElemTemplateElement* element); virtual void pushVariable( const XalanQName& name, const ElemVariable* var, const ElemTemplateElement* element); virtual void pushVariable( const XalanQName& name, const ElemTemplateElement* element, const XPath& xpath, XalanNode* contextNode, const PrefixResolver& resolver); #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual void pushVariable( const XalanQName& name, const ElemTemplateElement* element, const ElemTemplateElement& templateChild, XalanNode* sourceNode); #endif virtual void pushContextMarker(); virtual void popContextMarker(); virtual void resolveTopLevelParams(); virtual void clearTopLevelParams(); #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual void beginParams(); virtual void endParams(); virtual void pushParam(const XalanQName& qName,const XObjectPtr& theValue); #else virtual void pushParams(const ElemTemplateElement& xslCallTemplateElement); #endif virtual const XObjectPtr getParamVariable(const XalanQName& theName); virtual void pushElementFrame(const ElemTemplateElement* elem); virtual void popElementFrame(); virtual int getGlobalStackFrameIndex() const; virtual int getCurrentStackFrameIndex() const; virtual void pushCurrentStackFrameIndex(int currentStackFrameIndex = -1); virtual void popCurrentStackFrameIndex(); virtual void startDocument(); virtual void endDocument(); virtual void startElement(const XalanDOMChar* name); virtual void endElement(const XalanDOMChar* name); virtual void characters( const XalanDOMChar* ch, fl_size_type start, fl_size_type length); virtual void charactersRaw( const XalanDOMChar* ch, fl_size_type start, fl_size_type length); virtual void comment(const XalanDOMChar* data); virtual void processingInstruction( const XalanDOMChar* target, const XalanDOMChar* data); virtual void flushPending(); virtual void cloneToResultTree( const XalanNode& node, const Locator* locator); virtual void cloneToResultTree( const XalanNode& node, XalanNode::NodeType nodeType, bool overrideStrip, bool shouldCloneAttributes, const Locator* locator); #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual void beginCreateXResultTreeFrag(XalanNode* sourceNode); virtual const XObjectPtr endCreateXResultTreeFrag(); virtual void beginFormatToText(XalanDOMString& theResult); virtual void endFormatToText(); #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const XObjectPtr createXResultTreeFrag( const ElemTemplateElement& templateChild, XalanNode* sourceNode); #endif virtual void outputToResultTree( const XObject& xobj, const Locator* locator); virtual void outputResultTreeFragment( const XObject& theTree, const Locator* locator); virtual const XalanDOMString& getXSLNameSpaceURL() const; virtual const XalanDOMString& getXalanXSLNameSpaceURL() const; virtual bool findOnElementRecursionStack(const ElemTemplateElement* theElement) const; virtual void pushOnElementRecursionStack(const ElemTemplateElement* theElement); virtual const ElemTemplateElement* popElementRecursionStack(); virtual bool returnXResultTreeFrag(XResultTreeFrag* theXResultTreeFrag); virtual eEscapeURLs getEscapeURLs() const; virtual void setEscapeURLs(eEscapeURLs value); virtual eOmitMETATag getOmitMETATag() const; void setOmitMETATag(eOmitMETATag value); virtual FormatterListener* createFormatterToXML( Writer& writer, const XalanDOMString& version = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), bool doIndent = false, int indent = eDefaultXMLIndentAmount, const XalanDOMString& encoding = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), const XalanDOMString& mediaType = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), const XalanDOMString& doctypeSystem = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), const XalanDOMString& doctypePublic = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), bool xmlDecl = true, const XalanDOMString& standalone = XalanDOMString(XalanMemMgrs::getDummyMemMgr())); virtual FormatterListener* createFormatterToHTML( Writer& writer, const XalanDOMString& encoding = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), const XalanDOMString& mediaType = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), const XalanDOMString& doctypeSystem = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), const XalanDOMString& doctypePublic = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), bool doIndent = true, int indent = eDefaultHTMLIndentAmount, bool escapeURLs = true, bool omitMetaTag = false); virtual FormatterListener* createFormatterToText( Writer& writer, const XalanDOMString& encoding); #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual NodeSorter* getNodeSorter(); #else virtual NodeSorter* borrowNodeSorter(); virtual bool returnNodeSorter(NodeSorter* theSorter); #endif virtual XalanNumberFormatAutoPtr createXalanNumberFormat(); // A basic class to create XalanNumberFormat instances... class XALAN_XSLT_EXPORT XalanNumberFormatFactory { public: explicit XalanNumberFormatFactory(); virtual ~XalanNumberFormatFactory(); virtual XalanNumberFormat* create(MemoryManager& theManager); }; static XalanNumberFormatFactory& getDefaultXalanNumberFormatFactory() { return s_defaultXalanNumberFormatFactory; } /** * Static function to install a new XalanNumberFormatFactory. * The caller owns the XalanNumberFormatFactory instance. * * @param a pointer to the new factory instance to use. * @return a pointer to the old factory instance. */ static XalanNumberFormatFactory* installXalanNumberFormatFactory(XalanNumberFormatFactory* theFactory); virtual tl_size_type getTraceListeners() const; virtual void fireGenerateEvent(const GenerateEvent& ge); virtual void fireTraceEvent(const TracerEvent& te); virtual void fireSelectEvent(const SelectionEvent& se); virtual bool getTraceSelects() const; virtual void traceSelect( const ElemTemplateElement& theStylesheetElement, const NodeRefListBase& nl, const XPath* xpath); virtual int collationCompare( const XalanDOMString& theLHS, const XalanDOMString& theRHS, XalanCollationServices::eCaseOrder theCaseOrder = XalanCollationServices::eDefault); virtual int collationCompare( const XalanDOMString& theLHS, const XalanDOMString& theRHS, const XalanDOMString& theLocale, XalanCollationServices::eCaseOrder theCaseOrder = XalanCollationServices::eDefault); virtual int collationCompare( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, XalanCollationServices::eCaseOrder theCaseOrder = XalanCollationServices::eDefault); virtual int collationCompare( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, const XalanDOMChar* theLocale, XalanCollationServices::eCaseOrder theCaseOrder = XalanCollationServices::eDefault); typedef XalanCollationServices::CollationCompareFunctor CollationCompareFunctor; class XALAN_XSLT_EXPORT DefaultCollationCompareFunctor : public CollationCompareFunctor { public: DefaultCollationCompareFunctor(); virtual ~DefaultCollationCompareFunctor(); virtual int operator()( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, XalanCollationServices::eCaseOrder theCaseOrder = XalanCollationServices::eDefault) const; virtual int operator()( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, const XalanDOMChar* theLocale, XalanCollationServices::eCaseOrder theCaseOrder = XalanCollationServices::eDefault) const; }; const CollationCompareFunctor* installCollationCompareFunctor(CollationCompareFunctor* theFunctor); CollationCompareFunctor* uninstallCollationCompareFunctor(); class XALAN_XSLT_EXPORT FormatNumberFunctor { public: FormatNumberFunctor() {}; virtual ~FormatNumberFunctor() {}; virtual void operator() ( XPathExecutionContext& executionContext, double theNumber, const XalanDOMString& thePattern, const XalanDecimalFormatSymbols* theDFS, XalanDOMString& theResult, const XalanNode* context = 0, const Locator* locator = 0) const = 0; }; virtual void formatNumber( double number, const XalanDOMString& pattern, XalanDOMString& theResult, const XalanNode* context = 0, const Locator* locator = 0); virtual void formatNumber( double number, const XalanDOMString& pattern, const XalanDOMString& dfsName, XalanDOMString& theResult, const XalanNode* context = 0, const Locator* locator = 0); const FormatNumberFunctor* installFormatNumberFunctor(FormatNumberFunctor* formatNumberFunctor); FormatNumberFunctor* uninstallFormatNumberFunctor(); virtual PrintWriter* createPrintWriter(XalanOutputStream* theTextOutputStream); virtual PrintWriter* createPrintWriter( const XalanDOMString& theFileName, const XalanDOMString& theEncoding); virtual PrintWriter* createPrintWriter(StreamType& theStream); virtual PrintWriter* createPrintWriter(FILE* theStream); virtual CountersTable& getCountersTable(); virtual void characters(const XalanNode& node); virtual void characters(const XObjectPtr& xobject); virtual void charactersRaw(const XalanNode& node); virtual void charactersRaw(const XObjectPtr& xobject); // These interfaces are inherited from XPathExecutionContext... virtual void reset(); virtual XalanNode* getCurrentNode() const; virtual void pushCurrentNode(XalanNode* theCurrentNode); virtual void popCurrentNode(); virtual bool isNodeAfter( const XalanNode& node1, const XalanNode& node2) const; virtual void pushContextNodeList(const NodeRefListBase& theList); virtual void popContextNodeList(); virtual const NodeRefListBase& getContextNodeList() const; virtual size_type getContextNodeListLength() const; virtual size_type getContextNodeListPosition(const XalanNode& contextNode) const; virtual bool elementAvailable(const XalanQName& theQName) const; virtual bool elementAvailable( const XalanDOMString& theName, const Locator* locator) const; virtual bool functionAvailable(const XalanQName& theQName) const; virtual bool functionAvailable( const XalanDOMString& theName, const Locator* locator) const; virtual const XObjectPtr extFunction( const XalanDOMString& theNamespace, const XalanDOMString& functionName, XalanNode* context, const XObjectArgVectorType& argVec, const Locator* locator); virtual XalanDocument* parseXML( MemoryManager& theManager, const XalanDOMString& urlString, const XalanDOMString& base, ErrorHandler* theErrorHandler = 0) const; virtual MutableNodeRefList* borrowMutableNodeRefList(); virtual bool returnMutableNodeRefList(MutableNodeRefList* theList); virtual MutableNodeRefList* createMutableNodeRefList(MemoryManager& theManager) const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual void createUseAttributeSetIndexesOnStack(); virtual UseAttributeSetIndexes& getUseAttributeSetIndexes(); virtual void popUseAttributeSetIndexesFromStack(); virtual void pushInvoker(const ElemTemplateElement * invoker); virtual void popInvoker(); virtual const ElemTemplateElement* getInvoker() const; virtual MutableNodeRefList& createAndPushMutableNodeRefList(); virtual void releaseAndPopMutableNodeRefList(); virtual void pushXObjectPtr(const XObjectPtr& xobjectPtr); virtual void popXObjectPtr(); virtual void createAndPushNodesToTransformList(const NodeRefListBase* nodeList); virtual XalanNode* getNextNodeToTransform(); virtual void popNodesToTransformList(); virtual XalanDOMString& getAndPushCachedString(); virtual XalanDOMString& getLastCachedString(); virtual XalanDOMString& getAndPopCachedString(); #endif virtual XalanDOMString& getCachedString(); virtual bool releaseCachedString(XalanDOMString& theString); virtual void getNodeSetByKey( XalanNode* context, const XalanQName& qname, const XalanDOMString& ref, const Locator* locator, MutableNodeRefList& nodelist); virtual void getNodeSetByKey( XalanNode* context, const XalanDOMString& name, const XalanDOMString& ref, const Locator* locator, MutableNodeRefList& nodelist); virtual const XObjectPtr getVariable( const XalanQName& name, const Locator* locator = 0); virtual const PrefixResolver* getPrefixResolver() const; virtual void setPrefixResolver(const PrefixResolver* thePrefixResolver); virtual const XalanDOMString* getNamespaceForPrefix(const XalanDOMString& prefix) const; virtual const XalanDOMString& findURIFromDoc(const XalanDocument* owner) const; virtual const XalanDOMString& getUnparsedEntityURI( const XalanDOMString& theName, const XalanDocument& theDocument) const; virtual bool shouldStripSourceNode(const XalanText& node); virtual XalanDocument* getSourceDocument(const XalanDOMString& theURI) const; virtual void setSourceDocument( const XalanDOMString& theURI, XalanDocument* theDocument); // These interfaces are inherited from ExecutionContext... virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode); virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode); class XPathCacheReturnFunctor { public: XPathCacheReturnFunctor(XSLTEngineImpl& xsltProcessor) : m_xsltProcessor(xsltProcessor) { } void operator()(const XPathCacheMapType::value_type& theCacheEntry); private: XSLTEngineImpl& m_xsltProcessor; }; /** * Get a XalanSourceTreeDocument, primarily for creating result * tree fragments. */ XalanSourceTreeDocument* getSourceTreeFactory(MemoryManager& theManager) const; #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) protected: virtual FormatterToText* borrowFormatterToText(); virtual bool returnFormatterToText(FormatterToText* theFormatter); #endif private: const XalanDecimalFormatSymbols* getDecimalFormatSymbols(const XalanQName& qname); #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) /** * Given a context, create the params for a template * call. * * @param xslCallTemplateElement "call-template" element * @param params The params */ void getParams( const ElemTemplateElement& xslCallTemplateElement, ParamsVectorType& params); #endif /** * Determine if the XPath is one that we have cached. * * @param theXPath the XPath instance to check * @return true if the instance has been cached, false if not. */ bool isCached(const XPath* theXPath); /** * Clear out the cache of XPath instances. */ void clearXPathCache(); /** * Add an XPath instance to the cache, clearing out an old entry * if the cache is full. * * @param pattern the key for looking up the XPath instance in the cache. * @param theXPath the XPath instance to cache */ void addToXPathCache( const XalanDOMString& pattern, const XPath* theXPath); /** * Clean up anything that was created for use only during the transformation. */ void cleanUpTransients(); XPathExecutionContextDefault m_xpathExecutionContextDefault; XSLTEngineImpl* m_xsltProcessor; XalanNode* m_rootDocument; enum { eXPathCacheMax = 50, eDefaultParamsVectorSize = 10, eXResultTreeFragAllocatorBlockSize = 10, eDocumentAllocatorBlockSize = 10, eDocumentFragmentAllocatorBlockSize = 10, eDefaultAttributeAllocatorBlockSize = 10, eDefaultAttributeNSAllocatorBlockSize = 10, eDefaultCommentAllocatorBlockSize = 10, eDefaultElementAllocatorBlockSize = 10, eDefaultElementNSAllocatorBlockSize = 10, eDefaultPIAllocatorBlockSize = 10, eDefaultTextAllocatorBlockSize = 20, eDefaultTextIWSAllocatorBlockSize = 20 }; ElementTemplateElementStackType m_elementRecursionStack; const StylesheetRoot* m_stylesheetRoot; FormatterListenerVectorType m_formatterListeners; PrintWriterVectorType m_printWriters; OutputStreamVectorType m_outputStreams; CollationCompareFunctor* m_collationCompareFunctor; FormatNumberFunctor * m_formatNumberFunctor; /** * Holds all information about variables during execution. */ VariablesStack m_variablesStack; ParamsVectorType m_paramsVector; XPathCacheMapType m_matchPatternCache; KeyTablesTableType m_keyTables; CountersTable m_countersTable; /** * The factory that will be used to create result tree fragments based on our * internal source tree. */ mutable XalanMemMgrAutoPtr m_sourceTreeResultTreeFactory; // Holds the current mode. const XalanQName* m_mode; CurrentTemplateStackType m_currentTemplateStack; int m_indentAmount; XResultTreeFragAllocator m_xresultTreeFragAllocator; XalanSourceTreeDocumentFragmentAllocator m_documentFragmentAllocator; XalanSourceTreeDocumentAllocator m_documentAllocator; typedef XalanVector BooleanStackType; typedef XalanVector ModeStackType; typedef XalanVector IntStackType; BooleanStackType m_copyTextNodesOnlyStack; ModeStackType m_modeStack; IntStackType m_currentIndexStack; #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) typedef XalanMemoryManagerObjectCacheDefault FormatterToTextCacheType; typedef XalanMemoryManagerObjectCacheDefault FormatterToSourceTreeCacheType; typedef XalanMemoryManagerObjectCacheDefault NodeSorterCacheType; FormatterToTextCacheType m_formatterToTextCache; FormatterToSourceTreeCacheType m_formatterToSourceTreeCache; NodeSorterCacheType m_nodeSorterCache; #else class FormatterToTextDOMString : public FormatterToText { public: FormatterToTextDOMString(MemoryManager& theManager); virtual ~FormatterToTextDOMString(); void setDOMString(XalanDOMString& theString) { m_printWriter.setString(theString); } private: // These are not defined... FormatterToTextDOMString(const FormatterToTextDOMString&); FormatterToTextDOMString& operator=(const FormatterToTextDOMString&); bool operator==(const FormatterToTextDOMString&) const; // Data members... DOMStringPrintWriter m_printWriter; static XalanDOMString s_dummyString; }; typedef XalanVector XObjectPtrStackType; typedef XalanVector ParamsVectorStackType; typedef XalanVector UseAttributeSetIndexesStackType; typedef XalanObjectStackCache > MutableNodeRefListStackType; typedef XalanObjectStackCache > StringStackType; typedef XalanObjectStackCache > FormatterToTextStackType; typedef XalanObjectStackCache > FormatterToSourceTreeStackType; /* * class to maintain the list of nodes to be transformed by an element */ class NodesToTransform { public: NodesToTransform(const NodeRefListBase* nodeList) : m_nodeList(nodeList), m_index(0) { assert(m_nodeList != 0); } const NodeRefListBase* operator() () { return m_nodeList; } NodeRefListBase::size_type& index() { return m_index; } XalanNode* next() { if (m_index < m_nodeList->getLength()) { return m_nodeList->item(m_index++); } return 0; } private: const NodeRefListBase* m_nodeList; NodeRefListBase::size_type m_index; }; typedef XalanVector NodesToTransformStackType; XObjectPtrStackType m_xobjectPtrStack; MutableNodeRefListStackType m_mutableNodeRefListStack; NodesToTransformStackType m_nodesToTransformStack; BooleanStackType m_processCurrentAttributeStack; BooleanStackType m_executeIfStack; StringStackType m_stringStack; FormatterToTextStackType m_formatterToTextStack; BooleanStackType m_skipElementAttributesStack; FormatterToSourceTreeStackType m_formatterToSourceTreeStack; ParamsVectorStackType m_paramsVectorStack; ElementTemplateElementStackType m_elementInvokerStack; UseAttributeSetIndexesStackType m_useAttributeSetIndexesStack; NodeSorter m_nodeSorter; #endif // If true, we will use a separate document factory for // result tree fragments. bool m_usePerInstanceDocumentFactory; // Determines whether or not to override the property in the stylesheet. eEscapeURLs m_escapeURLs; // Determines whether or not to override the property in the stylesheet. eOmitMETATag m_omitMETATag; static XalanNumberFormatFactory s_defaultXalanNumberFormatFactory; static XalanNumberFormatFactory* s_xalanNumberFormatFactory; static const DefaultCollationCompareFunctor s_defaultCollationFunctor; }; XALAN_CPP_NAMESPACE_END #endif // STYLESHEETEXECUTIONCONTEXTDEFAULT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XSLT/SelectionEvent.hpp0000664000175000000640000001346111731656103020472 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_SelectionEvent_HEADER_GUARD) #define XALAN_SelectionEvent_HEADER_GUARD // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanNode; class ElemTemplateElement; class StylesheetExecutionContext; class XPath; class XALAN_XSLT_EXPORT SelectionEvent { public: /** * Create an event originating at the given node of the style tree. * * @param executionContext The current execution context * @param sourceNode The source node selected. * @param styleNode The node in the style tree reference for the event * @param attributeName The attribute name where the XPath expression was supplied * @param xpath The XPath instance executed * @param selection The result of evaluating the XPath * */ SelectionEvent( StylesheetExecutionContext& executionContext, const XalanNode* sourceNode, const ElemTemplateElement& styleNode, const XalanDOMString& attributeName, const XPath& xpath, const XObjectPtr selection); /** * Create an event originating at the given node of the style tree. * * @param executionContext The current execution context * @param sourceNode The source node selected. * @param styleNode The node in the style tree reference for the event * @param attributeName The attribute name where the XPath expression was supplied * @param xpathExpression The XPath expression executed * @param selection The result of evaluating the XPath * */ SelectionEvent( StylesheetExecutionContext& executionContext, const XalanNode* sourceNode, const ElemTemplateElement& styleNode, const XalanDOMString& attributeName, const XalanDOMString& xpathExpression, const XObjectPtr selection); /** * Create an event originating at the given node of the style tree. * * @param executionContext The current execution context * @param sourceNode The source node selected. * @param styleNode The node in the style tree reference for the event * @param attributeName The attribute name where the XPath expression was supplied * @param xpath The XPath instance executed * @param selection The result of evaluating the XPath * */ SelectionEvent( StylesheetExecutionContext& executionContext, const XalanNode* sourceNode, const ElemTemplateElement& styleNode, const XalanDOMString& attributeName, const XPath& xpath, bool selection); /** * Create an event originating at the given node of the style tree. * * @param executionContext The current execution context * @param sourceNode The source node selected. * @param styleNode The node in the style tree reference for the event * @param attributeName The attribute name where the XPath expression was supplied * @param xpath The XPath instance executed * @param selection The result of evaluating the XPath * */ SelectionEvent( StylesheetExecutionContext& executionContext, const XalanNode* sourceNode, const ElemTemplateElement& styleNode, const XalanDOMString& attributeName, const XPath& xpath, const NodeRefListBase& selection); virtual ~SelectionEvent(); enum eSelectionType { eNone, eBoolean, eNodeSet, eUnknown }; /** * The executionContext instance. */ const StylesheetExecutionContext& m_executionContext; /** * The current context node. */ const XalanNode* m_sourceNode; /** * The node in the style tree where the event occurs. */ const ElemTemplateElement& m_styleNode; /** * The attribute name from which the selection is made. */ const XalanDOMString& m_attributeName; /** * The XPath expression evaluated. */ const XalanDOMString& m_xpathExpression; /** * The result of the selection. If it's null, m_sourceNode * was selected, or some specific type was selected. See * the above enums. */ const XObjectPtr m_selection; /** * The type of the selection. */ const eSelectionType m_type; bool m_boolean; const NodeRefListBase* const m_nodeList; private: // Unimplemented... SelectionEvent& operator=(const SelectionEvent& other); }; XALAN_CPP_NAMESPACE_END #endif //XALAN_SelectionEvent_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/ElemVariable.hpp0000664000175000000640000001135711731656103020075 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMVARIABLE_HEADER_GUARD) #define XALAN_ELEMVARIABLE_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemTemplateElement.hpp" #include #include XALAN_CPP_NAMESPACE_BEGIN class XPath; class ElemVariable : public ElemTemplateElement { public: typedef ElemTemplateElement ParentType; /** * Construct an object corresponding to an "xsl:variable" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemVariable( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); virtual ~ElemVariable(); /** * Determines if this is a top level variable. * * @return true if it is a top level variable */ bool isTopLevel() const { return m_isTopLevel; } // These methods are inherited from ElemTemplateElement ... virtual const XalanQName& getNameAttribute() const; virtual void addToStylesheet( StylesheetConstructionContext& constructionContext, Stylesheet& theStylesheet); virtual const XalanDOMString& getElementName() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; void endElement(StylesheetExecutionContext& executionContext) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif const XObjectPtr getValue( StylesheetExecutionContext& executionContext, XalanNode* sourceNode) const; virtual void setParentNodeElem(ElemTemplateElement* theParent); virtual const XPath* getXPath(XalanSize_t index) const; protected: /** * Construct an object corresponding to an "xsl:variable" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemVariable( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber, int xslToken); /** * Do common initialization. * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element */ void init( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts); const XalanQName* m_qname; private: // not implemented ElemVariable(const ElemVariable &); ElemVariable& operator=(const ElemVariable &); const XPath* m_selectPattern; bool m_isTopLevel; XObjectPtr m_value; XalanNode* m_varContext; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMVARIABLE_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/XalanElemValueOfAllocator.hpp0000664000175000000640000000731511731656103022535 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANELEMVALUEOFALLOCATOR_INCLUDE_GUARD_12455133) #define XALANELEMVALUEOFALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XSLT_EXPORT XalanElemValueOfAllocator { public: typedef ElemValueOf data_type; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanElemValueOfAllocator( MemoryManager& theManager, size_type theBlockCount); ~XalanElemValueOfAllocator(); /** * Construct an instance * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document * * @return A pointer to the new instance. */ data_type* create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const data_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all objects from the allocator. */ void reset() { m_allocator.reset(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanElemValueOfAllocator(const XalanElemValueOfAllocator&); XalanElemValueOfAllocator& operator=(const XalanElemValueOfAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANELEMVALUEOFALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XSLT/ElemSort.hpp0000664000175000000640000000715111731656103017274 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMSORT_HEADER_GUARD) #define XALAN_ELEMSORT_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "AVT.hpp" #include "ElemTemplateElement.hpp" #include XALAN_CPP_NAMESPACE_BEGIN class XPath; class AVT; class ElemSort: public ElemTemplateElement { public: /** * Construct an object corresponding to an "xsl:sort" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemSort( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); static ElemSort* create( MemoryManager& theManager, StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); ~ElemSort(); /** * Retrieve the language attribute value template(AVT) * * @return the language AVT */ const AVT* getLangAVT() const { return m_langAVT; } /** * Retrieve the order attribute value template(AVT) * * @return the order AVT */ const AVT* getOrderAVT() const { return m_orderAVT; } /** * Retrieve the case-order attribute value template(AVT) * * @return the case-order AVT */ const AVT* getCaseOrderAVT() const { return m_caseOrderAVT; } /** * Retrieve the data type attribute value template(AVT) * * @return the data type AVT */ const AVT* getDataTypeAVT() const { return m_dataTypeAVT; } /** * Retrieve the select pattern * * @return XPath corresponding to the select pattern */ const XPath* getSelectPattern() const { return m_selectPattern; } virtual const XalanDOMString& getElementName() const; virtual const XPath* getXPath(XalanSize_t index = 0) const; private: const XPath* m_selectPattern; const AVT* m_langAVT; const AVT* m_dataTypeAVT; const AVT* m_orderAVT; const AVT* m_caseOrderAVT; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMSORT_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/FunctionFunctionAvailable.hpp0000664000175000000640000000427611731656103022643 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONFUNCTIONAVAILABLE_HEADER_GUARD_1357924680) #define FUNCTIONFUNCTIONAVAILABLE_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN class XObject; class XPathExecutionContext; // Implementation of the XSLT function function-available(). // class XALAN_XSLT_EXPORT FunctionFunctionAvailable : public Function { public: typedef Function ParentType; FunctionFunctionAvailable(); virtual ~FunctionFunctionAvailable(); // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionFunctionAvailable* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: // Not implemented... FunctionFunctionAvailable& operator=(const FunctionFunctionAvailable&); bool operator==(const FunctionFunctionAvailable&) const; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONFUNCTIONAVAILABLE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XSLT/XSLTEngineImpl.cpp0000664000175000000640000026424511731656103020310 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XSLTEngineImpl.hpp" #include #include #include #include "xercesc/util/XMLEntityResolver.hpp" #include "xercesc/util/XMLResourceIdentifier.hpp" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "Constants.hpp" #include "ElemWithParam.hpp" #include "FunctionCurrent.hpp" #include "FunctionDocument.hpp" #include "FunctionElementAvailable.hpp" #include "FunctionFunctionAvailable.hpp" #include "FunctionFormatNumber.hpp" #include "FunctionGenerateID.hpp" #include "FunctionKey.hpp" #include "FunctionSystemProperty.hpp" #include "FunctionUnparsedEntityURI.hpp" #include "GenerateEvent.hpp" #include "ProblemListener.hpp" #include "ProblemListenerDefault.hpp" #include "Stylesheet.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" #include "StylesheetHandler.hpp" #include "StylesheetRoot.hpp" #include "TraceListener.hpp" #include "XSLTInputSource.hpp" #include "XSLTProcessorException.hpp" #include "XSLTResultTarget.hpp" //#define XALAN_VQ_SPECIAL_TRACE #if defined(XALAN_VQ_SPECIAL_TRACE) #include "C:/Program Files/Rational/Quantify/pure.h" #endif XALAN_CPP_NAMESPACE_BEGIN const XalanDOMString XSLTEngineImpl::s_emptyString(XalanMemMgrs::getDummyMemMgr()); //========================================================== // SECTION: Constructors //========================================================== XSLTEngineImpl::XSLTEngineImpl( MemoryManager& theManager, XMLParserLiaison& parserLiaison, XPathEnvSupport& xpathEnvSupport, DOMSupport& domSupport, XObjectFactory& xobjectFactory, XPathFactory& xpathFactory) : XSLTProcessor(), PrefixResolver(), m_resultNameSpacePrefix(theManager), m_resultNameSpaceURL(theManager), m_xpathFactory(xpathFactory), m_xobjectFactory(xobjectFactory), m_xpathProcessor(theManager, XPathProcessorImpl::create(theManager)), m_cdataStack(theManager), m_stylesheetLocatorStack(theManager), m_defaultProblemListener(theManager), m_problemListener(&m_defaultProblemListener), m_stylesheetRoot(0), m_traceSelects(false), m_quietConflictWarnings(true), m_diagnosticsPrintWriter(0), m_traceListeners(theManager), m_uniqueNSValue(0), m_topLevelParams(theManager), m_parserLiaison(parserLiaison), m_xpathEnvSupport(xpathEnvSupport), m_domSupport(domSupport), m_executionContext(0), m_outputContextStack(theManager), m_resultNamespacesStack(theManager), m_dummyAttributesList(theManager), m_scratchString(theManager), m_attributeNamesVisited(theManager), m_hasCDATASectionElements(false), m_xpathConstructionContext(theManager), m_stylesheetParams(theManager) { m_outputContextStack.pushContext(); } void XSLTEngineImpl::reset() { m_topLevelParams.clear(); m_stylesheetLocatorStack.clear(); m_cdataStack.clear(); m_stylesheetRoot = 0; m_outputContextStack.reset(); m_outputContextStack.pushContext(); m_xpathEnvSupport.reset(); m_xpathFactory.reset(); m_xobjectFactory.reset(); m_domSupport.reset(); m_resultNamespacesStack.clear(); m_attributeNamesVisited.clear(); m_hasCDATASectionElements = false; m_xpathConstructionContext.reset(); } XSLTEngineImpl::~XSLTEngineImpl() { reset(); } void XSLTEngineImpl::problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode) { if (m_problemListener != 0) { m_problemListener->problem( source, classification, msg, locator, sourceNode); } if (classification == ProblemListener::eERROR) { throw XSLTProcessorException( getMemoryManager(), msg, locator); } } void XSLTEngineImpl::problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode) { if (m_problemListener != 0) { m_problemListener->problem( source, classification, msg, sourceNode); } if (classification == ProblemListener::eERROR) { throw XSLTProcessorException( getMemoryManager(), msg); } } void XSLTEngineImpl::process( const XSLTInputSource& inputSource, const XSLTInputSource& stylesheetSource, XSLTResultTarget& outputTarget, StylesheetConstructionContext& constructionContext, StylesheetExecutionContext& executionContext) { XalanDOMString xslIdentifier(executionContext.getMemoryManager()); if (0 == stylesheetSource.getSystemId()) { XalanMessageLoader::getMessage( xslIdentifier, XalanMessages::InputXSL); } else { xslIdentifier = stylesheetSource.getSystemId(); } XalanNode* sourceTree = getSourceTreeFromInput(inputSource); m_stylesheetRoot = processStylesheet(stylesheetSource, constructionContext); if(0 != sourceTree && m_stylesheetRoot == 0) { // Didn't get a stylesheet from the input source, so look for a // stylesheet processing instruction... // The PI must be a child of the document... const XalanNode* child = sourceTree->getFirstChild(); XalanDOMString theCurrentToken(executionContext.getMemoryManager()); XalanDOMString theStylesheetURI(executionContext.getMemoryManager()); bool isOK = false; while(child != 0 && isOK == false && theStylesheetURI.empty() == true) { if(XalanNode::PROCESSING_INSTRUCTION_NODE == child->getNodeType()) { const XalanDOMString& nodeName = child->getNodeName(); if(equals(nodeName, s_stylesheetNodeName)) { StringTokenizer tokenizer(child->getNodeValue(), s_piTokenizerString); while(tokenizer.hasMoreTokens() == true && (isOK == false || theStylesheetURI.empty() == true)) { tokenizer.nextToken(theCurrentToken); if(equals(theCurrentToken, s_typeString)) { tokenizer.nextToken(theCurrentToken); const XalanDOMString::size_type theLength = theCurrentToken.length(); if (theLength > 2) { theCurrentToken.erase(theLength - 1, 1); theCurrentToken.erase(0, 1); if(equals(theCurrentToken, s_typeValueString1) || equals(theCurrentToken, s_typeValueString2) || equals(theCurrentToken, s_typeValueString3) || equals(theCurrentToken, s_typeValueString4)) { isOK = true; } } } else if(equals(theCurrentToken, s_hrefString)) { tokenizer.nextToken(theCurrentToken); const XalanDOMString::size_type theLength = theCurrentToken.length(); if (theLength > 2) { // Trim of the starting and trailing delimiters... theStylesheetURI.assign(theCurrentToken, 1, theLength - 2); } } } } } child = child->getNextSibling(); } if (isOK == true && theStylesheetURI.empty() == false) { const CCGetCachedString theGuard(constructionContext); XalanDOMString& sysid = theGuard.get(); const XalanDOMChar* const pxch = inputSource.getSystemId(); if (pxch != 0) { sysid.assign(pxch); } getStylesheetFromPIURL( theStylesheetURI, *sourceTree, sysid, true, constructionContext); } } if(0 == m_stylesheetRoot) { const ECGetCachedString theGuard(executionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::FailedToProcessStylesheet), 0, sourceTree); } else if(0 != sourceTree) { executionContext.setStylesheetRoot(m_stylesheetRoot); FormatterListener* const theFormatter = outputTarget.getFormatterListener(); if (theFormatter != 0 && theFormatter->getPrefixResolver() == 0) { theFormatter->setPrefixResolver(this); } m_hasCDATASectionElements = m_stylesheetRoot->hasCDATASectionElements(); m_stylesheetRoot->process(sourceTree, outputTarget, executionContext); } } void XSLTEngineImpl::process( const XSLTInputSource& inputSource, XSLTResultTarget& outputTarget, StylesheetExecutionContext& executionContext) { XalanNode* const sourceTree = getSourceTreeFromInput(inputSource); if(0 != sourceTree) { if (m_stylesheetRoot == 0) { const ECGetCachedString theGuard(executionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::NoStylesheet), 0, sourceTree); } FormatterListener* const theFormatter = outputTarget.getFormatterListener(); if (theFormatter != 0 && theFormatter->getPrefixResolver() == 0) { theFormatter->setPrefixResolver(this); } m_hasCDATASectionElements = m_stylesheetRoot->hasCDATASectionElements(); m_stylesheetRoot->process(sourceTree, outputTarget, executionContext); } } StylesheetRoot* XSLTEngineImpl::processStylesheet( const XalanDOMString& xsldocURLString, StylesheetConstructionContext& constructionContext) { const XSLTInputSource input( xsldocURLString.c_str(), constructionContext.getMemoryManager()); return processStylesheet(input, constructionContext); } StylesheetRoot* XSLTEngineImpl::processStylesheet( const XSLTInputSource& stylesheetSource, StylesheetConstructionContext& constructionContext) { StylesheetRoot* theStylesheet = 0; const XalanDOMChar* const systemID = stylesheetSource.getSystemId(); XalanNode* const stylesheetNode = stylesheetSource.getNode(); if (systemID != 0 || stylesheetNode != 0 || stylesheetSource.getStream() != 0) { const CCGetCachedString theGuard(constructionContext); XalanDOMString& xslIdentifier = theGuard.get(); theStylesheet = constructionContext.create(stylesheetSource); StylesheetHandler stylesheetProcessor(*theStylesheet, constructionContext); if(stylesheetNode != 0) { const XalanNode::NodeType theType = stylesheetNode->getNodeType(); if (theType != XalanNode::ELEMENT_NODE && theType != XalanNode::DOCUMENT_NODE) { const CCGetCachedString theGuard(constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::CompilingDOMStylesheetReqDocument), constructionContext.getLocatorFromStack(), 0); } else { XalanMessageLoader::getMessage( xslIdentifier, XalanMessages::InputXSL); FormatterTreeWalker tw(stylesheetProcessor, constructionContext.getMemoryManager()); if (theType == XalanNode::DOCUMENT_NODE) { tw.traverse(stylesheetNode); } else { stylesheetProcessor.startDocument(); tw.traverseSubtree(stylesheetNode); stylesheetProcessor.endDocument(); } } } else { if (systemID != 0) { xslIdentifier = systemID; } m_parserLiaison.parseXMLStream( stylesheetSource, stylesheetProcessor, s_emptyString); } theStylesheet->postConstruction(constructionContext); } return theStylesheet; } //========================================================== // SECTION: XML Parsing Functions //========================================================== XalanNode* XSLTEngineImpl::getSourceTreeFromInput(const XSLTInputSource& inputSource) { XalanNode* sourceTree = inputSource.getNode(); if(0 == sourceTree) { const CCGetCachedString theGuard1(m_xpathConstructionContext); XalanDOMString& xmlIdentifier = theGuard1.get(); const XalanDOMChar* const theSystemID = inputSource.getSystemId(); if (0 != theSystemID) { try { URISupport::getURLStringFromString(theSystemID, xmlIdentifier); } catch(const XERCES_CPP_NAMESPACE_QUALIFIER XMLException&) { xmlIdentifier = theSystemID; } } #if defined(XALAN_VQ_SPECIAL_TRACE) QuantifyStartRecordingData(); #endif XalanDocument* const theDocument = m_parserLiaison.parseXMLStream( inputSource, xmlIdentifier); assert(theDocument != 0); #if defined(XALAN_VQ_SPECIAL_TRACE) QuantifyStopRecordingData(); #endif m_xpathEnvSupport.setSourceDocument(xmlIdentifier, theDocument); sourceTree = theDocument; } return sourceTree; } const XalanDOMString* XSLTEngineImpl::getNamespaceForPrefix(const XalanDOMString& prefix) const { return m_resultNamespacesStack.getNamespaceForPrefix(prefix); } const XalanDOMString& XSLTEngineImpl::getURI() const { return s_emptyString; } XalanDocument* XSLTEngineImpl::parseXML( const XalanDOMString& urlString, DocumentHandler* docHandler, XalanDocument* docToRegister, ErrorHandler* theErrorHandler) { XalanDocument* doc = m_xpathEnvSupport.getSourceDocument(urlString); if(doc == 0) { EntityResolver* const theResolver = m_parserLiaison.getEntityResolver(); XMLEntityResolver* const theXMLResolver = m_parserLiaison.getXMLEntityResolver(); XalanAutoPtr resolverInputSource; if (theResolver != 0) { resolverInputSource.reset(theResolver->resolveEntity(0, urlString.c_str())); } else if (theXMLResolver != 0) { XALAN_USING_XERCES(XMLResourceIdentifier); XMLResourceIdentifier theIndentifier( XMLResourceIdentifier::ExternalEntity, urlString.c_str()); resolverInputSource.reset( theXMLResolver->resolveEntity(&theIndentifier)); } if (resolverInputSource.get() != 0) { doc = parseXML( *resolverInputSource.get(), docHandler, docToRegister, theErrorHandler); } else { const XSLTInputSource inputSource( urlString.c_str(), m_parserLiaison.getMemoryManager()); doc = parseXML( inputSource, docHandler, docToRegister, theErrorHandler); } if (doc != 0) { m_xpathEnvSupport.setSourceDocument(urlString, doc); } } return doc; } XalanDocument* XSLTEngineImpl::parseXML( const InputSource& inputSource, DocumentHandler* docHandler, XalanDocument* docToRegister, ErrorHandler* theErrorHandler) { typedef XMLParserLiaison::EnsureResetErrorHandler EnsureResetErrorHandler; EnsureResetErrorHandler theGuard; if (theErrorHandler != 0) { theGuard.set( &m_parserLiaison, theErrorHandler); } if (0 != docHandler) { m_parserLiaison.parseXMLStream( inputSource, *docHandler, s_emptyString); return docToRegister; } else { return m_parserLiaison.parseXMLStream( inputSource, s_emptyString); } } Stylesheet* XSLTEngineImpl::getStylesheetFromPIURL( const XalanDOMString& xslURLString, XalanNode& fragBase, const XalanDOMString& xmlBaseIdent, bool isRoot, StylesheetConstructionContext& constructionContext) { MemoryManager& theMemoryManager = constructionContext.getMemoryManager(); Stylesheet* stylesheet = 0; const CCGetCachedString theGuard(constructionContext); XalanDOMString& stringHolder = theGuard.get(); const CCGetCachedString theGuard1(constructionContext); XalanDOMString& localXSLURLString = theGuard1.get(); trim(xslURLString, localXSLURLString); const XalanDOMString::size_type fragIndex = indexOf(localXSLURLString, XalanUnicode::charNumberSign); if(fragIndex == 0) { const CCGetCachedString theGuard(constructionContext); XalanDOMString& fragID = theGuard.get(); fragID.assign(localXSLURLString); const XalanElement* nsNode = 0; const XalanNode::NodeType theType = fragBase.getNodeType(); if (theType == XalanNode::DOCUMENT_NODE) { const XalanDocument& doc = static_cast(fragBase); nsNode = doc.getDocumentElement(); } else if (theType == XalanNode::ELEMENT_NODE) { nsNode = static_cast(&fragBase); } else { XalanNode* const node = fragBase.getParentNode(); if (node->getNodeType() == XalanNode::ELEMENT_NODE) { nsNode = static_cast(node); } else { const CCGetCachedString theGuard(constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::CantFindFragment_1Param, fragID), constructionContext.getLocatorFromStack(), &fragBase); } } // Try a bunch of really ugly stuff to find the fragment. // What's the right way to do this? const CCGetCachedString theGuard3(constructionContext); XalanDOMString& ds = theGuard3.get(); ds.append("id("); ds += fragID; ds.append(")"); ElementPrefixResolverProxy theProxy(nsNode, m_xpathEnvSupport, m_domSupport, theMemoryManager); XPathExecutionContextDefault theExecutionContext(m_xpathEnvSupport, m_domSupport, m_xobjectFactory, &fragBase, 0, &theProxy); const XObjectPtr xobj(evalXPathStr(ds, theExecutionContext)); assert(xobj.null() == false); NodeRefList nl( xobj->nodeset(), theMemoryManager); if(nl.getLength() == 0) { ds.assign("//*[@id='"); ds += fragID; ds.append("']"); const XObjectPtr xobj(evalXPathStr(ds, theExecutionContext)); assert(xobj.null() == false); nl = xobj->nodeset(); if(nl.getLength() == 0) { ds.assign("//*[@name='"); ds += fragID; ds.append("']"); const XObjectPtr xobj(evalXPathStr(ds, theExecutionContext)); assert(xobj.null() == false); nl = xobj->nodeset(); if(nl.getLength() == 0) { // Well, hell, maybe it's an XPath... const XObjectPtr xobj(evalXPathStr(fragID, theExecutionContext)); assert(xobj.null() == false); nl = xobj->nodeset(); } } } if (nl.getLength() == 0) { const CCGetCachedString theGuard(constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::CantFindFragment_1Param, fragID), constructionContext.getLocatorFromStack(), &fragBase); } XalanNode* const frag = nl.item(0); if (XalanNode::ELEMENT_NODE == frag->getNodeType()) { XalanMemMgrAutoPtr theGuard; if (isRoot) { StylesheetRoot* const theLocalRoot = constructionContext.create(stringHolder); stylesheet = theLocalRoot; m_stylesheetRoot = theLocalRoot; } else { stylesheet = constructionContext.create(*const_cast(m_stylesheetRoot), stringHolder); theGuard.reset(&theMemoryManager, stylesheet); } StylesheetHandler stylesheetProcessor(*stylesheet, constructionContext); FormatterTreeWalker tw(stylesheetProcessor, theMemoryManager); stylesheetProcessor.startDocument(); tw.traverseSubtree(frag); stylesheetProcessor.endDocument(); stylesheet->postConstruction(constructionContext); theGuard.release(); } else { const CCGetCachedString theGuard(constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::NodePointedByFragment_1Param, fragID), constructionContext.getLocatorFromStack(), &fragBase); } } else { XalanMemMgrAutoPtr theGuard; const XalanDocument* const theOwnerDocument = fragBase.getNodeType() == XalanNode::DOCUMENT_NODE ? static_cast(&fragBase) : fragBase.getOwnerDocument(); assert(theOwnerDocument != 0); // Catch any XMLExceptions thrown, since we may not // be able to resolve the URL. In that case, the // parser will throw an error. We do this because // we don't know what sort of EntityResolvers might // be active, so we never want to error out here. try { if (xmlBaseIdent.empty() == true) { URISupport::getURLStringFromString( localXSLURLString, m_xpathEnvSupport.findURIFromDoc(theOwnerDocument), localXSLURLString); } else { URISupport::getURLStringFromString( localXSLURLString, xmlBaseIdent, localXSLURLString); } } catch(const XERCES_CPP_NAMESPACE_QUALIFIER XMLException&) { } if(isRoot) { StylesheetRoot* const theLocalRoot = constructionContext.create(localXSLURLString); stylesheet = theLocalRoot; m_stylesheetRoot = theLocalRoot; } else { stylesheet = Stylesheet::create( theMemoryManager, *const_cast(m_stylesheetRoot), localXSLURLString, constructionContext); theGuard.reset(&theMemoryManager, stylesheet); } StylesheetHandler stylesheetProcessor(*stylesheet, constructionContext); typedef StylesheetConstructionContext::URLAutoPtrType URLAutoPtrType; URLAutoPtrType xslURL(constructionContext.getURLFromString(localXSLURLString)); XSLTInputSource inputSource(xslURL->getURLText(), theMemoryManager); m_parserLiaison.parseXMLStream(inputSource, stylesheetProcessor, s_emptyString); stylesheet->postConstruction(constructionContext); theGuard.release(); } return stylesheet; } const StylesheetRoot* XSLTEngineImpl::getStylesheetRoot() const { return m_stylesheetRoot; } void XSLTEngineImpl::setStylesheetRoot(const StylesheetRoot* theStylesheet) { m_stylesheetRoot = theStylesheet; } void XSLTEngineImpl::setExecutionContext(StylesheetExecutionContext* theExecutionContext) { m_executionContext = theExecutionContext; } //========================================================== // SECTION: Diagnostic functions //========================================================== XSLTEngineImpl::size_type XSLTEngineImpl::getTraceListeners() const { return m_traceListeners.size(); } void XSLTEngineImpl::addTraceListener(TraceListener* tl) { if (tl != 0) { m_traceListeners.push_back(tl); } } void XSLTEngineImpl::removeTraceListener(TraceListener* tl) { XALAN_USING_STD(remove) const TraceListenerVectorType::iterator i = remove( m_traceListeners.begin(), m_traceListeners.end(), tl); m_traceListeners.erase(i); } void XSLTEngineImpl::fireGenerateEvent(const GenerateEvent& ge) { XALAN_USING_STD(for_each) for_each( m_traceListeners.begin(), m_traceListeners.end(), TraceListener::TraceListenerGenerateFunctor(ge)); } void XSLTEngineImpl::fireSelectEvent(const SelectionEvent& se) { XALAN_USING_STD(for_each) for_each( m_traceListeners.begin(), m_traceListeners.end(), TraceListener::TraceListenerSelectFunctor(se)); } void XSLTEngineImpl::fireTraceEvent(const TracerEvent& te) { XALAN_USING_STD(for_each) for_each( m_traceListeners.begin(), m_traceListeners.end(), TraceListener::TraceListenerTraceFunctor(te)); } bool XSLTEngineImpl::getTraceSelects() const { return m_traceSelects; } void XSLTEngineImpl::setTraceSelects(bool b) { m_traceSelects = b; } void XSLTEngineImpl::setDiagnosticsOutput(PrintWriter* pw) { m_diagnosticsPrintWriter = pw; m_problemListener->setPrintWriter(pw); } void XSLTEngineImpl::setQuietConflictWarnings(bool b) { m_quietConflictWarnings = b; } void XSLTEngineImpl::setDocumentLocator(const Locator* /* locator */) { // Do nothing for now } void XSLTEngineImpl::traceSelect( StylesheetExecutionContext& executionContext, const ElemTemplateElement& theTemplate, const NodeRefListBase& nl, const XPath* xpath) const { if (0 != m_diagnosticsPrintWriter) { const ECGetCachedString theGuard(executionContext); XalanDOMString& msg = theGuard.get(); msg.assign(theTemplate.getElementName()); msg.append(": "); if(xpath != 0) { msg += xpath->getExpression().getCurrentPattern(); msg.append(", "); } else { msg.append("*|text(), (default select), "); } const ECGetCachedString theGuard1(executionContext); XalanDOMString& theBuffer = theGuard1.get(); NumberToDOMString(nl.getLength(), theBuffer); msg += theBuffer; msg.append(" selected"); const XalanQName* const mode = executionContext.getCurrentMode(); if(mode != 0 && mode->isEmpty() == false) { msg += XalanDOMString(", mode = {", executionContext.getMemoryManager()); msg += mode->getNamespace(); msg += XalanDOMString("}", executionContext.getMemoryManager()); msg += mode->getLocalPart(); } m_diagnosticsPrintWriter->println(msg); } } void XSLTEngineImpl::startDocument() { assert(getFormatterListenerImpl() != 0); assert(m_executionContext != 0); if (getHasPendingStartDocument() == false) { assert(m_cdataStack.empty() == true || m_outputContextStack.size() != 1); m_resultNamespacesStack.pushContext(); setHasPendingStartDocument(true); setMustFlushPendingStartDocument(false); if (m_hasCDATASectionElements == true) { m_cdataStack.push_back(false); } } else if (getMustFlushPendingStartDocument() == true) { getFormatterListenerImpl()->startDocument(); if(getTraceListeners() > 0) { const GenerateEvent ge(GenerateEvent::EVENTTYPE_STARTDOCUMENT, getMemoryManager()); fireGenerateEvent(ge); } // Reset this, but leave getMustFlushPendingStartDocument() alone, // since it will still be needed. setHasPendingStartDocument(false); } } void XSLTEngineImpl::endDocument() { assert(getFormatterListenerImpl() != 0); assert(m_executionContext != 0); setMustFlushPendingStartDocument(true); flushPending(); getFormatterListenerImpl()->endDocument(); if(getTraceListeners() > 0) { const GenerateEvent ge(GenerateEvent::EVENTTYPE_ENDDOCUMENT, getMemoryManager()); fireGenerateEvent(ge); } if (m_hasCDATASectionElements == true) { m_cdataStack.pop_back(); } assert(m_cdataStack.empty() == true); m_resultNamespacesStack.popContext(); assert(m_resultNamespacesStack.empty() == true); } void XSLTEngineImpl::addResultAttribute( AttributeListImpl& attList, const XalanDOMString& aname, const XalanDOMChar* value, size_type theLength, bool fromCopy, const Locator* locator) { assert(value != 0); // Always exclude the implicit XML declaration... if (equals(aname, DOMServices::s_XMLNamespacePrefix) == false) { bool fExcludeAttribute = false; if (equals(aname, DOMServices::s_XMLNamespace) == true) { // OK, we're adding a default namespace declaration. So see if the length // of the namespace is 0. If it's not, go ahead and add the declaration. // If it's not, it means we're "turning off" the previous default // declaration. const XalanDOMString* const currentDefaultNamespace = getNamespaceForPrefix(s_emptyString); // Note that we use an empty string for the prefix, instead of "xmlns", since the // prefix really is "". if (theLength != 0) { if (currentDefaultNamespace != 0 && equals(*currentDefaultNamespace, value, theLength) == true) { fExcludeAttribute = true; } else { if (fromCopy == false || m_resultNamespacesStack.prefixIsPresentLocal(s_emptyString) == false) { addResultNamespaceDecl(s_emptyString, value, theLength); } else { reportDuplicateNamespaceNodeError(s_emptyString, locator); } } } else { // OK, we're turning of the previous default namespace declaration. // Check to see if there is one, and if there isn't, don't add // the namespace declaration _and_ don't add the attribute. if (currentDefaultNamespace != 0 && currentDefaultNamespace->empty() == false) { addResultNamespaceDecl(s_emptyString, value, theLength); } else { fExcludeAttribute = true; } } } else if (startsWith(aname, DOMServices::s_XMLNamespaceWithSeparator) == true) { assert(m_executionContext != 0); const ECGetCachedString prefixGuard(*m_executionContext); XalanDOMString& prefix = prefixGuard.get(); substring(aname, prefix, DOMServices::s_XMLNamespaceWithSeparatorLength); const XalanDOMString* const theNamespace = getResultNamespaceForPrefix(prefix); const XalanDOMString::size_type theLength = length(value); if (theNamespace == 0) { addResultNamespaceDecl(prefix, value, theLength); } else if (equals(*theNamespace, value, theLength) == false) { if (fromCopy == false /* || m_resultNamespacesStack.prefixIsPresentLocal(prefix) == false */) { addResultNamespaceDecl(prefix, value, theLength); } else { reportDuplicateNamespaceNodeError(prefix, locator); } } else { fExcludeAttribute = true; } } if (fExcludeAttribute == false) { attList.addAttribute( aname.c_str(), Constants::ATTRTYPE_CDATA.c_str(), value); } } } void XSLTEngineImpl::reportDuplicateNamespaceNodeError( const XalanDOMString& theName, const Locator* locator) { assert(m_executionContext != 0); const ECGetCachedString theGuard(*m_executionContext); XalanDOMString& theMessage = theGuard.get(); if (theName.length() == 0) { XalanMessageLoader::getMessage( theMessage, XalanMessages::ErrorCopyingNamespaceNodeForDefault); } else { XalanMessageLoader::getMessage( theMessage, XalanMessages::ErrorCopyingNamespaceNode_1Param, theName); } error( theMessage, locator, m_executionContext->getCurrentNode()); } bool XSLTEngineImpl::pendingAttributesHasDefaultNS() const { const AttributeListImpl& thePendingAttributes = (const AttributeListImpl&)getPendingAttributes(); const XalanSize_t n = thePendingAttributes.getLength(); for (XalanSize_t i = 0; i < n; i++) { if (equals( thePendingAttributes.getName(i), DOMServices::s_XMLNamespace) == true) { return true; } } return false; } void XSLTEngineImpl::flushPending() { if(getHasPendingStartDocument() == true && isElementPending() == true) { assert(getFormatterListenerImpl() != 0); assert(m_executionContext != 0); if (m_stylesheetRoot->isOutputMethodSet() == false) { if (equalsIgnoreCaseASCII( getPendingElementName(), Constants::ELEMNAME_HTML_STRING) == true && pendingAttributesHasDefaultNS() == false) { FormatterListener* const theFormatter = getFormatterListenerImpl(); assert(theFormatter != 0); Writer* const theWriter = theFormatter->getWriter(); if (theWriter == 0) { const ECGetCachedString theGuard(*m_executionContext); XalanDOMString& theMessage = theGuard.get(); assert(m_stylesheetRoot->getDefaultRootRule() != 0); const Locator* const theLocator = m_stylesheetRoot->getDefaultRootRule()->getLocator(); XalanMessageLoader::getMessage( theMessage, XalanMessages::CannotSwitchToHTMLOutputMethod); warn( theMessage, theLocator, 0); } else if (theFormatter->getOutputFormat() == FormatterListener::OUTPUT_METHOD_XML) { // Yuck!!! Ugly hack to switch to HTML on-the-fly. setFormatterListenerImpl( m_executionContext->createFormatterToHTML( *theFormatter->getWriter(), theFormatter->getEncoding(), theFormatter->getMediaType(), theFormatter->getDoctypeSystem(), theFormatter->getDoctypePublic(), m_stylesheetRoot->getHTMLOutputIndent(), theFormatter->getIndent() > 0 ? theFormatter->getIndent() : StylesheetExecutionContext::eDefaultHTMLIndentAmount)); if (m_hasCDATASectionElements == true) { m_hasCDATASectionElements = false; } } } } } if(getHasPendingStartDocument() == true && getMustFlushPendingStartDocument() == true) { startDocument(); } XalanDOMString& thePendingElementName = getPendingElementNameImpl(); if(thePendingElementName.empty() == false && getMustFlushPendingStartDocument() == true) { assert(getFormatterListenerImpl() != 0); assert(m_executionContext != 0); if(m_hasCDATASectionElements == true) { m_cdataStack.push_back(isCDataResultElem(thePendingElementName)); } AttributeListImpl& thePendingAttributes = getPendingAttributesImpl(); getFormatterListenerImpl()->startElement( thePendingElementName.c_str(), thePendingAttributes); if(getTraceListeners() > 0) { const GenerateEvent ge( GenerateEvent::EVENTTYPE_STARTELEMENT, getMemoryManager(), thePendingElementName, &thePendingAttributes); fireGenerateEvent(ge); } thePendingAttributes.clear(); thePendingElementName.clear(); } } void XSLTEngineImpl::startElement(const XalanDOMChar* name) { assert(getFormatterListenerImpl() != 0); assert(name != 0); flushPending(); m_resultNamespacesStack.pushContext(); setPendingElementName(name); setMustFlushPendingStartDocument(true); } void XSLTEngineImpl::startElement( const XalanDOMChar* name, AttributeListType& atts) { assert(getFormatterListenerImpl() != 0); assert(name != 0); flushPending(); const XalanSize_t nAtts = atts.getLength(); assert(m_outputContextStack.empty() == false); AttributeListImpl& thePendingAttributes = getPendingAttributesImpl(); thePendingAttributes.clear(); for (XalanSize_t i = 0; i < nAtts; i++) { thePendingAttributes.addAttribute( atts.getName(i), atts.getType(i), atts.getValue(i)); } m_resultNamespacesStack.pushContext(); setPendingElementName(name); } void XSLTEngineImpl::endElement(const XalanDOMChar* name) { assert(getFormatterListenerImpl() != 0); assert(name != 0); flushPending(); getFormatterListenerImpl()->endElement(name); if(getTraceListeners() > 0) { const GenerateEvent ge(GenerateEvent::EVENTTYPE_ENDELEMENT, getMemoryManager(), name, &getPendingAttributesImpl()); fireGenerateEvent(ge); } m_resultNamespacesStack.popContext(); if(m_hasCDATASectionElements == true) { assert(m_cdataStack.empty() == false); m_cdataStack.pop_back(); } } void XSLTEngineImpl::characters( const XalanDOMChar* ch, size_type length) { characters( ch, 0, length); } void XSLTEngineImpl::characters( const XalanDOMChar* ch, size_type start, size_type length) { assert(getFormatterListenerImpl() != 0); assert(ch != 0); assert(m_hasCDATASectionElements == m_stylesheetRoot->hasCDATASectionElements()); // assert(length != 0); doFlushPending(); if (generateCDATASection() == true) { getFormatterListenerImpl()->cdata(ch + start, length); if (getTraceListeners() > 0) { fireCharacterGenerateEvent(ch, start, length, true); } } else { getFormatterListenerImpl()->characters(ch + start, length); if (getTraceListeners() > 0) { fireCharacterGenerateEvent(ch, start, length, false); } } } void XSLTEngineImpl::characters(const XalanNode& node) { assert(getFormatterListenerImpl() != 0); assert(m_hasCDATASectionElements == m_stylesheetRoot->hasCDATASectionElements()); doFlushPending(); if(generateCDATASection() == true) { DOMServices::getNodeData( node, *m_executionContext, *getFormatterListenerImpl(), &FormatterListener::cdata); if(getTraceListeners() > 0) { fireCharacterGenerateEvent(node, true); } } else { DOMServices::getNodeData( node, *m_executionContext, *getFormatterListenerImpl(), &FormatterListener::characters); if(getTraceListeners() > 0) { fireCharacterGenerateEvent(node, false); } } } void XSLTEngineImpl::characters(const XObjectPtr& xobject) { assert(getFormatterListenerImpl() != 0); assert(xobject.null() == false); assert(m_hasCDATASectionElements == m_stylesheetRoot->hasCDATASectionElements()); doFlushPending(); if(generateCDATASection() == true) { xobject->str( *m_executionContext, *getFormatterListenerImpl(), &FormatterListener::cdata); if(getTraceListeners() > 0) { fireCharacterGenerateEvent(xobject, true); } } else { xobject->str( *m_executionContext, *getFormatterListenerImpl(), &FormatterListener::characters); if(getTraceListeners() > 0) { fireCharacterGenerateEvent(xobject, false); } } } void XSLTEngineImpl::charactersRaw( const XalanDOMChar* ch, size_type start, size_type length) { assert(ch != 0); assert(length != 0); doFlushPending(); getFormatterListenerImpl()->charactersRaw(ch, length); if(getTraceListeners() > 0) { fireCharacterGenerateEvent(ch, start, length, false); } } void XSLTEngineImpl::charactersRaw(const XalanNode& node) { doFlushPending(); DOMServices::getNodeData( node, *m_executionContext, *getFormatterListenerImpl(), &FormatterListener::charactersRaw); if(getTraceListeners() > 0) { fireCharacterGenerateEvent(node, false); } } void XSLTEngineImpl::charactersRaw(const XObjectPtr& xobject) { doFlushPending(); xobject->str( *m_executionContext, *getFormatterListenerImpl(), &FormatterListener::charactersRaw); if(getTraceListeners() > 0) { fireCharacterGenerateEvent(xobject, false); } } void XSLTEngineImpl::resetDocument() { assert(getFormatterListenerImpl() != 0); flushPending(); getFormatterListenerImpl()->resetDocument(); } void XSLTEngineImpl::ignorableWhitespace( const XalanDOMChar* ch, size_type length) { assert(getFormatterListenerImpl() != 0); assert(ch != 0); assert(length != 0); doFlushPending(); getFormatterListenerImpl()->ignorableWhitespace(ch, length); if(getTraceListeners() > 0) { GenerateEvent ge(GenerateEvent::EVENTTYPE_IGNORABLEWHITESPACE, getMemoryManager(), ch, 0, length); fireGenerateEvent(ge); } } void XSLTEngineImpl::processingInstruction( const XalanDOMChar* target, const XalanDOMChar* data) { assert(getFormatterListenerImpl() != 0); assert(target != 0); assert(data != 0); doFlushPending(); getFormatterListenerImpl()->processingInstruction(target, data); if(getTraceListeners() > 0) { GenerateEvent ge( GenerateEvent::EVENTTYPE_PI, getMemoryManager(), target, data); fireGenerateEvent(ge); } } void XSLTEngineImpl::comment(const XalanDOMChar* data) { assert(getFormatterListenerImpl() != 0); assert(data != 0); doFlushPending(); getFormatterListenerImpl()->comment(data); if(getTraceListeners() > 0) { GenerateEvent ge(GenerateEvent::EVENTTYPE_COMMENT, getMemoryManager(), data); fireGenerateEvent(ge); } } void XSLTEngineImpl::entityReference(const XalanDOMChar* name) { assert(getFormatterListenerImpl() != 0); assert(name != 0); doFlushPending(); getFormatterListenerImpl()->entityReference(name); if(getTraceListeners() > 0) { GenerateEvent ge(GenerateEvent::EVENTTYPE_ENTITYREF, getMemoryManager(), name); fireGenerateEvent(ge); } } void XSLTEngineImpl::cdata( const XalanDOMChar* ch, size_type start, size_type length) { assert(getFormatterListenerImpl() != 0); assert(ch != 0); assert(length != 0); setMustFlushPendingStartDocument(true); flushPending(); getFormatterListenerImpl()->cdata(ch, length); if(getTraceListeners() > 0) { GenerateEvent ge(GenerateEvent::EVENTTYPE_CDATA, getMemoryManager(), ch, start, length); fireGenerateEvent(ge); } } void XSLTEngineImpl::checkDefaultNamespace( const XalanDOMString& theElementName, const XalanDOMString& theElementNamespaceURI) { // Check for elements with no prefix... if (indexOf(theElementName, XalanUnicode::charColon) == theElementName.length()) { // Get the current default namespace URI.. const XalanDOMString* const theResultNamespace = getResultNamespaceForPrefix(s_emptyString); // If there is one, and the URIs are different, add a new declaration. This // will also "turn-off" the default namespace, if necessary. if (theResultNamespace != 0 && theElementNamespaceURI != *theResultNamespace) { addResultAttribute(DOMServices::s_XMLNamespace, theElementNamespaceURI, false, 0); } } } void XSLTEngineImpl::warnCopyTextNodesOnly( const XalanNode* sourceNode, const Locator* locator) { assert(m_executionContext != 0); const ECGetCachedString theGuard(*m_executionContext); const XalanDOMString& theMessage = XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::OnlyTextNodesCanBeCopied); warn( theMessage, locator, sourceNode); } inline void XSLTEngineImpl::cloneToResultTree( const XalanText& node, bool overrideStrip) { assert(m_executionContext != 0 && m_stylesheetRoot != 0); assert(node.getParentNode() == 0 || node.getParentNode()->getNodeType() != XalanNode::DOCUMENT_NODE); if (overrideStrip == true || m_executionContext->shouldStripSourceNode(node) == false) { const XalanDOMString& data = node.getData(); // assert(data.empty() == false); characters(data.c_str(), 0, data.length()); } } void XSLTEngineImpl::cloneToResultTree( const XalanNode& node, bool cloneTextNodesOnly, const Locator* locator) { XalanNode::NodeType posNodeType = node.getNodeType(); if (posNodeType == XalanNode::DOCUMENT_FRAGMENT_NODE) { outputResultTreeFragment( static_cast(node), cloneTextNodesOnly, locator); } else if (cloneTextNodesOnly == true && posNodeType != XalanNode::TEXT_NODE) { warnCopyTextNodesOnly( &node, locator); } else { const XalanNode* pos = &node; while(pos != 0) { if(posNodeType != XalanNode::ATTRIBUTE_NODE) { flushPending(); } cloneToResultTree( *pos, posNodeType, false, true, false, locator); const XalanNode* nextNode = pos->getFirstChild(); while(nextNode == 0) { if(XalanNode::ELEMENT_NODE == posNodeType) { endElement(pos->getNodeName().c_str()); } if(&node == pos) break; nextNode = pos->getNextSibling(); if(nextNode == 0) { pos = pos->getParentNode(); assert(pos != 0); posNodeType = pos->getNodeType(); if (&node == pos) { if(XalanNode::ELEMENT_NODE == posNodeType) { endElement(pos->getNodeName().c_str()); } nextNode = 0; break; } } } pos = nextNode; if (pos != 0) { posNodeType = pos->getNodeType(); } } } } inline void createAndAddNamespaceResultAttribute( StylesheetExecutionContext& theExecutionContext, const XalanDOMString& thePrefix, const XalanDOMString& theNamespaceURI, XalanDOMString& theTempString) { theTempString = DOMServices::s_XMLNamespaceWithSeparator; theTempString.append(thePrefix); theExecutionContext.addResultAttribute( theTempString, theNamespaceURI); } inline void createAndAddNamespaceResultAttribute( StylesheetExecutionContext& theExecutionContext, const XalanDOMString& thePrefix, const XalanDOMString& theNamespaceURI) { const XSLTEngineImpl::ECGetCachedString theCachedString(theExecutionContext); createAndAddNamespaceResultAttribute( theExecutionContext, thePrefix, theNamespaceURI, theCachedString.get()); } inline void createFixedUpResultAttribute( StylesheetExecutionContext& theExecutionContext, const XalanDOMString& theLocalPart, const XalanDOMString& theNamespaceURI, const XalanDOMString& theValue) { typedef StylesheetExecutionContext::GetCachedString GetCachedString; const GetCachedString theCachedString(theExecutionContext); XalanDOMString& theBuffer = theCachedString.get(); theExecutionContext.getUniqueNamespaceValue(theBuffer); createAndAddNamespaceResultAttribute( theExecutionContext, theBuffer, theNamespaceURI); theBuffer += XalanUnicode::charColon; theBuffer += theLocalPart; theExecutionContext.addResultAttribute( theBuffer, theValue); } void XSLTEngineImpl::cloneToResultTree( const XalanNode& node, XalanNode::NodeType nodeType, bool overrideStrip, bool shouldCloneAttributes, bool cloneTextNodesOnly, const Locator* locator) { assert(nodeType == node.getNodeType()); assert(m_executionContext != 0); if(cloneTextNodesOnly == true) { if (nodeType != XalanNode::TEXT_NODE) { warnCopyTextNodesOnly( &node, locator); } else { const XalanText& tx = static_cast(node); cloneToResultTree(tx, overrideStrip); } } else { switch(nodeType) { case XalanNode::TEXT_NODE: { const XalanText& tx = static_cast(node); cloneToResultTree(tx, overrideStrip); } break; case XalanNode::ELEMENT_NODE: { const XalanDOMString& theElementName = node.getNodeName(); startElement(theElementName.c_str()); if(shouldCloneAttributes == true) { copyAttributesToAttList( node, getPendingAttributesImpl()); copyNamespaceAttributes(node); } checkDefaultNamespace(theElementName, node.getNamespaceURI()); } break; case XalanNode::CDATA_SECTION_NODE: { const XalanDOMString& data = node.getNodeValue(); cdata(data.c_str(), 0, data.length()); } break; case XalanNode::ATTRIBUTE_NODE: if (isElementPending() == true) { addResultAttribute( getPendingAttributesImpl(), node.getNodeName(), node.getNodeValue(), true, locator); } else { const ECGetCachedString theGuard(*m_executionContext); const XalanDOMString& theMessage = XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::AttributeCannotBeAdded); warn( theMessage, locator, &node); } break; case XalanNode::COMMENT_NODE: comment(node.getNodeValue().c_str()); break; case XalanNode::ENTITY_REFERENCE_NODE: entityReference(node.getNodeName().c_str()); break; case XalanNode::PROCESSING_INSTRUCTION_NODE: processingInstruction( node.getNodeName().c_str(), node.getNodeValue().c_str()); break; case XalanNode::DOCUMENT_FRAGMENT_NODE: assert(false); break; // Can't really do this, but we won't throw an error so that copy-of will // work case XalanNode::DOCUMENT_NODE: case XalanNode::DOCUMENT_TYPE_NODE: break; default: { const ECGetCachedString theGuard(*m_executionContext); const XalanDOMString& theMessage = XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::CantCreateItemInResultTree); warn( theMessage, locator, &node); } break; } } } void XSLTEngineImpl::outputToResultTree( const XObject& value, bool outputTextNodesOnly, const Locator* locator) { const XObject::eObjectType type = value.getType(); switch(type) { case XObject::eTypeBoolean: case XObject::eTypeNumber: case XObject::eTypeString: { const XalanDOMString& s = value.str(*m_executionContext); characters(s.c_str(), 0, s.length()); } break; case XObject::eTypeNodeSet: { const NodeRefListBase& nl = value.nodeset(); const NodeRefListBase::size_type nChildren = nl.getLength(); for(NodeRefListBase::size_type i = 0; i < nChildren; i++) { XalanNode* pos = nl.item(i); assert(pos != 0); XalanNode::NodeType posNodeType = pos->getNodeType(); if (outputTextNodesOnly == true && posNodeType != XalanNode::TEXT_NODE) { warnCopyTextNodesOnly( pos, locator); } else { XalanNode* const top = pos; while(0 != pos) { flushPending(); XalanNode::NodeType posNodeType = pos->getNodeType(); cloneToResultTree(*pos, posNodeType, false, false, false, locator); XalanNode* nextNode = pos->getFirstChild(); while(0 == nextNode) { if(XalanNode::ELEMENT_NODE == posNodeType) { endElement(pos->getNodeName().c_str()); } if(top == pos) break; nextNode = pos->getNextSibling(); if(0 == nextNode) { pos = pos->getParentNode(); assert(pos != 0); posNodeType = pos->getNodeType(); if(top == pos) { if(XalanNode::ELEMENT_NODE == posNodeType) { endElement(pos->getNodeName().c_str()); } nextNode = 0; break; } } } pos = nextNode; if (pos != 0) { posNodeType = pos->getNodeType(); } } } } } break; case XObject::eTypeResultTreeFrag: outputResultTreeFragment(value, outputTextNodesOnly, locator); break; case XObject::eTypeNull: case XObject::eTypeUnknown: case XObject::eUnknown: default: assert(false); break; } } void XSLTEngineImpl::outputResultTreeFragment( const XalanDocumentFragment& theTree, bool outputTextNodesOnly, const Locator* locator) { for(XalanNode* child = theTree.getFirstChild(); child != 0; child = child->getNextSibling()) { XalanNode* pos = child; XalanNode::NodeType posNodeType = pos->getNodeType(); if (outputTextNodesOnly == true && posNodeType != XalanNode::TEXT_NODE) { warnCopyTextNodesOnly( pos, locator); } else { XalanNode* const top = pos; while(0 != pos) { flushPending(); cloneToResultTree(*pos, posNodeType, true, true, false, locator); XalanNode* nextNode = pos->getFirstChild(); while(0 == nextNode) { if(XalanNode::ELEMENT_NODE == posNodeType) { endElement(pos->getNodeName().c_str()); } if(top == pos) break; nextNode = pos->getNextSibling(); if(0 == nextNode) { pos = pos->getParentNode(); if(0 == pos) { nextNode = 0; break; } else { assert(0 != pos); posNodeType = pos->getNodeType(); if(top == pos) { if(XalanNode::ELEMENT_NODE == posNodeType) { endElement(pos->getNodeName().c_str()); } nextNode = 0; break; } } } } pos = nextNode; if (pos != 0) { posNodeType = pos->getNodeType(); } } } } } bool XSLTEngineImpl::isCDataResultElem(const XalanDOMString& elementName) { assert(m_executionContext != 0); assert(m_hasCDATASectionElements == true); bool fResult = false; // We only want to worry about cdata-section-elements when we're serializing the // result tree, which is only when the output context is 1. if (m_outputContextStack.size() == 1) { const XalanDOMString::size_type indexOfNSSep = indexOf(elementName, XalanUnicode::charColon); if(indexOfNSSep == elementName.length()) { const XalanDOMString* const elemNS = getResultNamespaceForPrefix(s_emptyString); if (elemNS != 0) { fResult = m_stylesheetRoot->isCDATASectionElementName(XalanQNameByReference(*elemNS, elementName)); } else { fResult = m_stylesheetRoot->isCDATASectionElementName(XalanQNameByReference(s_emptyString, elementName)); } } else { const ECGetCachedString elemLocalNameGuard(*m_executionContext); const ECGetCachedString prefixGuard(*m_executionContext); XalanDOMString& elemLocalName = elemLocalNameGuard.get(); XalanDOMString& prefix = prefixGuard.get(); substring(elementName, prefix, 0, indexOfNSSep); substring(elementName, elemLocalName, indexOfNSSep + 1); if(equals(prefix, DOMServices::s_XMLString)) { fResult = m_stylesheetRoot->isCDATASectionElementName( XalanQNameByReference( DOMServices::s_XMLNamespaceURI, elemLocalName)); } else { const XalanDOMString* const elemNS = getResultNamespaceForPrefix(prefix); if(elemNS == 0) { ECGetCachedString theGuard(*m_executionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::PrefixIsNotDeclared_1Param, prefix), 0, m_executionContext->getCurrentNode()); } else { fResult = m_stylesheetRoot->isCDATASectionElementName( XalanQNameByReference( *elemNS, elemLocalName)); } } } } return fResult; } const XalanDOMString* XSLTEngineImpl::getResultNamespaceForPrefix(const XalanDOMString& prefix) const { return m_resultNamespacesStack.getNamespaceForPrefix(prefix); } const XalanDOMString* XSLTEngineImpl::getResultPrefixForNamespace(const XalanDOMString& theNamespace) const { return m_resultNamespacesStack.getPrefixForNamespace(theNamespace); } inline bool isPrefixUsed( const XalanDOMString& thePrefix, XalanDOMString::size_type thePrefixLength, const XalanDOMChar* theName, XalanDOMString::size_type theNameLength) { assert(thePrefixLength != 0); // The name must be greater than the length of the prefix + 1, since // there must be a ':' to separate the prefix from the local part... if (theNameLength <= thePrefixLength + 1) { return false; } else { assert(theName != 0); const XalanDOMString::size_type theIndex = indexOf( theName, XalanUnicode::charColon); // OK, if the index of the ':' is the same as the length of the prefix, // and theElementName starts with thePrefix, then the prefix is in use. if (theIndex == thePrefixLength && startsWith(theName, thePrefix) == true) { return true; } else { return false; } } } inline bool isPrefixUsed( const XalanDOMString& thePrefix, XalanDOMString::size_type thePrefixLength, const XalanDOMString& theName) { return isPrefixUsed(thePrefix, thePrefixLength, theName.c_str(), theName.length()); } inline bool isPrefixUsedOrDeclared( const XalanDOMString& thePrefix, XalanDOMString::size_type thePrefixLength, const XalanDOMChar* theName, XalanDOMString::size_type theNameLength) { if (isPrefixUsed(thePrefix, thePrefixLength, theName, theNameLength) == true) { return true; } else { const XalanDOMString::size_type theDeclarationLength = thePrefixLength + DOMServices::s_XMLNamespaceWithSeparatorLength; // If this is a namespace declaration for this prefix, then all of // these conditions must be true... if (theDeclarationLength == theNameLength && startsWith(theName, DOMServices::s_XMLNamespaceWithSeparator) == true && endsWith(theName, thePrefix.c_str()) == true) { return true; } else { return false; } } } inline bool isPendingAttributePrefix( const AttributeListType& thePendingAttributes, const XalanDOMString& thePrefix, XalanDOMString::size_type thePrefixLength) { const XalanSize_t thePendingAttributesCount = thePendingAttributes.getLength(); if (thePendingAttributesCount == 0) { // No attributes, no problem... return false; } else { bool fResult = false; // Check each attribute... for (XalanSize_t i = 0; i < thePendingAttributesCount; ++i) { const XalanDOMChar* const thePendingAttributeName = thePendingAttributes.getName(i); assert(thePendingAttributeName != 0); if (isPrefixUsedOrDeclared( thePrefix, thePrefixLength, thePendingAttributeName, length(thePendingAttributeName)) == true) { fResult = true; break; } } return fResult; } } bool XSLTEngineImpl::isPendingResultPrefix(const XalanDOMString& thePrefix) const { const XalanDOMString::size_type thePrefixLength = thePrefix.length(); assert(thePrefixLength > 0); // The element name must be greater than the length of the prefix + 1, since // there must be a ':' to separate the prefix from the local part... if (isPrefixUsed(thePrefix, thePrefixLength, getPendingElementName()) == true) { return true; } else { // The element is not using the prefix, so check the // pending attributes... return isPendingAttributePrefix( getPendingAttributes(), thePrefix, thePrefixLength); } } void XSLTEngineImpl::addResultNamespace( const XalanDOMString& thePrefix, const XalanDOMString& theName, const XalanNode& theNode, AttributeListImpl& thePendingAttributes, bool fOnlyIfPrefixNotPresent) { if (fOnlyIfPrefixNotPresent == false || m_resultNamespacesStack.prefixIsPresentLocal(thePrefix) == false) { const XalanDOMString* const desturi = getResultNamespaceForPrefix(thePrefix); const XalanDOMString& srcURI = theNode.getNodeValue(); if(desturi == 0 || equals(srcURI, *desturi) == false) { addResultAttribute(thePendingAttributes, theName, srcURI, false, 0); addResultNamespaceDecl(thePrefix, srcURI); } } } void XSLTEngineImpl::addResultNamespace( const XalanNode& theNode, AttributeListImpl& thePendingAttributes, bool fOnlyIfPrefixNotPresent) { assert(m_executionContext != 0); assert(theNode.getNodeType() == XalanNode::ATTRIBUTE_NODE); const XalanDOMString& aname = theNode.getNodeName(); if (equals(aname, DOMServices::s_XMLNamespace) == true) { // Default namespace declaration... addResultNamespace(s_emptyString, aname, theNode, thePendingAttributes, fOnlyIfPrefixNotPresent); } else if (startsWith(aname, DOMServices::s_XMLNamespaceWithSeparator)) { const ECGetCachedString prefixGuard(*m_executionContext); XalanDOMString& thePrefix = prefixGuard.get(); substring(aname, thePrefix, DOMServices::s_XMLNamespaceWithSeparatorLength); addResultNamespace(thePrefix, aname, theNode, thePendingAttributes, fOnlyIfPrefixNotPresent); } } void XSLTEngineImpl::copyNamespaceAttributes(const XalanNode& src) { assert(m_attributeNamesVisited.empty() == true); const XalanNode* parent = &src; while (parent != 0 && parent->getNodeType() == XalanNode::ELEMENT_NODE) { const XalanNamedNodeMap* const nnm = parent->getAttributes(); assert(nnm != 0); const XalanSize_t nAttrs = nnm->getLength(); assert(m_outputContextStack.empty() == false); AttributeListImpl& thePendingAttributes = getPendingAttributesImpl(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanNode* const attr = nnm->item(i); assert(attr != 0); const XalanDOMString& nodeName = attr->getNodeName(); XALAN_USING_STD(find_if) if (find_if( m_attributeNamesVisited.begin(), m_attributeNamesVisited.end(), FindStringPointerFunctor(nodeName)) == m_attributeNamesVisited.end()) { addResultNamespace(*attr, thePendingAttributes, true); m_attributeNamesVisited.push_back(&nodeName); } } parent = parent->getParentNode(); } m_attributeNamesVisited.clear(); } const XObjectPtr XSLTEngineImpl::evalXPathStr( const XalanDOMString& str, XPathExecutionContext& executionContext) { assert(executionContext.getPrefixResolver() != 0); XPath* const theXPath = m_xpathFactory.create(); const XPathGuard theGuard(m_xpathFactory, theXPath); m_xpathProcessor->initXPath( *theXPath, m_xpathConstructionContext, str, *executionContext.getPrefixResolver(), getLocatorFromStack()); return theXPath->execute( executionContext.getCurrentNode(), *executionContext.getPrefixResolver(), executionContext); } const XObjectPtr XSLTEngineImpl::evalXPathStr( const XalanDOMString& str, XalanNode* contextNode, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext) { XPath* const theXPath = m_xpathFactory.create(); const XPathGuard theGuard(m_xpathFactory, theXPath); m_xpathProcessor->initXPath( *theXPath, m_xpathConstructionContext, str, prefixResolver, getLocatorFromStack()); return theXPath->execute(contextNode, prefixResolver, executionContext); } const XObjectPtr XSLTEngineImpl::evalXPathStr( const XalanDOMString& str, XalanNode* contextNode, const XalanElement& prefixResolver, XPathExecutionContext& executionContext) { ElementPrefixResolverProxy theProxy(&prefixResolver, m_xpathEnvSupport, m_domSupport, executionContext.getMemoryManager()); return evalXPathStr(str, contextNode, theProxy, executionContext); } /** * Create and initialize an xpath and return it. */ const XPath* XSLTEngineImpl::createMatchPattern( const XalanDOMString& str, const PrefixResolver& resolver) { XPath* const xpath = m_xpathFactory.create(); m_xpathProcessor->initMatchPattern( *xpath, m_xpathConstructionContext, str, resolver, getLocatorFromStack()); return xpath; } void XSLTEngineImpl::returnXPath(const XPath* xpath) { m_xpathFactory.returnObject(xpath); } inline void XSLTEngineImpl::copyAttributeToTarget( const XalanDOMString& attrName, const XalanDOMString& attrValue, AttributeListImpl& attrList) { addResultAttribute(attrList, attrName, attrValue, false, 0); } void XSLTEngineImpl::copyAttributesToAttList( const XalanNode& node, AttributeListImpl& attList) { assert(m_stylesheetRoot != 0); const XalanNamedNodeMap* const attributes = node.getAttributes(); if (attributes != 0) { const XalanSize_t nAttributes = attributes->getLength(); for (XalanSize_t i = 0; i < nAttributes; ++i) { const XalanNode* const attr = attributes->item(i); assert(attr != 0); copyAttributeToTarget( attr->getNodeName(), attr->getNodeValue(), attList); } } } XMLParserLiaison& XSLTEngineImpl::getXMLParserLiaison() const { return m_parserLiaison; } void XSLTEngineImpl::getUniqueNamespaceValue(XalanDOMString& theValue) { do { m_scratchString.assign(s_uniqueNamespacePrefix); NumberToDOMString(m_uniqueNSValue++, m_scratchString); } while(getResultNamespaceForPrefix(m_scratchString) != 0); theValue.append(m_scratchString); } void XSLTEngineImpl::setStylesheetParam( const XalanDOMString& theName, const XalanDOMString& theExpression) { m_stylesheetParams[theName].m_expression = theExpression;; } void XSLTEngineImpl::setStylesheetParam( const XalanDOMString& theName, XObjectPtr theValue) { m_stylesheetParams[theName].m_value = theValue; } void XSLTEngineImpl::clearStylesheetParams() { m_stylesheetParams.clear(); } void XSLTEngineImpl::resolveTopLevelParams(StylesheetExecutionContext& executionContext) { typedef ParamMapType::const_iterator const_iterator; MemoryManager& theManager = getMemoryManager(); assert(m_topLevelParams.size() == 0); m_topLevelParams.reserve(m_stylesheetParams.size()); for (const_iterator i = m_stylesheetParams.begin(); i != m_stylesheetParams.end(); ++i) { const XalanDOMString& theName = (*i).first; const XalanParamHolder& theCurrent = (*i).second; const XalanQNameByValue theQName(theName, theManager, m_stylesheetRoot); const XalanDOMString& theExpression = theCurrent.m_expression; if (theExpression.length() > 0) { const TopLevelArg theArg( theManager, theQName, theExpression); m_topLevelParams.push_back(theArg); } else { const TopLevelArg theArg( theManager, theQName, theCurrent.m_value); m_topLevelParams.push_back(theArg); } } executionContext.pushTopLevelVariables(m_topLevelParams); } FormatterListener* XSLTEngineImpl::getFormatterListener() const { return getFormatterListenerImpl(); } void XSLTEngineImpl::setFormatterListener(FormatterListener* flistener) { if (getHasPendingStartDocument() == true && getFormatterListenerImpl() != 0) { setMustFlushPendingStartDocument(true); flushPending(); } setFormatterListenerImpl(flistener); } void XSLTEngineImpl::fireCharacterGenerateEvent( const XalanNode& theNode, bool isCDATA) { XalanDOMString theBuffer(getMemoryManager()); DOMServices::getNodeData(theNode, *m_executionContext, theBuffer); fireCharacterGenerateEvent(theBuffer, isCDATA); } void XSLTEngineImpl::fireCharacterGenerateEvent( const XObjectPtr& theXObject, bool isCDATA) { fireCharacterGenerateEvent( theXObject->str(*m_executionContext), isCDATA); } void XSLTEngineImpl::fireCharacterGenerateEvent( const XalanDOMString& theString, bool isCDATA) { fireCharacterGenerateEvent( theString.c_str(), 0, theString.length(), isCDATA); } void XSLTEngineImpl::fireCharacterGenerateEvent( const XalanDOMChar* ch, size_type start, size_type length, bool isCDATA) { const GenerateEvent ge( isCDATA == true ? GenerateEvent::EVENTTYPE_CDATA : GenerateEvent::EVENTTYPE_CHARACTERS, getMemoryManager(), ch, start, length); fireGenerateEvent(ge); } void XSLTEngineImpl::error( const XalanDOMString& theMessage, const Locator* theLocator, const XalanNode* theSourceNode) { problem( eXSLTProcessor, eError, theMessage, theLocator, theSourceNode); } void XSLTEngineImpl::warn( const XalanDOMString& theMessage, const Locator* theLocator, const XalanNode* theSourceNode) { problem( eXSLTProcessor, eWarning, theMessage, theLocator, theSourceNode); } void XSLTEngineImpl::message( const XalanDOMString& theMessage, const Locator* theLocator, const XalanNode* theSourceNode) { problem( eXSLTProcessor, eMessage, theMessage, theLocator, theSourceNode); } void XSLTEngineImpl::installFunctions(MemoryManager& theManager) { XPath::installFunction(XPathFunctionTable::s_current, FunctionCurrent()); XPath::installFunction(XPathFunctionTable::s_document, FunctionDocument()); XPath::installFunction(XPathFunctionTable::s_elementAvailable, FunctionElementAvailable()); XPath::installFunction(XPathFunctionTable::s_functionAvailable, FunctionFunctionAvailable()); XPath::installFunction(XPathFunctionTable::s_formatNumber, FunctionFormatNumber()); XPath::installFunction(XPathFunctionTable::s_generateId, FunctionGenerateID()); XPath::installFunction(XPathFunctionTable::s_key, FunctionKey()); const FunctionSystemProperty temp(theManager); XPath::installFunction(XPathFunctionTable::s_systemProperty, temp); XPath::installFunction(XPathFunctionTable::s_unparsedEntityUri, FunctionUnparsedEntityURI()); } void XSLTEngineImpl::uninstallFunctions() { XPath::uninstallFunction(XPathFunctionTable::s_current); XPath::uninstallFunction(XPathFunctionTable::s_document); XPath::uninstallFunction(XPathFunctionTable::s_elementAvailable); XPath::uninstallFunction(XPathFunctionTable::s_functionAvailable); XPath::uninstallFunction(XPathFunctionTable::s_formatNumber); XPath::uninstallFunction(XPathFunctionTable::s_generateId); XPath::uninstallFunction(XPathFunctionTable::s_key); XPath::uninstallFunction(XPathFunctionTable::s_systemProperty); XPath::uninstallFunction(XPathFunctionTable::s_unparsedEntityUri); } XALAN_CPP_NAMESPACE_END XALAN_USING_XALAN(XalanDOMString) XALAN_USING_XALAN(XalanMemMgrs) static XalanDOMString s_XSLNameSpaceURL(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_XalanNamespaceURL(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_uniqueNamespacePrefix(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_stylesheetNodeName(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_typeString(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_hrefString(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_piTokenizerString(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_typeValueString1(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_typeValueString2(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_typeValueString3(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_typeValueString4(XalanMemMgrs::getDummyMemMgr()); XALAN_CPP_NAMESPACE_BEGIN const XalanDOMString& XSLTEngineImpl::s_XSLNameSpaceURL = ::s_XSLNameSpaceURL; const XalanDOMString& XSLTEngineImpl::s_XalanNamespaceURL = ::s_XalanNamespaceURL; const XalanDOMString& XSLTEngineImpl::s_uniqueNamespacePrefix = ::s_uniqueNamespacePrefix; const XalanDOMString& XSLTEngineImpl::s_stylesheetNodeName = ::s_stylesheetNodeName; const XalanDOMString& XSLTEngineImpl::s_typeString = ::s_typeString; const XalanDOMString& XSLTEngineImpl::s_hrefString = ::s_hrefString; const XalanDOMString& XSLTEngineImpl::s_piTokenizerString = ::s_piTokenizerString; const XalanDOMString& XSLTEngineImpl::s_typeValueString1 = ::s_typeValueString1; const XalanDOMString& XSLTEngineImpl::s_typeValueString2 = ::s_typeValueString2; const XalanDOMString& XSLTEngineImpl::s_typeValueString3 = ::s_typeValueString3; const XalanDOMString& XSLTEngineImpl::s_typeValueString4 = ::s_typeValueString4; #if 0 #include void dumpTable( const XSLTEngineImpl::ElementKeysMapType& theTable, std::ostream& theSourceStream, std::ostream& theHeaderStream) { XSLTEngineImpl::ElementKeysMapType::const_iterator i = theTable.begin(); while(i != theTable.end()) { theSourceStream << "const XalanDOMChar\tXSLTEngineImpl::s_"; const XalanDOMString& theString = (*i).first; theHeaderStream << "\t// The string \"" << theString << "\"\n\tstatic const XalanDOMChar\ts_"; bool nextCap = false; XalanDOMString::const_iterator j = theString.begin(); while(*j) { if (*j == '-') { nextCap = true; } else { assert(*j >= 'a' && *j <= 'z'); if (nextCap) { theSourceStream << char(*j -'a' + 'A'); theHeaderStream << char(*j -'a' + 'A'); nextCap = false; } else { theSourceStream << char(*j); theHeaderStream << char(*j); } } ++j; } j = theString.begin(); theSourceStream << "[] =\n{\n"; theHeaderStream << "[];\n\n"; while(*j) { if (*j == '-') { theSourceStream << "\tXalanUnicode::charHyphenMinus,\n"; } else { assert(*j >= 'a' && *j <= 'z'); theSourceStream << "\tXalanUnicode::charLetter_"; theSourceStream << char(*j) << ",\n"; } ++j; } theSourceStream << "\t0\n};\n\n"; ++i; } } #endif void XSLTEngineImpl::initialize(MemoryManager& theManager) { ::s_XSLNameSpaceURL.reset( theManager, "http://www.w3.org/1999/XSL/Transform"); ::s_XalanNamespaceURL.reset( theManager, "http://xml.apache.org/xalan"); ::s_uniqueNamespacePrefix.reset( theManager, "ns"); ::s_stylesheetNodeName.reset( theManager, "xml-stylesheet"); ::s_typeString.reset( theManager, "type"); XalanDOMString tmpString1(Constants::ATTRNAME_HREF, theManager); ::s_hrefString.swap(tmpString1); ::s_piTokenizerString.reset( theManager, " \t="); ::s_typeValueString1.reset( theManager, "text/xml"); ::s_typeValueString2.reset( theManager, "text/xsl"); ::s_typeValueString3.reset( theManager, "application/xml"); ::s_typeValueString4.reset( theManager, "application/xml+xslt"); installFunctions(theManager); } void XSLTEngineImpl::terminate() { uninstallFunctions(); MemoryManager& theManager = XalanMemMgrs::getDummyMemMgr(); releaseMemory(::s_uniqueNamespacePrefix, theManager); releaseMemory(::s_XalanNamespaceURL, theManager); releaseMemory(::s_XSLNameSpaceURL, theManager); releaseMemory(::s_stylesheetNodeName, theManager); releaseMemory(::s_typeString, theManager); releaseMemory(::s_hrefString, theManager); releaseMemory(::s_piTokenizerString, theManager); releaseMemory(::s_typeValueString1, theManager); releaseMemory(::s_typeValueString2, theManager); releaseMemory(::s_typeValueString3, theManager); releaseMemory(::s_typeValueString4, theManager); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/DecimalToRoman.hpp0000664000175000000640000000270411731656103020377 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_DECIMALTOROMAN_HEADER_GUARD) #define XALAN_DECIMALTOROMAN_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" #include XALAN_CPP_NAMESPACE_BEGIN /** * Structure to help in converting integrals to roman numerals */ struct XALAN_XSLT_EXPORT DecimalToRoman { enum { eMaxLetter = 2 }; typedef XalanSize_t ValueType; ValueType m_postValue; XalanDOMChar m_postLetter[eMaxLetter + 1]; ValueType m_preValue; XalanDOMChar m_preLetter[eMaxLetter + 1]; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_DECIMALTOROMAN_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/ElemWithParam.hpp0000664000175000000640000000537511731656103020247 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMWITHPARAM_HEADER_GUARD) #define XALAN_ELEMWITHPARAM_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemTemplateElement.hpp" XALAN_CPP_NAMESPACE_BEGIN class XPath; class ElemWithParam : public ElemTemplateElement { public: /** * Construct an object corresponding to an "xsl:with-param" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemWithParam( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); virtual ~ElemWithParam(); /** * Retrieves qualified name of object * * @return qualified name */ const XalanQName& getQName() const { assert(m_qname != 0); return *m_qname; } virtual const XalanDOMString& getElementName() const; virtual const XPath* getXPath(XalanSize_t index) const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; virtual void endElement(StylesheetExecutionContext& executionContext) const; #endif private: // not implemented ElemWithParam(const ElemWithParam&); ElemWithParam& operator=(const ElemWithParam&); // Data members... const XPath* m_selectPattern; const XalanQName* m_qname; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMWITHPARAM_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/FunctionElementAvailable.hpp0000664000175000000640000000425111731656103022440 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONELEMENTAVAILABLE_HEADER_GUARD_1357924680) #define FUNCTIONELEMENTAVAILABLE_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN class XObject; class XPathExecutionContext; // Implementation of the XSLT function element-available. // class XALAN_XSLT_EXPORT FunctionElementAvailable : public Function { public: typedef Function ParentType; FunctionElementAvailable(); virtual ~FunctionElementAvailable(); // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionElementAvailable* #endif clone(MemoryManager& theManager) const; private: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; // Not implemented... FunctionElementAvailable& operator=(const FunctionElementAvailable&); bool operator==(const FunctionElementAvailable&) const; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONELEMENTAVAILABLE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XSLT/ElemEmpty.hpp0000664000175000000640000000625311731656103017445 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMEMPTY_HEADER_GUARD) #define XALAN_ELEMEMPTY_HEADER_GUARD /** * Simple empty elem to push on the stack when nothing * else got pushed, so that pop() works correctly. */ // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemTemplateElement.hpp" XALAN_CPP_NAMESPACE_BEGIN class ElemEmpty : public ElemTemplateElement { public: /** * Construct an object corresponding to an empty element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param lineNumber line number in document * @param columnNumber column number in document * @param elementName The element name for which this instance is representing */ ElemEmpty( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, XalanFileLoc lineNumber, XalanFileLoc columnNumber, const XalanDOMString* elementName = 0); /** * Construct an object corresponding to an empty element. This * constructor is used for surrogate empty elements that do not * need namespace contexts and Locator information, etc. * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param elementName The element name for which this instance is representing */ ElemEmpty( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const XalanDOMString* elementName = 0); virtual ~ElemEmpty(); // These methods are inherited from ElemTemplateElement ... virtual const XalanDOMString& getElementName() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif protected: virtual bool childTypeAllowed(int xslToken) const; private: const XalanDOMString* const m_elementName; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMEMPTY_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/NodeSortKey.cpp0000664000175000000640000000553211731656103017744 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "NodeSortKey.hpp" #include XALAN_CPP_NAMESPACE_BEGIN static const XalanDOMString s_emptyString(XalanMemMgrs::getDummyMemMgr()); NodeSortKey::NodeSortKey( ExecutionContext& executionContext, const XPath* selectPat, bool treatAsNumbers, bool descending, XalanCollationServices::eCaseOrder caseOrder, const XalanDOMString& langValue, const PrefixResolver& resolver) : m_executionContext(&executionContext), m_selectPat(selectPat), m_treatAsNumbers(treatAsNumbers), m_descending(descending), m_caseOrder(caseOrder), m_prefixResolver(&resolver), m_languageString(&langValue) { } NodeSortKey::NodeSortKey() : m_executionContext(0), m_selectPat(0), m_treatAsNumbers(false), m_descending(false), m_caseOrder(XalanCollationServices::eDefault), m_prefixResolver(0), m_languageString(&s_emptyString) { } NodeSortKey::NodeSortKey(const NodeSortKey& theSource) : m_executionContext(theSource.m_executionContext), m_selectPat(theSource.m_selectPat), m_treatAsNumbers(theSource.m_treatAsNumbers), m_descending(theSource.m_descending), m_caseOrder(theSource.m_caseOrder), m_prefixResolver(theSource.m_prefixResolver), m_languageString(theSource.m_languageString) { } NodeSortKey::~NodeSortKey() { } NodeSortKey& NodeSortKey::operator=(const NodeSortKey& theRHS) { if (this != &theRHS) { m_executionContext = theRHS.m_executionContext; m_selectPat = theRHS.m_selectPat; m_treatAsNumbers = theRHS.m_treatAsNumbers; m_descending = theRHS.m_descending; m_caseOrder = theRHS.m_caseOrder; m_prefixResolver = theRHS.m_prefixResolver; m_languageString = theRHS.m_languageString; assert(m_languageString != 0); } return *this; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemParam.hpp0000664000175000000640000000450011731656103017400 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMPARAM_HEADER_GUARD) #define XALAN_ELEMPARAM_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemVariable.hpp" XALAN_CPP_NAMESPACE_BEGIN class ElemParam: public ElemVariable { public: /** * Construct an object corresponding to an "xsl:param" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemParam( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); // These methods are inherited from ElemVariable ... virtual const XalanDOMString& getElementName() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; virtual void endElement(StylesheetExecutionContext& executionContext) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMPARAM_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/XalanMatchPatternDataAllocator.cpp0000664000175000000640000000376311731656103023553 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanMatchPatternDataAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanMatchPatternDataAllocator::XalanMatchPatternDataAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanMatchPatternDataAllocator::~XalanMatchPatternDataAllocator() { } XalanMatchPatternDataAllocator::data_type* XalanMatchPatternDataAllocator::create( const ElemTemplate& theTemplate, data_type::size_type thePosition, const XalanDOMString& theTargetString, const XPath& theMatchPattern, const XalanDOMString& thePatternString, data_type::eMatchScore thePriority) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type( m_allocator.getMemoryManager(), theTemplate, thePosition, theTargetString, theMatchPattern, thePatternString, thePriority); m_allocator.commitAllocation(theBlock); return theResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/TraceListenerDefault.cpp0000664000175000000640000003141711731656103021610 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "TraceListenerDefault.hpp" #include #include #include #include #include #include #include #include "Constants.hpp" #include "ElemTextLiteral.hpp" #include "ElemTemplate.hpp" #include "GenerateEvent.hpp" #include "SelectionEvent.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetRoot.hpp" #include "TracerEvent.hpp" XALAN_CPP_NAMESPACE_BEGIN TraceListenerDefault::TraceListenerDefault( PrintWriter& thePrintWriter, MemoryManager& theManager, bool traceTemplates, bool traceElements, bool traceGeneration, bool traceSelection) : TraceListener(), m_executionContext(0), m_printWriter(thePrintWriter), m_traceTemplates(traceTemplates), m_traceElements(traceElements), m_traceGeneration(traceGeneration), m_traceSelection(traceSelection), m_memoryManager(theManager) { } TraceListenerDefault::TraceListenerDefault( XPathExecutionContext& theExecutionContext, PrintWriter& thePrintWriter, MemoryManager& theManager, bool traceTemplates, bool traceElements, bool traceGeneration, bool traceSelection) : TraceListener(), m_executionContext(&theExecutionContext), m_printWriter(thePrintWriter), m_traceTemplates(traceTemplates), m_traceElements(traceElements), m_traceGeneration(traceGeneration), m_traceSelection(traceSelection), m_memoryManager(theManager) { } TraceListenerDefault::~TraceListenerDefault() { } void TraceListenerDefault::trace(const TracerEvent& ev) { switch (ev.m_styleNode.getXSLToken()) { case StylesheetConstructionContext::ELEMNAME_TEXT_LITERAL_RESULT: if (m_traceElements == true) { printNodeInfo(ev.m_styleNode); m_printWriter.print(": "); m_printWriter.print(ev.m_styleNode.getElementName()); m_printWriter.print(" "); const ElemTextLiteral& etl = static_cast(ev.m_styleNode); m_printWriter.println(etl.getText()); } break; case StylesheetConstructionContext::ELEMNAME_TEMPLATE: if (m_traceTemplates == true || m_traceElements == true) { const ElemTemplate& et = static_cast(ev.m_styleNode); XalanDOMString lineNumbString(m_memoryManager); NumberToDOMString(ev.m_styleNode.getLineNumber(), lineNumbString); XalanDOMString colNumbString(m_memoryManager); NumberToDOMString(ev.m_styleNode.getColumnNumber(), colNumbString); XalanDOMString msg(m_memoryManager); m_printWriter.print( XalanMessageLoader::getMessage( msg, XalanMessages::LineNumberColumnNumber_2Params, lineNumbString, colNumbString)); m_printWriter.print(": "); m_printWriter.print(ev.m_styleNode.getElementName()); const XPath* const theMatchPattern = et.getMatchPattern(); if (0 != theMatchPattern) { m_printWriter.print( XalanMessageLoader::getMessage( msg, XalanMessages::MatchIs_1Param, theMatchPattern->getExpression().getCurrentPattern())); } const XalanQName& theName = et.getNameAttribute(); if (theName.isEmpty() == false) { m_printWriter.print( XalanMessageLoader::getMessage( msg, XalanMessages::NameIs_1Param)); const XalanDOMString& theNamespace = theName.getNamespace(); if (theNamespace.empty() == false) { m_printWriter.print(theNamespace); m_printWriter.print(":"); } m_printWriter.print(theName.getLocalPart()); m_printWriter.print("\" "); } m_printWriter.println(); } break; default: if (m_traceElements == true) { XalanDOMString lineNumbString(m_memoryManager); NumberToDOMString(ev.m_styleNode.getLineNumber(), lineNumbString); XalanDOMString colNumbString(m_memoryManager); NumberToDOMString(ev.m_styleNode.getColumnNumber(), colNumbString); XalanDOMString msg(m_memoryManager); m_printWriter.print( XalanMessageLoader::getMessage( msg, XalanMessages::LineNumberColumnNumber_2Params, lineNumbString, colNumbString)); m_printWriter.print(": "); m_printWriter.println(ev.m_styleNode.getElementName()); } break; } } void TraceListenerDefault::processNodeList(const NodeRefListBase& nl) { m_printWriter.println(); const NodeRefListBase::size_type n = nl.getLength(); XalanDOMString msg(m_memoryManager); if(n == 0) { m_printWriter.println( XalanMessageLoader::getMessage( msg, XalanMessages::EmptyNodeList)); } else { for (NodeRefListBase::size_type i = 0; i < n; i++) { assert(nl.item(i) != 0); m_printWriter.print(" "); if (m_executionContext != 0) { DOMServices::getNodeData(*nl.item(i), *m_executionContext, msg); } else { DOMServices::getNodeData(*nl.item(i), msg); } m_printWriter.println(msg); } } } void TraceListenerDefault::selected(const SelectionEvent& ev) { if (m_traceSelection == true) { const ElemTemplateElement& ete = ev.m_styleNode; if (ev.m_styleNode.getLineNumber() == XalanLocator::getUnknownValue()) { // You may not have line numbers if the selection is occuring from a // default template. ElemTemplateElement* const parent = ete.getParentNodeElem(); XalanDOMString msg(m_memoryManager); if (parent == ete.getStylesheet().getStylesheetRoot().getDefaultRootRule()) { m_printWriter.print( XalanMessageLoader::getMessage( msg, XalanMessages::DefaultRootRule)); } else if (parent == ete.getStylesheet().getStylesheetRoot().getDefaultTextRule()) { m_printWriter.print( XalanMessageLoader::getMessage( msg, XalanMessages::DefaultRootRule_1Param, Constants::ATTRNAME_DATATYPE)); } else if (parent == ete.getStylesheet().getStylesheetRoot().getDefaultRule()) { m_printWriter.print( XalanMessageLoader::getMessage( msg, XalanMessages::DefaultRootRule_1Param, " ")); } } else { XalanDOMString msg(m_memoryManager); XalanDOMString lineNumb(m_memoryManager); XalanDOMString columnNumber(m_memoryManager); NumberToDOMString(ev.m_styleNode.getLineNumber(), lineNumb); NumberToDOMString( ev.m_styleNode.getColumnNumber(), columnNumber); m_printWriter.print( XalanMessageLoader::getMessage( msg, XalanMessages::TextAndColumnNumber_2Param, lineNumb, columnNumber)); } m_printWriter.print(ete.getElementName()); m_printWriter.print(", "); m_printWriter.print(ev.m_attributeName); m_printWriter.print("=\""); m_printWriter.print(ev.m_xpathExpression); m_printWriter.print("\": "); if (ev.m_selection.null() == true) { if (ev.m_type == SelectionEvent::eBoolean) { m_printWriter.println(ev.m_boolean == true ? "true" : "false"); } else if (ev.m_type == SelectionEvent::eNodeSet) { assert(ev.m_nodeList != 0); processNodeList(*ev.m_nodeList); } } else if(ev.m_selection->getType() == XObject::eTypeNodeSet) { const NodeRefListBase& theNodeSet = m_executionContext != 0 ? ev.m_selection->nodeset() : ev.m_selection->nodeset(); processNodeList(theNodeSet); } else { const XalanDOMString& theString = m_executionContext != 0 ? ev.m_selection->str(*m_executionContext) : ev.m_selection->str(); m_printWriter.println(theString); } } } void TraceListenerDefault::generated(const GenerateEvent& ev) { if(m_traceGeneration == true) { switch(ev.m_eventType) { case GenerateEvent::EVENTTYPE_STARTDOCUMENT: m_printWriter.println("STARTDOCUMENT"); break; case GenerateEvent::EVENTTYPE_ENDDOCUMENT: m_printWriter.println(); m_printWriter.println("ENDDOCUMENT"); break; case GenerateEvent::EVENTTYPE_STARTELEMENT: m_printWriter.print("STARTELEMENT: "); m_printWriter.println(ev.m_name); break; case GenerateEvent::EVENTTYPE_ENDELEMENT: m_printWriter.print("ENDELEMENT: "); m_printWriter.println(ev.m_name); break; case GenerateEvent::EVENTTYPE_CHARACTERS: m_printWriter.print("CHARACTERS: "); m_printWriter.println(ev.m_characters); break; case GenerateEvent::EVENTTYPE_CDATA: m_printWriter.print("CDATA: "); m_printWriter.println(ev.m_characters); break; case GenerateEvent::EVENTTYPE_COMMENT: m_printWriter.print("COMMENT: "); m_printWriter.println(ev.m_data); break; case GenerateEvent::EVENTTYPE_PI: m_printWriter.print("PI: "); m_printWriter.print(ev.m_name); m_printWriter.print(", "); m_printWriter.println(ev.m_data); break; case GenerateEvent::EVENTTYPE_ENTITYREF: m_printWriter.println("ENTITYREF: "); m_printWriter.println(ev.m_name); break; case GenerateEvent::EVENTTYPE_IGNORABLEWHITESPACE: m_printWriter.println("IGNORABLEWHITESPACE"); break; } } } void TraceListenerDefault::printNodeInfo(const ElemTemplateElement& node) { const XalanDOMString& uri = node.getURI(); XalanDOMString msg(m_memoryManager), lineNumb(m_memoryManager), columnNumb(m_memoryManager); NumberToDOMString(node.getLineNumber(), lineNumb); NumberToDOMString(node.getColumnNumber(), columnNumb); m_printWriter.print( XalanMessageLoader::getMessage( msg, XalanMessages::TextAndColumnNumber_2Param, lineNumb, columnNumb)); if (uri.length() != 0) { m_printWriter.print(" ("); m_printWriter.print(uri); m_printWriter.print(")"); } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemWhen.hpp0000664000175000000640000000457311731656103017253 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMWHEN_HEADER_GUARD) #define XALAN_ELEMWHEN_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemTemplateElement.hpp" XALAN_CPP_NAMESPACE_BEGIN class XPath; class ElemWhen : public ElemTemplateElement { public: /** * Construct an object corresponding to an "xsl:when" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemWhen ( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); virtual const XalanDOMString& getElementName() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; virtual void endElement(StylesheetExecutionContext& executionContext) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif virtual const XPath* getXPath(XalanSize_t index) const; private: const XPath* m_test; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMWHEN_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/ResultNamespacesStack.hpp0000664000175000000640000000747711731656103022021 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_RESULTNAMESPACESSTACK_HEADER_GUARD) #define XALAN_RESULTNAMESPACESSTACK_HEADER_GUARD // Base include file. Must be first. #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XSLT_EXPORT ResultNamespacesStack { public: #if defined(XALAN_USE_DEQUE_FOR_VECTOR_BOOL) #if defined(XALAN_NO_STD_NAMESPACE) typedef deque BoolVectorType; #else typedef std::deque BoolVectorType; #endif #else typedef XalanVector BoolVectorType; #endif typedef XalanQName::NamespaceVectorType NamespaceVectorType; typedef XalanQName::NamespacesStackType NamespacesStackType; typedef NamespacesStackType::size_type size_type; explicit ResultNamespacesStack(MemoryManager& theManager); ~ResultNamespacesStack(); void addDeclaration( const XalanDOMString& thePrefix, const XalanDOMString& theNamespaceURI) { addDeclaration( thePrefix, theNamespaceURI.c_str(), theNamespaceURI.length()); } void addDeclaration( const XalanDOMString& thePrefix, const XalanDOMChar* theNamespaceURI) { addDeclaration( thePrefix, theNamespaceURI, length(theNamespaceURI)); } void addDeclaration( const XalanDOMString& thePrefix, const XalanDOMChar* theNamespaceURI, XalanDOMString::size_type theLength); void pushContext(); void popContext(); const XalanDOMString* getNamespaceForPrefix(const XalanDOMString& thePrefix) const; const XalanDOMString* getPrefixForNamespace(const XalanDOMString& theNamespaceURI) const; /** * See if the prefix has been mapped to a namespace in the current * context, without looking down the stack of namespaces. */ bool prefixIsPresentLocal(const XalanDOMString& thePrefix); void clear(); size_type size() const { return m_resultNamespaces.size() - 1; } bool empty() const { return NamespacesStackType::const_iterator(m_stackPosition) == m_resultNamespaces.begin() ? true : false; } private: // not implemented ResultNamespacesStack(const ResultNamespacesStack&); bool operator==(const ResultNamespacesStack&) const; ResultNamespacesStack& operator=(const ResultNamespacesStack&); enum { eDefaultCreateNewContextStackSize = 25 }; /** * A stack to keep track of the result tree namespaces. */ NamespacesStackType m_resultNamespaces; NamespacesStackType::iterator m_stackBegin; NamespacesStackType::iterator m_stackPosition; BoolVectorType m_createNewContextStack; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_RESULTNAMESPACESSTACK_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/XSLTProcessorEnvSupportDefault.hpp0000664000175000000640000001310011731656103023576 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XSLTPROCESSORENVSUPPORTDEFAULT_HEADER_GUARD_1357924680) #define XSLTPROCESSORENVSUPPORTDEFAULT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include // Base class header file... #include #include XALAN_CPP_NAMESPACE_BEGIN class XSLTProcessor; class XALAN_XSLT_EXPORT XSLTProcessorEnvSupportDefault : public XSLTProcessorEnvSupport { public: XSLTProcessorEnvSupportDefault( MemoryManager& theManager, XSLTProcessor* theProcessor = 0); virtual ~XSLTProcessorEnvSupportDefault(); /** * Reset the XLST processor instance * * @param theProcessor pointer to new processor instance */ void setProcessor(XSLTProcessor* theProcessor) { m_processor = theProcessor; } /** * Install an external function in the global space. * * @param theNamespace The namespace for the functionl * @param functionName The name of the function. * @param function The function to install. */ static void installExternalFunctionGlobal( const XalanDOMString& theNamespace, const XalanDOMString& functionName, const Function& function); /** * Uninstall an external function from the global space. * * @param theNamespace The namespace for the functionl * @param functionName The name of the function. */ static void uninstallExternalFunctionGlobal( const XalanDOMString& theNamespace, const XalanDOMString& functionName); // Interfaces to install and uninstall external functions in this instance. /** * Install an external function in the local space. * * @param theNamespace The namespace for the functionl * @param functionName The name of the function. * @param function The function to install. */ virtual void installExternalFunctionLocal( const XalanDOMString& theNamespace, const XalanDOMString& functionName, const Function& function); /** * Uninstall an external function from the local space. * * @param theNamespace The namespace for the functionl * @param functionName The name of the function. */ virtual void uninstallExternalFunctionLocal( const XalanDOMString& theNamespace, const XalanDOMString& functionName); // These interfaces are inherited from XSLTProcessorEnvSupport... virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode); virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode); virtual XalanDocument* parseXML( MemoryManager& theManager, const XalanDOMString& urlString, const XalanDOMString& base, ErrorHandler* theErrorHandler = 0); virtual XalanDocument* getSourceDocument(const XalanDOMString& theURI) const; virtual void setSourceDocument( const XalanDOMString& theURI, XalanDocument* theDocument); virtual const XalanDOMString& findURIFromDoc(const XalanDocument* owner) const; virtual bool elementAvailable( const XalanDOMString& theNamespace, const XalanDOMString& elementName) const; virtual bool functionAvailable( const XalanDOMString& theNamespace, const XalanDOMString& functionName) const; virtual XObjectPtr extFunction( XPathExecutionContext& executionContext, const XalanDOMString& theNamespace, const XalanDOMString& functionName, XalanNode* context, const XObjectArgVectorType& argVec, const Locator* locator) const; virtual void reset(); // These are not implemented... XSLTProcessorEnvSupportDefault(const XSLTProcessorEnvSupportDefault&); XSLTProcessorEnvSupportDefault& operator=(const XSLTProcessorEnvSupportDefault&); bool operator==(const XSLTProcessorEnvSupportDefault&) const; // Data members... XPathEnvSupportDefault m_defaultSupport; XSLTProcessor* m_processor; }; XALAN_CPP_NAMESPACE_END #endif // XSLTPROCESSORENVSUPPORTDEFAULT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XSLT/ElemForEach.cpp0000664000175000000640000005776511731656103017667 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemForEach.hpp" #include #include #include #include #include #include #include #include "ElemSort.hpp" #include "NodeSorter.hpp" #include "SelectionEvent.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemForEach::ElemForEach( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemTemplateElement(constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_FOR_EACH), m_selectPattern(0), m_sortElems(constructionContext.getMemoryManager()), m_sortElemsCount(0) { const XalanSize_t nAttrs = atts.getLength(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (equals(aname, Constants::ATTRNAME_SELECT)) { m_selectPattern = constructionContext.createXPath(getLocator(), atts.getValue(i), *this); } else if (isAttrOK( aname, atts, i, constructionContext) == false && processSpaceAttr( Constants::ELEMNAME_FOREACH_WITH_PREFIX_STRING.c_str(), aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_FOREACH_WITH_PREFIX_STRING.c_str(), aname); } } if (0 == m_selectPattern) { error( constructionContext, XalanMessages::ElementMustHaveAttribute_2Param, Constants::ELEMNAME_FOREACH_WITH_PREFIX_STRING, Constants::ATTRNAME_SELECT); } } ElemForEach::ElemForEach( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, XalanFileLoc lineNumber, XalanFileLoc columnNumber, int xslToken) : ElemTemplateElement(constructionContext, stylesheetTree, lineNumber, columnNumber, xslToken), m_selectPattern(0), m_sortElems(constructionContext.getMemoryManager()), m_sortElemsCount(0) { } ElemForEach::~ElemForEach() { XALAN_USING_STD(for_each) MemoryManager& theManager = m_sortElems.getMemoryManager(); for_each(m_sortElems.begin(), m_sortElems.end(), DeleteFunctor(theManager)); } void ElemForEach::processSortElement( StylesheetConstructionContext& constructionContext, Stylesheet& theStylesheet, const AttributeListType& atts, const Locator* locator) { const XalanFileLoc lineNumber = XalanLocator::getLineNumber(locator); const XalanFileLoc columnNumber = XalanLocator::getColumnNumber(locator); m_sortElems.reserve(m_sortElems.size() + 1); ElemSort* sortElem = ElemSort::create( constructionContext.getMemoryManager(), constructionContext, theStylesheet, atts, lineNumber, columnNumber); m_sortElems.push_back(sortElem); } const XalanDOMString& ElemForEach::getElementName() const { return Constants::ELEMNAME_FOREACH_WITH_PREFIX_STRING; } void ElemForEach::postConstruction( StylesheetConstructionContext& constructionContext, const NamespacesHandler& theParentHandler) { ElemTemplateElement::postConstruction(constructionContext, theParentHandler); m_sortElemsCount = m_sortElems.size(); } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemForEach::startElement(StylesheetExecutionContext& executionContext) const { assert(executionContext.getCurrentNode() != 0); if (hasChildren() == true) { executionContext.pushCurrentTemplate(0); const NodeRefListBase * nodeList = createSelectedAndSortedNodeList( executionContext); executionContext.createAndPushNodesToTransformList(nodeList); executionContext.pushContextNodeList(*nodeList); XalanNode* currentNode = executionContext.getNextNodeToTransform(); if (currentNode == 0) { return 0; } executionContext.pushCurrentNode(currentNode); return beginExecuteChildren(executionContext); } return 0; } const ElemTemplateElement* ElemForEach::getNextChildElemToExecute( StylesheetExecutionContext& executionContext, const ElemTemplateElement* currentElem) const { if (hasDirectTemplate() != true) { ElemTemplateElement* nextElement = currentElem->getNextSiblingElem(); if (nextElement != 0) { return nextElement; } } executionContext.popCurrentNode(); XalanNode * nextNode = executionContext.getNextNodeToTransform(); if (nextNode == 0) { return 0; } executionContext.pushCurrentNode(nextNode); endExecuteChildren(executionContext); return beginExecuteChildren(executionContext); } void ElemForEach::endElement(StylesheetExecutionContext& executionContext) const { if (hasChildren() == true) { // Children only executed if there were selected nodes if(executionContext.getContextNodeList().getLength() > 0) { endExecuteChildren(executionContext); } executionContext.popNodesToTransformList(); executionContext.popContextNodeList(); releaseSelectedAndSortedNodeList(executionContext); executionContext.popCurrentTemplate(); } } const NodeRefListBase* ElemForEach::createSelectedAndSortedNodeList( StylesheetExecutionContext& executionContext) const { assert(m_selectPattern != 0); typedef StylesheetExecutionContext::SetAndRestoreCurrentStackFrameIndex SetAndRestoreCurrentStackFrameIndex; MutableNodeRefList& selectedNodeList = executionContext.createAndPushMutableNodeRefList(); XObjectPtr xobjectResult; const NodeRefListBase* nodesToTransform = 0; { xobjectResult = m_selectPattern->execute( *this, executionContext, selectedNodeList); if (xobjectResult.null() == true) { nodesToTransform = &selectedNodeList; } else { nodesToTransform = &xobjectResult->nodeset(); } } executionContext.pushXObjectPtr(xobjectResult); if(0 != executionContext.getTraceListeners()) { executionContext.fireSelectEvent( SelectionEvent( executionContext, executionContext.getCurrentNode(), *this, XalanDOMString("select", executionContext.getMemoryManager()), *m_selectPattern, *nodesToTransform)); } if (m_sortElemsCount > 0) { MutableNodeRefList& sortedNodeList = executionContext.createAndPushMutableNodeRefList(); if (nodesToTransform->getLength() > 1) { nodesToTransform = sortChildren( executionContext, *nodesToTransform, sortedNodeList); } } return nodesToTransform; } void ElemForEach::releaseSelectedAndSortedNodeList( StylesheetExecutionContext& executionContext) const { executionContext.popXObjectPtr(); executionContext.releaseAndPopMutableNodeRefList(); if (m_sortElemsCount > 0) { executionContext.releaseAndPopMutableNodeRefList(); } } const NodeRefListBase* ElemForEach::sortChildren( StylesheetExecutionContext& executionContext, const NodeRefListBase& selectedNodeList, MutableNodeRefList& sortedNodeList) const { typedef NodeSorter::NodeSortKeyVectorType NodeSortKeyVectorType; typedef StylesheetExecutionContext::SetAndRestoreCurrentStackFrameIndex SetAndRestoreCurrentStackFrameIndex; typedef StylesheetExecutionContext::ContextNodeListPushAndPop ContextNodeListPushAndPop; NodeSorter* sorter = executionContext.getNodeSorter(); NodeSortKeyVectorType& keys = sorter->getSortKeys(); assert(keys.empty() == true); CollectionClearGuard guard(keys); // Reserve the space now... keys.reserve(m_sortElemsCount); // Get some temporary strings to use for evaluting the AVTs... const StylesheetExecutionContext::GetCachedString theTemp1(executionContext); XalanDOMString& langString = theTemp1.get(); const StylesheetExecutionContext::GetCachedString theTemp2(executionContext); XalanDOMString& scratchString = theTemp2.get(); // March backwards, performing a sort on each xsl:sort child. // Probably not the most efficient method. for(SortElemsVectorType::size_type i = 0; i < m_sortElemsCount; i++) { const ElemSort* const sort = m_sortElems[i]; assert(sort != 0); const AVT* avt = sort->getLangAVT(); if(0 != avt) { avt->evaluate(langString, *this, executionContext); } avt = sort->getDataTypeAVT(); if(0 != avt) { avt->evaluate(scratchString, *this, executionContext); } bool treatAsNumbers = false; if (scratchString.empty() == false) { if (equals(scratchString, Constants::ATTRVAL_DATATYPE_NUMBER) == true) { treatAsNumbers = true; } else if (equals(scratchString, Constants::ATTRVAL_DATATYPE_TEXT) == false) { const XalanQNameByValue theQName(scratchString, executionContext.getMemoryManager(), this); if (theQName.getNamespace().length() == 0) { error( executionContext, XalanMessages::SortDataTypeMustBe, sort->getLocator()); } else { warn( executionContext, XalanMessages::SortHasUnknownDataType, sort->getLocator()); } } } scratchString.clear(); avt = sort->getOrderAVT(); if(0 != avt) { avt->evaluate(scratchString, *this, executionContext); } bool descending = false; if (scratchString.empty() == false) { if (equals(scratchString, Constants::ATTRVAL_ORDER_DESCENDING) == true) { descending = true; } else if (equals(scratchString, Constants::ATTRVAL_ORDER_ASCENDING) == false) { error( executionContext, XalanMessages::SortMustBeAscendOrDescend, sort->getLocator()); } } scratchString.clear(); avt = sort->getCaseOrderAVT(); if(0 != avt) { avt->evaluate(scratchString, *this, executionContext); } XalanCollationServices::eCaseOrder caseOrder = XalanCollationServices::eDefault; if (scratchString.empty() == false) { if (equals(scratchString, Constants::ATTRVAL_CASEORDER_UPPER) == true) { caseOrder = XalanCollationServices::eUpperFirst; } else if (equals(scratchString, Constants::ATTRVAL_CASEORDER_LOWER) == true) { caseOrder = XalanCollationServices::eLowerFirst; } else { error( executionContext, XalanMessages::SortCaseOrderMustBe, sort->getLocator()); } } scratchString.clear(); keys.push_back( NodeSortKey( executionContext, sort->getSelectPattern(), treatAsNumbers, descending, caseOrder, langString, *this)); } sortedNodeList = selectedNodeList; { ContextNodeListPushAndPop theContextNodeListPushAndPop( executionContext, selectedNodeList); sorter->sort(executionContext, sortedNodeList); } return &sortedNodeList; } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemForEach::execute(StylesheetExecutionContext& executionContext) const { assert(m_selectPattern != 0); assert(executionContext.getCurrentNode() != 0); StylesheetExecutionContext::PushAndPopCurrentTemplate thePushAndPop(executionContext, 0); if (hasChildren() == true) { transformSelectedChildren( executionContext, this); } } void ElemForEach::transformSelectedChildren( StylesheetExecutionContext& executionContext, const ElemTemplateElement* theTemplate) const { assert(m_selectPattern != 0); assert(m_sortElemsCount == m_sortElems.size()); if (m_sortElemsCount == 0) { selectAndSortChildren( executionContext, theTemplate, 0, executionContext.getCurrentStackFrameIndex()); } else { typedef NodeSorter::NodeSortKeyVectorType NodeSortKeyVectorType; typedef StylesheetExecutionContext::BorrowReturnNodeSorter BorrowReturnNodeSorter; BorrowReturnNodeSorter sorter(executionContext); NodeSortKeyVectorType& keys = sorter->getSortKeys(); assert(keys.empty() == true); CollectionClearGuard guard(keys); // Reserve the space now... keys.reserve(m_sortElemsCount); // Get some temporary strings to use for evaluting the AVTs... StylesheetExecutionContext::GetCachedString theTemp1(executionContext); XalanDOMString& langString = theTemp1.get(); const StylesheetExecutionContext::GetCachedString theTemp2(executionContext); XalanDOMString& scratchString = theTemp2.get(); // March backwards, performing a sort on each xsl:sort child. // Probably not the most efficient method. for(SortElemsVectorType::size_type i = 0; i < m_sortElemsCount; i++) { const ElemSort* const sort = m_sortElems[i]; assert(sort != 0); const AVT* avt = sort->getLangAVT(); if(0 != avt) { avt->evaluate(langString, *this, executionContext); } avt = sort->getDataTypeAVT(); if(0 != avt) { avt->evaluate(scratchString, *this, executionContext); } bool treatAsNumbers = false; if (scratchString.empty() == false) { if (equals(scratchString, Constants::ATTRVAL_DATATYPE_NUMBER) == true) { treatAsNumbers = true; } else if (equals(scratchString, Constants::ATTRVAL_DATATYPE_TEXT) == false) { const XalanQNameByValue theQName(scratchString, executionContext.getMemoryManager(), this); if (theQName.getNamespace().length() == 0) { error( executionContext, XalanMessages::SortDataTypeMustBe); } else { warn( executionContext, XalanMessages::SortHasUnknownDataType); } } } clear(scratchString); avt = sort->getOrderAVT(); if(0 != avt) { avt->evaluate(scratchString, *this, executionContext); } bool descending = false; if (scratchString.empty() == false) { if (equals(scratchString, Constants::ATTRVAL_ORDER_DESCENDING) == true) { descending = true; } else if (equals(scratchString, Constants::ATTRVAL_ORDER_ASCENDING) == false) { error( executionContext, XalanMessages::SortMustBeAscendOrDescend); } } clear(scratchString); avt = sort->getCaseOrderAVT(); if(0 != avt) { avt->evaluate(scratchString, *this, executionContext); } XalanCollationServices::eCaseOrder caseOrder = XalanCollationServices::eDefault; if (scratchString.empty() == false) { if (equals(scratchString, Constants::ATTRVAL_CASEORDER_UPPER) == true) { caseOrder = XalanCollationServices::eUpperFirst; } else if (equals(scratchString, Constants::ATTRVAL_CASEORDER_LOWER) == true) { caseOrder = XalanCollationServices::eLowerFirst; } else { error( executionContext, XalanMessages::SortCaseOrderMustBe); } } clear(scratchString); keys.push_back( NodeSortKey( executionContext, sort->getSelectPattern(), treatAsNumbers, descending, caseOrder, langString, *this)); } selectAndSortChildren( executionContext, theTemplate, sorter.get(), executionContext.getCurrentStackFrameIndex()); } } void ElemForEach::selectAndSortChildren( StylesheetExecutionContext& executionContext, const ElemTemplateElement* theTemplate, NodeSorter* sorter, int selectStackFrameIndex) const { typedef StylesheetExecutionContext::SetAndRestoreCurrentStackFrameIndex SetAndRestoreCurrentStackFrameIndex; assert(m_selectPattern != 0); typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList theGuard(executionContext); const NodeRefListBase* sourceNodes = 0; XObjectPtr xobjectResult; { SetAndRestoreCurrentStackFrameIndex theSetAndRestore( executionContext, selectStackFrameIndex); xobjectResult = m_selectPattern->execute( *this, executionContext, *theGuard); if (xobjectResult.null() == true) { sourceNodes = &*theGuard; } else { theGuard.release(); sourceNodes = &xobjectResult->nodeset(); } } if(0 != executionContext.getTraceListeners()) { executionContext.fireSelectEvent( SelectionEvent( executionContext, executionContext.getCurrentNode(), *this, XalanDOMString("select", executionContext.getMemoryManager()), *m_selectPattern, *sourceNodes)); } const NodeRefListBase::size_type nNodes = sourceNodes->getLength(); if (nNodes > 0) { // If there's not NodeSorter, or we've only selected one node, // then just do the transform... if (sorter == 0 || nNodes == 1) { transformSelectedChildren( executionContext, theTemplate, *sourceNodes, nNodes); } else { typedef StylesheetExecutionContext::SetAndRestoreCurrentStackFrameIndex SetAndRestoreCurrentStackFrameIndex; typedef StylesheetExecutionContext::ContextNodeListPushAndPop ContextNodeListPushAndPop; typedef StylesheetExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList; BorrowReturnMutableNodeRefList sortedSourceNodes(executionContext); *sortedSourceNodes = *sourceNodes; { SetAndRestoreCurrentStackFrameIndex theStackFrameSetAndRestore( executionContext, selectStackFrameIndex); ContextNodeListPushAndPop theContextNodeListPushAndPop( executionContext, *sourceNodes); sorter->sort(executionContext, *sortedSourceNodes); } transformSelectedChildren( executionContext, theTemplate, *sortedSourceNodes, nNodes); } } } void ElemForEach::transformSelectedChildren( StylesheetExecutionContext& executionContext, const ElemTemplateElement* theTemplate, const NodeRefListBase& sourceNodes, NodeRefListBase::size_type sourceNodesCount) const { if(executionContext.getTraceSelects() == true) { executionContext.traceSelect( *this, sourceNodes, m_selectPattern); } // Create an object to set and restore the context node list... const StylesheetExecutionContext::ContextNodeListPushAndPop theContextNodeLisPushAndPop( executionContext, sourceNodes); for(NodeRefListBase::size_type i = 0; i < sourceNodesCount; i++) { XalanNode* const childNode = sourceNodes.item(i); assert(childNode != 0); transformChild( executionContext, *this, theTemplate, childNode); } } #endif const XPath* ElemForEach::getXPath(XalanSize_t index) const { return index == 0 ? m_selectPattern : 0; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ProblemListener.hpp0000664000175000000640000000717011731656103020651 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_PROBLEMLISTENER_HEADER_GUARD) #define XALAN_PROBLEMLISTENER_HEADER_GUARD // Base include file. Must be first. #include "xalanc/XSLT/XSLTDefinitions.hpp" #include "xalanc/PlatformSupport/ProblemListenerBase.hpp" XALAN_CPP_NAMESPACE_BEGIN class ElemTemplateElement; class XalanNode; class PrintWriter; /** * This is the abstract class that the XSL processor uses when it has a * problem of some kind, that requires a message, an error or a warning. Users * should ask the XSLTProcessor class to setProblemListener if they wish an * object instance to be called when a problem event occurs. */ class XALAN_XSLT_EXPORT ProblemListener : public ProblemListenerBase { public: // A typedef for compatibility. typedef eSource eProblemSource; ProblemListener(); virtual ~ProblemListener(); // These interfaces are inherited from ProblemListenerBase... virtual void setPrintWriter(PrintWriter* pw) = 0; virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode) = 0; virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode) = 0; // This interface is new to ProblemListenerBase... /** * Function that is called when a problem event occurs. This function * is deprecated. Use the overload with the Locator parameter instead. * @deprecated * * @param source either eXMLPARSER, eXSLPROCESSOR, or eXPATH * @param classification either eMESSAGE, eERROR or eWARNING * @param sourceNode source tree node where the problem occurred * (may be 0) * @param styleNode style tree node where the problem occurred * (may be 0) * @param msg string message explaining the problem. * @param uri the URI of the document where the problem occurred. May be 0. * @param lineNo line number where the problem occurred. * @param charOffset character offset where the problem. */ virtual void problem( eSource source, eClassification classification, const XalanNode* sourceNode, const ElemTemplateElement* styleNode, const XalanDOMString& msg, const XalanDOMChar* uri, XalanFileLoc lineNo, XalanFileLoc charOffset) = 0; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_PROBLEMLISTENER_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/Constants.cpp0000664000175000000640000011056611731656103017516 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "Constants.hpp" #include XALAN_USING_XALAN(XalanDOMString) XALAN_USING_XALAN(XalanMemMgrs) static XalanDOMString ATTRNAME_CASEORDER(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_COUNT(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_DATATYPE(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_DECIMALSEPARATOR(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_DEFAULT(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_DEFAULTSPACE(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_DIGIT(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_DIGITGROUPSEP(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_DISABLE_OUTPUT_ESCAPING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_ELEMENTS(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_EXCLUDE_RESULT_PREFIXES(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_EXTENSIONELEMENTPREFIXES(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_ESCAPE_URLS(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_FORMAT(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_FROM(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_GROUPINGSEPARATOR(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_GROUPINGSIZE(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_HREF(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_ID(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_INDENTAMOUNT(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_INDENTRESULT(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_INFINITY(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_LANG(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_LETTERVALUE(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_MATCH(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_MINUSSIGN(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_MODE(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_NAME(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_NAMESPACE(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_NAN(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_NDIGITSPERGROUP(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_OMIT_META_TAG(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_ORDER(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_OUTPUT_CDATA_SECTION_ELEMENTS(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_OUTPUT_DOCTYPE_PUBLIC(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_OUTPUT_DOCTYPE_SYSTEM(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_OUTPUT_ENCODING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_OUTPUT_INDENT(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_OUTPUT_MEDIATYPE(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_OUTPUT_METHOD(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_OUTPUT_OMITXMLDECL(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_OUTPUT_STANDALONE(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_OUTPUT_VERSION(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_PATTERNSEPARATOR(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_PERCENT(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_PERMILLE(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_PREFIX(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_PRIORITY(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_RESULTNS(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_RESULT_PREFIX(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_SELECT(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_STYLESHEET_PREFIX(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_TERMINATE(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_TEST(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_TYPE(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_USE(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_USEATTRIBUTESETS(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_VALUE(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_VERSION(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_SPACE(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_XMLSPACE(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRNAME_ZERODIGIT(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRTYPE_CDATA(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRVAL_CASEORDER_LOWER(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRVAL_CASEORDER_UPPER(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRVAL_DATATYPE_NUMBER(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRVAL_DATATYPE_TEXT(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRVAL_DEFAULT(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRVAL_DEFAULT_PREFIX(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRVAL_DEFAULT_TEXT_RULE(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRVAL_INFINITY(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRVAL_NAN(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRVAL_NO(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRVAL_ORDER_ASCENDING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRVAL_ORDER_DESCENDING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRVAL_OUTPUT_METHOD_HTML(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRVAL_OUTPUT_METHOD_TEXT(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRVAL_OUTPUT_METHOD_XML(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRVAL_PRESERVE(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRVAL_SIMPLE(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRVAL_STRIP(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRVAL_THIS(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ATTRVAL_YES(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString DEFAULT_WHITESPACE_SEPARATOR_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_ANY_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_APPLY_IMPORTS_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_APPLY_TEMPLATES_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_ATTRIBUTESET_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_ATTRIBUTE_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_CALLTEMPLATE_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_CHOOSE_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_COMMENT_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_COPY_OF_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_COPY_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_DECIMALFORMAT_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_DISPLAYIF_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_ELEMENT_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_FALLBACK_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_FOREACH_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_HTML_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_IF_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_IMPORT_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_INCLUDE_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_KEY_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_MESSAGE_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_NUMBER_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_OTHERWISE_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_PARAM_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_PI_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_PRESERVESPACE_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_SORT_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_STRIPSPACE_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_TEMPLATE_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_TEXT_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_VALUEOF_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_VARIABLE_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_WHEN_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString ELEMNAME_WITHPARAM_WITH_PREFIX_STRING(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString PSEUDONAME_NODE(XalanMemMgrs::getDummyMemMgr()); XALAN_CPP_NAMESPACE_BEGIN const XalanDOMString& Constants::ATTRNAME_CASEORDER = ::ATTRNAME_CASEORDER; const XalanDOMString& Constants::ATTRNAME_COUNT = ::ATTRNAME_COUNT; const XalanDOMString& Constants::ATTRNAME_DATATYPE = ::ATTRNAME_DATATYPE; const XalanDOMString& Constants::ATTRNAME_DECIMALSEPARATOR = ::ATTRNAME_DECIMALSEPARATOR; const XalanDOMString& Constants::ATTRNAME_DEFAULT = ::ATTRNAME_DEFAULT; const XalanDOMString& Constants::ATTRNAME_DEFAULTSPACE = ::ATTRNAME_DEFAULTSPACE; const XalanDOMString& Constants::ATTRNAME_DIGIT = ::ATTRNAME_DIGIT; const XalanDOMString& Constants::ATTRNAME_DIGITGROUPSEP = ::ATTRNAME_DIGITGROUPSEP; const XalanDOMString& Constants::ATTRNAME_DISABLE_OUTPUT_ESCAPING = ::ATTRNAME_DISABLE_OUTPUT_ESCAPING; const XalanDOMString& Constants::ATTRNAME_ELEMENTS = ::ATTRNAME_ELEMENTS; const XalanDOMString& Constants::ATTRNAME_ESCAPE_URLS = ::ATTRNAME_ESCAPE_URLS; const XalanDOMString& Constants::ATTRNAME_EXCLUDE_RESULT_PREFIXES = ::ATTRNAME_EXCLUDE_RESULT_PREFIXES; const XalanDOMString& Constants::ATTRNAME_EXTENSIONELEMENTPREFIXES = ::ATTRNAME_EXTENSIONELEMENTPREFIXES; const XalanDOMString& Constants::ATTRNAME_FORMAT = ::ATTRNAME_FORMAT; const XalanDOMString& Constants::ATTRNAME_FROM = ::ATTRNAME_FROM; const XalanDOMString& Constants::ATTRNAME_GROUPINGSEPARATOR = ::ATTRNAME_GROUPINGSEPARATOR; const XalanDOMString& Constants::ATTRNAME_GROUPINGSIZE = ::ATTRNAME_GROUPINGSIZE; const XalanDOMString& Constants::ATTRNAME_HREF = ::ATTRNAME_HREF; const XalanDOMString& Constants::ATTRNAME_ID = ::ATTRNAME_ID; const XalanDOMString& Constants::ATTRNAME_INDENTAMOUNT = ::ATTRNAME_INDENTAMOUNT; const XalanDOMString& Constants::ATTRNAME_INDENTRESULT = ::ATTRNAME_INDENTRESULT; const XalanDOMString& Constants::ATTRNAME_INFINITY = ::ATTRNAME_INFINITY; const XalanDOMString& Constants::ATTRNAME_LANG = ::ATTRNAME_LANG; const XalanDOMString& Constants::ATTRNAME_LETTERVALUE = ::ATTRNAME_LETTERVALUE; const XalanDOMString& Constants::ATTRNAME_MATCH = ::ATTRNAME_MATCH; const XalanDOMString& Constants::ATTRNAME_MINUSSIGN = ::ATTRNAME_MINUSSIGN; const XalanDOMString& Constants::ATTRNAME_MODE = ::ATTRNAME_MODE; const XalanDOMString& Constants::ATTRNAME_NAME = ::ATTRNAME_NAME; const XalanDOMString& Constants::ATTRNAME_NAMESPACE = ::ATTRNAME_NAMESPACE; const XalanDOMString& Constants::ATTRNAME_NAN = ::ATTRNAME_NAN; const XalanDOMString& Constants::ATTRNAME_NDIGITSPERGROUP = ::ATTRNAME_NDIGITSPERGROUP; const XalanDOMString& Constants::ATTRNAME_OMIT_META_TAG = ::ATTRNAME_OMIT_META_TAG; const XalanDOMString& Constants::ATTRNAME_ORDER = ::ATTRNAME_ORDER; const XalanDOMString& Constants::ATTRNAME_OUTPUT_CDATA_SECTION_ELEMENTS = ::ATTRNAME_OUTPUT_CDATA_SECTION_ELEMENTS; const XalanDOMString& Constants::ATTRNAME_OUTPUT_DOCTYPE_PUBLIC = ::ATTRNAME_OUTPUT_DOCTYPE_PUBLIC; const XalanDOMString& Constants::ATTRNAME_OUTPUT_DOCTYPE_SYSTEM = ::ATTRNAME_OUTPUT_DOCTYPE_SYSTEM; const XalanDOMString& Constants::ATTRNAME_OUTPUT_ENCODING = ::ATTRNAME_OUTPUT_ENCODING; const XalanDOMString& Constants::ATTRNAME_OUTPUT_INDENT = ::ATTRNAME_OUTPUT_INDENT; const XalanDOMString& Constants::ATTRNAME_OUTPUT_MEDIATYPE = ::ATTRNAME_OUTPUT_MEDIATYPE; const XalanDOMString& Constants::ATTRNAME_OUTPUT_METHOD = ::ATTRNAME_OUTPUT_METHOD; const XalanDOMString& Constants::ATTRNAME_OUTPUT_OMITXMLDECL = ::ATTRNAME_OUTPUT_OMITXMLDECL; const XalanDOMString& Constants::ATTRNAME_OUTPUT_STANDALONE = ::ATTRNAME_OUTPUT_STANDALONE; const XalanDOMString& Constants::ATTRNAME_OUTPUT_VERSION = ::ATTRNAME_OUTPUT_VERSION; const XalanDOMString& Constants::ATTRNAME_PATTERNSEPARATOR = ::ATTRNAME_PATTERNSEPARATOR; const XalanDOMString& Constants::ATTRNAME_PERCENT = ::ATTRNAME_PERCENT; const XalanDOMString& Constants::ATTRNAME_PERMILLE = ::ATTRNAME_PERMILLE; const XalanDOMString& Constants::ATTRNAME_PREFIX = ::ATTRNAME_PREFIX; const XalanDOMString& Constants::ATTRNAME_PRIORITY = ::ATTRNAME_PRIORITY; const XalanDOMString& Constants::ATTRNAME_RESULTNS = ::ATTRNAME_RESULTNS; const XalanDOMString& Constants::ATTRNAME_RESULT_PREFIX = ::ATTRNAME_RESULT_PREFIX; const XalanDOMString& Constants::ATTRNAME_SELECT = ::ATTRNAME_SELECT; const XalanDOMString& Constants::ATTRNAME_STYLESHEET_PREFIX = ::ATTRNAME_STYLESHEET_PREFIX; const XalanDOMString& Constants::ATTRNAME_TERMINATE = ::ATTRNAME_TERMINATE; const XalanDOMString& Constants::ATTRNAME_TEST = ::ATTRNAME_TEST; const XalanDOMString& Constants::ATTRNAME_TYPE = ::ATTRNAME_TYPE; const XalanDOMString& Constants::ATTRNAME_USE = ::ATTRNAME_USE; const XalanDOMString& Constants::ATTRNAME_USEATTRIBUTESETS = ::ATTRNAME_USEATTRIBUTESETS; const XalanDOMString& Constants::ATTRNAME_VALUE = ::ATTRNAME_VALUE; const XalanDOMString& Constants::ATTRNAME_VERSION = ::ATTRNAME_VERSION; const XalanDOMString& Constants::ATTRNAME_SPACE = ::ATTRNAME_SPACE; const XalanDOMString& Constants::ATTRNAME_XMLSPACE = ::ATTRNAME_XMLSPACE; const XalanDOMString& Constants::ATTRNAME_ZERODIGIT = ::ATTRNAME_ZERODIGIT; const XalanDOMString& Constants::ATTRTYPE_CDATA = ::ATTRTYPE_CDATA; const XalanDOMString& Constants::ATTRVAL_CASEORDER_LOWER = ::ATTRVAL_CASEORDER_LOWER; const XalanDOMString& Constants::ATTRVAL_CASEORDER_UPPER = ::ATTRVAL_CASEORDER_UPPER; const XalanDOMString& Constants::ATTRVAL_DATATYPE_NUMBER = ::ATTRVAL_DATATYPE_NUMBER; const XalanDOMString& Constants::ATTRVAL_DATATYPE_TEXT = ::ATTRVAL_DATATYPE_TEXT; const XalanDOMString& Constants::ATTRVAL_DEFAULT = ::ATTRVAL_DEFAULT; const XalanDOMString& Constants::ATTRVAL_DEFAULT_PREFIX = ::ATTRVAL_DEFAULT_PREFIX; const XalanDOMString& Constants::ATTRVAL_DEFAULT_TEXT_RULE = ::ATTRVAL_DEFAULT_TEXT_RULE; const XalanDOMString& Constants::ATTRVAL_INFINITY = ::ATTRVAL_INFINITY; const XalanDOMString& Constants::ATTRVAL_NAN = ::ATTRVAL_NAN; const XalanDOMString& Constants::ATTRVAL_NO = ::ATTRVAL_NO; const XalanDOMString& Constants::ATTRVAL_ORDER_ASCENDING = ::ATTRVAL_ORDER_ASCENDING; const XalanDOMString& Constants::ATTRVAL_ORDER_DESCENDING = ::ATTRVAL_ORDER_DESCENDING; const XalanDOMString& Constants::ATTRVAL_OUTPUT_METHOD_HTML = ::ATTRVAL_OUTPUT_METHOD_HTML; const XalanDOMString& Constants::ATTRVAL_OUTPUT_METHOD_TEXT = ::ATTRVAL_OUTPUT_METHOD_TEXT; const XalanDOMString& Constants::ATTRVAL_OUTPUT_METHOD_XML = ::ATTRVAL_OUTPUT_METHOD_XML; const XalanDOMString& Constants::ATTRVAL_PRESERVE = ::ATTRVAL_PRESERVE; const XalanDOMString& Constants::ATTRVAL_SIMPLE = ::ATTRVAL_SIMPLE; const XalanDOMString& Constants::ATTRVAL_STRIP = ::ATTRVAL_STRIP; const XalanDOMString& Constants::ATTRVAL_THIS = ::ATTRVAL_THIS; const XalanDOMString& Constants::ATTRVAL_YES = ::ATTRVAL_YES; const XalanDOMString& Constants::DEFAULT_WHITESPACE_SEPARATOR_STRING = ::DEFAULT_WHITESPACE_SEPARATOR_STRING; const XalanDOMString& Constants::ELEMNAME_ANY_STRING = ::ELEMNAME_ANY_STRING; const XalanDOMString& Constants::ELEMNAME_APPLY_IMPORTS_WITH_PREFIX_STRING = ::ELEMNAME_APPLY_IMPORTS_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_APPLY_TEMPLATES_WITH_PREFIX_STRING = ::ELEMNAME_APPLY_TEMPLATES_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_ATTRIBUTESET_WITH_PREFIX_STRING = ::ELEMNAME_ATTRIBUTESET_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_ATTRIBUTE_WITH_PREFIX_STRING = ::ELEMNAME_ATTRIBUTE_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_CALLTEMPLATE_WITH_PREFIX_STRING = ::ELEMNAME_CALLTEMPLATE_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_CHOOSE_WITH_PREFIX_STRING = ::ELEMNAME_CHOOSE_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_COMMENT_WITH_PREFIX_STRING = ::ELEMNAME_COMMENT_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_COPY_OF_WITH_PREFIX_STRING = ::ELEMNAME_COPY_OF_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_COPY_WITH_PREFIX_STRING = ::ELEMNAME_COPY_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_DECIMALFORMAT_WITH_PREFIX_STRING = ::ELEMNAME_DECIMALFORMAT_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_ELEMENT_WITH_PREFIX_STRING = ::ELEMNAME_ELEMENT_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_FALLBACK_WITH_PREFIX_STRING = ::ELEMNAME_FALLBACK_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_FOREACH_WITH_PREFIX_STRING = ::ELEMNAME_FOREACH_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_HTML_STRING = ::ELEMNAME_HTML_STRING; const XalanDOMString& Constants::ELEMNAME_IF_WITH_PREFIX_STRING = ::ELEMNAME_IF_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_IMPORT_WITH_PREFIX_STRING = ::ELEMNAME_IMPORT_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_INCLUDE_WITH_PREFIX_STRING = ::ELEMNAME_INCLUDE_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_KEY_WITH_PREFIX_STRING = ::ELEMNAME_KEY_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_MESSAGE_WITH_PREFIX_STRING = ::ELEMNAME_MESSAGE_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_NUMBER_WITH_PREFIX_STRING = ::ELEMNAME_NUMBER_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_OTHERWISE_WITH_PREFIX_STRING = ::ELEMNAME_OTHERWISE_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_PARAM_WITH_PREFIX_STRING = ::ELEMNAME_PARAM_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_PI_WITH_PREFIX_STRING = ::ELEMNAME_PI_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_PRESERVESPACE_WITH_PREFIX_STRING = ::ELEMNAME_PRESERVESPACE_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_SORT_WITH_PREFIX_STRING = ::ELEMNAME_SORT_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_STRIPSPACE_WITH_PREFIX_STRING = ::ELEMNAME_STRIPSPACE_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_TEMPLATE_WITH_PREFIX_STRING = ::ELEMNAME_TEMPLATE_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_TEXT_WITH_PREFIX_STRING = ::ELEMNAME_TEXT_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_VALUEOF_WITH_PREFIX_STRING = ::ELEMNAME_VALUEOF_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_VARIABLE_WITH_PREFIX_STRING = ::ELEMNAME_VARIABLE_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_WHEN_WITH_PREFIX_STRING = ::ELEMNAME_WHEN_WITH_PREFIX_STRING; const XalanDOMString& Constants::ELEMNAME_WITHPARAM_WITH_PREFIX_STRING = ::ELEMNAME_WITHPARAM_WITH_PREFIX_STRING; const XalanDOMString& Constants::PSEUDONAME_NODE = ::PSEUDONAME_NODE; void Constants::initialize(MemoryManager& theManager) { ::ATTRNAME_CASEORDER.reset( theManager, "case-order"); ::ATTRNAME_COUNT.reset( theManager, "count"); ::ATTRNAME_DATATYPE.reset( theManager, "data-type"); ::ATTRNAME_DECIMALSEPARATOR.reset( theManager, "decimal-separator"); ::ATTRNAME_DEFAULT.reset( theManager, "default"); ::ATTRNAME_DEFAULTSPACE.reset( theManager, "default-space"); ::ATTRNAME_DIGIT.reset( theManager, "digit"); ::ATTRNAME_DIGITGROUPSEP.reset( theManager, "digit-group-sep"); ::ATTRNAME_DISABLE_OUTPUT_ESCAPING .reset( theManager, "disable-output-escaping"); ::ATTRNAME_ELEMENTS.reset( theManager, "elements"); ::ATTRNAME_ESCAPE_URLS.reset( theManager, "use-url-escaping"); ::ATTRNAME_EXCLUDE_RESULT_PREFIXES.reset( theManager, "exclude-result-prefixes"); ::ATTRNAME_EXTENSIONELEMENTPREFIXES.reset( theManager, "extension-element-prefixes"); ::ATTRNAME_FORMAT.reset( theManager, "format"); ::ATTRNAME_FROM.reset( theManager, "from"); ::ATTRNAME_GROUPINGSEPARATOR.reset( theManager, "grouping-separator"); ::ATTRNAME_GROUPINGSIZE.reset( theManager, "grouping-size"); ::ATTRNAME_HREF.reset( theManager, "href"); ::ATTRNAME_ID.reset( theManager, "id"); ::ATTRNAME_INDENTAMOUNT.reset( theManager, "indent-amount"); ::ATTRNAME_INDENTRESULT.reset( theManager, "indent-result"); ::ATTRNAME_INFINITY.reset( theManager, "infinity"); ::ATTRNAME_LANG.reset( theManager, "lang"); ::ATTRNAME_LETTERVALUE.reset( theManager, "letter-value"); ::ATTRNAME_MATCH.reset( theManager, "match"); ::ATTRNAME_MINUSSIGN.reset( theManager, "minus-sign"); ::ATTRNAME_MODE.reset( theManager, "mode"); ::ATTRNAME_NAME.reset( theManager, "name"); ::ATTRNAME_NAMESPACE.reset( theManager, "namespace"); ::ATTRNAME_NAN.reset( theManager, "NaN"); ::ATTRNAME_NDIGITSPERGROUP.reset( theManager, "n-digits-per-group"); ::ATTRNAME_OMIT_META_TAG.reset( theManager, "omit-meta-tag"); ::ATTRNAME_ORDER.reset( theManager, "order"); ::ATTRNAME_OUTPUT_CDATA_SECTION_ELEMENTS .reset( theManager, "cdata-section-elements"); ::ATTRNAME_OUTPUT_DOCTYPE_PUBLIC.reset( theManager, "doctype-public"); ::ATTRNAME_OUTPUT_DOCTYPE_SYSTEM.reset( theManager, "doctype-system"); ::ATTRNAME_OUTPUT_ENCODING.reset( theManager, "encoding"); ::ATTRNAME_OUTPUT_INDENT.reset( theManager, "indent"); ::ATTRNAME_OUTPUT_MEDIATYPE.reset( theManager, "media-type"); ::ATTRNAME_OUTPUT_METHOD.reset( theManager, "method"); ::ATTRNAME_OUTPUT_OMITXMLDECL.reset( theManager, "omit-xml-declaration"); ::ATTRNAME_OUTPUT_STANDALONE .reset( theManager, "standalone"); ::ATTRNAME_OUTPUT_VERSION.reset( theManager, "version"); ::ATTRNAME_PATTERNSEPARATOR.reset( theManager, "pattern-separator"); ::ATTRNAME_PERCENT.reset( theManager, "percent"); ::ATTRNAME_PERMILLE.reset( theManager, "per-mille"); ::ATTRNAME_PREFIX.reset( theManager, "prefix"); ::ATTRNAME_PRIORITY.reset( theManager, "priority"); ::ATTRNAME_RESULTNS.reset( theManager, "result-ns"); ::ATTRNAME_RESULT_PREFIX.reset( theManager, "result-prefix"); ::ATTRNAME_SELECT.reset( theManager, "select"); ::ATTRNAME_STYLESHEET_PREFIX.reset( theManager, "stylesheet-prefix"); ::ATTRNAME_TERMINATE.reset( theManager, "terminate"); ::ATTRNAME_TEST.reset( theManager, "test"); ::ATTRNAME_TYPE.reset( theManager, "type"); ::ATTRNAME_USE.reset( theManager, "use"); ::ATTRNAME_USEATTRIBUTESETS.reset( theManager, "use-attribute-sets"); ::ATTRNAME_VALUE.reset( theManager, "value"); ::ATTRNAME_VERSION.reset( theManager, "version"); ::ATTRNAME_SPACE.reset( theManager, "space"); ::ATTRNAME_XMLSPACE.reset( theManager, "xml:space"); ::ATTRNAME_ZERODIGIT.reset( theManager, "zero-digit"); ::ATTRTYPE_CDATA.reset( theManager, "CDATA"); ::ATTRVAL_CASEORDER_LOWER.reset( theManager, "lower-first"); ::ATTRVAL_CASEORDER_UPPER.reset( theManager, "upper-first"); ::ATTRVAL_DATATYPE_NUMBER.reset( theManager, "number"); ::ATTRVAL_DATATYPE_TEXT.reset( theManager, "text"); ::ATTRVAL_DEFAULT.reset( theManager, "default"); ::ATTRVAL_DEFAULT_PREFIX.reset( theManager, "#default"); ::ATTRVAL_DEFAULT_TEXT_RULE.reset( theManager, "text() | @*"); ::ATTRVAL_INFINITY.reset( theManager, "Infinity"); ::ATTRVAL_NAN.reset( theManager, "NaN"); ::ATTRVAL_NO.reset( theManager, "no"); ::ATTRVAL_ORDER_ASCENDING.reset( theManager, "ascending"); ::ATTRVAL_ORDER_DESCENDING.reset( theManager, "descending"); ::ATTRVAL_OUTPUT_METHOD_HTML.reset( theManager, "html"); ::ATTRVAL_OUTPUT_METHOD_TEXT.reset( theManager, "text"); ::ATTRVAL_OUTPUT_METHOD_XML.reset( theManager, "xml"); ::ATTRVAL_PRESERVE.reset( theManager, "preserve"); ::ATTRVAL_SIMPLE.reset( theManager, "simple"); ::ATTRVAL_STRIP.reset( theManager, "strip"); ::ATTRVAL_THIS.reset( theManager, "."); ::ATTRVAL_YES.reset( theManager, "yes"); ::DEFAULT_WHITESPACE_SEPARATOR_STRING.reset( theManager, " \t\n\r"); ::ELEMNAME_ANY_STRING.reset( theManager, "any"); ::ELEMNAME_APPLY_IMPORTS_WITH_PREFIX_STRING.reset( theManager, "xsl:apply-imports"); ::ELEMNAME_APPLY_TEMPLATES_WITH_PREFIX_STRING.reset( theManager, "xsl:apply-templates"); ::ELEMNAME_ATTRIBUTESET_WITH_PREFIX_STRING.reset( theManager, "xsl:attribute-set"); ::ELEMNAME_ATTRIBUTE_WITH_PREFIX_STRING.reset( theManager, "xsl:attribute"); ::ELEMNAME_CALLTEMPLATE_WITH_PREFIX_STRING.reset( theManager, "xsl:call-template"); ::ELEMNAME_CHOOSE_WITH_PREFIX_STRING.reset( theManager, "xsl:choose"); ::ELEMNAME_COMMENT_WITH_PREFIX_STRING.reset( theManager, "xsl:comment"); ::ELEMNAME_COPY_OF_WITH_PREFIX_STRING.reset( theManager, "xsl:copy-of"); ::ELEMNAME_COPY_WITH_PREFIX_STRING.reset( theManager, "xsl:copy"); ::ELEMNAME_DECIMALFORMAT_WITH_PREFIX_STRING.reset( theManager, "xsl:decimal-format"); ::ELEMNAME_DISPLAYIF_STRING.reset( theManager, "display-if"); ::ELEMNAME_ELEMENT_WITH_PREFIX_STRING.reset( theManager, "xsl:element"); ::ELEMNAME_FALLBACK_WITH_PREFIX_STRING.reset( theManager, "xsl:fallback"); ::ELEMNAME_FOREACH_WITH_PREFIX_STRING.reset( theManager, "xsl:for-each"); ::ELEMNAME_HTML_STRING.reset( theManager, "HTML"); ::ELEMNAME_IF_WITH_PREFIX_STRING.reset( theManager, "xsl:if"); ::ELEMNAME_IMPORT_WITH_PREFIX_STRING.reset( theManager, "xsl:import"); ::ELEMNAME_INCLUDE_WITH_PREFIX_STRING.reset( theManager, "xsl:include"); ::ELEMNAME_KEY_WITH_PREFIX_STRING.reset( theManager, "xsl:key"); ::ELEMNAME_MESSAGE_WITH_PREFIX_STRING.reset( theManager, "xsl:message"); ::ELEMNAME_NUMBER_WITH_PREFIX_STRING.reset( theManager, "xsl:number"); ::ELEMNAME_OTHERWISE_WITH_PREFIX_STRING.reset( theManager, "xsl:otherwise"); ::ELEMNAME_PARAM_WITH_PREFIX_STRING.reset( theManager, "xsl:param"); ::ELEMNAME_PI_WITH_PREFIX_STRING.reset( theManager, "xsl:processing-instruction"); ::ELEMNAME_PRESERVESPACE_WITH_PREFIX_STRING.reset( theManager, "xsl:preserve-space"); ::ELEMNAME_SORT_WITH_PREFIX_STRING.reset( theManager, "xsl:sort"); ::ELEMNAME_STRIPSPACE_WITH_PREFIX_STRING.reset( theManager, "xsl:strip-space"); ::ELEMNAME_TEMPLATE_WITH_PREFIX_STRING.reset( theManager, "xsl:template"); ::ELEMNAME_TEXT_WITH_PREFIX_STRING.reset( theManager, "xsl:text"); ::ELEMNAME_VALUEOF_WITH_PREFIX_STRING.reset( theManager, "xsl:value-of"); ::ELEMNAME_VARIABLE_WITH_PREFIX_STRING.reset( theManager, "xsl:variable"); ::ELEMNAME_WHEN_WITH_PREFIX_STRING.reset( theManager, "xsl:when"); ::ELEMNAME_WITHPARAM_WITH_PREFIX_STRING.reset( theManager, "xsl:with-param"); ::PSEUDONAME_NODE.reset( theManager, "node()"); } void Constants::terminate() { MemoryManager& theManager = XalanMemMgrs::getDummyMemMgr(); releaseMemory(::ATTRNAME_CASEORDER, theManager ); releaseMemory(::ATTRNAME_COUNT, theManager ); releaseMemory(::ATTRNAME_DATATYPE, theManager ); releaseMemory(::ATTRNAME_DECIMALSEPARATOR, theManager ); releaseMemory(::ATTRNAME_DEFAULT, theManager ); releaseMemory(::ATTRNAME_DEFAULTSPACE, theManager ); releaseMemory(::ATTRNAME_DIGIT, theManager ); releaseMemory(::ATTRNAME_DIGITGROUPSEP, theManager ); releaseMemory(::ATTRNAME_DISABLE_OUTPUT_ESCAPING, theManager ); releaseMemory(::ATTRNAME_ELEMENTS, theManager ); releaseMemory(::ATTRNAME_ESCAPE_URLS, theManager ); releaseMemory(::ATTRNAME_EXCLUDE_RESULT_PREFIXES, theManager ); releaseMemory(::ATTRNAME_EXTENSIONELEMENTPREFIXES, theManager ); releaseMemory(::ATTRNAME_FORMAT, theManager ); releaseMemory(::ATTRNAME_FROM, theManager ); releaseMemory(::ATTRNAME_GROUPINGSEPARATOR, theManager ); releaseMemory(::ATTRNAME_GROUPINGSIZE, theManager ); releaseMemory(::ATTRNAME_HREF, theManager ); releaseMemory(::ATTRNAME_ID, theManager ); releaseMemory(::ATTRNAME_INDENTAMOUNT, theManager ); releaseMemory(::ATTRNAME_INDENTRESULT, theManager ); releaseMemory(::ATTRNAME_INFINITY, theManager ); releaseMemory(::ATTRNAME_LANG, theManager ); releaseMemory(::ATTRNAME_LETTERVALUE, theManager ); releaseMemory(::ATTRNAME_MATCH, theManager ); releaseMemory(::ATTRNAME_MINUSSIGN, theManager ); releaseMemory(::ATTRNAME_MODE, theManager ); releaseMemory(::ATTRNAME_NAME, theManager ); releaseMemory(::ATTRNAME_NAMESPACE, theManager ); releaseMemory(::ATTRNAME_NAN, theManager ); releaseMemory(::ATTRNAME_NDIGITSPERGROUP, theManager ); releaseMemory(::ATTRNAME_OMIT_META_TAG, theManager ); releaseMemory(::ATTRNAME_ORDER, theManager ); releaseMemory(::ATTRNAME_OUTPUT_CDATA_SECTION_ELEMENTS, theManager ); releaseMemory(::ATTRNAME_OUTPUT_DOCTYPE_PUBLIC, theManager ); releaseMemory(::ATTRNAME_OUTPUT_DOCTYPE_SYSTEM, theManager ); releaseMemory(::ATTRNAME_OUTPUT_ENCODING, theManager ); releaseMemory(::ATTRNAME_OUTPUT_INDENT, theManager ); releaseMemory(::ATTRNAME_OUTPUT_MEDIATYPE, theManager ); releaseMemory(::ATTRNAME_OUTPUT_METHOD, theManager ); releaseMemory(::ATTRNAME_OUTPUT_OMITXMLDECL, theManager ); releaseMemory(::ATTRNAME_OUTPUT_STANDALONE, theManager ); releaseMemory(::ATTRNAME_OUTPUT_VERSION, theManager ); releaseMemory(::ATTRNAME_PATTERNSEPARATOR, theManager ); releaseMemory(::ATTRNAME_PERCENT, theManager ); releaseMemory(::ATTRNAME_PERMILLE, theManager ); releaseMemory(::ATTRNAME_PREFIX, theManager ); releaseMemory(::ATTRNAME_PRIORITY, theManager ); releaseMemory(::ATTRNAME_RESULTNS, theManager ); releaseMemory(::ATTRNAME_RESULT_PREFIX, theManager ); releaseMemory(::ATTRNAME_SELECT, theManager ); releaseMemory(::ATTRNAME_STYLESHEET_PREFIX, theManager ); releaseMemory(::ATTRNAME_TERMINATE, theManager ); releaseMemory(::ATTRNAME_TEST, theManager ); releaseMemory(::ATTRNAME_TYPE, theManager ); releaseMemory(::ATTRNAME_USE, theManager ); releaseMemory(::ATTRNAME_USEATTRIBUTESETS, theManager ); releaseMemory(::ATTRNAME_VALUE, theManager ); releaseMemory(::ATTRNAME_VERSION, theManager ); releaseMemory(::ATTRNAME_SPACE, theManager ); releaseMemory(::ATTRNAME_XMLSPACE, theManager ); releaseMemory(::ATTRNAME_ZERODIGIT, theManager ); releaseMemory(::ATTRTYPE_CDATA, theManager ); releaseMemory(::ATTRVAL_CASEORDER_LOWER, theManager ); releaseMemory(::ATTRVAL_CASEORDER_UPPER, theManager ); releaseMemory(::ATTRVAL_DATATYPE_NUMBER, theManager ); releaseMemory(::ATTRVAL_DATATYPE_TEXT, theManager ); releaseMemory(::ATTRVAL_DEFAULT, theManager ); releaseMemory(::ATTRVAL_DEFAULT_PREFIX, theManager ); releaseMemory(::ATTRVAL_DEFAULT_TEXT_RULE, theManager ); releaseMemory(::ATTRVAL_INFINITY, theManager ); releaseMemory(::ATTRVAL_NAN, theManager ); releaseMemory(::ATTRVAL_NO, theManager ); releaseMemory(::ATTRVAL_ORDER_ASCENDING, theManager ); releaseMemory(::ATTRVAL_ORDER_DESCENDING, theManager ); releaseMemory(::ATTRVAL_OUTPUT_METHOD_HTML, theManager ); releaseMemory(::ATTRVAL_OUTPUT_METHOD_TEXT, theManager ); releaseMemory(::ATTRVAL_OUTPUT_METHOD_XML, theManager ); releaseMemory(::ATTRVAL_PRESERVE, theManager ); releaseMemory(::ATTRVAL_SIMPLE, theManager ); releaseMemory(::ATTRVAL_STRIP, theManager ); releaseMemory(::ATTRVAL_THIS, theManager ); releaseMemory(::ATTRVAL_YES, theManager ); releaseMemory(::DEFAULT_WHITESPACE_SEPARATOR_STRING, theManager ); releaseMemory(::ELEMNAME_ANY_STRING, theManager ); releaseMemory(::ELEMNAME_APPLY_IMPORTS_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_APPLY_TEMPLATES_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_ATTRIBUTESET_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_ATTRIBUTE_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_CALLTEMPLATE_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_CHOOSE_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_COMMENT_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_COPY_OF_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_COPY_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_DECIMALFORMAT_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_DISPLAYIF_STRING, theManager ); releaseMemory(::ELEMNAME_ELEMENT_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_FALLBACK_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_FOREACH_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_HTML_STRING, theManager ); releaseMemory(::ELEMNAME_IF_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_IMPORT_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_INCLUDE_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_KEY_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_MESSAGE_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_NUMBER_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_OTHERWISE_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_PARAM_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_PI_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_PRESERVESPACE_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_SORT_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_STRIPSPACE_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_TEMPLATE_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_TEXT_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_VALUEOF_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_VARIABLE_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_WHEN_WITH_PREFIX_STRING, theManager ); releaseMemory(::ELEMNAME_WITHPARAM_WITH_PREFIX_STRING, theManager ); releaseMemory(::PSEUDONAME_NODE, theManager ); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemApplyTemplates.hpp0000664000175000000640000000732011731656103021307 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMAPPLYTEMPLATES_HEADER_GUARD) #define XALAN_ELEMAPPLYTEMPLATES_HEADER_GUARD // Base include file. Must be first. #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN class XalanQName; class ElemApplyTemplates : public ElemForEach { public: typedef ElemForEach ParentType; /** * Construct an object corresponding to an "xsl:apply-template" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemApplyTemplates( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); virtual ~ElemApplyTemplates(); // These methods are inherited from ElemTemplateElement ... virtual const XalanDOMString& getElementName() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; virtual void endElement(StylesheetExecutionContext& executionContext) const; virtual const ElemTemplateElement* getNextChildElemToExecute( StylesheetExecutionContext& executionContext, const ElemTemplateElement* currentElem) const; virtual const ElemTemplateElement* getFirstChildElemToExecute( StylesheetExecutionContext& executionContext) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif protected: virtual bool childTypeAllowed(int xslToken) const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* findNextTemplateToExecute(StylesheetExecutionContext& executionContext) const; #else virtual void transformChild( StylesheetExecutionContext& executionContext, const ElemTemplateElement& xslInstruction, const ElemTemplateElement* theTemplate, XalanNode* child) const; using ParentType::transformChild; virtual void selectAndSortChildren( StylesheetExecutionContext& executionContext, const ElemTemplateElement* theTemplate, NodeSorter* sorter, int selectStackFrameIndex) const; #endif private: const XalanQName* m_mode; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMAPPLYTEMPLATES_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/XSLTProcessorException.hpp0000664000175000000640000000443411731656103022114 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XSLTPROCESSOREXCEPTION_HEADER_GUARD_1357924680) #define XSLTPROCESSOREXCEPTION_HEADER_GUARD_1357924680 // Base include file. Must be first. #include // Base class header file... #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XSLT_EXPORT XSLTProcessorException : public XSLException { public: /** * Construct an XSLT Processor exception object * * @param theManager The MemoryManager instance to use. * @param theMessage The message to print when exception thrown * @param theLocator The Locator instance for error reporting, if any. */ XSLTProcessorException( MemoryManager& theManager, const XalanDOMString& theMessage, const Locator* theLocator); /** * Construct an XSLT Processor exception object. Use this * constructor when the error message is already formatted. * * @param theManager The MemoryManager instance to use. * @param theMessage The message to print when exception thrown */ XSLTProcessorException( MemoryManager& theManager, const XalanDOMString& theMessage); virtual ~XSLTProcessorException(); virtual const XalanDOMChar* getType() const { return m_type; } private: static const XalanDOMChar m_type[]; }; XALAN_CPP_NAMESPACE_END #endif // XSLTPROCESSOREXCEPTION_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XSLT/XSLTInit.cpp0000664000175000000640000000463711731656103017161 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XSLTInit.hpp" #include "Constants.hpp" #include "ElemNumber.hpp" #include "StylesheetHandler.hpp" #include "XSLTEngineImpl.hpp" XALAN_CPP_NAMESPACE_BEGIN unsigned long XSLTInit::s_initCounter = 0; static MemoryManager* s_staticMemoryManager = 0; XSLTInit::XSLTInit(MemoryManager& theManager) : m_platformSupportInit(theManager), m_domSupportInit(theManager), m_xmlSupportInit(theManager), m_xalanSourceTreeInit(theManager), m_xpathInit(theManager) { ++s_initCounter; if (s_initCounter == 1) { initialize(theManager); } } XSLTInit* XSLTInit::create(MemoryManager& theManager) { typedef XSLTInit ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType(theManager); theGuard.release(); return theResult; } XSLTInit::~XSLTInit() { --s_initCounter; if (s_initCounter == 0) { terminate(); } } MemoryManager& XSLTInit::getMemoryManager() { assert(s_staticMemoryManager != 0); return *s_staticMemoryManager; } void XSLTInit::initialize(MemoryManager& theManager) { Constants::initialize(theManager); ElemNumber::initialize(theManager); XSLTEngineImpl::initialize(theManager); StylesheetHandler::initialize(theManager); s_staticMemoryManager = &theManager; } void XSLTInit::terminate() { StylesheetHandler::terminate(); XSLTEngineImpl::terminate(); ElemNumber::terminate(); Constants::terminate(); s_staticMemoryManager = 0; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemExtensionCall.hpp0000664000175000000640000000656011731656103021120 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMEXTENSIONCALL_HEADER_GUARD) #define XALAN_ELEMEXTENSIONCALL_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemLiteralResult.hpp" XALAN_CPP_NAMESPACE_BEGIN class ExtensionNSHandler; class XalanQName; class ElemExtensionCall: public ElemLiteralResult { public: /** * Construct an object corresponding to calling an XSL extension * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param name name of element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document * @param ns handler for the extension */ ElemExtensionCall( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const XalanDOMChar* name, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber, ExtensionNSHandler& ns); static ElemExtensionCall* create( MemoryManager& theManager, StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const XalanDOMChar* name, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber, ExtensionNSHandler& ns); // These methods are inherited from ElemLiteralResult ... #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; virtual void endElement(StylesheetExecutionContext& executionContext) const; virtual bool executeChildElement( StylesheetExecutionContext& executionContext, const ElemTemplateElement* element) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif bool elementAvailable(StylesheetExecutionContext& executionContext) const; private: const XalanQName* const m_qname; ExtensionNSHandler& m_nsh; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMEXTENSIONCALL_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/FunctionGenerateID.hpp0000664000175000000640000000454511731656103021223 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONGENERATEID_HEADER_GUARD_1357924680) #define FUNCTIONGENERATEID_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN // Implementation of the XSLT function generate-id(). // class XALAN_XSLT_EXPORT FunctionGenerateID : public Function { public: typedef Function ParentType; FunctionGenerateID(); virtual ~FunctionGenerateID(); // These methods are inherited from Function ... using ParentType::execute; virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const Locator* locator) const; virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const Locator* locator) const; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionGenerateID* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: // Not implemented... FunctionGenerateID& operator=(const FunctionGenerateID&); bool operator==(const FunctionGenerateID&) const; static const XalanDOMString s_emptyString; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONGENERATEID_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XSLT/TopLevelArg.cpp0000664000175000000640000000536111731656103017722 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "TopLevelArg.hpp" #include XALAN_CPP_NAMESPACE_BEGIN TopLevelArg::TopLevelArg( MemoryManager& theManager, const XalanQName& name, const XalanDOMString& expr) : m_qname(name, theManager), m_expression(expr, theManager), m_xobject(0) { } TopLevelArg* TopLevelArg::create( MemoryManager& theManager, const XalanQName& name, const XalanDOMString& expr) { typedef TopLevelArg ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( theManager, name, expr); theGuard.release(); return theResult; } TopLevelArg::TopLevelArg( MemoryManager& theManager, const XalanQName& name, const XObjectPtr variable) : m_qname(name, theManager), m_expression(theManager), m_xobject(variable) { } TopLevelArg* TopLevelArg::create( MemoryManager& theManager, const XalanQName& name, const XObjectPtr variable) { typedef TopLevelArg ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( theManager, name, variable); theGuard.release(); return theResult; } TopLevelArg::TopLevelArg( const TopLevelArg& theSource, MemoryManager& theManager) : m_qname(theSource.m_qname, theManager), m_expression(theSource.m_expression, theManager), m_xobject(theSource.m_xobject) { } TopLevelArg::~TopLevelArg() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XalanAVTPartSimpleAllocator.hpp0000664000175000000640000000663211731656103023025 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANAVTPARTSIMPLEALLOCATOR_INCLUDE_GUARD_12455133) #define XALANAVTPARTSIMPLEALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XSLT_EXPORT XalanAVTPartSimpleAllocator { public: typedef AVTPartSimple data_type; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanAVTPartSimpleAllocator(MemoryManager& theManager, size_type theBlockCount); ~XalanAVTPartSimpleAllocator(); /** * Create an instance. * * @param constructionContext context when object constructed * @param val A pure string section of an AVT * @param len The length of val * * @return A pointer to the new instance. */ data_type* create( StylesheetConstructionContext& constructionContext, const XalanDOMChar* val, XalanDOMString::size_type len); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const data_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all objects from the allocator. */ void reset() { m_allocator.reset(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanAVTPartSimpleAllocator(const XalanAVTPartSimpleAllocator&); XalanAVTPartSimpleAllocator& operator=(const XalanAVTPartSimpleAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANAVTPARTSIMPLEALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XSLT/ExtensionFunctionHandler.hpp0000664000175000000640000001425511731656103022525 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_EXTENSIONFUNCTIONHANDLER_HEADER_GUARD) #define XALAN_EXTENSIONFUNCTIONHANDLER_HEADER_GUARD // Base include file. Must be first. #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XObjectPtr; /** * Class handling an extension namespace for XPath. Provides functions * to test a function's existence and call a function */ class XALAN_XSLT_EXPORT ExtensionFunctionHandler { public: /** * Construct a new extension namespace handler for a given extension NS. * This doesn't do anything - just hang on to the namespace URI. * * @param namespaceUri the extension namespace URI that I'm implementing */ ExtensionFunctionHandler(const XalanDOMString& namespaceUri, MemoryManager& theManager); /** * Construct a new extension namespace handler given all the information * needed. * * @param namespaceUri the extension namespace URI that I'm implementing * @param funcNames string containing list of functions of extension NS * @param lang language of code implementing the extension * @param srcURL value of src attribute (if any) - treated as a URL * or a classname depending on the value of lang. If * srcURL is not null, then scriptSrc is ignored. * @param scriptSrc the actual script code (if any) */ ExtensionFunctionHandler( MemoryManager& theManager, const XalanDOMString& namespaceUri, const XalanDOMString& funcNames, const XalanDOMString& lang, const XalanDOMString& srcURL, const XalanDOMString& scriptSrc); virtual ~ExtensionFunctionHandler(); MemoryManager& getMemoryManager() { return m_namespaceUri.getMemoryManager(); } /** * Set function local parts of extension NS. * * @param functions whitespace separated list of function names defined * by this extension namespace. */ virtual void setFunctions(const XalanDOMString& funcNames); /** * Set the script data for this extension NS. If srcURL is !null then * the script body is read from that URL. If not the scriptSrc is used * as the src. This method does not actually execute anything - that's * done when the component is first hit by the user by an element or * a function call. * * @param lang language of the script. * @param srcURL value of src attribute (if any) - treated as a URL * or a classname depending on the value of lang. If * srcURL is not null, then scriptSrc is ignored. * @param scriptSrc the actual script code (if any) */ virtual void setScript( const XalanDOMString& lang, const XalanDOMString& srcURL, const XalanDOMString& scriptSrc); /** * Tests whether a certain function name is known within this namespace. * * @param function name of the function being tested * @return true if its known, false if not. */ virtual bool isFunctionAvailable(const XalanDOMString& function) const; /// Vector of pointers to function arguments typedef XalanVector ArgVectorType; typedef XalanSet StringSetType; /** * Process a call to a function. * * @param funcName Function name. * @param args The arguments of the function call. * * @return the return value of the function evaluation. * * @exception XSLProcessorException thrown if something goes wrong * while running the extension handler. * @exception MalformedURLException if loading trouble * @exception FileNotFoundException if loading trouble * @exception IOException if loading trouble * @exception SAXException if parsing trouble */ virtual XObjectPtr callFunction( const XalanDOMString& funcName, const ArgVectorType& args); protected: XalanDOMString m_namespaceUri; // uri of the extension namespace XalanDOMString m_scriptLang; // scripting language of implementation XalanDOMString m_scriptSrc; // script source to run (if any) XalanDOMString m_scriptSrcURL; // URL of source of script (if any) void* m_javaObject; // object for javaclass engine StringSetType m_functions; // functions of namespace // BSFManager mgr = new BSFManager (); // mgr used to run scripts bool m_componentStarted; // true when the scripts in a // component description (if any) have been run /** * Start the component up by executing any script that needs to run * at startup time. This needs to happen before any functions can be * called on the component. * * @exception XPathProcessorException if something bad happens. */ virtual void startupComponent(); static const XalanDOMChar s_tokenDelimiterCharacters[]; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_EXTENSIONFUNCTIONHANDLER_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/XResultTreeFragAllocator.cpp0000664000175000000640000000400311731656103022415 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XResultTreeFragAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XResultTreeFragAllocator::XResultTreeFragAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XResultTreeFragAllocator::~XResultTreeFragAllocator() { } XResultTreeFragAllocator::data_type* XResultTreeFragAllocator::create(XalanDocumentFragment& theValue) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type(theValue, m_allocator.getMemoryManager()); m_allocator.commitAllocation(theBlock); return theResult; } XResultTreeFragAllocator::data_type* XResultTreeFragAllocator::create(const data_type& theSource) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); new(theBlock) data_type(theSource, m_allocator.getMemoryManager()); m_allocator.commitAllocation(theBlock); return theBlock; } bool XResultTreeFragAllocator::destroy(data_type* theObject) { return m_allocator.destroyObject(theObject); } void XResultTreeFragAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/StylesheetHandler.cpp0000664000175000000640000017252011731656103021167 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "StylesheetHandler.hpp" #include #include #include #include #include #include #include #include #include #include #include #include #include "Constants.hpp" #include "ElemTemplateElement.hpp" #include "ElemTextLiteral.hpp" #include "Stylesheet.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetRoot.hpp" #include "XalanSpaceNodeTester.hpp" #include XALAN_CPP_NAMESPACE_BEGIN typedef StylesheetConstructionContext::GetCachedString GetCachedString; StylesheetHandler::StylesheetHandler( Stylesheet& stylesheetTree, StylesheetConstructionContext& constructionContext) : FormatterListener(OUTPUT_METHOD_OTHER), m_stylesheet(stylesheetTree), m_constructionContext(constructionContext), m_elemEmptyAllocator(constructionContext.getMemoryManager(), eElemEmptyAllocatorBlockSize), m_elemTextAllocator(constructionContext.getMemoryManager(), eElemTextBlockSize), m_elemStack(constructionContext.getMemoryManager()), m_whiteSpaceElems(constructionContext.getMemoryManager()), m_pTemplate(0), m_lastPopped(*this), m_inTemplate(false), m_foundStylesheet(false), m_foundNotImport(false), m_elementLocalName(constructionContext.getMemoryManager()), m_accumulateText(constructionContext.getMemoryManager()), m_includeBase(stylesheetTree.getBaseIdentifier(), constructionContext.getMemoryManager()), m_inExtensionElementStack(constructionContext.getMemoryManager()), m_preserveSpaceStack(constructionContext.getMemoryManager()), m_locatorsPushed(0), m_globalVariableNames(constructionContext.getMemoryManager()), m_inScopeVariableNamesStack(constructionContext.getMemoryManager()) { m_inScopeVariableNamesStack.reserve(eVariablesStackDefault); } StylesheetHandler::~StylesheetHandler() { doCleanup(); } void StylesheetHandler::setDocumentLocator(const Locator* const locator) { m_constructionContext.pushLocatorOnStack(locator); ++m_locatorsPushed; } void StylesheetHandler::startDocument() { } void StylesheetHandler::endDocument() { m_constructionContext.popLocatorStack(); if (m_locatorsPushed > 0) { --m_locatorsPushed; } m_inExtensionElementStack.clear(); } bool StylesheetHandler::isAttrOK( const XalanDOMChar* attrName, const AttributeListType& atts, XalanSize_t which) { return m_stylesheet.isAttrOK(attrName, atts, which, m_constructionContext); } bool StylesheetHandler::processSpaceAttr( const XalanDOMChar* elementName, const XalanDOMChar* aname, const AttributeListType& atts, XalanSize_t which, const Locator* locator, bool& fPreserve) { if (m_constructionContext.isXMLSpaceAttribute(aname, m_stylesheet, locator) == false) { fPreserve = false; return false; } else { const XalanDOMChar* const spaceVal = atts.getValue(which); if (equals(spaceVal, Constants::ATTRVAL_DEFAULT)) { fPreserve = false; } else if (equals(spaceVal, Constants::ATTRVAL_PRESERVE)) { fPreserve = true; } else { const GetCachedString theGuard(m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::ElementHasIllegalAttributeValue_3Param, elementName, Constants::ATTRNAME_XMLSPACE.c_str(), spaceVal), locator); } return true; } } bool StylesheetHandler::processSpaceAttr( const XalanDOMChar* elementName, const AttributeListType& atts, const Locator* locator, bool& fPreserve) { const XalanSize_t len = atts.getLength(); for (XalanSize_t i = 0; i < len; ++i) { if (processSpaceAttr( elementName, atts.getName(i), atts, i, locator, fPreserve) == true) { return true; } } return false; } void StylesheetHandler::startElement( const XMLCh* const name, AttributeListType& atts) { m_inExtensionElementStack.push_back(false); if (m_preserveSpaceStack.empty() == true) { m_preserveSpaceStack.push_back(false); } else { m_preserveSpaceStack.push_back(m_preserveSpaceStack.back()); } try { // By default, space is not preserved... bool fPreserveSpace = false; bool fSpaceAttrProcessed = false; processAccumulatedText(); m_whiteSpaceElems.clear(); const Locator* const locator = m_constructionContext.getLocatorFromStack(); // First push namespaces m_stylesheet.pushNamespaces(atts); const XalanDOMString::size_type nameLength = length(name); const XalanDOMString::size_type index = indexOf(name, XalanUnicode::charColon); const GetCachedString theGuard2(m_constructionContext); XalanDOMString& buffer = theGuard2.get(); const XalanDOMString* ns = getNamespaceFromStack(name, buffer); if(ns == 0) { if (index < nameLength) { const GetCachedString theGuard(m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::PrefixIsNotDeclared_1Param, name), locator); } else { ns = &s_emptyString; } } assert(ns != 0); if (index < nameLength) { m_elementLocalName.assign(name + index + 1, nameLength - index - 1); } else { m_elementLocalName.assign(name, nameLength); } ElemTemplateElement* elem = 0; const ElemTemplateStackType::size_type origStackSize = m_elemStack.size(); if (equals(*ns, m_constructionContext.getXSLTNamespaceURI())) { if (!m_stylesheet.getXSLTNamespaceURI().empty()) m_stylesheet.setXSLTNamespaceURI(*ns); const StylesheetConstructionContext::eElementToken xslToken = m_constructionContext.getElementToken(m_elementLocalName); if (!m_inTemplate) { processTopLevelElement(name, atts, xslToken, locator, fPreserveSpace, fSpaceAttrProcessed); } else { switch(xslToken) { case StylesheetConstructionContext::ELEMNAME_APPLY_TEMPLATES: case StylesheetConstructionContext::ELEMNAME_ATTRIBUTE: case StylesheetConstructionContext::ELEMNAME_CALL_TEMPLATE: case StylesheetConstructionContext::ELEMNAME_CHOOSE: case StylesheetConstructionContext::ELEMNAME_COMMENT: case StylesheetConstructionContext::ELEMNAME_COPY: case StylesheetConstructionContext::ELEMNAME_COPY_OF: case StylesheetConstructionContext::ELEMNAME_ELEMENT: case StylesheetConstructionContext::ELEMNAME_FALLBACK: case StylesheetConstructionContext::ELEMNAME_FOR_EACH: case StylesheetConstructionContext::ELEMNAME_IF: case StylesheetConstructionContext::ELEMNAME_MESSAGE: case StylesheetConstructionContext::ELEMNAME_NUMBER: case StylesheetConstructionContext::ELEMNAME_VALUE_OF: case StylesheetConstructionContext::ELEMNAME_WITH_PARAM: case StylesheetConstructionContext::ELEMNAME_PI: elem = m_constructionContext.createElement( xslToken, m_stylesheet, atts, locator); assert(elem != 0); break; case StylesheetConstructionContext::ELEMNAME_PARAM: elem = m_constructionContext.createElement( xslToken, m_stylesheet, atts, locator); checkForOrAddVariableName(elem->getNameAttribute(), locator); assert(elem != 0); break; case StylesheetConstructionContext::ELEMNAME_SORT: { if (m_elemStack.empty() == true) { const GetCachedString theGuard(m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::IsNotAllowedInThisPosition_1Param, Constants::ELEMNAME_SORT_WITH_PREFIX_STRING), locator); } ElemTemplateElement* const theElement = m_elemStack.back(); assert(theElement != 0); theElement->processSortElement( m_constructionContext, m_stylesheet, atts, locator); m_elemStack.push_back( m_elemEmptyAllocator.create( m_constructionContext, m_stylesheet, &Constants::ELEMNAME_SORT_WITH_PREFIX_STRING)); } break; case StylesheetConstructionContext::ELEMNAME_APPLY_IMPORTS: { if (m_elemStack.empty() == true) { const GetCachedString theGuard(m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::IsNotAllowedInThisPosition_1Param, Constants::ELEMNAME_APPLY_IMPORTS_WITH_PREFIX_STRING), locator); } ElemTemplateElement* const theElement = m_elemStack.back(); assert(theElement != 0); const int parentToken = theElement->getXSLToken(); if (parentToken == StylesheetConstructionContext::ELEMNAME_FOR_EACH) { const GetCachedString theGuard(m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::IsNotAllowedInThisPosition_1Param, Constants::ELEMNAME_APPLY_IMPORTS_WITH_PREFIX_STRING), locator); } elem = m_constructionContext.createElement( xslToken, m_stylesheet, atts, locator); assert(elem != 0); } break; case StylesheetConstructionContext::ELEMNAME_VARIABLE: { elem = m_constructionContext.createElement( xslToken, m_stylesheet, atts, locator); assert(elem != 0); checkForOrAddVariableName(elem->getNameAttribute(), locator); } break; case StylesheetConstructionContext::ELEMNAME_WHEN: { ElemTemplateElement* const parent = m_elemStack.back(); if(StylesheetConstructionContext::ELEMNAME_CHOOSE != parent->getXSLToken()) { const GetCachedString theGuard(m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::NotParentedBy_2Param, Constants::ELEMNAME_WHEN_WITH_PREFIX_STRING, Constants::ELEMNAME_CHOOSE_WITH_PREFIX_STRING), locator); } else { ElemTemplateElement* const lastChild = parent->getLastChildElem(); if(0 == lastChild || StylesheetConstructionContext::ELEMNAME_WHEN == lastChild->getXSLToken() || lastChild->isWhitespace() == true) { elem = m_constructionContext.createElement( xslToken, m_stylesheet, atts, locator); assert(elem != 0); } else { const GetCachedString theGuard(m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::IsNotAllowedInThisPosition_1Param, Constants::ELEMNAME_WHEN_WITH_PREFIX_STRING), locator); } } } break; case StylesheetConstructionContext::ELEMNAME_OTHERWISE: { ElemTemplateElement* parent = m_elemStack.back(); if(StylesheetConstructionContext::ELEMNAME_CHOOSE != parent->getXSLToken()) { const GetCachedString theGuard(m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::NotParentedBy_2Param, Constants::ELEMNAME_OTHERWISE_WITH_PREFIX_STRING, Constants::ELEMNAME_CHOOSE_WITH_PREFIX_STRING), locator); } else { ElemTemplateElement* lastChild = parent->getLastChildElem(); if(0 == lastChild || StylesheetConstructionContext::ELEMNAME_WHEN == lastChild->getXSLToken() || lastChild->isWhitespace() == true) { elem = m_constructionContext.createElement( xslToken, m_stylesheet, atts, locator); assert(elem != 0); } else { const GetCachedString theGuard(m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::IsNotAllowedInThisPosition_1Param, Constants::ELEMNAME_OTHERWISE_WITH_PREFIX_STRING), locator); } } } break; case StylesheetConstructionContext::ELEMNAME_TEXT: m_elemStack.push_back( m_elemTextAllocator.create( m_constructionContext, m_stylesheet, atts, XalanLocator::getLineNumber(locator), XalanLocator::getColumnNumber(locator))); // This fixes Bugzilla 26354, but it's really a workaround // for the bizarre way we handle literal text in the // stylesheet. We should examine this strategy, because // an xml:space attribute on an xsl:text element results // in building a stylesheet that tries to parent an // ElemTextLiteral instance to an ElemText instance, which // should not ever happen. fSpaceAttrProcessed = true; break; case StylesheetConstructionContext::ELEMNAME_TEMPLATE: case StylesheetConstructionContext::ELEMNAME_ATTRIBUTE_SET: case StylesheetConstructionContext::ELEMNAME_EXTENSION: case StylesheetConstructionContext::ELEMNAME_EXTENSION_HANDLER: case StylesheetConstructionContext::ELEMNAME_KEY: case StylesheetConstructionContext::ELEMNAME_IMPORT: case StylesheetConstructionContext::ELEMNAME_INCLUDE: case StylesheetConstructionContext::ELEMNAME_PRESERVE_SPACE: case StylesheetConstructionContext::ELEMNAME_STRIP_SPACE: case StylesheetConstructionContext::ELEMNAME_DECIMAL_FORMAT: { const GetCachedString theGuard(m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::IsNotAllowedInsideTemplate_1Param, name), locator); } break; default: { // If this stylesheet is declared to be of a higher version than the one // supported, don't flag an error. if(m_constructionContext.getXSLTVersionSupported() < m_stylesheet.getXSLTVerDeclared()) { const GetCachedString theGuard(m_constructionContext); warn( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::UnknownXSLElement_1Param, name), locator); elem = m_constructionContext.createElement( StylesheetConstructionContext::ELEMNAME_FORWARD_COMPATIBLE, m_stylesheet, name, atts, locator); } else { const GetCachedString theGuard(m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::UnknownXSLElement_1Param, name), locator); } } } m_inScopeVariableNamesStack.resize(m_inScopeVariableNamesStack.size() + 1); } } else if (!m_inTemplate && startsWith(*ns, m_constructionContext.getXalanXSLNameSpaceURL())) { processExtensionElement(name, m_elementLocalName, atts, locator); } else { if(!m_inTemplate) { // If it's a top level if (!m_foundStylesheet) { elem = initWrapperless(name, atts, locator); } else if (ns->empty() == true && m_elemStack.size() == 1) { const GetCachedString theGuard(m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::IsNotAllowedInThisPosition_1Param, name), locator); } else { m_inExtensionElementStack.back() = true; } } else { m_inScopeVariableNamesStack.resize(m_inScopeVariableNamesStack.size() + 1); // BEGIN SANJIVA CODE // is this an extension element call? ExtensionNSHandler* nsh = 0; if (!ns->empty() && ((nsh = m_stylesheet.lookupExtensionNSHandler(*ns)) != 0)) { elem = m_constructionContext.createElement( m_stylesheet, name, atts, *nsh, locator); assert(m_inExtensionElementStack.empty() == false); m_inExtensionElementStack.back() = true; } else { elem = m_constructionContext.createElement( StylesheetConstructionContext::ELEMNAME_LITERAL_RESULT, m_stylesheet, name, atts, locator); } assert(elem != 0); } } if(m_inTemplate && 0 != elem) { if(!m_elemStack.empty()) { appendChildElementToParent(elem, locator); } m_elemStack.push_back(elem); } // If we haven't processed an xml:space attribute already, look for one... if (fSpaceAttrProcessed == false) { fSpaceAttrProcessed = processSpaceAttr(name, atts, locator, fPreserveSpace); } // Only update the stack if we actually processed an xml:space attribute... if (fSpaceAttrProcessed == true) { // Set the preserve value... m_preserveSpaceStack.back() = fPreserveSpace; } // If for some reason something didn't get pushed, push an empty // object. if(origStackSize == m_elemStack.size()) { m_elemStack.push_back(m_elemEmptyAllocator.create(m_constructionContext, m_stylesheet)); } } // end try catch(...) { doCleanup(); throw; } } ElemTemplateElement* StylesheetHandler::initWrapperless( const XalanDOMChar* name, const AttributeListType& atts, const Locator* locator) { assert(m_pTemplate == 0); m_pTemplate = m_stylesheet.initWrapperless(m_constructionContext, locator); assert(m_pTemplate != 0); ElemTemplateElement* const pElem = m_constructionContext.createElement( StylesheetConstructionContext::ELEMNAME_LITERAL_RESULT, m_stylesheet, name, atts, locator); m_pTemplate->appendChildElem(pElem); m_inTemplate = true; m_inScopeVariableNamesStack.resize(m_inScopeVariableNamesStack.size() + 1); m_foundStylesheet = true; // This attempts to optimize for a literal result element with // the name HTML, so we don't have to switch on-the-fly. if(equalsIgnoreCaseASCII(name, Constants::ELEMNAME_HTML_STRING) == true) { // If there's a default namespace, then we must output XML. // Otherwise, we'll set the output method to HTML. if (atts.getValue(DOMServices::s_XMLNamespace.c_str()) == 0) { m_stylesheet.getStylesheetRoot().setIndentResult(true); m_stylesheet.getStylesheetRoot().setOutputMethod(OUTPUT_METHOD_HTML); } } return pElem; } const XalanDOMString* StylesheetHandler::getNamespaceFromStack(const XalanDOMChar* theName, XalanDOMString& theBuffer) const { return m_stylesheet.getNamespaceFromStack(theName, theBuffer); } const XalanDOMString* StylesheetHandler::getNamespaceForPrefixFromStack(const XalanDOMString& thePrefix) const { return m_stylesheet.getNamespaceForPrefixFromStack(thePrefix); } void StylesheetHandler::processTopLevelElement( const XalanDOMChar* name, const AttributeListType& atts, int xslToken, const Locator* locator, bool& fPreserveSpace, bool& fSpaceAttrProcessed) { if(m_foundStylesheet && StylesheetConstructionContext::ELEMNAME_IMPORT != xslToken) { m_foundNotImport = true; } switch(xslToken) { case StylesheetConstructionContext::ELEMNAME_TEMPLATE: assert(m_pTemplate == 0); m_pTemplate = m_constructionContext.createElement( StylesheetConstructionContext::ELEMNAME_TEMPLATE, m_stylesheet, atts, locator); m_elemStack.push_back(m_pTemplate); m_inTemplate = true; m_inScopeVariableNamesStack.resize(m_inScopeVariableNamesStack.size() + 1); break; case StylesheetConstructionContext::ELEMNAME_VARIABLE: case StylesheetConstructionContext::ELEMNAME_PARAM: { ElemTemplateElement* const elem = m_constructionContext.createElement( xslToken, m_stylesheet, atts, locator); assert(elem != 0); checkForOrAddVariableName(elem->getNameAttribute(), locator); m_elemStack.push_back(elem); m_inTemplate = true; // fake it out m_inScopeVariableNamesStack.resize(m_inScopeVariableNamesStack.size() + 1); elem->addToStylesheet(m_constructionContext, m_stylesheet); } break; case StylesheetConstructionContext::ELEMNAME_PRESERVE_SPACE: case StylesheetConstructionContext::ELEMNAME_STRIP_SPACE: processPreserveStripSpace(name, atts, locator, xslToken); break; case StylesheetConstructionContext::ELEMNAME_KEY: { m_stylesheet.processKeyElement( XalanQName::PrefixResolverProxy(m_stylesheet.getNamespaces(), m_stylesheet.getURI()), atts, locator, m_constructionContext); } break; case StylesheetConstructionContext::ELEMNAME_ATTRIBUTE_SET: { m_inTemplate = true; // fake it out m_inScopeVariableNamesStack.resize(m_inScopeVariableNamesStack.size() + 1); ElemTemplateElement* const theAttributeSet = m_constructionContext.createElement( xslToken, m_stylesheet, atts, locator); theAttributeSet->addToStylesheet(m_constructionContext, m_stylesheet); m_elemStack.push_back(theAttributeSet); } break; case StylesheetConstructionContext::ELEMNAME_INCLUDE: processInclude(name, atts, locator); break; case StylesheetConstructionContext::ELEMNAME_IMPORT: processImport(name, atts, locator); break; case StylesheetConstructionContext::ELEMNAME_OUTPUT: m_stylesheet.getStylesheetRoot().processOutputSpec(name, atts, m_constructionContext); break; case StylesheetConstructionContext::ELEMNAME_DECIMAL_FORMAT: m_stylesheet.processDecimalFormatElement( m_constructionContext, atts, locator); break; case StylesheetConstructionContext::ELEMNAME_NAMESPACE_ALIAS: m_stylesheet.processNSAliasElement(name, atts, m_constructionContext); break; case StylesheetConstructionContext::ELEMNAME_WITH_PARAM: case StylesheetConstructionContext::ELEMNAME_ATTRIBUTE: case StylesheetConstructionContext::ELEMNAME_APPLY_TEMPLATES: case StylesheetConstructionContext::ELEMNAME_CHOOSE: case StylesheetConstructionContext::ELEMNAME_COMMENT: case StylesheetConstructionContext::ELEMNAME_COPY: case StylesheetConstructionContext::ELEMNAME_COPY_OF: case StylesheetConstructionContext::ELEMNAME_FOR_EACH: case StylesheetConstructionContext::ELEMNAME_IF: case StylesheetConstructionContext::ELEMNAME_CALL_TEMPLATE: case StylesheetConstructionContext::ELEMNAME_MESSAGE: case StylesheetConstructionContext::ELEMNAME_NUMBER: case StylesheetConstructionContext::ELEMNAME_OTHERWISE: case StylesheetConstructionContext::ELEMNAME_PI: case StylesheetConstructionContext::ELEMNAME_SORT: case StylesheetConstructionContext::ELEMNAME_TEXT: case StylesheetConstructionContext::ELEMNAME_VALUE_OF: case StylesheetConstructionContext::ELEMNAME_WHEN: case StylesheetConstructionContext::ELEMNAME_ELEMENT: case StylesheetConstructionContext::ELEMNAME_APPLY_IMPORTS: if (inExtensionElement() == false) { const GetCachedString theGuard(m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::IsNotAllowedInThisPosition_1Param, name), locator); } break; case StylesheetConstructionContext::ELEMNAME_STYLESHEET: processStylesheet(name, atts, locator, fPreserveSpace, fSpaceAttrProcessed); break; default: if (inExtensionElement() == false) { if (m_constructionContext.getXSLTVersionSupported() < m_stylesheet.getXSLTVerDeclared()) { // Forward-compatible mode... m_inExtensionElementStack.back() = true; } else { const GetCachedString theGuard(m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::UnknownXSLElement_1Param, name), locator); } } break; } } void StylesheetHandler::processStylesheet( const XalanDOMChar* name, const AttributeListType& atts, const Locator* locator, bool& fPreserveSpace, bool& fSpaceAttrProcessed) { m_foundStylesheet = true; const XalanSize_t nAttrs = atts.getLength(); bool fVersionFound = false; for (XalanSize_t i = 0; i < nAttrs; ++i) { const XalanDOMChar* const aname = atts.getName(i); if (equals(aname, Constants::ATTRNAME_EXCLUDE_RESULT_PREFIXES)) { m_stylesheet.processExcludeResultPrefixes(m_constructionContext, atts.getValue(i)); } else if (equals(aname, Constants::ATTRNAME_EXTENSIONELEMENTPREFIXES)) { const GetCachedString theGuard(m_constructionContext); XalanDOMString& prefix = theGuard.get(); StringTokenizer tokenizer(atts.getValue(i), Constants::DEFAULT_WHITESPACE_SEPARATOR_STRING); while (tokenizer.hasMoreTokens() == true) { tokenizer.nextToken(prefix); const XalanDOMString* const extns = getNamespaceForPrefixFromStack(prefix); if (extns == 0) { const GetCachedString theGuard(m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::PrefixIsNotDeclared_1Param, prefix), locator); } m_stylesheet.processExtensionNamespace(m_constructionContext, *extns); } } else if (equals(aname, Constants::ATTRNAME_ID)) { // } else if (equals(aname, Constants::ATTRNAME_VERSION)) { const XalanDOMChar* const versionStr = atts.getValue(i); assert(versionStr != 0); m_stylesheet.setXSLTVerDeclared(DoubleSupport::toDouble(versionStr, getMemoryManager())); fVersionFound = true; } else if (processSpaceAttr(name, aname, atts, i, locator, fPreserveSpace) == true) { fSpaceAttrProcessed = true; } else if (isAttrOK(aname, atts, i) == false) { if (false == m_stylesheet.isWrapperless()) { illegalAttributeError(name, aname, locator); } } if (!m_stylesheet.getNamespaces().empty()) { m_stylesheet.setNamespaceDecls(m_stylesheet.getNamespaces().back()); } } if (fVersionFound == false) { const GetCachedString theGuard(m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::StylesheetAttribDidNotSpecifyVersionAttrib), locator); } } void StylesheetHandler::processExtensionElement( const XalanDOMChar* /* name */, const XalanDOMString& /* localName */, const AttributeListType& /* atts */, const Locator* /* locator */) { } void StylesheetHandler::checkForOrAddVariableName( const XalanQName& theVariableName, const Locator* theLocator) { if (inExtensionElement() == true) { // We can't really do anything yet here, because we // don't handle extension elements. It would be // better if we tried to track what was going on // inside extension elements. } else if (m_inTemplate == false) { assert(m_inScopeVariableNamesStack.empty() == true); if (m_globalVariableNames.count(theVariableName) != 0) { const GetCachedString theGuard(m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::VariableHasBeenDeclared), theLocator); } else { m_globalVariableNames.insert(theVariableName); } } else { assert(m_inScopeVariableNamesStack.empty() == false); QNameSetVectorType::iterator theCurrent = m_inScopeVariableNamesStack.begin(); const QNameSetVectorType::iterator theEnd = m_inScopeVariableNamesStack.end(); while(theCurrent != theEnd) { QNameSetVectorType::value_type& theLocalScope = *theCurrent; if (theLocalScope.count(theVariableName) != 0) { const GetCachedString theGuard(m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::VariableHasBeenDeclaredInThisTemplate), theLocator); } ++theCurrent; } assert(theCurrent == theEnd); m_inScopeVariableNamesStack.back().insert(theVariableName); } } void StylesheetHandler::processPreserveStripSpace( const XalanDOMChar* name, const AttributeListType& atts, const Locator* locator, int xslToken) { const XalanSize_t nAttrs = atts.getLength(); bool foundIt = false; const bool isPreserveSpace = StylesheetConstructionContext::ELEMNAME_PRESERVE_SPACE == xslToken ? true : false; for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (equals(aname, Constants::ATTRNAME_ELEMENTS)) { foundIt = true; StringTokenizer tokenizer(atts.getValue(i), Constants::DEFAULT_WHITESPACE_SEPARATOR_STRING); const GetCachedString theGuard(m_constructionContext); XalanDOMString& theNameTest = theGuard.get(); const XalanQName::PrefixResolverProxy theProxy(m_stylesheet.getNamespaces(), m_stylesheet.getURI()); while (tokenizer.hasMoreTokens()) { tokenizer.nextToken(theNameTest); m_stylesheet.addWhitespaceElement( XalanSpaceNodeTester( isPreserveSpace == true ? XalanSpaceNodeTester::ePreserve : XalanSpaceNodeTester::eStrip, m_constructionContext, theNameTest, theProxy, locator)); } } else if (!isAttrOK(aname, atts, i)) { illegalAttributeError(name, aname, locator); } } if (!foundIt && inExtensionElement() == false) { const GetCachedString theGuard(m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::ElementRequiresAttribute_2Param, isPreserveSpace == true ? Constants::ELEMNAME_PRESERVESPACE_WITH_PREFIX_STRING : Constants::ELEMNAME_STRIPSPACE_WITH_PREFIX_STRING, Constants::ATTRNAME_ELEMENTS), locator); } } void StylesheetHandler::appendChildElementToParent( ElemTemplateElement* parent, ElemTemplateElement* elem) { assert(elem != 0); appendChildElementToParent(parent, elem, elem->getLocator()); } void StylesheetHandler::appendChildElementToParent( ElemTemplateElement* elem, const Locator* locator) { appendChildElementToParent(m_elemStack.back(), elem, locator); } void StylesheetHandler::appendChildElementToParent( ElemTemplateElement* parent, ElemTemplateElement* elem, const Locator* locator) { assert(parent != 0 && elem != 0); try { parent->appendChildElem(elem); } catch(const XalanDOMException& e) { if (e.getExceptionCode() == XalanDOMException::HIERARCHY_REQUEST_ERR) { const GetCachedString theGuard(m_constructionContext); const XalanMessages::Codes theCode = elem->getXSLToken() == StylesheetConstructionContext::ELEMNAME_TEXT_LITERAL_RESULT ? XalanMessages::ElemOrLTIsNotAllowed_1Param : XalanMessages::ElemIsNotAllowed_1Param; error( XalanMessageLoader::getMessage( theGuard.get(), theCode, elem->getElementName()), locator); } } } void StylesheetHandler::doCleanup() { if (m_locatorsPushed > 0) { m_constructionContext.popLocatorStack(); --m_locatorsPushed; } m_lastPopped = 0; } static bool stackContains( const Stylesheet::URLStackType& stack, const XalanDOMString& urlString) { const Stylesheet::URLStackType::size_type n = stack.size(); bool contains = false; for(Stylesheet::URLStackType::size_type i = 0; i < n && contains == false; ++i) { if(equals(stack[i], urlString)) { contains = true; } } return contains; } void StylesheetHandler::processImport( const XalanDOMChar* name, const AttributeListType& atts, const Locator* locator) { const XalanSize_t nAttrs = atts.getLength(); bool foundIt = false; const GetCachedString theGuard4(m_constructionContext); XalanDOMString& hrefUrl = theGuard4.get(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (equals(aname, Constants::ATTRNAME_HREF)) { foundIt = true; if (m_foundNotImport) { const GetCachedString theError(m_constructionContext); error( XalanMessageLoader::getMessage( theError.get(), XalanMessages::ImportCanOnlyOccur), locator); } const GetCachedString theGuard1(m_constructionContext); XalanDOMString& saved_XSLNameSpaceURL = theGuard1.get(); saved_XSLNameSpaceURL = m_stylesheet.getXSLTNamespaceURI(); const GetCachedString theGuard2(m_constructionContext); XalanDOMString& href = theGuard2.get(); href = atts.getValue(i); const Stylesheet::URLStackType& includeStack = m_stylesheet.getIncludeStack(); assert(includeStack.empty() == false); hrefUrl = m_constructionContext.getURLStringFromString( href, includeStack.back(), hrefUrl); assert(hrefUrl.empty() == false); Stylesheet::URLStackType& importStack = m_stylesheet.getStylesheetRoot().getImportStack(); if (stackContains(importStack, hrefUrl)) { const GetCachedString theError(m_constructionContext); error( XalanMessageLoader::getMessage( theError.get(), XalanMessages::ImportingItself_1Param, hrefUrl), locator); } importStack.push_back(hrefUrl); // This will take care of cleaning up the stylesheet if an exception // is thrown. typedef XalanMemMgrAutoPtr AutpPtr; AutpPtr importedStylesheet( m_constructionContext.getMemoryManager(), m_constructionContext.create( m_stylesheet.getStylesheetRoot(), hrefUrl)); StylesheetHandler tp(*importedStylesheet.get(), m_constructionContext); m_constructionContext.parseXML(hrefUrl, &tp, 0); // Add it to the imports, releasing the XalanAutoPtr... m_stylesheet.addImport(importedStylesheet.get()); importedStylesheet.release(); assert(equals(importStack.back(), hrefUrl)); importStack.pop_back(); m_stylesheet.setXSLTNamespaceURI(saved_XSLNameSpaceURL); } else if (!isAttrOK(aname, atts, i)) { illegalAttributeError(name, aname, locator); } } if (!foundIt) { const GetCachedString theError(m_constructionContext); error( XalanMessageLoader::getMessage( theError.get(), XalanMessages::ElementRequiresAttribute_2Param, Constants::ELEMNAME_IMPORT_WITH_PREFIX_STRING, Constants::ATTRNAME_HREF), locator); } } void StylesheetHandler::processInclude( const XalanDOMChar* name, const AttributeListType& atts, const Locator* locator) { const XalanSize_t nAttrs = atts.getLength(); bool foundIt = false; const GetCachedString theGuard1(m_constructionContext); XalanDOMString& href = theGuard1.get(); const GetCachedString theGuard2(m_constructionContext); XalanDOMString& hrefUrl = theGuard2.get(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (equals(aname, Constants::ATTRNAME_HREF)) { foundIt = true; PushPopIncludeState theStateHandler(*this); href.assign(atts.getValue(i)); assert(m_stylesheet.getIncludeStack().back().c_str() != 0); m_constructionContext.getURLStringFromString(href, m_stylesheet.getIncludeStack().back(), hrefUrl); if (stackContains(m_stylesheet.getIncludeStack(), hrefUrl)) { const GetCachedString theError(m_constructionContext); error( XalanMessageLoader::getMessage( theError.get(), XalanMessages::IncludingItself_1Param, hrefUrl), locator); } m_stylesheet.getIncludeStack().push_back(hrefUrl); m_constructionContext.parseXML(hrefUrl, this, 0); assert(equals(m_stylesheet.getIncludeStack().back(), hrefUrl)); m_stylesheet.getIncludeStack().pop_back(); } else if (!isAttrOK(aname, atts, i)) { illegalAttributeError(name, aname, locator); } } if (!foundIt) { const GetCachedString theError(m_constructionContext); error( XalanMessageLoader::getMessage( theError.get(), XalanMessages::ElementRequiresAttribute_2Param, Constants::ELEMNAME_INCLUDE_WITH_PREFIX_STRING, Constants::ATTRNAME_HREF), locator); } } void StylesheetHandler::endElement(const XMLCh* const /* name */) { processAccumulatedText(); m_whiteSpaceElems.clear(); m_stylesheet.popNamespaces(); assert(m_elemStack.empty() == false); m_lastPopped = m_elemStack.back(); assert(m_lastPopped != 0); m_elemStack.pop_back(); m_lastPopped->setFinishedConstruction(true); const int tok = m_lastPopped->getXSLToken(); if (m_inTemplate == true) { assert(m_inScopeVariableNamesStack.empty() == false); m_inScopeVariableNamesStack.pop_back(); } if (StylesheetConstructionContext::ELEMNAME_TEMPLATE == tok) { m_inTemplate = false; m_pTemplate->addToStylesheet(m_constructionContext, m_stylesheet); m_pTemplate = 0; } else if (StylesheetConstructionContext::ELEMNAME_PARAM == tok || StylesheetConstructionContext::ELEMNAME_VARIABLE == tok) { if(m_lastPopped->getParentNodeElem() == 0) { // Top-level param or variable m_inTemplate = false; } } else if (StylesheetConstructionContext::ELEMNAME_ATTRIBUTE_SET == tok) { m_inTemplate = false; } assert(m_inExtensionElementStack.empty() == false); m_inExtensionElementStack.pop_back(); assert(m_preserveSpaceStack.empty() == false); m_preserveSpaceStack.pop_back(); } void StylesheetHandler::characters( const XMLCh* const chars, const size_type length) { if (m_inTemplate == false && inExtensionElement() == false && isXMLWhitespace(chars, 0, length) == false) { const GetCachedString theGuard(m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::CharIsNotAllowedInStylesheet), m_constructionContext.getLocatorFromStack()); } else { accumulateText(chars, length); } } void StylesheetHandler::cdata( const XMLCh* const chars, const size_type length) { accumulateText(chars, length); processText(chars, length); m_lastPopped = 0; } void StylesheetHandler::ignorableWhitespace( const XMLCh* const /*chars*/, const size_type /*length*/) { // Ignore! m_lastPopped = 0; } void StylesheetHandler::processingInstruction( const XMLCh* const /*target*/, const XMLCh* const /*data*/) { if (isXMLWhitespace(m_accumulateText) == false) { processAccumulatedText(); } else { m_accumulateText.clear(); } } void StylesheetHandler::comment(const XMLCh* const /*data*/) { processAccumulatedText(); } void StylesheetHandler::entityReference(const XMLCh* const /*name*/) { processAccumulatedText(); } void StylesheetHandler::resetDocument() { m_accumulateText.clear(); } void StylesheetHandler::charactersRaw( const XMLCh* const /* chars */, const size_type /* length */) { } void StylesheetHandler::processText( const XMLCh* chars, size_type length) { if (m_inTemplate) { ElemTemplateElement* parent = m_elemStack.back(); assert(parent != 0); assert(m_preserveSpaceStack.empty() == false); bool preserveSpace = m_preserveSpaceStack.back(); bool disableOutputEscaping = false; if (preserveSpace == false && parent->getXSLToken() == StylesheetConstructionContext::ELEMNAME_TEXT) { disableOutputEscaping = static_cast(parent)->getDisableOutputEscaping(); preserveSpace = true; parent = m_elemStack[m_elemStack.size() - 2]; } const Locator* const locator = m_constructionContext.getLocatorFromStack(); ElemTemplateElement* const elem = m_constructionContext.createElement( m_stylesheet, chars, length, preserveSpace, disableOutputEscaping, locator); assert(elem != 0); const bool isWhite = elem->isWhitespace(); if (preserveSpace || (!preserveSpace && !isWhite)) { while (!m_whiteSpaceElems.empty()) { assert(m_whiteSpaceElems.back() != 0); appendChildElementToParent( parent, m_whiteSpaceElems.back()); m_whiteSpaceElems.pop_back(); } appendChildElementToParent( parent, elem); } else if (isWhite) { bool shouldPush = true; ElemTemplateElement* const last = parent->getLastChildElem(); if (0 != last) { // If it was surrounded by xsl:text, it will count as an element. const bool isPrevCharData = StylesheetConstructionContext::ELEMNAME_TEXT_LITERAL_RESULT == last->getXSLToken(); const bool isLastPoppedXSLText = (m_lastPopped != 0) && (StylesheetConstructionContext::ELEMNAME_TEXT == m_lastPopped->getXSLToken()); if (isPrevCharData == true && isLastPoppedXSLText == false) { appendChildElementToParent( parent, elem); shouldPush = false; } } if (shouldPush) { m_whiteSpaceElems.push_back(elem); } } } // TODO: Flag error if text inside of stylesheet } void StylesheetHandler::accumulateText( const XMLCh* chars, size_type length) { if (m_inTemplate) { m_accumulateText.append(chars, length); } } void StylesheetHandler::processAccumulatedText() { if (m_accumulateText.empty() == false) { processText(m_accumulateText.c_str(), m_accumulateText.length()); m_accumulateText.clear(); } } bool StylesheetHandler::inExtensionElement() const { XALAN_USING_STD(find) if (!(find( m_inExtensionElementStack.begin(), m_inExtensionElementStack.end(), true) == m_inExtensionElementStack.end())) { return true; } else { return false; } } void StylesheetHandler::error( const XalanDOMString& theMessage, const Locator* theLocator) const { m_constructionContext.problem( StylesheetConstructionContext::eXSLTProcessor, StylesheetConstructionContext::eError, theMessage, theLocator, 0); } void StylesheetHandler::error( const XalanDOMChar* theMessage1, const XalanDOMChar* theMessage2, const Locator* theLocator) const { const GetCachedString theGuard(m_constructionContext); XalanDOMString& msg = theGuard.get(); msg = theMessage1; msg += theMessage2; error(msg, theLocator); } void StylesheetHandler::error( const XalanDOMChar* theMessage1, const XalanDOMString& theMessage2, const Locator* theLocator) const { error(theMessage1, theMessage2.c_str(), theLocator); } void StylesheetHandler::error( const XalanDOMString& theMessage1, const XalanDOMChar* theMessage2, const Locator* theLocator) const { error(theMessage1.c_str(), theMessage2, theLocator); } void StylesheetHandler::error( const XalanDOMString& theMessage1, const XalanDOMString& theMessage2, const Locator* theLocator) const { error(theMessage1.c_str(), theMessage2.c_str(), theLocator); } void StylesheetHandler::warn( const XalanDOMChar* theMessage1, const XalanDOMString& theMessage2, const Locator* theLocator) const { warn(theMessage1, theMessage2.c_str(), theLocator); } void StylesheetHandler::warn( const XalanDOMString& theMessage, const Locator* theLocator) const { m_constructionContext.problem( StylesheetConstructionContext::eXSLTProcessor, StylesheetConstructionContext::eWarning, theMessage, theLocator, 0); } void StylesheetHandler::warn( const XalanDOMChar* theMessage1, const XalanDOMChar* theMessage2, const Locator* theLocator) const { const GetCachedString theGuard(m_constructionContext); XalanDOMString& msg = theGuard.get(); msg = theMessage1; msg += theMessage2; m_constructionContext.problem( StylesheetConstructionContext::eXSLTProcessor, StylesheetConstructionContext::eWarning, msg, theLocator, 0); } void StylesheetHandler::illegalAttributeError( const XalanDOMChar* theElementName, const XalanDOMChar* theAttributeName, const Locator* theLocator) const { const GetCachedString theGuard(m_constructionContext); error( XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::HasIllegalAttribute_2Param, theElementName, theAttributeName), theLocator); } StylesheetHandler::PushPopIncludeState::PushPopIncludeState(StylesheetHandler& theHandler) : m_handler(theHandler), m_elemStack(theHandler.m_elemStack, theHandler.getMemoryManager()), m_pTemplate(theHandler.m_pTemplate), m_lastPopped(theHandler), m_inTemplate(theHandler.m_inTemplate), m_foundStylesheet(theHandler.m_foundStylesheet), m_XSLNameSpaceURL(theHandler.m_stylesheet.getXSLTNamespaceURI(), theHandler.getMemoryManager()), m_foundNotImport(theHandler.m_foundNotImport), m_namespaceDecls(theHandler.getMemoryManager()), m_namespaces(theHandler.getMemoryManager()), m_namespacesHandler(theHandler.getMemoryManager()), m_inExtensionElementStack(theHandler.getMemoryManager()), m_preserveSpaceStack(theHandler.getMemoryManager()) { m_handler.m_accumulateText.clear(); m_handler.m_elemStack.clear(); m_handler.m_pTemplate = 0; m_lastPopped.swap(theHandler.m_lastPopped); m_handler.m_inTemplate = false; m_handler.m_foundStylesheet = false; m_handler.m_foundNotImport = false; // This is much more efficient, since we're just swapping // underlying data. This clears out the stack as well... m_namespaceDecls.swap(theHandler.m_stylesheet.getNamespaceDecls()); m_namespaces.swap(theHandler.m_stylesheet.getNamespaces()); m_namespacesHandler.swap(theHandler.m_stylesheet.getNamespacesHandler()); m_inExtensionElementStack.swap(theHandler.m_inExtensionElementStack); m_preserveSpaceStack.swap(theHandler.m_preserveSpaceStack); } StylesheetHandler::PushPopIncludeState::~PushPopIncludeState() { m_handler.m_accumulateText.clear(); m_handler.m_elemStack = m_elemStack; m_handler.m_pTemplate = m_pTemplate; m_lastPopped.swap(m_handler.m_lastPopped); m_handler.m_inTemplate = m_inTemplate; m_handler.m_foundStylesheet = m_foundStylesheet; m_handler.m_stylesheet.setXSLTNamespaceURI(m_XSLNameSpaceURL); m_handler.m_foundNotImport = m_foundNotImport; // This is much more efficient, since we're just swapping // underlying data. m_handler.m_stylesheet.getNamespaceDecls().swap(m_namespaceDecls); m_handler.m_stylesheet.getNamespaces().swap(m_namespaces); m_handler.m_stylesheet.getNamespacesHandler().swap(m_namespacesHandler); m_handler.m_inExtensionElementStack.swap(m_inExtensionElementStack); m_handler.m_preserveSpaceStack.swap(m_preserveSpaceStack); } void StylesheetHandler::LastPoppedHolder::cleanup() { if (m_lastPopped != 0) { const int tok = m_lastPopped->getXSLToken(); if (tok == StylesheetConstructionContext::ELEMNAME_UNDEFINED) { m_stylesheetHandler.m_elemEmptyAllocator.destroy(static_cast(m_lastPopped)); } else if (tok == StylesheetConstructionContext::ELEMNAME_TEXT) { m_stylesheetHandler.m_elemTextAllocator.destroy(static_cast(m_lastPopped)); } } } const XalanDOMString StylesheetHandler::s_emptyString(XalanMemMgrs::getDummyMemMgr()); void StylesheetHandler::initialize(MemoryManager& /* theManager*/) { } void StylesheetHandler::terminate() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XalanElemTextLiteralAllocator.cpp0000664000175000000640000000433011731656103023422 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanElemTextLiteralAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanElemTextLiteralAllocator::XalanElemTextLiteralAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanElemTextLiteralAllocator::~XalanElemTextLiteralAllocator() { } XalanElemTextLiteralAllocator::data_type* XalanElemTextLiteralAllocator::create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, XalanFileLoc lineNumber, XalanFileLoc columnNumber, const XalanDOMChar* ch, XalanDOMString::size_type start, XalanDOMString::size_type length, bool preserveSpace, bool disableOutputEscaping) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type( constructionContext, stylesheetTree, lineNumber, columnNumber, ch, start, length, preserveSpace, disableOutputEscaping); m_allocator.commitAllocation(theBlock); return theResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/FunctionDocument.hpp0000664000175000000640000000527111731656103021027 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONDOCUMENT_HEADER_GUARD_1357924680) #define FUNCTIONDOCUMENT_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN // Implementation of the XSLT function document(). // class XALAN_XSLT_EXPORT FunctionDocument : public Function { public: typedef Function ParentType; FunctionDocument(); virtual ~FunctionDocument(); // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg, const Locator* locator) const; virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const XObjectPtr arg2, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionDocument* #endif clone(MemoryManager& theManager) const; protected: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; private: XObjectPtr doExecute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr& arg, XalanDOMString* base, int argCount, const Locator* locator, bool fNoRelativeURI = false) const; // Not implemented... FunctionDocument& operator=(const FunctionDocument&); bool operator==(const FunctionDocument&) const; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONDOCUMENT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XSLT/AVTPartXPath.hpp0000664000175000000640000000407011731656103017765 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_AVTPARTXPATH_HEADER_GUARD) #define XALAN_AVTPARTXPATH_HEADER_GUARD // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class PrefixResolver; class XPath; class XPathEnvSupport; class XPathFactory; class XPathProcessor; /** * Simple string part of a complex AVT. */ class AVTPartXPath: public AVTPart { public: /** * Construct an XPath Attribute Value Template (AVT) part from an XPath. * * @param xpath XPath to evaluate */ AVTPartXPath(const XPath* xpath); // These methods are inherited from AVTPart ... virtual void evaluate( XalanDOMString& buf, XalanNode* contextNode, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext) const; virtual void evaluate( XalanDOMString& buf, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext) const; private: /** * XPath for evaluation; */ const XPath* const m_pXPath; }; XALAN_CPP_NAMESPACE_END #endif //XALAN_AVTPARTXPATH_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/AVTPartSimple.cpp0000664000175000000640000000351711731656103020172 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "AVTPartSimple.hpp" #include #include "StylesheetConstructionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN /** * Simple string part of a complex AVT. */ AVTPartSimple::AVTPartSimple( StylesheetConstructionContext& constructionContext, const XalanDOMChar* val, XalanDOMString::size_type len) : AVTPart(), m_val(constructionContext.allocateXalanDOMCharVector(val, len, false)), m_len(len) { } void AVTPartSimple::evaluate( XalanDOMString& buf, XalanNode* /* contextNode */, const PrefixResolver& /* prefixResolver */, XPathExecutionContext& /* executionContext */) const { buf.append(m_val, m_len); } void AVTPartSimple::evaluate( XalanDOMString& buf, const PrefixResolver& /* prefixResolver */, XPathExecutionContext& /* executionContext */) const { buf.append(m_val, m_len); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemText.hpp0000664000175000000640000000466611731656103017301 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMTEXT_HEADER_GUARD) #define XALAN_ELEMTEXT_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemTemplateElement.hpp" XALAN_CPP_NAMESPACE_BEGIN /** * This primarily acts as a marker on the element * stack to signal that whitespace should be preserved. */ class ElemText : public ElemTemplateElement { public: /** * Construct an object corresponding to an "xsl:text" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemText( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); virtual ~ElemText(); /** * Determine whether output escaping should be disabled * * @return true if output escaping disabled */ bool getDisableOutputEscaping() const { return disableOutputEscaping(); } virtual const XalanDOMString& getElementName() const; protected: // These methods are inherited from ElemTemplateElement ... virtual bool childTypeAllowed(int xslToken) const; private: }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMTEXT_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/ElemTemplateElement.hpp0000664000175000000640000011010011731656103021417 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMTEMPLATEELEMENT_HEADER_GUARD) #define XALAN_ELEMTEMPLATEELEMENT_HEADER_GUARD // Base include file. Must be first. #include #include #include #include #include #include #include #include #include "LocalMsgIndex.hpp" XALAN_DECLARE_XERCES_CLASS(AttributeList) XALAN_DECLARE_XERCES_CLASS(Locator) XALAN_CPP_NAMESPACE_BEGIN typedef XERCES_CPP_NAMESPACE_QUALIFIER AttributeList AttributeListType; typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator LocatorType; XALAN_USING_XERCES(AttributeList) XALAN_USING_XERCES(Locator) class ElemTemplate; class ElemTextLiteral; class NamespacesHandler; class Stylesheet; class StylesheetConstructionContext; class StylesheetExecutionContext; class XPath; class XALAN_XSLT_EXPORT ElemTemplateElement : public PrefixResolver { public: /** * Construct a template element instance. * * @param constructionContext context when object constructed * @param stylesheetTree owning stylesheet * @param lineNumber line in the XSLT file where the element occurs * @param columnNumber column index in the XSLT file where the * element occurs * @param xslToken an integer representing the type of instance. */ ElemTemplateElement( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, XalanFileLoc lineNumber, XalanFileLoc columnNumber, int xslToken); /** * Special constructor used by dummy elements which do not exist in the * final stylesheet. * * @param constructionContext context when object constructed * @param stylesheetTree owning stylesheet * @param baseURI The base URI of the XSLT file where the element occurs. * @param lineNumber line in the XSLT file where the element occurs * @param columnNumber column index in the XSLT file where the * element occurs * @param xslToken an integer representing the type of instance. */ ElemTemplateElement( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, int xslToken, const XalanDOMString& baseURI = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), XalanFileLoc lineNumber = XalanLocator::getUnknownValue(), XalanFileLoc columnNumber = XalanLocator::getUnknownValue()); virtual ~ElemTemplateElement(); /** * Get the Locator for the node. This may return 0. * * @return The Locator for the node. */ virtual const Locator* getLocator() const; /** * See if this is a xmlns attribute or in a non-XSLT. * * @param attrName qualified name of attribute * @param atts attribute list where the element comes from (not used at * this time) * @param which index into the attribute list (not used at this time) * @param constructionContext The current construction context * @return true if this is a namespace name */ virtual bool isAttrOK( const XalanDOMChar* attrName, const AttributeListType& atts, XalanSize_t which, StylesheetConstructionContext& constructionContext) const; /** * Tell whether or not this is a xml:space attribute and, if so, process it. * * @param elementName name of the element with the attribute * @param aname name of the attribute in question * @param atts attribute list that owns the attribute * @param which index of the attribute into the attribute list * @param constructionContext The current construction context * @return true if this is a xml:space attribute */ bool processSpaceAttr( const XalanDOMChar* elementName, const XalanDOMChar* aname, const AttributeListType& atts, XalanSize_t which, StylesheetConstructionContext& constructionContext); /** * Validate that the string is an NCName. * * @param s name in question * @return true if the string is a valid NCName according to XML rules * @see http://www.w3.org/TR/REC-xml-names#NT-NCName */ static bool isValidNCName(const XalanDOMString& s); #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) /** * Completes "pre-processing" before any sub-elements are invoked * (i.e. children, attribute sets and templates). If there are * no sub-elements it executes the primary function of the element. * * @param executionContext context to execute this element */ virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; /** * Completes "post-processing" afer any sub-elements are invoked * (i.e. children, attribute sets and templates). If there are * no sub-elements it does nothing * * @param executionContext context to execute this element */ virtual void endElement(StylesheetExecutionContext& executionContext) const; /** * Execute the element. * * @param execute context to execute this element */ virtual void execute(StylesheetExecutionContext& executionContext) const; /** * Execute the children of this element. * * @param execute context to execute this element */ virtual void executeChildren(StylesheetExecutionContext& executionContext) const; /** * Returns the element that invoked this element. * @returns element that invoked this element. */ virtual const ElemTemplateElement* getInvoker(StylesheetExecutionContext& executionContext) const; #else /** * Execute the element's primary function. Subclasses of this function may * recursively execute down the element tree. * * @param executionContext The current execution context */ virtual void execute(StylesheetExecutionContext& executionContext) const; /** * Process the children of a template. * * @param processor XSLT processor instance */ virtual void executeChildren(StylesheetExecutionContext& executionContext) const; /** * Set the current node and process the children of a template. * * @param processor XSLT processor instance * @param sourceNode current node */ virtual void executeChildren( StylesheetExecutionContext& executionContext, XalanNode* sourceNode) const; /** * Take the contents of a template element, process it, and * convert it to a string. Returns a const reference to * the resulting string value. Note that this may _not_ be * the XalanDOMString instance passed in, if an optimization * is available to return a pre-existing string. * * @param executionContext The current execution context * @param result result of executing the elements children * @result a reference to a string containing the result. */ const XalanDOMString& childrenToString( StylesheetExecutionContext& executionContext, XalanDOMString& result) const; /** * Take the contents of a template element, process it, and * convert it to a string. Then, add an attribute to the * result tree using the provided name and the string value. * * @param executionContext The current execution context * @param theName The name for the result attribute */ void childrenToResultAttribute( StylesheetExecutionContext& executionContext, const XalanDOMString& theName) const; /** * Take the contents of a template element, process it, and * convert it to a string. Then, add a comment to the * result tree using the string value. * * @param executionContext The current execution context */ void childrenToResultComment(StylesheetExecutionContext& executionContext) const; /** * Take the contents of a template element, process it, and * convert it to a string. Then, add a processing instruction * to the result tree using the string value, and the provided * target. * * @param executionContext The current execution context * @param theName The name for the result attribute */ void childrenToResultPI( StylesheetExecutionContext& executionContext, const XalanDOMString& theTarget) const; /** * Get an integer representation of the element type. * * @return integer representation of the element, defined in the Constants * class * @see class Constants */ #endif int getXSLToken() const { return m_xslToken; } /** * Tell if the element will generate text which is XML whitespace. * * @return true if the text is pure whitespace */ virtual bool isWhitespace() const; /** * Get a string for the name of the element. Useful for debugging purposes, * and error reporting. * * @return A string containing the name of the element. */ virtual const XalanDOMString& getElementName() const = 0; /** * Get the QName associated with any name attribute of this element. * If the element has no name attribute, this will be an empty QName. * * @return A string containing the name of the element. */ virtual const XalanQName& getNameAttribute() const; /** * Called during compilation when an instance is not parented by * another element, and thus, is a child of the stylesheet.. * * @param constructionContext The current construction context * @param theStylesheet The owning stylesheet * @return nothing */ virtual void addToStylesheet( StylesheetConstructionContext& constructionContext, Stylesheet& theStylesheet); /** * Called during compilation to process xsl:sort elements in * the stylesheet. * * @param constructionContext The current construction context * @param theStylesheet The owning stylesheet * @param atts The list of attributes for the sort element * @param locator A Locator instance for error reporting, if available. * * @return nothing */ virtual void processSortElement( StylesheetConstructionContext& constructionContext, Stylesheet& theStylesheet, const AttributeListType& atts, const Locator* locator = 0); /** * Sets a flag indicating this is the default template * * @param value The value of flag. */ virtual void setDefaultTemplate(bool value); /** * Get the namespaces handler for this element. * * @return The element's NamespacesHandler instance. */ const NamespacesHandler& getNamespacesHandler() const { return m_namespacesHandler; } /** * Retrieve the stylesheet from which this element comes * * @return reference to source stylesheet */ const Stylesheet& getStylesheet() const { return m_stylesheet; } /** * Set the flag indicating construction of the element is completed. * * @param fValue The value to set */ void setFinishedConstruction(bool fValue) { setFlag(eFinishedConstruction, fValue); } /** * Get the flag indicating construction of the element is completed. */ bool getFinishedConstruction() const { return getFlag(eFinishedConstruction); } /** * Called after construction is completed. */ virtual void postConstruction( StylesheetConstructionContext& constructionContext, const NamespacesHandler& theParentHandler); // Type-safe getters/setters... /** * Get the first child. * * @return first child node of this node */ virtual ElemTemplateElement* getFirstChildElem() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) /** * Method to initiate the execution of the element's children. * * @param executionContext context to execute this element * @returns the first child element to execute */ virtual const ElemTemplateElement* beginExecuteChildren( StylesheetExecutionContext& executionContext) const; /** * Method to indicate the execution of the element's children * is complete * * @param executionContext context to execute this element */ virtual void endExecuteChildren( StylesheetExecutionContext& executionContext) const; /** * Method to initiate output from the children * to a string. * * @param executionContext context to execute this element * @param result string to contain the final result * @returns the first child element to execute */ const ElemTemplateElement* beginChildrenToString( StylesheetExecutionContext& executionContext, XalanDOMString& result) const; /** * Method to indicate string output from the children is * complete. * * @param executionContext context to execute this element */ void endChildrenToString( StylesheetExecutionContext& executionContext) const; #endif /** * Set the first child. * * theChild - the new value for the first child. * * @return nothing */ virtual void setFirstChildElem(ElemTemplateElement* theChild); /** * Get the last child. * * @return last child node of this node */ virtual ElemTemplateElement* getLastChildElem() const; /** * Get the next sibling. * * @return next sibling node of this node */ virtual ElemTemplateElement* getNextSiblingElem() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) /** * Returns the next sub-element *(i.e. children, attribute-sets, templates) to execute. * * @param executionContext context to execute element * @param currentElem the last sub-element to be executed * @returns next sub-element to execute, 0 only if no more sub-elements to execute */ virtual const ElemTemplateElement* getNextChildElemToExecute( StylesheetExecutionContext& executionContext, const ElemTemplateElement* currentElem) const; /** * Returns the first sub-element *(i.e. children, attribute-sets, templates) to execute. * * @param executionContext context to execute element * @returns first sub-element to execute, 0 only if no sub-elements to execute */ virtual const ElemTemplateElement* getFirstChildElemToExecute( StylesheetExecutionContext& executionContext) const; /** * Filters sub-elements that should be executed * * @param executionContext context to execute element * @param element the element to be executed * @returns true if element should be executed, false otherwise */ virtual bool executeChildElement( StylesheetExecutionContext& executionContext, const ElemTemplateElement* element) const; #endif /** * Set the next sibling. * * theSibling - the new value for the next sibling. * * @return nothing */ virtual void setNextSiblingElem(ElemTemplateElement* theSibling); /** * Get the previous sibling. * * @return previous sibling node of this node */ virtual ElemTemplateElement* getPreviousSiblingElem() const; /** * Set the previous sibling. * * theSibling - the new value for the previous sibling. * * @return nothing */ virtual void setPreviousSiblingElem(ElemTemplateElement* theSibling); /** * Get the parent node. * * @return parent node of this node */ virtual ElemTemplateElement* getParentNodeElem() const; /** * Set the parent node. * * theParent - the new value for the parent. * * @return nothing */ virtual void setParentNodeElem(ElemTemplateElement* theParent); /** * Append a child. * * theParent - the new value for the parent. * * @return nothing */ virtual ElemTemplateElement* appendChildElem(ElemTemplateElement* newChild); /** * Get XPath pattern/expression of one of the element atribute * * @index number of the attribute. If an attribute has more * then one attribute with pattern/expression,the order of * the returned expressions are undefined * * @return pointer or null */ virtual const XPath* getXPath(XalanSize_t index) const; // These interfaces are inherited from PrefixResolver... virtual const XalanDOMString* getNamespaceForPrefix(const XalanDOMString& prefix) const; virtual const XalanDOMString& getURI() const; // A class that implements the XalanLocator // abstract base class. ElemTemplateElement // uses this class to provide locator information. class LocatorProxy : public XalanLocator { public: LocatorProxy( XalanFileLoc theLineNumber, XalanFileLoc theColumnNumber, const XalanDOMString& theURI); virtual ~LocatorProxy(); virtual const XMLCh* getPublicId() const; virtual const XMLCh* getSystemId() const; virtual XalanFileLoc getLineNumber() const; virtual XalanFileLoc getColumnNumber() const; const XalanDOMString& getURI() const { return m_uri; } private: // Not implemented... LocatorProxy(const LocatorProxy&); LocatorProxy& operator=(const LocatorProxy&); bool operator==(const LocatorProxy&) const; // data members... const XalanFileLoc m_lineNumber; const XalanFileLoc m_columnNumber; const XalanDOMString& m_uri; }; XalanFileLoc getLineNumber() const { return m_locatorProxy.getLineNumber(); } XalanFileLoc getColumnNumber() const { return m_locatorProxy.getColumnNumber(); } bool hasParams() const { return getFlag(eHasParams); } bool hasVariables() const { return getFlag(eHasVariables); } bool hasSingleTextChild() const { return getFlag(eHasSingleTextChild); } bool hasChildren() const { return m_firstChild != 0 ? true : false; } bool hasDirectTemplate() const { return getFlag(eHasDirectTemplate); } bool canGenerateAttributes() const { return getFlag(eCanGenerateAttributes); } bool isDefaultTemplate() const { return getFlag(eDefaultTemplate); } protected: void canGenerateAttributes(bool value) { setFlag(eCanGenerateAttributes, value); } void hasPrefix(bool value) { setFlag(eHasPrefix, value); } bool hasPrefix() const { return getFlag(eHasPrefix); } void preserveSpace(bool value) { setFlag(eSpacePreserve, value); } bool preserveSpace() const { return getFlag(eSpacePreserve); } void disableOutputEscaping(bool value) { setFlag(eDisableOutputEscaping, value); } bool disableOutputEscaping() const { return getFlag(eDisableOutputEscaping); } /** * Process the exclude-result-prefixes or the extension-element-prefixes * attributes, for the purpose of prefix exclusion. * * @param constructionContext context when object consructed * @param stylesheetTree The current Stylesheet object. * @param localName The local name of the attribute. * @param attrValue The value of the attribute. */ bool processPrefixControl( StylesheetConstructionContext& constructionContext, const Stylesheet& stylesheetTree, const XalanDOMString& localName, const XalanDOMChar* attrValue); /** * Get the namespace for a given prefix. * * @param prefix The prefix to search for * @param fExists If not null, set to true if the namespace was defined. * @return The namespace string. */ const XalanDOMString* getNamespaceForPrefixInternal(const XalanDOMString& prefix) const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) /** * Given an element, find the corresponding * template. * * @param executionContext The current execution context * @param xslInstruction The calling element * @param template The template to use if xsl:for-each, or null. * @param child The source context node. * @returns matching template if any. Returns 0 if no matching template or corresponds to a default rule. */ virtual const ElemTemplateElement* findTemplateToTransformChild( StylesheetExecutionContext& executionContext, const ElemTemplateElement& xslInstruction, const ElemTemplateElement* theTemplate, XalanNode* child) const; /** * Given an element, find the corresponding * template. * * @param executionContext The current execution context * @param xslInstruction The calling element * @param template The template to use if xsl:for-each, or null. * @param child The source context node. * @param nodeType The type of child. * @returns matching template if any. Returns 0 if no matching template or corresponds to a default rule. */ virtual const ElemTemplateElement* findTemplateToTransformChild( StylesheetExecutionContext& executionContext, const ElemTemplateElement& xslInstruction, const ElemTemplateElement* theTemplate, XalanNode* child, XalanNode::NodeType nodeType) const; #else /** * Given an element, find the corresponding * template and process the contents. * * @param executionContext The current execution context * @param xslInstruction The calling element * @param template The template to use if xsl:for-each, or null. * @param child The source context node. */ virtual void transformChild( StylesheetExecutionContext& executionContext, const ElemTemplateElement& xslInstruction, const ElemTemplateElement* theTemplate, XalanNode* child) const; /** * Given an element, find the corresponding * template and process the contents. * * @param executionContext The current execution context * @param xslInstruction The calling element * @param template The template to use if xsl:for-each, or null. * @param child The source context node. * @param nodeType The type of child. */ virtual void transformChild( StylesheetExecutionContext& executionContext, const ElemTemplateElement& xslInstruction, const ElemTemplateElement* theTemplate, XalanNode* child, XalanNode::NodeType nodeType) const; #endif /** * Given an xsl token type, determine whether or not a child * of that type is allowed. This is so derived types can * determine whether a particular type of child is allowed for * the instance. It is called from appendChildElem(). * * The default is to allow no types (no children) * * @param xslToken The xsl token value of the child. * * @return true if the child is allowed, or false if not. */ virtual bool childTypeAllowed(int xslToken) const; /** * Called after construction is completed. This is a hook for * deriving classes to handle post-construction with the * instances HamespaceHandler instance, which is otherwise only * available through a const accessor. */ virtual void namespacesPostConstruction( StylesheetConstructionContext& constructionContext, const NamespacesHandler& theParentHandler, NamespacesHandler& theHandler); const NamespacesHandler& getNamespaces() const { return m_namespacesHandler; } /** * A convenience function for loading a message * and reporting an error through the provided * StylesheetExecutionContext instance. * * @param theContext The StylesheetExecutionContext to use * @param theCode The code of the message */ void error( StylesheetExecutionContext& theContext, XalanMessages::Codes theCode) const; /** * A convenience function for loading a message * and reporting an error through the provided * StylesheetExecutionContext instance. * * @param theContext The StylesheetExecutionContext to use * @param theCode The code of the message * @param theToken The substitution token for the message */ void error( StylesheetExecutionContext& theContext, XalanMessages::Codes theCode, const XalanDOMString& theToken) const; /** * A convenience function for loading a message * and reporting an error through the provided * StylesheetExecutionContext instance. * * @param theContext The StylesheetExecutionContext to use * @param theCode The code of the message * @param theLocator The Locator instance to use, if any */ void error( StylesheetExecutionContext& theContext, XalanMessages::Codes theCode, const Locator* theLocator) const; /** * A convenience function for loading a message * and reporting a warning through the provided * StylesheetExecutionContext instance. * * @param theContext The StylesheetExecutionContext to use * @param theCode The code of the message */ void warn( StylesheetExecutionContext& theContext, XalanMessages::Codes theCode) const; /** * A convenience function for loading a message * and reporting a warning through the provided * StylesheetExecutionContext instance. * * @param theContext The StylesheetExecutionContext to use * @param theCode The code of the message * @param theToken The substitution token for the message */ void warn( StylesheetExecutionContext& theContext, XalanMessages::Codes theCode, const XalanDOMString& theToken) const; /** * A convenience function for loading a message * and reporting a warning through the provided * StylesheetExecutionContext instance. * * @param theContext The StylesheetExecutionContext to use * @param theCode The code of the message * @param theLocator The Locator instance to use, if any */ void warn( StylesheetExecutionContext& theContext, XalanMessages::Codes theCode, const Locator* theLocator) const; /** * A convenience function for loading a message * and reporting an error through the provided * StylesheetConstructionContext instance. * * @param theContext The StylesheetConstructionContext to use * @param theCode The code of the message */ void error( StylesheetConstructionContext& theContext, XalanMessages::Codes theCode); /** * A convenience function for loading a message * and reporting an error through the provided * StylesheetConstructionContext instance. * * @param theContext The StylesheetConstructionContext to use * @param theCode The code of the message * @param theToken The substitution token for the message * @param theLocator The Locator instance to use, if any */ void error( StylesheetConstructionContext& theContext, XalanMessages::Codes theCode, const XalanDOMString& theToken); /** * A convenience function for loading a message * and reporting an error through the provided * StylesheetConstructionContext instance. * * @param theContext The StylesheetConstructionContext to use * @param theCode The code of the message * @param theToken The substitution token for the message * @param theLocator The Locator instance to use, if any */ void error( StylesheetConstructionContext& theContext, XalanMessages::Codes theCode, const XalanDOMString& theToken, const Locator* theLocator); /** * A convenience function for loading a message * and reporting an error through the provided * StylesheetConstructionContext instance. * * @param theContext The StylesheetConstructionContext to use * @param theCode The code of the message * @param theToken1 The first substitution token for the message * @param theToken2 The second substitution token for the message */ void error( StylesheetConstructionContext& theContext, XalanMessages::Codes theCode, const XalanDOMString& theToken1, const XalanDOMString& theToken2); /** * A convenience function for loading a message * and reporting an error through the provided * StylesheetConstructionContext instance. * * @param theContext The StylesheetConstructionContext to use * @param theCode The code of the message * @param theToken1 The first substitution token for the message * @param theToken2 The second substitution token for the message */ void error( StylesheetConstructionContext& theContext, XalanMessages::Codes theCode, const XalanDOMChar* theToken1, const XalanDOMChar* theToken2); /** * A convenience function for loading a message * and reporting an error through the provided * StylesheetConstructionContext instance. * * @param theContext The StylesheetConstructionContext to use * @param theCode The code of the message * @param theToken1 The first substitution token for the message * @param theToken2 The second substitution token for the message * @param theToken3 The third substitution token for the message */ void error( StylesheetConstructionContext& theContext, XalanMessages::Codes theCode, const XalanDOMChar* theToken1, const XalanDOMChar* theToken2, const XalanDOMChar* theToken3); /** * A convenience function for loading a message * and reporting a warning through the provided * StylesheetConstructionContext instance. * * @param theContext The StylesheetConstructionContext to use * @param theCode The code of the message * @param theToken1 The first substitution token for the message * @param theToken2 The second substitution token for the message * @param theToken3 The third substitution token for the message */ void warn( StylesheetConstructionContext& theContext, XalanMessages::Codes theCode, const XalanDOMChar* theToken1, const XalanDOMChar* theToken2, const XalanDOMChar* theToken3); // A handy empty XalanDOMString instance for // derived classes to use. static const XalanDOMString s_emptyString; private: enum eFlags { eHasParams = 1, eHasSingleTextChild = 2, eHasVariables = 4, eHasDirectTemplate = 8, eCanGenerateAttributes = 16, eDefaultTemplate = 32, eSpacePreserve = 64, eFinishedConstruction = 128, eHasPrefix = 256, eDisableOutputEscaping = 512 }; bool getFlag(eFlags theFlag) const { return m_flags & theFlag ? true : false; } void setFlag( eFlags theFlag, bool theValue) { if (theValue == true) { m_flags |= theFlag; } else { m_flags &= ~theFlag; } } #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) /** * Take the contents of a template element, process it, and * convert it to a string. * * @param executionContext The current execution context * @param result result of executing the elements children * @result a reference to a string containing the result. */ XalanDOMString& doChildrenToString( StylesheetExecutionContext& executionContext, XalanDOMString& result) const; #endif Stylesheet& m_stylesheet; /* * This object handles all result tree namespace processing. */ NamespacesHandler m_namespacesHandler; const int m_xslToken; ElemTemplateElement* m_parentNode; ElemTemplateElement* m_nextSibling; ElemTemplateElement* m_previousSibling; union { ElemTemplateElement* m_firstChild; const ElemTemplate* m_directTemplate; const ElemTextLiteral* m_textLiteralChild; }; LocatorProxy m_locatorProxy; unsigned short m_flags; static const XalanQNameByReference s_emptyQName; // Not implemented... ElemTemplateElement(const ElemTemplateElement&); ElemTemplateElement& operator=(const ElemTemplateElement&); bool operator==(const ElemTemplateElement&) const; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMTEMPLATEELEMENT_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/FunctionCurrent.hpp0000664000175000000640000000403111731656103020664 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONCURRENT_HEADER_GUARD_1357924680) #define FUNCTIONCURRENT_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN class XObject; class XPathExecutionContext; // Implementation of the XSLT function current(). // class XALAN_XSLT_EXPORT FunctionCurrent : public Function { public: typedef Function ParentType; FunctionCurrent(); virtual ~FunctionCurrent(); // These methods are inherited from Function ... virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const Locator* locator) const; using ParentType::execute; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionCurrent* #endif clone(MemoryManager& theManager) const; private: virtual const XalanDOMString& getError(XalanDOMString& theResult) const; // Not implemented... FunctionCurrent& operator=(const FunctionCurrent&); bool operator==(const FunctionCurrent&) const; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONCURRENT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XSLT/Stylesheet.hpp0000664000175000000640000006313011731656103017672 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_STYLESHEET_HEADER_GUARD) #define XALAN_STYLESHEET_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" #include #include #include #include #include #include #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class ExtensionNSHandler; class XalanDecimalFormatSymbols; class ElemDecimalFormat; class ElemTemplate; class ElemTemplateElement; class ElemVariable; class KeyTable; class NodeRefListBase; class PrefixResolver; class StylesheetConstructionContext; class StylesheetRoot; class XalanMatchPatternData; class XalanQName; class XObject; class StylesheetExecutionContext; typedef XalanVector PatternTableVectorTypeDecl; XALAN_USES_MEMORY_MANAGER(PatternTableVectorTypeDecl) /** * This class represents the base stylesheet or an "import" stylesheet. * "include" stylesheets are combined with the including stylesheet. */ class XALAN_XSLT_EXPORT Stylesheet : public PrefixResolver { public: typedef StylesheetExecutionContext::ParamVectorType ParamVectorType; typedef XalanQName::NamespaceVectorType NamespaceVectorType; typedef XalanQName::NamespacesStackType NamespacesStackType; typedef XalanVector ElemVariableVectorType; typedef XalanVector KeyDeclarationVectorType; typedef XalanVector StylesheetVectorType; typedef XalanVector URLStackType; typedef XalanVector ElemDecimalFormatVectorType; typedef XalanVector WhitespaceElementsVectorType; typedef PatternTableVectorTypeDecl PatternTableVectorType; typedef XalanMap ExtensionNamespacesMapType; typedef XalanMap ElemTemplateMapType; typedef XalanMap KeyTablesTableType; typedef XalanMap PatternTableMapType; typedef StylesheetConstructionContext::GetCachedString GetCachedString; /** * Constructor for a Stylesheet needs a Document. * @exception XSLProcessorException thrown if the active ProblemListener and XMLParserLiaison decide * the error condition is severe enough to halt processing. */ Stylesheet( StylesheetRoot& root, const XalanDOMString& baseIdentifier, StylesheetConstructionContext& constructionContext); virtual ~Stylesheet(); static Stylesheet* create(MemoryManager& theManager, StylesheetRoot& root, const XalanDOMString& baseIdentifier, StylesheetConstructionContext& constructionContext); MemoryManager& getMemoryManager() { return m_elementPatternTable.getMemoryManager(); } /** * Retrieve XSLT version number * * @return number representing XSLT version */ double getXSLTVerDeclared() const { return m_XSLTVerDeclared; } /** * Set XSLT version number * * @param ver number representing XSLT version */ void setXSLTVerDeclared(double ver) { m_XSLTVerDeclared = ver; } /** * Retrieve the root stylesheet object * * @return const reference to the stylesheet object */ const StylesheetRoot& getStylesheetRoot() const { return m_stylesheetRoot; } /** * Retrieve the root stylesheet object * * @return reference to the stylesheet object */ StylesheetRoot& getStylesheetRoot() { return m_stylesheetRoot; } /** * Retrieve the stack of namespace lists * * @return vector of namespace vectors */ const NamespacesStackType& getNamespaces() const { return m_namespaces; } /** * Retrieve the stack of namespace lists * * @return vector of namespace vectors */ NamespacesStackType& getNamespaces() { return m_namespaces; } const NamespacesHandler& getNamespacesHandler() const { return m_namespacesHandler; } NamespacesHandler& getNamespacesHandler() { return m_namespacesHandler; } /** * Retrieve the list of namespace declarations currently in effect * * @return vector of namespace vectors */ const NamespaceVectorType& getNamespaceDecls() const { return m_namespaceDecls; } /** * Retrieve the list of namespace declarations currently in effect * * @return vector of namespace vectors */ NamespaceVectorType& getNamespaceDecls() { return m_namespaceDecls; } /** * Set the list of namespace declarations currently in effect * * @param ns vector of namespace vectors */ void setNamespaceDecls(const NamespaceVectorType& ns) { m_namespaceDecls = ns; } /** * Push the namespace declarations from the current attribute * list onto the namespace stack. * * @param atts attribute list constaining namespaces */ void pushNamespaces(const AttributeListType& atts); /** * Pop a namespace declaration from the namespace stack. */ void popNamespaces() { assert(m_namespaces.empty() == false); m_namespaces.pop_back(); } void addWhitespaceElement(const XalanSpaceNodeTester& theTester); /** * Called after construction is completed. */ virtual void postConstruction(StylesheetConstructionContext& constructionContext); /** * See if this is a xmlns attribute, and, if so, process it. * * @param attrName qualified name of attribute * @param atts attribute list where the element comes from (not used at * this time) * @param which index into the attribute list (not used at this time) * @return true if this is a namespace name */ bool isAttrOK( const XalanDOMChar* attrName, const AttributeListType& atts, XalanSize_t which, StylesheetConstructionContext& constructionContext) const; /** * Get the namespace from a qualified name. * * @param nodeName name of node * @return namespace string for node, or null if not found. */ const XalanDOMString* getNamespaceFromStack( const XalanDOMString& nodeName, XalanDOMString& theBuffer) const { return getNamespaceFromStack(nodeName.c_str(), theBuffer); } /** * Get the namespace from a qualified name. * * @param nodeName name of node * @return namespace string for node, or null if not found. */ const XalanDOMString* getNamespaceFromStack( const XalanDOMChar* nodeName, XalanDOMString& theBuffer) const; /** * Get the namespace from a prefix by searching the stack of namespace * lists. * * @param prefix prefix to search * @return namespace corresponding to prefix, or null if not found. */ const XalanDOMString* getNamespaceForPrefixFromStack(const XalanDOMString& prefix) const { return XalanQName::getNamespaceForPrefix(m_namespaces, prefix); } /** * Get the namespace from a prefix by searching the stack of namespace * lists. * * @param prefix prefix to search * @return namespace corresponding to prefix, or null if not found. */ const XalanDOMString* getNamespaceForPrefixFromStack(const XalanDOMChar* prefix) const { assert(prefix != 0); return XalanQName::getNamespaceForPrefix(m_namespaces, (const XalanDOMChar*)prefix); } /** * Get the namespace for a prefix, and report an error if it wasn't found. * * @param prefix prefix to search * @param constructionContext The current construction context * @return namespace corresponding to prefix, or null if not found. */ const XalanDOMString* getNamespaceForPrefix( const XalanDOMString& prefix, StylesheetConstructionContext& constructionContext) const; /** * Get the namespace for a prefix, and report an error if it wasn't found. * * @param prefix prefix to search * @param constructionContext The current construction context * @return namespace corresponding to prefix, or null if not found. */ const XalanDOMString* getNamespaceForPrefix( const XalanDOMChar* prefix, StylesheetConstructionContext& constructionContext) const; /** * See if a namespace should be excluded. * * @param theConstructionContext the current construction context. * @param theValue the prefix of the namespace. * @return */ void processExcludeResultPrefixes( StylesheetConstructionContext& theConstructionContext, const XalanDOMChar* theValue) { m_namespacesHandler.processExcludeResultPrefixes( theConstructionContext, theValue, m_namespaces); } /** * Add a template to the list of names templates * * @param theTemplate template to add * @param constructionContext context for construction */ void addTemplate( ElemTemplate* theTemplate, StylesheetConstructionContext& constructionContext); /** * Process an attribute that has the value of 'yes' or 'no'. * * @param aname name of attribute * @param val value * @param constructionContext context for construction * @return true if value equals string constant for "yes," false otherwise */ bool getYesOrNo( const XalanDOMChar* aname, const XalanDOMChar* val, StylesheetConstructionContext& constructionContext) const; /** * Retrieve the base identifier with which this stylesheet is associated. * * @return string for base identifier */ const XalanDOMString& getBaseIdentifier() const { return m_baseIdent; } /** * Retrieve the base identifier for the most recently * included stylesheet. This will return the same value * as getBaseIdentifier(), if no include is being * processed. * * @return string for base identifier */ const XalanDOMString& getCurrentIncludeBaseIdentifier() const { return m_includeStack.empty() == true ? getBaseIdentifier() : m_includeStack.back(); } /** * Process an xsl:namespace-alias element. * * @param name the element name. * @param attrs the current attribute list * @param constructionContext the active construction context */ void processNSAliasElement( const XalanDOMChar* name, const AttributeListType& atts, StylesheetConstructionContext& constructionContext); /** * Process an xsl:decimal-format element. * * @param elemDecimalFormat the element */ void processDecimalFormatElement( StylesheetConstructionContext& constructionContext, const AttributeListType& atts, const Locator* locator = 0); /** * Retrieve the XalanDecimalFormatSymbols instance associated with * the QName. * * @param theQName the QName for the lookup * @return a pointer to the matching instance, or 0 if none was found */ const XalanDecimalFormatSymbols* getDecimalFormatSymbols(const XalanQName& theQName) const; /** * Add an imported stylesheet. * * @param theStylesheet The stylesheet to add. */ void addImport(Stylesheet* theStylesheet) { m_imports.insert(m_imports.begin(), theStylesheet); } /** * whether there is a wrapper template * * @return true is there is a wrapper */ bool isWrapperless() const { return m_isWrapperless; } ElemTemplateElement* initWrapperless( StylesheetConstructionContext& constructionContext, const Locator* locator); /** * Retrieve the stack of who's including who * * @return stack of includes */ URLStackType& getIncludeStack() { return m_includeStack; } /** * Process the xsl:key element. * * @param nsContext The PrefixResolver instance for namespace prefixes. * @param atts The attribute list for element. * #param locator The Locator instance for error reporting, if any. May be 0. * @param constructionContext The current construction context. */ void processKeyElement( const PrefixResolver& nsContext, const AttributeListType& atts, const Locator* locator, StylesheetConstructionContext& constructionContext); /** * Locate a template via the "name" attribute. * * @param name qualified name of template * @return pointer to template found or 0 if none found */ const ElemTemplate* findNamedTemplate(const XalanQName& qname) const; /** * Given a target element, find the template that best matches in the given * XSL document, according to the rules specified in the xsl draft. * * @param executionContext current execution context * @param targetNode element that needs a rule * @return pointer to rule that best matches targetNode */ const ElemTemplate* findTemplate( StylesheetExecutionContext& executionContext, XalanNode* targetNode) const { assert(targetNode != 0); return findTemplate( executionContext, targetNode, targetNode->getNodeType(), s_emptyQName, false); } /** * Given a target element, find the template that best matches in the given * XSL document, according to the rules specified in the xsl draft. * * @param executionContext current execution context * @param targetNode node that needs a rule * @param targetNodeType the type of targetNode * @param mode string indicating the mode * @param onlyUseImports only use imports, do not use any templates from the stylesheet itself * @return pointer to rule that best matches targetElem */ const ElemTemplate* findTemplate( StylesheetExecutionContext& executionContext, XalanNode* targetNode, XalanNode::NodeType targetNodeType, const XalanQName& mode, bool onlyUseImports) const; /** * Add object to vector of match patterns if not already there. * * @param thePattern pattern to add * @param theVector vector of patterns to add to */ static void addObjectIfNotFound( const XalanMatchPatternData* thePattern, PatternTableVectorType& theVector); /** * Add object to array of match patterns if not already there. * theArraySize size will be incremented if the pattern was * added. * * @param thePattern pattern to add * @param theArray vector of patterns to add to * @param theArraySize The size of the array */ static void addObjectIfNotFound( const XalanMatchPatternData* thePattern, const XalanMatchPatternData* theArray[], XalanSize_t& theArraySize); /** * Given a name, locate the start of a list of * possible templates that match that name. If * none match, then use the default list. * * @param theName The name to match */ const PatternTableVectorType* locateElementMatchPatternDataList(const XalanDOMString& theName) const; /** * Given a name, locate the start of a list of * possible templates that match that name. If * none match, then use the default list. * * @param theName The name to match */ const PatternTableVectorType* locateAttributeMatchPatternDataList(const XalanDOMString& theName) const; /** * Given a XalanNode, locate the start of a list of * possible templates that match it. * * @param XalanNode The node to match */ const PatternTableVectorType* locateMatchPatternDataList( const XalanNode& theNode, XalanNode::NodeType targetNodeType) const; /** * Add an extension namespace handler. This provides methods for calling * an element extension as well as for function calls (which is passed * on to XPath). * * @param constructionContext The current construction context. * @param uri The namespace URI of the extension. */ void processExtensionNamespace( StylesheetConstructionContext& theConstructionContext, const XalanDOMString& uri); /** * Return the handler for a given extension namespace. * * @param uri the URI of the extension namespace. * @return pointer to extension handler */ ExtensionNSHandler* lookupExtensionNSHandler(const XalanDOMString& uri) const { const ExtensionNamespacesMapType::const_iterator it = m_extensionNamespaces.find(uri); return it == m_extensionNamespaces.end() ? 0 : (*it).second; } /** * Set a top level variable. * * @param var top-level variable declared with "xsl:variable" or * xsl:param-variable. */ void setTopLevelVariable(ElemVariable* var) { m_topLevelVariables.push_back(var); } /** * Set a list of top level variables in the specified execution context * stylesheet. * * @param executionContext current execution context * @param topLevelParams list of top level parameters */ void pushTopLevelVariables( StylesheetExecutionContext& executionContext, const ParamVectorType& topLevelParams) const; // These interfaces are inherited from PrefixResolver... virtual const XalanDOMString* getNamespaceForPrefix(const XalanDOMString& prefix) const; virtual const XalanDOMString& getURI() const; const XalanDOMString& getXSLTNamespaceURI() const { return m_XSLTNamespaceURI; } void setXSLTNamespaceURI(const XalanDOMString& theURI) { m_XSLTNamespaceURI = theURI; } const ElemTemplate* getFirstTemplate() const { return m_firstTemplate; } protected: /** * The root of the stylesheet tree. */ StylesheetRoot& m_stylesheetRoot; /** * The base URL of the XSL document. */ XalanDOMString m_baseIdent; /** * Table of KeyDeclaration objects, which are set by the * xsl:key element. */ KeyDeclarationVectorType m_keyDeclarations; WhitespaceElementsVectorType m_whitespaceElements; static const XalanQNameByReference s_emptyQName; private: // Not defined... Stylesheet(const Stylesheet&); Stylesheet& operator=(const Stylesheet&); bool operator==(const Stylesheet&) const; void error( StylesheetConstructionContext& theContext, XalanMessages::Codes theErrorCode, const Locator* theLocator, const XalanDOMChar* theParam1 = 0, const XalanDOMChar* theParam2 = 0, const XalanDOMChar* theParam3 = 0) const; /** * Given a target element, find the template that best matches in the given * stylesheet, using only imports * * @param executionContext current execution context * @param targetNode node that needs a rule * @param targetNodeType the type of targetNode * @param mode string indicating the mode * @return pointer to rule that best matches targetElem */ const ElemTemplate* findTemplateInImports( StylesheetExecutionContext& executionContext, XalanNode* targetNode, XalanNode::NodeType targetNodeType, const XalanQName& mode) const; /** * The full XSLT Namespace URI. To be replaced by the one actually * found. */ XalanDOMString m_XSLTNamespaceURI; /** * A vector of the -imported- XSL Stylesheets. */ StylesheetVectorType m_imports; StylesheetVectorType::size_type m_importsSize; /** * A stack to keep track of the result tree namespaces. */ NamespacesStackType m_namespaces; /** * A list of namespace declarations, * for mapping from prefix to namespace URI. */ NamespaceVectorType m_namespaceDecls; /** * Tells if the stylesheet is without an xsl:stylesheet and xsl:template * wrapper. */ bool m_isWrapperless; /** * The table of extension namespaces. */ ExtensionNamespacesMapType m_extensionNamespaces; /** * The first template of the template children. */ ElemTemplate* m_firstTemplate; /** * A stack of who's including who is needed in order to support "It is an * error if a stylesheet directly or indirectly includes itself." */ URLStackType m_includeStack; /** * Keyed on string macro names, and holding values that are macro elements * in the XSL DOM tree. Initialized in initMacroLookupTable, and used in * findNamedTemplate. */ ElemTemplateMapType m_namedTemplates; /** * Table for defined constants, keyed on the names. */ ElemVariableVectorType m_topLevelVariables; /** * The version of XSL that was declared. */ double m_XSLTVerDeclared; /** * This table is keyed on the target elements of patterns, and contains linked * lists of the actual patterns that match the target element to some degree * of specifity. */ PatternTableMapType m_elementPatternTable; const PatternTableMapType::const_iterator m_elementPatternTableEnd; PatternTableVectorType m_elementAnyPatternList; /** * This table is keyed on the target attributes of patterns, and contains linked * lists of the actual patterns that match the target attribute to some degree * of specifity. */ PatternTableMapType m_attributePatternTable; const PatternTableMapType::const_iterator m_attributePatternTableEnd; PatternTableVectorType m_attributeAnyPatternList; /** * These tables are for text, comment, root, and PI node templates. */ PatternTableVectorType m_textPatternList; PatternTableVectorType m_commentPatternList; PatternTableVectorType m_rootPatternList; PatternTableVectorType m_piPatternList; /** * This table is for patterns that match "node()". */ PatternTableVectorType m_nodePatternList; size_type m_patternCount; ElemDecimalFormatVectorType m_elemDecimalFormats; NamespacesHandler m_namespacesHandler; static const XalanDOMString s_emptyString; static const PatternTableVectorType s_emptyTemplateList; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_STYLESHEET_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/AVT.cpp0000664000175000000640000003142511731656103016170 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "AVT.hpp" #include #include #include #include #include #include "AVTPartSimple.hpp" #include "AVTPartXPath.hpp" #include "StylesheetConstructionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN static const XalanDOMChar theTokenDelimiterCharacters[] = { XalanUnicode::charLeftCurlyBracket, XalanUnicode::charRightCurlyBracket, XalanUnicode::charApostrophe, XalanUnicode::charQuoteMark, 0 }; static const XalanDOMChar theLeftCurlyBracketString[] = { XalanUnicode::charLeftCurlyBracket, 0 }; static const XalanDOMChar theRightCurlyBracketString[] = { XalanUnicode::charRightCurlyBracket, 0 }; const XalanDOMString AVT::s_emptyString(XalanMemMgrs::getDummyMemMgr()); typedef XPathConstructionContext::GetCachedString GetCachedString; /** * Construct an AVT by parsing the string, and either * constructing a vector of AVTParts, or simply hold * on to the string if the AVT is simple. */ AVT::AVT( StylesheetConstructionContext& constructionContext, const Locator* locator, const XalanDOMChar* name, const XalanDOMChar* stringedValue, const PrefixResolver& resolver) : m_parts(0), m_partsSize(0), m_simpleString(0), m_simpleStringLength(0), m_name(constructionContext.getPooledString(name)) { StringTokenizer tokenizer(stringedValue, theTokenDelimiterCharacters, true); const StringTokenizer::size_type nTokens = tokenizer.countTokens(); if(nTokens < 2) { // Do the simple thing m_simpleStringLength = length(stringedValue); m_simpleString = constructionContext.allocateXalanDOMCharVector(stringedValue, m_simpleStringLength, false); } else { // This over-allocates, but we probably won't waste that much space. If necessary, // we could tokenize twice, just counting the numbers of AVTPart instances we // will need the first time. m_parts = constructionContext.allocateAVTPartPointerVector(nTokens + 1); XalanDOMString buffer(constructionContext.getMemoryManager()); XalanDOMString exprBuffer(constructionContext.getMemoryManager()); XalanDOMString t(constructionContext.getMemoryManager()); // base token XalanDOMString lookahead(constructionContext.getMemoryManager()); // next token while (tokenizer.hasMoreTokens()) { if (lookahead.empty() == false) { t = lookahead; lookahead.clear(); } else { nextToken(constructionContext, locator, tokenizer, t); } if (t.length() == 1) { const XalanDOMChar theChar = t[0]; switch(theChar) { case(XalanUnicode::charLeftCurlyBracket): { // Attribute Value Template start nextToken(constructionContext, locator, tokenizer, lookahead); if(equals(lookahead, theLeftCurlyBracketString)) { // Double braces mean escape to show brace buffer.append(lookahead); lookahead.clear(); break; // from switch } else { if(buffer.empty() == false) { assert(m_partsSize + 1 < nTokens); m_parts[m_partsSize++] = constructionContext.createAVTPart( buffer.c_str(), buffer.length()); buffer.clear(); } exprBuffer.clear(); while (lookahead.empty() == false && !equals(lookahead, theRightCurlyBracketString)) { if (lookahead.length() == 1) { switch(lookahead[0]) { case XalanUnicode::charApostrophe: case XalanUnicode::charQuoteMark: { // String start exprBuffer.append(lookahead); const XalanDOMChar quote[2] = { lookahead[0], 0 }; // Consume stuff 'till next quote nextToken(constructionContext, locator, tokenizer, lookahead); while(!equals(lookahead, quote)) { exprBuffer.append(lookahead); nextToken(constructionContext, locator, tokenizer, lookahead); } exprBuffer.append(lookahead); break; } case XalanUnicode::charLeftCurlyBracket: { GetCachedString theGuard(constructionContext); // What's another brace doing here? constructionContext.problem( StylesheetConstructionContext::eXSLTProcessor, StylesheetConstructionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::LeftBraceCannotAppearWithinExpression), locator, 0); break; } default: // part of the template stuff, just add it. exprBuffer.append(lookahead); break; } // end inner switch } // end if lookahead length == 1 else { // part of the template stuff, just add it. exprBuffer.append(lookahead); } nextToken(constructionContext, locator, tokenizer, lookahead); } // end while(!equals(lookahead, "}")) assert(equals(lookahead, theRightCurlyBracketString)); // Proper close of attribute template. Evaluate the // expression. buffer.clear(); assert(m_partsSize + 1 < nTokens); m_parts[m_partsSize++] = constructionContext.createAVTPart( locator, exprBuffer.c_str(), exprBuffer.length(), resolver); lookahead.clear(); // breaks out of inner while loop } break; } case(XalanUnicode::charRightCurlyBracket): { nextToken(constructionContext, locator, tokenizer, lookahead); if (equals(lookahead, theRightCurlyBracketString)) { // Double brace mean escape to show brace buffer.append(lookahead); lookahead.clear(); // swallow } else { GetCachedString theGuard(constructionContext); constructionContext.problem( StylesheetConstructionContext::eXSLTProcessor, StylesheetConstructionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::UnmatchedWasFound), locator, 0); } break; } default: { // Anything else just add to string. buffer.append(1, theChar); } } // end switch t } // end if length == 1 else { // Anything else just add to string. buffer.append(t); } } // end while(tokenizer.hasMoreTokens()) if (buffer.empty() == false) { assert(m_partsSize + 1 < nTokens); m_parts[m_partsSize++] = constructionContext.createAVTPart( buffer.c_str(), buffer.length()); buffer.clear(); } } // end else nTokens > 1 } AVT::~AVT() { } void AVT::doEvaluate( XalanDOMString& buf, XalanNode* contextNode, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext) const { if(m_partsSize != 0) { for(size_type i = 0; i < m_partsSize; i++) { assert(m_parts[i] != 0); m_parts[i]->evaluate(buf, contextNode, prefixResolver, executionContext); } } } void AVT::doEvaluate( XalanDOMString& buf, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext) const { if(m_partsSize != 0) { for(size_type i = 0; i < m_partsSize; i++) { assert(m_parts[i] != 0); m_parts[i]->evaluate(buf, prefixResolver, executionContext); } } } void AVT::nextToken( StylesheetConstructionContext& constructionContext, const Locator* locator, StringTokenizer& tokenizer, XalanDOMString& token) { if (tokenizer.hasMoreTokens() == false) { GetCachedString theGuard(constructionContext); constructionContext.problem( StylesheetConstructionContext::eXSLTProcessor, StylesheetConstructionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::AttributeValueTemplateHasMissing), locator, 0); } else { tokenizer.nextToken(token); } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemUse.hpp0000664000175000000640000001216511731656103017102 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMUSE_HEADER_GUARD) #define XALAN_ELEMUSE_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemTemplateElement.hpp" XALAN_CPP_NAMESPACE_BEGIN class ElemUse : public ElemTemplateElement { public: #if defined(XALAN_STRICT_ANSI_HEADERS) typedef std::size_t size_type; #else typedef size_t size_type; #endif /** * Construct an object corresponding to an "use-attribute-sets" attribute. * This is a base class for "xsl:element," "xsl:copy" and * "xsl:attribute-set" elements, which may specify attribute sets to use. * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemUse( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, XalanFileLoc lineNumber, XalanFileLoc columnNumber, int xslToken); virtual ~ElemUse(); /** * See if this is a use-attribute-sets attribute, and, if so, process it. * * @param attrName qualified name of attribute * @param atts attribute list where the element comes from (not used at * this time) * @param which index into the attribute list (not used at this time) * @return true if this is a use-attribute-sets attribute */ bool processUseAttributeSets( StylesheetConstructionContext& constructionContext, const XalanDOMChar* attrName, const AttributeListType& atts, XalanSize_t which); // These methods are inherited from ElemTemplateElement ... virtual const XalanDOMString& getElementName() const; virtual void postConstruction( StylesheetConstructionContext& constructionContext, const NamespacesHandler& theParentHandler); #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; virtual void endElement(StylesheetExecutionContext& executionContext) const; virtual const ElemTemplateElement* getNextChildElemToExecute( StylesheetExecutionContext& executionContext, const ElemTemplateElement* currentElem) const; virtual const ElemTemplateElement* getFirstChildElemToExecute( StylesheetExecutionContext& executionContext) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif protected: #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) /** * Get the next attribute set to execute. * * @param executionContext context to execute this element * @returns a pointer to the attribute set element, 0 if no more attribute sets */ const ElemTemplateElement* getNextAttributeSet( StylesheetExecutionContext& executionContext) const; /** * Evalute the AVTs for this element * * @param executionContext context to execute this element */ virtual void evaluateAVTs( StylesheetExecutionContext& executionContext) const; #else /** * Execute and conditionally apply any attribute sets. To be used * by deriving classes who want ElemUse to do any default execution * but skip applying attribute sets. Typically, this would be done * when attempting to recover from an error. * * @param executionContext The current execution context. * @param applyAttributeSets If true, attribute sets will be applied. */ virtual void doExecute( StylesheetExecutionContext& executionContext, bool applyAttributeSets) const; #endif private: const XalanQName** m_attributeSetsNames; size_type m_attributeSetsNamesCount; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMUSE_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/ElemLiteralResult.cpp0000664000175000000640000003545011731656103021136 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemLiteralResult.hpp" #include #include #include #include #include "AVT.hpp" #include "Constants.hpp" #include "Stylesheet.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemLiteralResult::ElemLiteralResult( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const XalanDOMChar* name, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemUse( constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_LITERAL_RESULT), m_elementName(constructionContext.getPooledString(name)), m_avts(0), m_avtsCount(0) { init(constructionContext, stylesheetTree, name, atts); } ElemLiteralResult::ElemLiteralResult( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const XalanDOMChar* name, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber, int xslToken) : ElemUse(constructionContext, stylesheetTree, lineNumber, columnNumber, xslToken), m_elementName(constructionContext.getPooledString(name)), m_avts(0), m_avtsCount(0) { init(constructionContext, stylesheetTree, name, atts); } void ElemLiteralResult::init( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const XalanDOMChar* name, const AttributeListType& atts) { assert(name != 0); hasPrefix(indexOf(name, XalanUnicode::charColon) < length(name) ? true : false); const XalanSize_t nAttrs = atts.getLength(); // This over-allocates, but we probably won't waste that much space. m_avts = constructionContext.allocateAVTPointerVector(nAttrs); assert(m_avts != 0); const StylesheetConstructionContext::GetCachedString theGuard(constructionContext); XalanDOMString& theBuffer = theGuard.get(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); bool needToProcess = true; const XalanDOMString::size_type indexOfNSSep = indexOf(aname, XalanUnicode::charColon); const XalanDOMString::size_type len = length(aname); if (indexOfNSSep < len) { substring(aname, theBuffer, 0, indexOfNSSep); if (!equals(theBuffer, DOMServices::s_XMLNamespace)) { const XalanDOMString* const ns = getNamespaceForPrefixInternal(theBuffer); if (ns == 0) { error( constructionContext, XalanMessages::PrefixIsNotDeclared_1Param, theBuffer); } else if (equals(*ns, stylesheetTree.getXSLTNamespaceURI())) { theBuffer.assign(aname + indexOfNSSep + 1, len - (indexOfNSSep + 1)); if (processPrefixControl(constructionContext, stylesheetTree, theBuffer, atts.getValue(i)) == true) { needToProcess = false; } else if (equals(theBuffer, Constants::ATTRNAME_VERSION) == true) { const XalanDOMChar* const value = atts.getValue(i); stylesheetTree.setXSLTVerDeclared( DoubleSupport::toDouble(value, constructionContext.getMemoryManager())); } } } else { // don't process namespace decls needToProcess = false; } } if (needToProcess == true) { processSpaceAttr( m_elementName.c_str(), aname, atts, i, constructionContext); // Add xmlns attribute(except xmlns:xsl), xml:space, etc... // Ignore anything with xsl:xxx if (processUseAttributeSets( constructionContext, aname, atts, i) == false && isAttrOK( aname, atts, i, constructionContext) == true) { m_avts[m_avtsCount++] = constructionContext.createAVT(getLocator(), aname, atts.getValue(i), *this); } } } } ElemLiteralResult::~ElemLiteralResult() { } const XalanDOMString& ElemLiteralResult::getElementName() const { return m_elementName; } class AVTPrefixChecker : public NamespacesHandler::PrefixChecker { public: AVTPrefixChecker( const AVT** theAVTs, XalanSize_t theAVTsCount) : m_avts(theAVTs), m_avtsCount(theAVTsCount) { } virtual bool isActive(const XalanDOMString& thePrefix) const { bool fActive = false; for (XalanSize_t i = 0; i < m_avtsCount; ++i) { const AVT* const avt = m_avts[i]; const XalanDOMString& theName = avt->getName(); const XalanDOMString::size_type theColonIndex = indexOf(theName, XalanUnicode::charColon); if (theColonIndex != theName.length()) { if (thePrefix.length() == theColonIndex && startsWith(theName, thePrefix) == true) { fActive = true; break; } } } return fActive; } private: // Not implemented... AVTPrefixChecker& operator=(const AVTPrefixChecker&); // Data members... const AVT** const m_avts; const XalanSize_t m_avtsCount; }; void ElemLiteralResult::postConstruction( StylesheetConstructionContext& constructionContext, const NamespacesHandler& theParentHandler) { if (m_avtsCount != 0 || getNamespacesHandler().getNamespaceDeclarationsCount() != 0) { canGenerateAttributes(true); } else { // OK, let's turn this off and see what our // base classes say about it when we chain up... canGenerateAttributes(false); } // OK, now we can chain-up... ElemUse::postConstruction(constructionContext, theParentHandler); // OK, now let's do some more checking to see if we'll // generate attributes... if (canGenerateAttributes() == false) { // If there are no children, we can't generate any attributes... if (hasChildren() == true) { assert(getFirstChildElem() != 0); // If there's a single text child, or the first child // is another LRE, then we won't generate any attributes. // Otherwise, we might... if (hasSingleTextChild() == false && getFirstChildElem()->getXSLToken() != StylesheetConstructionContext::ELEMNAME_LITERAL_RESULT) { canGenerateAttributes(true); } } } } void ElemLiteralResult::namespacesPostConstruction( StylesheetConstructionContext& constructionContext, const NamespacesHandler& theParentHandler, NamespacesHandler& theHandler) { const AVTPrefixChecker theChecker(m_avts, m_avtsCount); theHandler.postConstruction( constructionContext, true, getElementName(), &theParentHandler, &theChecker); } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemLiteralResult::startElement(StylesheetExecutionContext& executionContext) const { const XalanDOMString& theElementName = getElementName(); executionContext.startElement(theElementName.c_str()); ElemUse::startElement(executionContext); const NamespacesHandler& theNamespacesHandler = getNamespacesHandler(); theNamespacesHandler.outputResultNamespaces(executionContext); if (hasPrefix() == false) { // OK, let's check to make sure we don't have to change the default namespace... const XalanDOMString* const theCurrentDefaultNamespace = executionContext.getResultNamespaceForPrefix(s_emptyString); if (theCurrentDefaultNamespace != 0) { const XalanDOMString* const theElementDefaultNamespace = theNamespacesHandler.getNamespace(s_emptyString); if (theElementDefaultNamespace == 0) { // There was no default namespace, so we have to turn the // current one off. executionContext.addResultAttribute(DOMServices::s_XMLNamespace, s_emptyString); } else if (equals(*theCurrentDefaultNamespace, *theElementDefaultNamespace) == false) { executionContext.addResultAttribute(DOMServices::s_XMLNamespace, *theElementDefaultNamespace); } } } return beginExecuteChildren(executionContext); } void ElemLiteralResult::endElement(StylesheetExecutionContext& executionContext) const { endExecuteChildren(executionContext); executionContext.endElement(getElementName().c_str()); ElemUse::endElement(executionContext); } void ElemLiteralResult::evaluateAVTs(StylesheetExecutionContext& executionContext) const { if (m_avtsCount > 0) { const StylesheetExecutionContext::GetCachedString theGuard(executionContext); XalanDOMString& theStringedValue = theGuard.get(); for(XalanSize_t i = 0; i < m_avtsCount; ++i) { const AVT* const avt = m_avts[i]; const XalanDOMString& theName = avt->getName(); avt->evaluate(theStringedValue, *this, executionContext); executionContext.addResultAttribute(theName, theStringedValue); theStringedValue.clear(); } } } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemLiteralResult::execute(StylesheetExecutionContext& executionContext) const { const XalanDOMString& theElementName = getElementName(); executionContext.startElement(theElementName.c_str()); ElemUse::execute(executionContext); const NamespacesHandler& theNamespacesHandler = getNamespacesHandler(); theNamespacesHandler.outputResultNamespaces(executionContext); if (hasPrefix() == false) { // OK, let's check to make sure we don't have to change the default namespace... const XalanDOMString* const theCurrentDefaultNamespace = executionContext.getResultNamespaceForPrefix(s_emptyString); if (theCurrentDefaultNamespace != 0) { const XalanDOMString* const theElementDefaultNamespace = theNamespacesHandler.getNamespace(s_emptyString); if (theElementDefaultNamespace == 0) { // There was no default namespace, so we have to turn the // current one off. executionContext.addResultAttribute(DOMServices::s_XMLNamespace, s_emptyString); } else if (equals(*theCurrentDefaultNamespace, *theElementDefaultNamespace) == false) { executionContext.addResultAttribute(DOMServices::s_XMLNamespace, *theElementDefaultNamespace); } } } if(m_avtsCount > 0) { const StylesheetExecutionContext::GetCachedString theGuard(executionContext); XalanDOMString& theStringedValue = theGuard.get(); for(XalanSize_t i = 0; i < m_avtsCount; ++i) { const AVT* const avt = m_avts[i]; const XalanDOMString& theName = avt->getName(); avt->evaluate(theStringedValue, *this, executionContext); executionContext.addResultAttribute(theName, theStringedValue); theStringedValue.clear(); } } executeChildren(executionContext); executionContext.endElement(theElementName.c_str()); } #endif bool ElemLiteralResult::isAttrOK( const XalanDOMChar* attrName, const AttributeListType& /* atts */, XalanSize_t /* which */, StylesheetConstructionContext& constructionContext) const { bool isAttrOK = equals(attrName, DOMServices::s_XMLNamespace) || startsWith(attrName, DOMServices::s_XMLNamespaceWithSeparator); if (isAttrOK == false) { const XalanDOMString::size_type len = length(attrName); const XalanDOMString::size_type indexOfNSSep = indexOf(attrName, XalanUnicode::charColon); if (indexOfNSSep >= len) { // An empty namespace is OK. isAttrOK = true; } else { const StylesheetConstructionContext::GetCachedString theGuard(constructionContext); XalanDOMString& thePrefix = theGuard.get(); thePrefix.assign(attrName, indexOfNSSep); const XalanDOMString* const ns = getStylesheet().getNamespaceForPrefixFromStack(thePrefix); if (ns != 0 && equals(*ns, constructionContext.getXSLTNamespaceURI()) == false) { isAttrOK = true; } } } return isAttrOK; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/VariablesStack.cpp0000664000175000000640000004465411731656103020444 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "VariablesStack.hpp" #include #include #include "ElemVariable.hpp" #include "StylesheetExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN VariablesStack::VariablesStack(MemoryManager& theManager) : m_stack(theManager), m_globalStackFrameIndex(~0u), m_globalStackFrameMarked(false), m_currentStackFrameIndex(0), m_guardStack(theManager), m_elementFrameStack(theManager) { m_stack.reserve(eDefaultStackSize); } VariablesStack::~VariablesStack() { } void VariablesStack::reset() { while(m_stack.empty() == false) { pop(); } m_stack.clear(); m_guardStack.clear(); m_elementFrameStack.clear(); m_globalStackFrameMarked = false; m_globalStackFrameIndex = ~0u; } bool VariablesStack::elementFrameAlreadyPushed(const ElemTemplateElement* elem) const { const VariableStackStackType::size_type nElems = m_stack.size(); assert(nElems > 0); // There is guaranteed to be a context marker at // the bottom of the stack, so i should stop at // 1. for(VariableStackStackType::size_type i = nElems - 1; i > 0; --i) { const StackEntry& theEntry = m_stack[i]; if(theEntry.getType() == StackEntry::eElementFrameMarker) { if(theEntry.getElement() == elem) { return true; } } } return false; } void VariablesStack::pushContextMarker() { push(StackEntry()); } void VariablesStack::popContextMarker() { VariableStackStackType::iterator i = m_stack.end(); for(; ;) { assert(i != m_stack.begin()); const StackEntry& theEntry = *--i; assert(theEntry == back()); const StackEntry::eType type = theEntry.getType(); assert(type < StackEntry::eNextValue && type >= 0); pop(); if (type == StackEntry::eContextMarker) { break; } } // This introduced a regression into 1.7, because of all the // external fiddling with the stack frame index. We need to // re-write that code so no external meddling is necessary, // so we can track the stack frame index properly. In particular, // this is an issue with xsl:apply-templates, because a context // marker is pushed before its select attribute is evaluated, even // though the select expression really should be evaluated in // the previous stack context. // m_currentStackFrameIndex = size_type(m_stack.size()); } void VariablesStack::push(const StackEntry& theEntry) { assert(theEntry.getType() < StackEntry::eNextValue && theEntry.getType() >= 0); if(m_currentStackFrameIndex == m_stack.size()) { ++m_currentStackFrameIndex; } m_stack.push_back(theEntry); // Increment the global stack frame index as long as we're pushing variables, and // it already hasn't been marked. This is a temporary work-around for problems // with evaluating top-level variables as they're pushed, rather than as they're // used. if (m_globalStackFrameMarked == false && theEntry.getType() == StackEntry::eVariable) { m_globalStackFrameIndex = m_currentStackFrameIndex; } } void VariablesStack::pop() { assert(m_stack.empty() == false); if(m_currentStackFrameIndex == m_stack.size()) { --m_currentStackFrameIndex; } m_stack.pop_back(); } void VariablesStack::PushParamFunctor::operator()(const VariablesStack::ParamsVectorType::value_type& theEntry) const { assert(theEntry.m_qname != 0); if (theEntry.m_value.null() == false) { m_variablesStack.push(VariablesStack::StackEntry(theEntry.m_qname, theEntry.m_value, true)); } else { assert(theEntry.m_variable != 0); m_variablesStack.push(VariablesStack::StackEntry(theEntry.m_qname, theEntry.m_variable, true)); } } VariablesStack::CommitPushParams::CommitPushParams(VariablesStack& theVariablesStack) : m_variablesStack(&theVariablesStack), m_stackSize(theVariablesStack.getStackSize()) { } VariablesStack::CommitPushParams::~CommitPushParams() { if (m_variablesStack != 0) { while(m_variablesStack->getStackSize() > m_stackSize) { m_variablesStack->pop(); } } } void VariablesStack::pushParams(const ParamsVectorType& theParams) { // This object will push the params and pop them // if we don't call it's commit() member function. So // if an exception is thrown while transferring the // parameters, the stack stays in a consistent state. CommitPushParams thePusher(*this); XALAN_USING_STD(for_each) for_each(theParams.begin(), theParams.end(), PushParamFunctor(*this)); thePusher.commit(); } void VariablesStack::pushVariable( const XalanQName& name, const ElemVariable* var, const ElemTemplateElement* e) { if(elementFrameAlreadyPushed(e) == false) { pushElementFrame(e); } push(StackEntry(&name, var)); } void VariablesStack::pushVariable( const XalanQName& name, const XObjectPtr& val, const ElemTemplateElement* e) { if(elementFrameAlreadyPushed(e) == false) { XalanDOMString theBuffer(m_stack.getMemoryManager()); throw InvalidStackContextException(theBuffer); } push(StackEntry(&name, val)); } void VariablesStack::start() { } void VariablesStack::resetParams() { const size_type nElems = getCurrentStackFrameIndex(); assert(nElems > 0); // There is guaranteed to be a context marker at // the bottom of the stack, so i should stop at // 1. for(size_type i = nElems - 1; i > 0; --i) { StackEntry& theEntry = m_stack[i]; if(theEntry.getType() == StackEntry::eContextMarker) { break; } else { theEntry.deactivate(); } } } void VariablesStack::markGlobalStackFrame() { m_globalStackFrameIndex = size_type(m_stack.size()); m_globalStackFrameMarked = true; pushContextMarker(); } void VariablesStack::unmarkGlobalStackFrame() { popContextMarker(); m_globalStackFrameIndex = ~0u; m_globalStackFrameMarked = false; } const XObjectPtr VariablesStack::findXObject( const XalanQName& name, StylesheetExecutionContext& executionContext, bool fIsParam, bool fSearchGlobalSpace, bool& fNameFound) { typedef VariableStackStackType::size_type size_type; // findEntry() returns an index into the stack. We should // _never_ take the address of anything in the stack, since // the address could change at unexpected times. const size_type theEntryIndex = findEntry(name, fIsParam, fSearchGlobalSpace); if (theEntryIndex == m_stack.size()) { fNameFound = false; return XObjectPtr(); } else { assert(theEntryIndex < m_stack.size()); fNameFound = true; assert(m_stack[theEntryIndex].getType() == StackEntry::eVariable || m_stack[theEntryIndex].getType() == StackEntry::eParam || m_stack[theEntryIndex].getType() == StackEntry::eActiveParam); const XObjectPtr& theValue = m_stack[theEntryIndex].getValue(); if (theValue.null() == false) { return theValue; } else { const ElemVariable* const var = m_stack[theEntryIndex].getVariable(); XObjectPtr theNewValue; if (var != 0) { XalanNode* const doc = executionContext.getRootDocument(); assert(doc != 0); XALAN_USING_STD(find) // See if the ElemVariable instance is already being evaluated... if (find(m_guardStack.begin(), m_guardStack.end(), var) != m_guardStack.end()) { const StylesheetExecutionContext::GetCachedString theGuard(executionContext); executionContext.problem( StylesheetExecutionContext::eXSLTProcessor, StylesheetExecutionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::CircularVariableDefWasDetected), var->getLocator(), doc); } m_guardStack.push_back(var); #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) executionContext.pushContextMarker(); #else // We need to set up a stack frame for the variable's execution... typedef StylesheetExecutionContext::PushAndPopContextMarker PushAndPopContextMarker; const PushAndPopContextMarker theContextMarkerPushPop(executionContext); #endif theNewValue = var->getValue(executionContext, doc); assert(theNewValue.null() == false); #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) executionContext.popContextMarker(); #endif assert(m_guardStack.empty() == false); m_guardStack.pop_back(); m_stack[theEntryIndex].setValue(theNewValue); m_stack[theEntryIndex].activate(); } return theNewValue; } } } VariablesStack::size_type VariablesStack::findEntry( const XalanQName& qname, bool fIsParam, bool fSearchGlobalSpace) { size_type theEntryIndex = size_type(m_stack.size()); const size_type nElems = getCurrentStackFrameIndex(); // There is guaranteed to be a context marker at // the bottom of the stack, so i should stop at // 1. for(size_type i = nElems - 1; i > 0; --i) { StackEntry& theEntry = m_stack[i]; const StackEntry::eType theType = theEntry.getType(); if(theType == StackEntry::eVariable || theType == StackEntry::eActiveParam) { assert(theEntry.getName() != 0); if(theEntry.getName()->equals(qname)) { theEntryIndex = i; break; } } else if (theType == StackEntry::eParam) { if (fIsParam == true) { if(theEntry.getName()->equals(qname)) { theEntry.activate(); theEntryIndex = i; break; } } } else if(theType == StackEntry::eContextMarker) { break; } } if(theEntryIndex == m_stack.size() && fIsParam == false && true == fSearchGlobalSpace && m_globalStackFrameIndex > 1) { // Look in the global space for(size_type i = m_globalStackFrameIndex - 1; i > 0; i--) { StackEntry& theEntry = m_stack[i]; const StackEntry::eType theType = theEntry.getType(); if(theType == StackEntry::eVariable) { assert(theEntry.getName() != 0); if(theEntry.getName()->equals(qname)) { theEntryIndex = i; break; } } else if(theType == StackEntry::eContextMarker) { break; } } } return theEntryIndex; } void VariablesStack::pushElementFrame(const ElemTemplateElement* elem) { push(StackEntry(elem)); #if !defined(NDEBUG) m_elementFrameStack.push_back(elem); #endif } class EnsurePop { public: EnsurePop(VariablesStack& theVariablesStack) : m_variablesStack(theVariablesStack) { } ~EnsurePop() { m_variablesStack.pop(); } private: VariablesStack& m_variablesStack; }; void VariablesStack::popElementFrame() { const VariableStackStackType::size_type nElems = m_stack.size(); assert(nElems > 0); // There is guaranteed to be a context marker at // the bottom of the stack, so i should stop at // 1. for(VariableStackStackType::size_type i = nElems - 1; i > 0; --i) { const StackEntry& theEntry = m_stack[i]; // Guarantee that it will be popped when we're done. const EnsurePop theEnsurePop(*this); if(theEntry.getType() == StackEntry::eContextMarker) { XalanDOMString theBuffer(m_stack.getMemoryManager()); throw InvalidStackContextException(theBuffer); } else if (theEntry.getType() == StackEntry::eElementFrameMarker) { #if !defined(NDEBUG) const ElemTemplateElement* const theElement = theEntry.getElement(); if (m_elementFrameStack.empty() == true) { XalanDOMString theBuffer(m_stack.getMemoryManager()); throw InvalidStackContextException(theBuffer); } const ElemTemplateElement* const theStackBack = m_elementFrameStack.back(); m_elementFrameStack.pop_back(); if (theElement != theStackBack) { XalanDOMString theBuffer(m_stack.getMemoryManager()); throw InvalidStackContextException(theBuffer); } #endif break; } } } VariablesStack::StackEntry::StackEntry() : m_type(eContextMarker), m_qname(0), m_value(), m_variable(0), m_element(0) { } VariablesStack::StackEntry::StackEntry( const XalanQName* name, const XObjectPtr& val, bool isParam) : m_type(isParam == true ? eParam : eVariable), m_qname(name), m_value(val), m_variable(0), m_element(0) { } VariablesStack::StackEntry::StackEntry( const XalanQName* name, const ElemVariable* var, bool isParam) : m_type(isParam == true ? eParam : eVariable), m_qname(name), m_value(), m_variable(var), m_element(0) { } VariablesStack::StackEntry::StackEntry(const ElemTemplateElement* elem) : m_type(eElementFrameMarker), m_qname(0), m_value(), m_variable(0), m_element(elem) { } VariablesStack::StackEntry::StackEntry(const StackEntry& theSource) : m_type(theSource.m_type), m_qname(theSource.m_qname), m_value(theSource.m_value), m_variable(theSource.m_variable), m_element(theSource.m_element) { } VariablesStack::StackEntry::~StackEntry() { } VariablesStack::StackEntry& VariablesStack::StackEntry::operator=(const StackEntry& theRHS) { if (this != &theRHS) { m_type = theRHS.m_type; m_qname = theRHS.m_qname; m_value = theRHS.m_value; m_variable = theRHS.m_variable; m_element = theRHS.m_element; } return *this; } // Equality for StackEntry instances is probably bogus, // so it might be worthwhile to just get rid of this. bool VariablesStack::StackEntry::operator==(const StackEntry& theRHS) const { bool fResult = false; if (m_type == theRHS.m_type) { if (m_type == eContextMarker) { if (&theRHS == this) { fResult = true; } } else if (m_type == eVariable || m_type == eParam || m_type == eActiveParam) { // We only need to compare the variable related members... if (m_value == theRHS.m_value || m_variable == theRHS.m_variable) { fResult = true; } } else if (m_type == eElementFrameMarker) { if (m_element == theRHS.m_element) { fResult = true; } } else { assert(0); } } return fResult; } void VariablesStack::StackEntry::activate() { if (m_type == eParam) { m_type = eActiveParam; } } void VariablesStack::StackEntry::deactivate() { if (m_type == eActiveParam) { m_type = eParam; } } const XalanDOMChar VariablesStack::InvalidStackContextException::m_type[] = { XalanUnicode::charLetter_I, XalanUnicode::charLetter_n, XalanUnicode::charLetter_v, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_i, XalanUnicode::charLetter_d, XalanUnicode::charLetter_S, XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_k, XalanUnicode::charLetter_C, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_x, XalanUnicode::charLetter_t, XalanUnicode::charLetter_E, XalanUnicode::charLetter_x, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_p, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; VariablesStack::InvalidStackContextException::InvalidStackContextException(XalanDOMString& theResult) : XSLTProcessorException( theResult.getMemoryManager(), XalanMessageLoader::getMessage( theResult, XalanMessages::InvalidStackContext)) { } VariablesStack::InvalidStackContextException::~InvalidStackContextException() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemNumber.hpp0000664000175000000640000003546411731656103017605 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMNUMBER_HEADER_GUARD) #define XALAN_ELEMNUMBER_HEADER_GUARD // Base include file. Must be first. #include #include // Base class header file. #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class AVT; class MutableNodeRefList; class XalanNumberFormat; class XPath; class XPathExecutionContext; class ElemNumber: public ElemTemplateElement { public: typedef CountersTable::CountType CountType; enum eLevel { eSingle, eMultiple, eAny }; typedef XalanVector CountTypeArrayType; /** * Perform static initialization. See class XSLTInit. */ static void initialize(MemoryManager& theManager); /** * Perform static shut down. See class XSLTInit. */ static void terminate(); /** * Construct an object corresponding to an "xsl:number" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document * @param id The unique ID within the stylesheet for this xsl:number element */ ElemNumber( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber, unsigned long id); static ElemNumber* create( MemoryManager& theManager, StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber, unsigned long id); virtual ~ElemNumber(); // These methods are inherited from ElemTemplateElement ... virtual const XalanDOMString& getElementName() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif unsigned long getID() const { return m_id; } /** * Get the previous node to be counted. */ XalanNode* getPreviousNode( StylesheetExecutionContext& executionContext, XalanNode* pos) const; /** * Get the target node that will be counted.. */ XalanNode* getTargetNode( StylesheetExecutionContext& executionContext, XalanNode* sourceNode) const; virtual const XPath* getXPath(XalanSize_t index) const; protected: /** * Given a 'from' pattern (ala xsl:number), a match pattern * and a context, find the first ancestor that matches the * pattern (including the context handed in). * * @param executionContext The current execution context * @param matchPatternString The match pattern. * @param matchPatternString The count match pattern. * @param node The context node * @return A pointer to the matched node. */ XalanNode* findAncestor( StylesheetExecutionContext& executionContext, const XPath* fromMatchPattern, const XPath* countMatchPattern, XalanNode* context) const; /** * Given a 'from' pattern (ala xsl:number), a match pattern * and a context, find the first ancestor that matches the * pattern (including the context handed in). * * @param executionContext The current execution context * @param matchPatternString The match pattern. * @param matchPatternString The count match pattern. * @param node The context node * @return A pointer to the matched node. */ XalanNode* findPrecedingOrAncestorOrSelf( StylesheetExecutionContext& executionContext, const XPath* fromMatchPattern, const XPath* countMatchPattern, XalanNode* context) const; /** * Get the count match pattern, or a default value. */ const XPath* getCountMatchPattern( StylesheetExecutionContext& executionContext, XalanNode* contextNode) const; /** * Given an XML source node, get the count according to the * parameters set up by the xsl:number attributes. */ void getCountString( StylesheetExecutionContext& executionContext, XalanDOMString& theResult) const; void getCountString( StylesheetExecutionContext& executionContext, const MutableNodeRefList& ancestors, CountersTable& ctable, CountType numberList[], NodeRefListBase::size_type numberListLength, XalanDOMString& theResult) const; /** * Get the ancestors, up to the root, that match the * pattern. * @param patterns if non-0, count only nodes * that match this pattern, if 0 count all ancestors. * @param executionContext The current execution context. * @param node Count this node and it's ancestors. * @param stopAtFirstFound If true, only get the first matching ancestor * @param ancestors The ancestors that match the pattern. */ void getMatchingAncestors( StylesheetExecutionContext& executionContext, XalanNode* node, bool stopAtFirstFound, MutableNodeRefList& ancestors) const; /** * Get a formatter. * @param executionContext The current execution context. * @return A new XalanNumberFormat instance. The caller owns the memory. */ XalanNumberFormat* getNumberFormatter(StylesheetExecutionContext& executionContext) const; /** * Format an array of integrals into a formatted string. * * @param executionContext The current execution context. * @param theList Array of one or more integer numbers. * @param theListLength The length of the array. * @param formattedNumber The formatted number result. */ void formatNumberList( StylesheetExecutionContext& executionContext, const CountType theList[], NodeRefListBase::size_type theListLength, XalanDOMString& formattedNumber) const; /** * Convert an intergral into alphabetic counting, in other words * count using the sequence A B C ... Z. * @param val Value to convert -- must be greater than zero. * @param table a table containing one character for each digit in the radix * @param theResult A string representing alpha count of number. * @see XSLTEngineImpl#DecimalToRoman * * Note that the radix of the conversion is inferred from the size * of the table. */ static void int2singlealphaCount( CountType val, const XalanDOMString& table, XalanDOMString& theResult); /** * Convert an integral into alphabetic counting, in other words * count using the sequence A B C ... Z AA AB AC.... etc. * @param val Value to convert -- must be greater than zero. * @param table a table containing one character for each digit in the radix * @param length the table length * @param result returns the stringrepresenting alpha count of number. * @see XSLTEngineImpl#DecimalToRoman * * Note that the radix of the conversion is inferred from the size * of the table. */ static void int2alphaCount( CountType val, const XalanDOMChar table[], XalanDOMString::size_type length, XalanDOMString& theResult); /** * Convert an integral into roman numerals. * @param val Value to convert. * @param prefixesAreOK true to enable prefix notation (e.g. 4 = "IV"), false to disable prefix notation (e.g. 4 = "IIII"). * @param theResult The formatted Roman numeral string. * @see DecimalToRoman * @see m_romanConvertTable */ static void toRoman( CountType val, bool prefixesAreOK, XalanDOMString& theResult); private: void evaluateLetterValueAVT( StylesheetExecutionContext& executionContext, XalanDOMString& value) const; void traditionalAlphaCount( CountType theValue, const XalanNumberingResourceBundle& theResourceBundle, XalanDOMString& theResult) const; /* * Get Formatted number */ void getFormattedNumber( StylesheetExecutionContext& executionContext, XalanDOMChar numberType, XalanDOMString::size_type numberWidth, CountType listElement, XalanDOMString& theResult) const; const XPath* m_countMatchPattern; const XPath* m_fromMatchPattern; const XPath* m_valueExpr; CountType m_level; // = Constants.NUMBERLEVEL_SINGLE; const AVT* m_format_avt; const AVT* m_lang_avt; const AVT* m_lettervalue_avt; const AVT* m_groupingSeparator_avt; const AVT* m_groupingSize_avt; const unsigned long m_id; /** * The string "@". */ static const XalanDOMChar s_atString[]; /** * The string "text()". */ static const XalanDOMString& s_textString; /** * The string "comment()". */ static const XalanDOMString& s_commentString; /** * The string "/". */ static const XalanDOMString& s_slashString; /** * The string "processing-instruction(". */ static const XalanDOMChar s_piString[]; /** * The string "level". */ static const XalanDOMChar s_levelString[]; /** * The string "multiple". */ static const XalanDOMChar s_multipleString[]; /** * The string "any". */ static const XalanDOMChar s_anyString[]; /** * The string "single". */ static const XalanDOMChar s_singleString[]; /** * The string "alphabetic". */ static const XalanDOMChar s_alphabeticString[]; /** * The string "traditional". */ static const XalanDOMChar s_traditionalString[]; /** * The string "#error". */ static const XalanDOMChar s_errorString[]; /** * Chars for converting integers into alpha counts. */ static const XalanDOMChar s_alphaCountTable[]; static const XalanDOMString::size_type s_alphaCountTableSize; static const XalanDOMChar s_elalphaCountTable[]; static const XalanDOMString::size_type s_elalphaCountTableSize; /** * Table to help in converting decimals to roman numerals. * @see XSLTEngineImpl#DecimalToRoman * @see XSLTEngineImpl#long2roman */ static const DecimalToRoman s_romanConvertTable[]; static const size_t s_romanConvertTableSize; /** * numbering resource bundle for Greek numbering. */ static const XalanNumberingResourceBundle& s_elalphaResourceBundle; public: /** * This class returns tokens using non-alphanumberic characters as * delimiters. */ class NumberFormatStringTokenizer { public: typedef XalanDOMString::size_type size_type; /** * Construct a NumberFormatStringTokenizer. * * @param theString string to tokenize */ NumberFormatStringTokenizer(const XalanDOMString& theString); /** * Sets the string to tokenize. * * @param theString new string to tokenize */ void setString(const XalanDOMString& theString); /** * Reset tokenizer so that nextToken() starts from the beginning. */ void reset() { m_currentPosition = 0; } /** * Retrieve the next token to be parsed. * * @param theToken The next token string */ void nextToken(XalanDOMString& theToken); /** * Determine if there are tokens remaining * * @return true if there are more tokens */ bool hasMoreTokens() const { return m_currentPosition >= m_maxPosition ? false : true; } /** * Count the number of tokens yet to be parsed * * @return number of remaining tokens */ size_type countTokens() const; private: size_type m_currentPosition; size_type m_maxPosition; const XalanDOMString* m_string; }; private: }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMNUMBER_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/GenerateEvent.hpp0000664000175000000640000001453711731656103020304 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_GenerateEvent_HEADER_GUARD) #define XALAN_GenerateEvent_HEADER_GUARD // Base include file. Must be first. #include #include XALAN_DECLARE_XERCES_CLASS(AttributeList) XALAN_CPP_NAMESPACE_BEGIN typedef XERCES_CPP_NAMESPACE_QUALIFIER AttributeList AttributeListType; /** * This is the class for events generated by the XSL processor * after it generates a new node in the result tree. It responds * to, and so is modeled from, the SAX events that are sent to the * FormatterListener classes. * * @see org.apache.xml.xpath4j.xml.FormatterListener */ class XALAN_XSLT_EXPORT GenerateEvent { public: enum EventType { /** * Event type generated when a document begins. * */ EVENTTYPE_STARTDOCUMENT = 1, /** * Event type generated when a document ends. */ EVENTTYPE_ENDDOCUMENT = 2, /** * Event type generated when an element begins (after the attributes have been processed but before the children have been added). */ EVENTTYPE_STARTELEMENT = 3, /** * Event type generated when an element ends, after it's children have been added. */ EVENTTYPE_ENDELEMENT = 4, /** * Event type generated for character data (CDATA and Ignorable Whitespace have their own events). */ EVENTTYPE_CHARACTERS = 5, /** * Event type generated for ignorable whitespace (I'm not sure how much this is actually called. */ EVENTTYPE_IGNORABLEWHITESPACE = 6, /** * Event type generated for processing instructions. */ EVENTTYPE_PI = 7, /** * Event type generated after a comment has been added. */ EVENTTYPE_COMMENT = 8, /** * Event type generate after an entity ref is created. */ EVENTTYPE_ENTITYREF = 9, /** * Event type generated after CDATA is generated. */ EVENTTYPE_CDATA = 10 }; /** * Constructor for startDocument, endDocument events. * * @param eventType one of the EVENTTYPE_XXX constants */ GenerateEvent(EventType eventType, MemoryManager& theManager); /** * Constructor for startElement, endElement events. * * @param eventType one of the EVENTTYPE_XXX constants * @param name name of the element * @param atts SAX attribute list */ GenerateEvent( EventType eventType, MemoryManager& theManager, const XalanDOMChar* name, AttributeListType* atts); /** * Constructor for startElement, endElement events. * * @param eventType one of the EVENTTYPE_XXX constants * @param name name of the element * @param atts SAX attribute list */ GenerateEvent( EventType eventType, MemoryManager& theManager, const XalanDOMString& name, const AttributeListType* atts = 0); /** * Constructor for characters, cdate events. * * @param eventType one of the EVENTTYPE_XXX constants * @param ch char array from the SAX event * @param start start offset to be used in the char array * @param length end offset to be used in the chara array */ GenerateEvent( EventType eventType, MemoryManager& theManager, const XalanDOMChar* ch, XalanDOMString::size_type start, XalanDOMString::size_type length); /** * Constructor for processingInstruction events. * * @param eventType one of the EVENTTYPE_XXX constants * @param name name of the processing instruction * @param data processing instruction data */ GenerateEvent( EventType eventType, MemoryManager& theManager, const XalanDOMChar* name, const XalanDOMChar* data); /** * Constructor for comment and entity ref events. * * @param processor XSLT processor instance * @param eventType one of the EVENTTYPE_XXX constants * @param data comment or entity ref data */ GenerateEvent( EventType eventType, MemoryManager& theManager, const XalanDOMChar* data); /** * The type of SAX event that was generated, as enumerated in the * EVENTTYPE_XXX constants above. */ EventType m_eventType; /** * Character data from a character or cdata event. */ XalanDOMString m_characters; /** * The start position of the current data in m_characters. */ XalanDOMString::size_type m_start; /** * The length of the current data in m_characters. */ XalanDOMString::size_type m_length; /** * The name of the element or PI. */ XalanDOMString m_name; /** * The string data in the element (comments and PIs). */ XalanDOMString m_data; /** * The current attribute list. */ const AttributeListType* m_pAtts; private: // not imlplemented GenerateEvent(); GenerateEvent(const GenerateEvent&); }; XALAN_CPP_NAMESPACE_END #endif //XALAN_GenerateEvent_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/StylesheetRoot.hpp0000664000175000000640000004270411731656103020542 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_STYLESHEETROOT_HEADER_GUARD) #define XALAN_STYLESHEETROOT_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" #include "Stylesheet.hpp" #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class ElemAttributeSet; class StylesheetConstructionContext; class XalanText; class XSLTResultTarget; typedef XalanVector AttributeSetVectorTypeDecl; XALAN_USES_MEMORY_MANAGER(AttributeSetVectorTypeDecl) /** * This acts as the stylesheet root of the stylesheet * tree, and holds values that are shared by all * stylesheets in the tree. */ class XALAN_XSLT_EXPORT StylesheetRoot : public Stylesheet { public: typedef XalanVector XalanQNameVectorType; typedef AttributeSetVectorTypeDecl AttributeSetVectorType; typedef XalanMap AttributeSetMapType; /** * Construct a Stylesheet from a Document. * * @param baseIdentifier document identifier * @param constructionContext context for construction of object */ StylesheetRoot( const XalanDOMString& baseIdentifier, StylesheetConstructionContext& constructionContext); virtual ~StylesheetRoot(); static StylesheetRoot* create( MemoryManager& theManager, const XalanDOMString& baseIdentifier, StylesheetConstructionContext& constructionContext); MemoryManager& getMemoryManager() { return m_version.getMemoryManager(); } /** * Called after construction is completed. */ virtual void postConstruction(StylesheetConstructionContext& constructionContext); /** * Transform the source tree to the output in the given result tree target. * * @param inputSource The input source * @param outputTarget The output result target * @param constructionContext context for construction of object */ void process( XalanNode* sourceTree, XSLTResultTarget& outputTarget, StylesheetExecutionContext& executionContext) const; /** * Have the stylesheet create the appropriate FormatterListener, * based on the XSLTResultTarget provided. setupFormatterListener * also calls setFormatterListener() on the execution context * instance. setupFormatterListener() is done automatically by * process(), but this is provided as an escape, to allow for * changing the FormatterListener on-the-fly. * * @param outputTarget The output source tree * @param constructionContext context for construction of object * @return a pointer to the new FormatterListener instance. */ FormatterListener* setupFormatterListener( XSLTResultTarget& outputTarget, StylesheetExecutionContext& executionContext) const; /** * Return the output method that was specified in the stylesheet. * The returned value is one of FormatterLister::eFormat values. * * @return value of output method */ FormatterListener::eFormat getOutputMethod() const { return m_outputMethod; } bool isOutputMethodSet() const { return getOutputMethod() == FormatterListener::OUTPUT_METHOD_NONE ? false : true; } /** * Get the output version string that was specified in the * xsl:output element * * @return output version string */ XalanDOMString& getOutputVersion(XalanDOMString& theResult) const { theResult.assign(m_version); return theResult; } /** * Determine if output indenting was specified in the * xsl:output element * * @return true to indent */ bool getOutputIndent() const { return m_indentResult == eIndentNoImplicit || m_indentResult == eIndentNoExplicit ? false : true; } /** * Determine if output indenting should be * enabled for HTML output. Semantically, * this implies the output method is implicit, * not explicit, but we don't really check that. * * @return true to indent */ bool getHTMLOutputIndent() const { return m_indentResult == eIndentNoExplicit ? false : true; } /** * Get the output encoding string that was specified in the * xsl:output element * * @return encoding string */ XalanDOMString& getOutputEncoding(XalanDOMString& theResult) const { theResult.assign(m_encoding); return theResult; } /** * Get the media-type string that was specified in the * xsl:output element * * @return media type string */ XalanDOMString& getOutputMediaType(XalanDOMString& theResult) const { theResult.assign(m_mediatype); return theResult; } /** * Get the doctype-system-id string that was specified in the * xsl:output element * * @return document type string */ XalanDOMString & getOutputDoctypeSystem(XalanDOMString& theResult) const { theResult.assign(m_doctypeSystem); return theResult; } /** * Get the doctype-public-id string that was specified in the * xsl:output element * * @return document type public id string */ XalanDOMString& getOutputDoctypePublic(XalanDOMString& theResult) const { theResult.assign(m_doctypePublic); return theResult; } /** * Determine whether to output XML declarations. * * @return true to output declarations */ bool getOmitOutputXMLDecl() const { return m_omitxmlDecl; } /** * Get the standalone string that was specified in the * xsl:output element.(either "yes" or "no") * * @return standalone string */ XalanDOMString& getOutputStandalone(XalanDOMString& theResult) const { theResult.assign(m_standalone); return theResult; } /** * Get the template representing the default rule for text. * * @return pointer to template rule for text */ ElemTemplateElement* getDefaultTextRule() const { return m_defaultTextRule; } /** * Get the template representing the default rule. * * @return pointer to default template rule */ ElemTemplateElement* getDefaultRule() const { return m_defaultRule; } /** * Get the template representing the default root rule. * * @return pointer to default root template rule */ ElemTemplateElement* getDefaultRootRule() const { return m_defaultRootRule; } /** * Process the "xsl:output" element. * * @param name name of element * @param atts attribute list for element * @param constructionContext context for construction of object */ void processOutputSpec( const XalanDOMChar* name, const AttributeListType& atts, StylesheetConstructionContext& constructionContext); /** * Retrieve the stack of imported stylesheets. * * @return stack of URIs for stylesheets */ URLStackType& getImportStack() { return m_importStack; } /** * Retrieve the stack of imported stylesheets. * * @return const stack of URIs for stylesheets */ const URLStackType& getImportStack() const { return m_importStack; } /** * Change the value of the flag for indenting results. * * @param bIndent true to indent results */ void setIndentResult(bool bIndent) { m_indentResult = bIndent == true ? eIndentYesExplicit : eIndentNoExplicit; } /** * Change the value of the output method, one of the * FormatterListener::eFormat values. * * @param meth new method number */ void setOutputMethod(FormatterListener::eFormat meth) { m_outputMethod = meth; } bool hasCDATASectionElements() const { assert((m_hasCDATASectionElems == false && m_cdataSectionElems.empty() == true ) || ( m_hasCDATASectionElems == true && m_cdataSectionElems.empty() == false)); return m_hasCDATASectionElems; } /** * Determine if a QName is in the list of CDATA section * element QNames. * * @param theQName The QName of the element to check. * @return true or false */ bool isCDATASectionElementName(const XalanQName& theQName) const; /** * Given a valid element key, return the corresponding node list. * * @param context context node * @param qname qname of the key, which must match the 'name' * attribute on xsl:key * @param ref value that must match the value found by the * 'match' attribute on xsl:key * @param resolver resolver for namespace resolution * @param nodelist A node list to contain the nodes found * @param executionContext The current execution context * @param theKeysTable The table of keys to search. */ void getNodeSetByKey( XalanNode* context, const XalanQName& qname, const XalanDOMString& ref, const PrefixResolver& resolver, MutableNodeRefList& nodelist, StylesheetExecutionContext& executionContext, const Locator* locator, KeyTablesTableType& theKeysTable) const; unsigned long getNextElemNumberID() { return m_elemNumberNextID++; } unsigned long getElemNumberCount() const { return m_elemNumberNextID; } bool hasPreserveOrStripSpaceElements() const { return m_hasStripOrPreserveSpace; } /** * Check to see if a whitespace text node should be stripped from * the source tree. * * @param theNode The text node to check. */ bool shouldStripSourceNode(const XalanText& theNode) const { if (hasPreserveOrStripSpaceElements() == true && theNode.isWhitespace() == true) { return internalShouldStripSourceNode(theNode); } return false; } void addAttributeSet(ElemAttributeSet& theAttributeSet); #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) /** * Get the nth attribute set with the specified name. * * @param execution context for executing this stylesheet * @param theQName the name of the attribute set * @param matchingIndex index of the attribute set with the specified name * @param theLocator the locator * @returns a pointer to the attribute, 0 if no matching attribute set */ const ElemAttributeSet* getAttributeSet( StylesheetExecutionContext& theExecutionContext, const XalanQName& theQName, size_type matchingIndex, const Locator* theLocator) const; #else void executeAttributeSet( StylesheetExecutionContext& theExecutionContext, const XalanQName& theQName, const Locator* theLocator) const; #endif private: /** * Choose the encoding to use. * * @param outputTarget The output result target * * @return The chosen encoding */ const XalanDOMString& getEncoding(const XSLTResultTarget& outputTarget) const; /** * Create the default rule if needed. * * @param constructionContext context for construction of object */ void initDefaultRule(StylesheetConstructionContext& constructionContext); /** * Check to see if a whitespace text node should be stripped from * the source tree. * * @param theNode The text node to check. */ bool internalShouldStripSourceNode(const XalanText& theNode) const; /** * The version tells the version of XML to be used for outputting the result tree, * as specified in xsl:output. */ XalanDOMString m_version; enum eIndentType { eIndentNoImplicit, eIndentNoExplicit, eIndentYesImplicit, eIndentYesExplicit }; /** * indent-result is by default no, which means an XSL processor must not * change the whitespace on output. */ eIndentType m_indentResult; /** * The encoding attribute specifies the preferred encoding to use * for outputting the result tree. */ XalanDOMString m_encoding; /** * The media-type attribute is applicable for the xml output method. * The default value for the media-type attribute is text/xml. */ XalanDOMString m_mediatype; /** * If the doctype-system-id attribute is specified, the xml output method should * output a document type declaration immediately before the first element. * The name following #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class KeyDeclaration; class NodeRefListBase; class PrefixResolver; class StylesheetExecutionContext; class XalanElement; class XalanDocument; class XalanNode; /** * Table of element keys, keyed by document node. An instance of this * class is keyed by a Document node that should be matched with the * root of the current context. It contains a table of name mappings * to tables that contain mappings of identifier values to nodes. */ typedef XalanMap NodeListMapTypeDefinitions; XALAN_USES_MEMORY_MANAGER(NodeListMapTypeDefinitions) class KeyTable { public: typedef XalanVector KeyDeclarationVectorType; typedef NodeListMapTypeDefinitions NodeListMapType; typedef XalanMap KeysMapType; /** * Build a keys table. * * @param startNode node to start iterating from to build the keys * index * @param nscontext stylesheet's namespace context * @param keyDeclarations stylesheet's xsl:key declarations * @param executionContext current execution context */ KeyTable( XalanNode* startNode, const PrefixResolver& resolver, const KeyDeclarationVectorType& keyDeclarations, StylesheetExecutionContext& executionContext); static KeyTable* create(MemoryManager& theManager, XalanNode* startNode, const PrefixResolver& resolver, const KeyDeclarationVectorType& keyDeclarations, StylesheetExecutionContext& executionContext); virtual ~KeyTable(); /** * Given a valid element key, return the corresponding node list. If the * name was not declared with xsl:key, this will return null, the * identifier is not found, it will return an empty node set, otherwise it * will return a nodeset of nodes. * * @param name name of the key, which must match the 'name' attribute on * xsl:key * @param ref value that must match the value found by the 'match' * attribute on xsl:key * @return pointer to nodeset for key */ const MutableNodeRefList* getNodeSetByKey( const XalanQName& qname, const XalanDOMString& ref) const; private: static void processKeyDeclaration( KeysMapType& theKeys, const KeyDeclaration& kd, XalanNode* testNode, const PrefixResolver& resolver, StylesheetExecutionContext& executionContext); /** * The document key. This table should only be used with contexts * whose Document roots match this key. */ const XalanDocument* m_docKey; /** * Table of element keys. The table will be built on demand, * when a key is requested, or set by the XMLParserLiaison or * the caller. The table is: * a) keyed by name, * b) each with a value of a hashtable, keyed by the value returned by * the use attribute, * c) each with a value that is a nodelist. * Thus, for a given key or keyref, look up hashtable by name, * look up the nodelist by the given reference. */ KeysMapType m_keys; static const MutableNodeRefList s_dummyList; KeyDeclarationVectorType m_allKeys; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_KEYTABLE_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/ElemForwardCompatible.cpp0000664000175000000640000001105511731656103021742 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemForwardCompatible.hpp" #include #include #include #include #include "Constants.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemForwardCompatible::ElemForwardCompatible( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const XalanDOMChar* name, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemTemplateElement( constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_FORWARD_COMPATIBLE), m_elementName(constructionContext.getPooledString(name)) { const XalanSize_t nAttrs = atts.getLength(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (isAttrOK( aname, atts, i, constructionContext) == false && processSpaceAttr( m_elementName.c_str(), aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, m_elementName.c_str(), aname); } } } ElemForwardCompatible* ElemForwardCompatible::create( MemoryManager& theManager, StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const XalanDOMChar* name, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) { typedef ElemForwardCompatible ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( constructionContext, stylesheetTree, name, atts, lineNumber, columnNumber); theGuard.release(); return theResult; } const XalanDOMString& ElemForwardCompatible::getElementName() const { return m_elementName; } ElemForwardCompatible::~ElemForwardCompatible() { } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemForwardCompatible::startElement(StylesheetExecutionContext& executionContext) const { return getFirstChildElemToExecute(executionContext); } bool ElemForwardCompatible::executeChildElement( StylesheetExecutionContext& /*executionContext*/, const ElemTemplateElement* element) const { return element->getXSLToken() == StylesheetConstructionContext::ELEMNAME_FALLBACK; } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemForwardCompatible::execute(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::execute(executionContext); for (const ElemTemplateElement* child = getFirstChildElem(); child != 0; child = child->getNextSiblingElem()) { if(child->getXSLToken() == StylesheetConstructionContext::ELEMNAME_FALLBACK) { child->execute(executionContext); } } } #endif XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XalanElemTemplateAllocator.hpp0000664000175000000640000000733011731656103022744 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANELEMTEMPLATEALLOCATOR_INCLUDE_GUARD_12455133) #define XALANELEMTEMPLATEALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XSLT_EXPORT XalanElemTemplateAllocator { public: typedef ElemTemplate data_type; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanElemTemplateAllocator( MemoryManager& theManager, size_type theBlockCount); ~XalanElemTemplateAllocator(); /** * Construct an instance * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document * * @return A pointer to the new instance. */ data_type* create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const data_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all objects from the allocator. */ void reset() { m_allocator.reset(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanElemTemplateAllocator(const XalanElemTemplateAllocator&); XalanElemTemplateAllocator& operator=(const XalanElemTemplateAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANELEMTEMPLATEALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XSLT/XalanMatchPatternData.cpp0000664000175000000640000000244211731656103021703 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanMatchPatternData.hpp" #include "xalanc/PlatformSupport/DoubleSupport.hpp" #include "ElemTemplate.hpp" XALAN_CPP_NAMESPACE_BEGIN double XalanMatchPatternData::getPriorityOrDefault() const { const double templatePriority = m_template->getPriority(); if (DoubleSupport::isNegativeInfinity(templatePriority) == true) { return XPath::getMatchScoreValue(m_priority); } else { return templatePriority; } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemValueOf.hpp0000664000175000000640000000627211731656103017711 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMVALUEOF_HEADER_GUARD) #define XALAN_ELEMVALUEOF_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemTemplateElement.hpp" XALAN_CPP_NAMESPACE_BEGIN class XObjectPtr; class XPath; class ElemValueOf : public ElemTemplateElement { public: /** * Construct an object corresponding to an "xsl:value-of" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemValueOf( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); virtual ~ElemValueOf(); // These methods are inherited from ElemTemplateElement ... virtual const XalanDOMString& getElementName() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif virtual const XPath* getXPath(XalanSize_t index) const; private: void fireSelectionEvent( StylesheetExecutionContext& executionContext, XalanNode* sourceNode, const XalanDOMString& theValue) const; void fireSelectionEvent( StylesheetExecutionContext& executionContext, XalanNode* sourceNode, const XObjectPtr theValue) const; void fireSelectionEvent( StylesheetExecutionContext& executionContext, XalanNode* sourceNode, const XObjectPtr theValue, const XalanDOMString& thePattern) const; /** * The select pattern used to locate the value. */ const XPath* m_selectPattern; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMVALUEOF_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/ElemCallTemplate.cpp0000664000175000000640000001414611731656103020711 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemCallTemplate.hpp" #include #include #include #include "AVT.hpp" #include "Constants.hpp" #include "ElemTemplate.hpp" #include "Stylesheet.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" #include "StylesheetRoot.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemCallTemplate::ElemCallTemplate( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemTemplateElement(constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_CALL_TEMPLATE), m_templateName(0), m_template(0) { const XalanSize_t nAttrs = atts.getLength(); for(XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (equals(aname, Constants::ATTRNAME_NAME)) { m_templateName = constructionContext.createXalanQName( atts.getValue(i), getStylesheet().getNamespaces(), getLocator()); if (m_templateName->isValid() == false) { error( constructionContext, XalanMessages::AttributeValueNotValidQName_2Param, Constants::ATTRNAME_NAME.c_str(), atts.getValue(i)); } } else if (isAttrOK( aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_CALLTEMPLATE_WITH_PREFIX_STRING.c_str(), aname); } } if (m_templateName == 0) { error( constructionContext, XalanMessages::ElementMustHaveAttribute_2Param, Constants::ELEMNAME_CALLTEMPLATE_WITH_PREFIX_STRING, Constants::ATTRNAME_NAME); } } ElemCallTemplate::~ElemCallTemplate() { } const XalanDOMString& ElemCallTemplate::getElementName() const { return Constants::ELEMNAME_CALLTEMPLATE_WITH_PREFIX_STRING; } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemCallTemplate::startElement(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::startElement(executionContext); assert(m_template != 0); executionContext.pushInvoker(this); return getFirstChildElemToExecute(executionContext); } void ElemCallTemplate::endElement(StylesheetExecutionContext& executionContext) const { executionContext.popContextMarker(); executionContext.popInvoker(); } const ElemTemplateElement* ElemCallTemplate::getNextChildElemToExecute( StylesheetExecutionContext& executionContext, const ElemTemplateElement* currentElem) const { if (currentElem == m_template) { return 0; } const ElemTemplateElement* const nextElement = ElemTemplateElement::getNextChildElemToExecute(executionContext,currentElem); if (nextElement == 0) { executionContext.pushContextMarker(); executionContext.endParams(); return m_template; } return nextElement; } const ElemTemplateElement* ElemCallTemplate::getFirstChildElemToExecute( StylesheetExecutionContext& executionContext) const { const ElemTemplateElement* const firstElement = ElemTemplateElement::getFirstChildElemToExecute(executionContext); if (firstElement != 0) { executionContext.beginParams(); return firstElement; } else { executionContext.pushContextMarker(); return m_template; } } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemCallTemplate::execute(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::execute(executionContext); assert(m_template != 0); const StylesheetExecutionContext::ParamsPushPop thePushPop( executionContext, *this); m_template->executeAsNamed(executionContext); } #endif void ElemCallTemplate::postConstruction( StylesheetConstructionContext& constructionContext, const NamespacesHandler& theParentHandler) { assert(m_templateName != 0); m_template = getStylesheet().getStylesheetRoot().findNamedTemplate(*m_templateName); if(m_template == 0) { error( constructionContext, XalanMessages::CannotFindNamedTemplate); } // OK, now we can chain-up... ElemTemplateElement::postConstruction(constructionContext, theParentHandler); } bool ElemCallTemplate::childTypeAllowed(int xslToken) const { if (xslToken == StylesheetConstructionContext::ELEMNAME_WITH_PARAM) { return true; } else { return false; } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XalanSpaceNodeTester.cpp0000664000175000000640000000405311731656103021547 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanSpaceNodeTester.hpp" #include "xalanc/PlatformSupport/DOMStringHelper.hpp" #include "xalanc/PlatformSupport/XalanMessageLoader.hpp" #include "Constants.hpp" #include "StylesheetConstructionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanSpaceNodeTester::XalanSpaceNodeTester() : NodeTester(), m_matchScore(XPath::eMatchScoreNone), m_type(ePreserve) { } XalanSpaceNodeTester::XalanSpaceNodeTester(const XalanSpaceNodeTester& theSource) : NodeTester(theSource), m_matchScore(theSource.m_matchScore), m_type(theSource.m_type) { } XalanSpaceNodeTester::XalanSpaceNodeTester( eType theType, StylesheetConstructionContext& theConstructionContext, const XalanDOMString& theNameTest, const PrefixResolver& thePrefixResolver, const Locator* theLocator) : NodeTester(), m_matchScore(XPath::eMatchScoreNone), m_type(theType) { m_matchScore = initialize( theConstructionContext, theNameTest, thePrefixResolver, theLocator); assert(m_matchScore != XPath::eMatchScoreNone); } XalanSpaceNodeTester::~XalanSpaceNodeTester() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/CountersTable.hpp0000664000175000000640000001432411731656103020314 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_COUNTERSTABLE_HEADER_GUARD_1357924680) #define XALAN_COUNTERSTABLE_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include "xalanc/XPath/MutableNodeRefList.hpp" XALAN_CPP_NAMESPACE_BEGIN class ElemNumber; class StylesheetExecutionContext; /** * * A class that does incremental counting for support of xsl:number. * This class stores a cache of counted nodes (m_countNodes). * It tries to cache the counted nodes in document order... * the node count is based on its position in the cache list */ struct Counter { typedef XalanSize_t CountType; typedef XalanVector NodeVectorType; /** * The start count from where m_countNodes counts * from. In other words, the count of a given node * in the m_countNodes vector is node position + * m_countNodesStartCount. */ CountType m_countNodesStartCount; /** * A vector of all nodes counted so far. */ NodeVectorType m_countNodes; /** * The node from where the counting starts. This is needed to * find a counter if the node being counted is not immediatly * found in the m_countNodes vector. */ const XalanNode* m_fromNode; /** * The owning xsl:number element. */ const ElemNumber* m_numberElem; /** * Construct a counter object. */ Counter( MemoryManager& theManager, const ElemNumber* numberElem, NodeVectorType& countNodes) : m_countNodesStartCount(0), m_countNodes(countNodes, theManager), m_fromNode(0), m_numberElem(numberElem) { } /** * Construct a counter object. */ Counter(MemoryManager& theManager, const ElemNumber* numberElem = 0) : m_countNodesStartCount(0), m_countNodes(theManager), m_fromNode(0), m_numberElem(numberElem) { } Counter(const Counter& other, MemoryManager& theManager) : m_countNodesStartCount(other.m_countNodesStartCount), m_countNodes(other.m_countNodes, theManager), m_fromNode(other.m_fromNode), m_numberElem(other.m_numberElem) { } /** * Try to find a node that was previously counted. If found, return a * positive integer that corresponds to the count. * @param node The node to be counted. * @returns The count of the node, or 0 if not found. */ CountType getPreviouslyCounted( StylesheetExecutionContext& support, const XalanNode* node) const; /** * Get the last node in the list. */ XalanNode* getLast() const { return m_countNodes.empty() == true ? 0 : m_countNodes.back(); } private: // Not implemented Counter(); Counter(const Counter&); }; XALAN_USES_MEMORY_MANAGER(Counter) typedef XalanVector CounterVectorTypeDecl; XALAN_USES_MEMORY_MANAGER(CounterVectorTypeDecl) typedef XalanVector ElemCounterVectorVectorTypeDecl; XALAN_USES_MEMORY_MANAGER(ElemCounterVectorVectorTypeDecl) /** * * This is a table of counters, keyed by ElemNumber objects, each * of which has a list of Counter objects. This really isn't a true * table, it is more like a list of lists (there must be a technical * term for that...). */ class CountersTable { public: typedef Counter::CountType CountType; typedef CounterVectorTypeDecl CounterVectorType; typedef ElemCounterVectorVectorTypeDecl ElemCounterVectorVectorType; typedef Counter::NodeVectorType NodeVectorType; /** * Construct a CountersTable. */ CountersTable(MemoryManager& theManager, unsigned long theSize = 0) : m_countersVector(theManager), m_newFound(theManager) { resize(theSize); }; ~CountersTable() { } /** * Resize the table. The must be done prior * to using the table, if the size was not past * in the constructor. * * @theSize The new size */ void resize(unsigned long theSize) { m_countersVector.resize(theSize); } /** * Count forward until the given node is found, or until * we have looked to the given amount. * * @executionContext The current execution context; * @numberElem The executing ElemNumber * @node The node to count. * @return The node count, or 0 if not found. */ CountType countNode( StylesheetExecutionContext& executionContext, const ElemNumber& numberElem, XalanNode* node); /** * Clear all cached data from the table. */ void reset() { m_newFound.clear(); m_countersVector.clear(); } private: // not implemented CountersTable(); CountersTable(const CountersTable&); /** * A vector which holds counters for ElemNumber instances. */ ElemCounterVectorVectorType m_countersVector; /** * A vector to use as a temporary buffer. */ NodeVectorType m_newFound; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALAN_COUNTERSTABLE_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XSLT/NamespacesHandler.hpp0000664000175000000640000003226311731656103021121 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_NAMESPACESHANDLER_HEADER_GUARD) #define XALAN_NAMESPACESHANDLER_HEADER_GUARD // Base include file. Must be first. #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class StylesheetConstructionContext; class StylesheetExecutionContext; class XALAN_XSLT_EXPORT NamespacesHandler { public: class PrefixChecker { public: PrefixChecker(); virtual ~PrefixChecker(); virtual bool isActive(const XalanDOMString& thePrefix) const = 0; }; class XALAN_XSLT_EXPORT Namespace { public: Namespace() : m_prefix(&s_emptyString), m_uri(&s_emptyString) { } Namespace( const XalanDOMString& prefix, const XalanDOMString& uri) : m_prefix(&prefix), m_uri(&uri) { } /** * Retrieve the prefix for namespace * * @return prefix string */ const XalanDOMString& getPrefix() const { assert(m_prefix != 0); return *m_prefix; } /** * Set the prefix for namespace * * @param prefix The new prefix value */ void setPrefix(const XalanDOMString& prefix) { m_prefix = &prefix; } /** * Retrieve the URI for namespace * * @return URI string */ const XalanDOMString& getURI() const { assert(m_uri != 0); return *m_uri; } /** * Set the URI for namespace * * @param uri The new uri value */ void setURI(const XalanDOMString& uri) { m_uri = &uri; } protected: static const XalanDOMString s_emptyString; private: const XalanDOMString* m_prefix; const XalanDOMString* m_uri; }; class XALAN_XSLT_EXPORT NamespaceExtended : public Namespace { public: NamespaceExtended() : Namespace(), m_resultAttributeName(&s_emptyString) { } NamespaceExtended( const XalanDOMString& prefix, const XalanDOMString& uri) : Namespace(prefix, uri), m_resultAttributeName(&s_emptyString) { } /** * Retrieve the name of the result attribute. * * @return name string */ const XalanDOMString& getResultAttributeName() const { assert(m_resultAttributeName != 0); return *m_resultAttributeName; } /** * Set the name of the result attribute. * * @param name The new name value */ void setResultAttributeName(const XalanDOMString& name) { m_resultAttributeName = &name; } private: const XalanDOMString* m_resultAttributeName; }; typedef XalanQName::NamespaceVectorType NamespaceVectorType; typedef XalanQName::NamespacesStackType NamespacesStackType; typedef XalanVector NamespacesVectorType; typedef XalanVector NamespaceExtendedVectorType; typedef XalanVector XalanDOMStringPointerVectorType; typedef XalanMap NamespaceAliasesMapType; /** * Create a default, empty instance. */ explicit NamespacesHandler(MemoryManager& theManager); /** * Create an instance namespace handler using the * current namespaces in effect. * * @param theConstructionContext The current construction context. * @param stylesheetNamespacesHandler The stylesheet's handler. * @param theCurrentNamespaces The stack of active namespace declarations. * @param theXSLTNamespaceURI The namespace URI for XSLT. */ NamespacesHandler( StylesheetConstructionContext& theConstructionContext, const NamespacesHandler& stylesheetNamespacesHandler, const NamespacesStackType& theCurrentNamespaces, const XalanDOMString& theXSLTNamespaceURI); ~NamespacesHandler(); /** * Process an exclude-result-prefixes attribute. * * @param theConstructionContext The current construction context. * @param theValue The attribute's value. * @param theCurrentNamespaces The stack of active namespace declarations. */ void processExcludeResultPrefixes( StylesheetConstructionContext& theConstructionContext, const XalanDOMChar* theValue, const NamespacesStackType& theCurrentNamespaces); /** * Process an extension-element-prefixes attribute. * * @param theConstructionContext The current construction context. * @param theValue The attribute's value. * @param theCurrentNamespaces The stack of active namespace declarations. */ void processExtensionElementPrefixes( StylesheetConstructionContext& theConstructionContext, const XalanDOMChar* theValue, const NamespacesStackType& theCurrentNamespaces); /** * Notify the instance that the stylesheet is fully constructed. * * @param theConstructionContext The current construction context. * @param fProcessNamespaceAliases If true, process any namespace aliases * @param theElementName The name of the owning element. * @param parentNamespacesHandler The parent handler, if any. * @param prefixChecker A pointer to a PrefixChecker instance to use, if any. */ void postConstruction( StylesheetConstructionContext& theConstructionContext, bool fProcessNamespaceAliases = true, const XalanDOMString& theElementName = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), const NamespacesHandler* parentNamespacesHandler = 0, const PrefixChecker* prefixChecker = 0); NamespacesHandler& operator=(const NamespacesHandler& theRHS); /** * Determine of a given namespace should be excluded. * * @param theXSLTNamespaceURI The namespace URI for XSLT. * @param theURI The namespace URI. * @return true of the namespace should be excluded, false if not. */ bool shouldExcludeResultNamespaceNode( const XalanDOMString& theXSLTNamespaceURI, const XalanDOMString& theURI) const; /** * Add a URI as an extension namespace prefixes. * * @param theConstructionContext The current construction context. * @param theURI The namespace URI. */ void addExtensionNamespaceURI( StylesheetConstructionContext& theConstructionContext, const XalanDOMString& theURI); /** * Get the namespace URI for the given prefix. * * @param thePrefix The namespace prefix. * @return The namespace URI */ const XalanDOMString* getNamespace(const XalanDOMString& thePrefix) const; /** * Get the namespace alias URI for the given namespace. * * @param theStylesheetNamespace The namespace as declared in the stylesheet. * @return The namespace alias URI */ const XalanDOMString* getNamespaceAlias(const XalanDOMString& theStylesheetNamespace) const; /** * Set the namespace alias URI for the given namespace. * * @param theConstructionContext The current construction context. * @param theStylesheetNamespace The namespace as declared in the stylesheet. * @param theResultNamespace The namespace as it should appear in the result tree. */ void setNamespaceAlias( StylesheetConstructionContext& theConstructionContext, const XalanDOMString& theStylesheetNamespace, const XalanDOMString& theResultNamespace); /** * Copy the aliases from the given NamespacesHandler. * * @param parentNamespacesHandler The parent handler. */ void copyNamespaceAliases(const NamespacesHandler& parentNamespacesHandler); /** * Output the result tree namespace declarations. * * @param theExecutionContext The current execution context. * @param supressDefault If true, any default namespace declaration will not be output. */ void outputResultNamespaces( StylesheetExecutionContext& theExecutionContext, bool supressDefault = false) const; /** * Clear out the handler. */ void clear(); /** * Swap the contents of this instance with another. * * @param theOther The other instance. */ void swap(NamespacesHandler& theOther); NamespaceExtendedVectorType::size_type getNamespaceDeclarationsCount() const { return m_namespaceDeclarations.size(); } private: /** * Create all of the result attribute names. * * @param theConstructionContext The current construction context. */ void createResultAttributeNames(StylesheetConstructionContext& theConstructionContext); /** * Process the exclude result prefix data. * * @param theConstructionContext The current construction context. * @param theElementPrefix The prefix of the owning element. * @param prefixChecker A pointer to a PrefixChecker instance to use, if any. */ void processExcludeResultPrefixes( StylesheetConstructionContext& theConstructionContext, const XalanDOMString& theElementPrefix, const PrefixChecker* prefixChecker); /** * Process the namespace aliases data. */ void processNamespaceAliases(); /** * Copy the contents of the supplied map * * @param theNamespaceAliases The map to copy. */ void copyNamespaceAliases(const NamespaceAliasesMapType& theNamespaceAliases); /** * Copy the contents of the supplied vector * * @param theExtensionNamespaceURIs The set to copy. */ void copyExtensionNamespaceURIs(const XalanDOMStringPointerVectorType& theExtensionNamespaceURIs); /** * Copy the contents of the supplied vector * * @param theExcludeResultPrefixes The vector to copy. */ void copyExcludeResultPrefixes(const NamespacesVectorType& theExcludeResultPrefixes); /** * Determine if a given namespace should be excluded as a result of * an exclude-result-prefixes declaration. * * @param theNamespaceURI The namespace URI to check. * @return true if the namespace should be excluded, false if not. */ bool isExcludedNamespaceURI(const XalanDOMString& theNamespaceURI) const; /** * Determine if a given URI is an extension namespace URI * * @param theNamespaceURI The namespace URI to check. * @return true if the namespace uri is an extension namespace URI, false if not. */ bool isExtensionNamespaceURI(const XalanDOMString& theNamespaceURI) const { return findString(theNamespaceURI, m_extensionNamespaceURIs); } /** * Determine if a given string is present in the vector * * @param theString The string to find. * @return true if the string is present, false if not. */ static bool findString( const XalanDOMString& theString, const XalanDOMStringPointerVectorType& theVector); // Not implemented... bool operator==(const NamespacesHandler&) const; // Data members... NamespacesVectorType m_excludedResultPrefixes; NamespaceExtendedVectorType m_namespaceDeclarations; XalanDOMStringPointerVectorType m_extensionNamespaceURIs; NamespaceAliasesMapType m_namespaceAliases; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_NAMESPACESHANDLER_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/ElemCopy.hpp0000664000175000000640000000447511731656103017265 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMCOPY_HEADER_GUARD) #define XALAN_ELEMCOPY_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemUse.hpp" XALAN_CPP_NAMESPACE_BEGIN class ElemCopy: public ElemUse { public: /** * Construct an object corresponding to an "xsl:copy" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemCopy( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); // These methods are inherited from ElemTemplateElement ... virtual const XalanDOMString& getElementName() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; virtual void endElement(StylesheetExecutionContext& executionContext) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMAPPLYIMPORT_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/ElemChoose.cpp0000664000175000000640000001351011731656103017554 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemChoose.hpp" #include #include #include #include #include "Constants.hpp" #include "ElemWhen.hpp" #include "SelectionEvent.hpp" #include "Stylesheet.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" #include "StylesheetRoot.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemChoose::ElemChoose( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemTemplateElement(constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_CHOOSE) { const XalanSize_t nAttrs = atts.getLength(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (isAttrOK( aname, atts, i, constructionContext) == false && processSpaceAttr( Constants::ELEMNAME_CHOOSE_WITH_PREFIX_STRING.c_str(), aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_CHOOSE_WITH_PREFIX_STRING.c_str(), aname); } } } const XalanDOMString& ElemChoose::getElementName() const { return Constants::ELEMNAME_CHOOSE_WITH_PREFIX_STRING; } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemChoose::startElement(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::startElement(executionContext); XalanNode* sourceNode = executionContext.getCurrentNode(); for (const ElemTemplateElement* node = getFirstChildElem(); node != 0; node = node->getNextSiblingElem()) { const int type = node->getXSLToken(); if (StylesheetConstructionContext::ELEMNAME_WHEN == type) { const XPath* const theXPath = node->getXPath(0); assert(theXPath != 0); bool test; theXPath->execute(*this, executionContext, test); if (0 != executionContext.getTraceListeners()) { executionContext.fireSelectEvent( SelectionEvent(executionContext, sourceNode, *node, Constants::ATTRNAME_TEST, *theXPath, test)); } if(test == true) { return node; } } else { // xsl:otherwise return node; } } return 0; } const ElemTemplateElement* ElemChoose::getNextChildElemToExecute( StylesheetExecutionContext& /*executionContext*/, const ElemTemplateElement* /*currentElem*/) const { return 0; } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemChoose::execute(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::execute(executionContext); XalanNode* sourceNode = executionContext.getCurrentNode(); for (const ElemTemplateElement* node = getFirstChildElem(); node != 0; node = node->getNextSiblingElem()) { const int type = node->getXSLToken(); if(StylesheetConstructionContext::ELEMNAME_WHEN == type) { const XPath* const theXPath = node->getXPath(0); assert(theXPath != 0); bool test; theXPath->execute(*this, executionContext, test); if(0 != executionContext.getTraceListeners()) { executionContext.fireSelectEvent( SelectionEvent(executionContext, sourceNode, *node, Constants::ATTRNAME_TEST, *theXPath, test)); } if(test == true) { node->execute(executionContext); break; } } else { // xsl:otherwise node->execute(executionContext); } } } #endif bool ElemChoose::childTypeAllowed(int xslToken) const { bool fResult = false; switch(xslToken) { // char-instructions case StylesheetConstructionContext::ELEMNAME_WHEN: case StylesheetConstructionContext::ELEMNAME_OTHERWISE: fResult = true; break; default: break; } return fResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemApplyImport.cpp0000664000175000000640000001102011731656103020606 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemApplyImport.hpp" #include #include #include #include #include #include "Constants.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN typedef XPathConstructionContext::GetCachedString GetCachedString; ElemApplyImport::ElemApplyImport( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemTemplateElement(constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_APPLY_IMPORTS) { const XalanSize_t nAttrs = atts.getLength(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (isAttrOK( aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_APPLY_IMPORTS_WITH_PREFIX_STRING.c_str(), aname); } } } const XalanDOMString& ElemApplyImport::getElementName() const { return Constants::ELEMNAME_APPLY_IMPORTS_WITH_PREFIX_STRING; } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemApplyImport::startElement(StylesheetExecutionContext& executionContext) const { if (executionContext.getCurrentTemplate() == 0) { error( executionContext, XalanMessages::NoCurrentTemplate); } ElemTemplateElement::startElement(executionContext); executionContext.pushInvoker(this); executionContext.pushContextMarker(); return findTemplateToTransformChild( executionContext, *this, 0, executionContext.getCurrentNode()); } void ElemApplyImport::endElement(StylesheetExecutionContext& executionContext) const { executionContext.popContextMarker(); executionContext.popInvoker(); ElemTemplateElement::endElement(executionContext); } const ElemTemplateElement* ElemApplyImport::getNextChildElemToExecute( StylesheetExecutionContext& /* execution Context */, const ElemTemplateElement* /* currentElem */) const { return 0; } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemApplyImport::execute(StylesheetExecutionContext& executionContext) const { XalanNode* const sourceNode = executionContext.getCurrentNode(); assert(sourceNode != 0); if (executionContext.getCurrentTemplate() == 0) { XPathExecutionContext::GetCachedString theResult(executionContext); error( executionContext, XalanMessages::NoCurrentTemplate); } ElemTemplateElement::execute(executionContext); const StylesheetExecutionContext::PushAndPopContextMarker thePushPop(executionContext); transformChild( executionContext, *this, 0, sourceNode); } #endif ElemTemplateElement* ElemApplyImport::appendChildElem(ElemTemplateElement* /* newChild */) { throw XalanDOMException(XalanDOMException::HIERARCHY_REQUEST_ERR); return 0; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XalanElemLiteralResultAllocator.cpp0000664000175000000640000000373011731656103023757 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanElemLiteralResultAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanElemLiteralResultAllocator::XalanElemLiteralResultAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanElemLiteralResultAllocator::~XalanElemLiteralResultAllocator() { } XalanElemLiteralResultAllocator::data_type* XalanElemLiteralResultAllocator::create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const XalanDOMChar* name, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type( constructionContext, stylesheetTree, name, atts, lineNumber, columnNumber); m_allocator.commitAllocation(theBlock); return theResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/NodeSorter.cpp0000664000175000000640000002743011731656103017623 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "NodeSorter.hpp" #include #include #include #include #include "StylesheetExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN NodeSorter::NodeSorter(MemoryManager& theManager) : m_numberResultsCache(theManager), m_stringResultsCache(theManager), m_keys(theManager), m_scratchVector(theManager) { } NodeSorter::~NodeSorter() { } void NodeSorter::sort(StylesheetExecutionContext& executionContext) { assert(m_scratchVector.empty() == false); // Make sure the caches are cleared when we're done... const CollectionClearGuard guard1(m_numberResultsCache); const CollectionClearGuard guard2(m_stringResultsCache); NodeSortKeyCompare theComparer( executionContext, *this, m_scratchVector, m_keys); XALAN_USING_STD(stable_sort) // Use the stl sort algorithm, which will use our compare functor, // which returns true if first less than second stable_sort( m_scratchVector.begin(), m_scratchVector.end(), theComparer); } void NodeSorter::sort( StylesheetExecutionContext& executionContext, MutableNodeRefList& theList) { if (m_keys.empty() == false) { const NodeRefListBase::size_type theLength = theList.getLength(); // Copy the nodes to a vector... assert(m_scratchVector.empty() == true); // Make sure the scratch vector is cleared when we're done... CollectionClearGuard guard(m_scratchVector); m_scratchVector.reserve(theLength); NodeRefListBase::size_type i = 0; for (; i < theLength; ++i) { m_scratchVector.push_back(NodeVectorType::value_type(theList.item(i), i)); } // Do the sort... sort(executionContext); assert(m_scratchVector.size() == NodeVectorType::size_type(theLength)); // Copy the nodes back to the list in sorted order. theList.clear(); for (i = 0; i < theLength; ++i) { theList.addNode(m_scratchVector[i].m_node); } assert(theList.getLength() == theLength); } } static inline int doCollationCompare( StylesheetExecutionContext& executionContext, const XalanDOMString& theLHS, const XalanDOMString& theRHS, const XalanDOMString& theLanguage, XalanCollationServices::eCaseOrder theCaseOrder) { if (theLanguage.empty() == true) { return executionContext.collationCompare( theLHS, theRHS, theCaseOrder); } else { return executionContext.collationCompare( theLHS, theRHS, theLanguage, theCaseOrder); } } int NodeSorter::NodeSortKeyCompare::compare( first_argument_type theLHS, second_argument_type theRHS, XalanSize_t theKeyIndex) const { assert(theLHS.m_node != 0 && theRHS.m_node != 0); assert(theKeyIndex < m_nodeSortKeys.size()); int theResult = 0; const NodeSortKey& theKey = m_nodeSortKeys[theKeyIndex]; // Compare as numbers if(theKey.getTreatAsNumbers() == false) { // Compare as strings... const XalanDOMString& theLHSString = getStringResult(theKey, theKeyIndex, theLHS); const XalanDOMString& theRHSString = getStringResult(theKey, theKeyIndex, theRHS); theResult = doCollationCompare( m_executionContext, theLHSString, theRHSString, theKey.getLanguageString(), theKey.getCaseOrder()); } else { const double n1Num = getNumberResult(theKey, theKeyIndex, theLHS); const double n2Num = getNumberResult(theKey, theKeyIndex, theRHS); // Always order NaN before anything else... if (DoubleSupport::isNaN(n1Num) == true) { if (DoubleSupport::isNaN(n2Num) == false) { theResult = -1; } } else if (DoubleSupport::isNaN(n2Num) == true) { theResult = 1; } else if (DoubleSupport::lessThan(n1Num, n2Num) == true) { theResult = -1; } else if (DoubleSupport::greaterThan(n1Num, n2Num) == true) { theResult = 1; } } // If they're not equal, the flip things if the // order is descending... if (theResult != 0) { if (theKey.getDescending() == true) { theResult = -theResult; } } else if(theKeyIndex + 1 < m_nodeSortKeys.size()) { // They're equal, so process the next key, if any... theResult = compare(theLHS, theRHS, theKeyIndex + 1); } return theResult; } inline double getResult( const XPath* theXPath, XalanNode* theNode, const PrefixResolver& thePrefixResolver, XPathExecutionContext& theExecutionContext) { typedef XPathExecutionContext::GetCachedString GetCachedString; if (theXPath == 0) { assert(theNode != 0); const GetCachedString temp(theExecutionContext); DOMServices::getNodeData(*theNode, theExecutionContext, temp.get()); return DoubleSupport::toDouble(temp.get(), theExecutionContext.getMemoryManager()); } else { double theResult; theXPath->execute( theNode, thePrefixResolver, theExecutionContext, theResult); return theResult; } } double NodeSorter::NodeSortKeyCompare::getNumberResult( const NodeSortKey& theKey, XalanSize_t theKeyIndex, first_argument_type theEntry) const { assert(theKey.getPrefixResolver() != 0); const XPath* const xpath = theKey.getSelectPattern(); typedef NodeSorter::NumberResultsCacheType NumberResultsCacheType; NumberResultsCacheType& theCache = m_sorter.m_numberResultsCache; if (theCache.empty() == true) { theCache.resize(m_nodeSortKeys.size()); } // We need a dummy value to indicate that a slot has // never been evaluated. 0 is probably a bad idea, // as is NaN, since that would be fairly common with // values that are not convertible to a number. This // is just a not-so-random number... const double theDummyValue = 135792468.0L; if (theCache[theKeyIndex].empty() == false) { if (DoubleSupport::equal(theCache[theKeyIndex][theEntry.m_position], theDummyValue) == true) { theCache[theKeyIndex][theEntry.m_position] = getResult( xpath, theEntry.m_node, *theKey.getPrefixResolver(), m_executionContext); } } else { theCache[theKeyIndex].resize(m_nodes.size(), 0); XALAN_USING_STD(fill) // Fill with the dummy value... fill( theCache[theKeyIndex].begin(), theCache[theKeyIndex].end(), theDummyValue); theCache[theKeyIndex][theEntry.m_position] = getResult( xpath, theEntry.m_node, *theKey.getPrefixResolver(), m_executionContext); } return theCache[theKeyIndex][theEntry.m_position]; } #if defined(XALAN_NODESORTER_CACHE_XOBJECTS) inline void getResult( const XPath* theXPath, XalanNode* theNode, const PrefixResolver& thePrefixResolver, XPathExecutionContext& theExecutionContext, XObjectPtr& theResult) { if (theXPath == 0) { assert(theNode != 0); theResult = theExecutionContext.getXObjectFactory().createNodeSet(theNode); } else { theResult = theXPath->execute( theNode, thePrefixResolver, theExecutionContext); } } inline bool notCached(const XObjectPtr& theEntry) { return theEntry.null(); } inline bool isCached(const XObjectPtr& theEntry) { return !theEntry.null(); } inline const XalanDOMString& cacheValue(const XObjectPtr& theEntry) { return theEntry->str(); } #else inline void getResult( const XPath* theXPath, XalanNode* theNode, const PrefixResolver& thePrefixResolver, XPathExecutionContext& theExecutionContext, XalanDOMString& theResult) { if (theXPath == 0) { assert(theNode != 0); DOMServices::getNodeData( *theNode, theExecutionContext, theResult); } else { theXPath->execute( theNode, thePrefixResolver, theExecutionContext, theResult); } } inline bool notCached(const XalanDOMString& theEntry) { return theEntry.empty(); } inline bool isCached(const XalanDOMString& /* theEntry */) { return true; } inline const XalanDOMString& cacheValue(const XalanDOMString& theEntry) { return theEntry; } #endif const XalanDOMString& NodeSorter::NodeSortKeyCompare::getStringResult( const NodeSortKey& theKey, XalanSize_t theKeyIndex, first_argument_type theEntry) const { assert(theKey.getPrefixResolver() != 0); const XPath* const xpath = theKey.getSelectPattern(); typedef NodeSorter::StringResultsCacheType StringResultsCacheType; StringResultsCacheType& theCache = m_sorter.m_stringResultsCache; if (theCache.empty() == true) { theCache.resize(m_nodeSortKeys.size()); } if (theCache[theKeyIndex].empty() == false) { if (notCached(theCache[theKeyIndex][theEntry.m_position]) == true) { getResult( xpath, theEntry.m_node, *theKey.getPrefixResolver(), m_executionContext, theCache[theKeyIndex][theEntry.m_position]); } } else { theCache[theKeyIndex].resize(m_nodes.size()); getResult( xpath, theEntry.m_node, *theKey.getPrefixResolver(), m_executionContext, theCache[theKeyIndex][theEntry.m_position]); } assert(isCached(theCache[theKeyIndex][theEntry.m_position]) == true); return cacheValue(theCache[theKeyIndex][theEntry.m_position]); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XalanAVTAllocator.hpp0000664000175000000640000000702011731656103021014 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANAVTALLOCATOR_INCLUDE_GUARD_12455133) #define XALANAVTALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XSLT_EXPORT XalanAVTAllocator { public: typedef AVT data_type; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanAVTAllocator(MemoryManager& theManager, size_type theBlockCount); ~XalanAVTAllocator(); /** * Create an instance. * * @param constructionContext context for construction of AVT * @param locator the Locator for the AVT. May be null. * @param name name of AVT * @param stringedValue string value to parse * @param resolvervresolver for namespace resolution * * @return A pointer to the new instance. */ data_type* create( StylesheetConstructionContext& constructionContext, const Locator* locator, const XalanDOMChar* name, const XalanDOMChar* stringedValue, const PrefixResolver& resolver); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const data_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all objects from the allocator. */ void reset() { m_allocator.reset(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanAVTAllocator(const XalanAVTAllocator&); XalanAVTAllocator& operator=(const XalanAVTAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANAVTALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XSLT/XalanElemEmptyAllocator.cpp0000664000175000000640000000466011731656103022265 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanElemEmptyAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanElemEmptyAllocator::XalanElemEmptyAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanElemEmptyAllocator::~XalanElemEmptyAllocator() { } XalanElemEmptyAllocator::data_type* XalanElemEmptyAllocator::create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, XalanFileLoc lineNumber, XalanFileLoc columnNumber, const XalanDOMString* elementName) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type( constructionContext, stylesheetTree, lineNumber, columnNumber, elementName); m_allocator.commitAllocation(theBlock); return theResult; } XalanElemEmptyAllocator::data_type* XalanElemEmptyAllocator::create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const XalanDOMString* elementName) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type( constructionContext, stylesheetTree, elementName); m_allocator.commitAllocation(theBlock); return theResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XSLTProcessor.cpp0000664000175000000640000000207611731656103020230 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XSLTProcessor.hpp" // Necessary for the static asserts below... #include "xalanc/XPath/XPathEnvSupport.hpp" XALAN_CPP_NAMESPACE_BEGIN XSLTProcessor::XSLTProcessor() : ProblemListenerBase() { } XSLTProcessor::~XSLTProcessor() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemMessage.hpp0000664000175000000640000000634311731656103017733 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMMESSAGE_HEADER_GUARD) #define XALAN_ELEMMESSAGE_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemTemplateElement.hpp" #include "XSLTProcessorException.hpp" XALAN_CPP_NAMESPACE_BEGIN class ElemMessage: public ElemTemplateElement { public: /** * Construct an object corresponding to an "xsl:message" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param name name of element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemMessage( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); // These methods are inherited from ElemTemplateElement ... virtual const XalanDOMString& getElementName() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; virtual void endElement(StylesheetExecutionContext& executionContext) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif class ElemMessageTerminateException : public XSLTProcessorException { public: /** * Construct an ElemMessageTerminateException object * * @param theLocator The Locator to use for line number information, etc. * @param theMessage message to print when exception thrown */ ElemMessageTerminateException( MemoryManager& theManager, const XalanDOMString& theMessage, const Locator* theLocator); virtual ~ElemMessageTerminateException(); virtual const XalanDOMChar* getType() const { return m_type; } private: static const XalanDOMChar m_type[]; }; private: bool m_terminate; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMMESSAGE_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/XalanElemCallTemplateAllocator.cpp0000664000175000000640000000367411731656103023542 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanElemCallTemplateAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanElemCallTemplateAllocator::XalanElemCallTemplateAllocator( MemoryManager& theManager, size_type theBlockCount) : m_allocator( theManager, theBlockCount) { } XalanElemCallTemplateAllocator::~XalanElemCallTemplateAllocator() { } XalanElemCallTemplateAllocator::data_type* XalanElemCallTemplateAllocator::create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type( constructionContext, stylesheetTree, atts, lineNumber, columnNumber); m_allocator.commitAllocation(theBlock); return theResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/OutputContextStack.hpp0000664000175000000640000001225011731656103021371 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_OUTPUTCONTEXTSTACK_HEADER_GUARD) #define XALAN_OUTPUTCONTEXTSTACK_HEADER_GUARD // Base include file. Must be first. #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class FormatterListener; class XALAN_XSLT_EXPORT OutputContextStack { public: struct OutputContext { OutputContext(MemoryManager& theManager, FormatterListener* theListener = 0) : m_flistener(theListener), m_pendingAttributes(theManager), m_pendingElementName(theManager), m_hasPendingStartDocument(false), m_mustFlushPendingStartDocument(false) { } OutputContext( const OutputContext& other, MemoryManager& theManager) : m_flistener(other.m_flistener), m_pendingAttributes(other.m_pendingAttributes , theManager), m_pendingElementName(other.m_pendingElementName , theManager), m_hasPendingStartDocument(other.m_hasPendingStartDocument), m_mustFlushPendingStartDocument(other.m_mustFlushPendingStartDocument) { } ~OutputContext() { } void reset() { m_flistener = 0; m_pendingAttributes.clear(); m_pendingElementName.clear(); m_hasPendingStartDocument = false; m_mustFlushPendingStartDocument = false; } FormatterListener* m_flistener; AttributeListImpl m_pendingAttributes; XalanDOMString m_pendingElementName; bool m_hasPendingStartDocument; bool m_mustFlushPendingStartDocument; }; typedef XalanDeque > OutputContextStackType; typedef OutputContextStackType::size_type size_type; explicit OutputContextStack(MemoryManager& theManager); ~OutputContextStack(); void pushContext(FormatterListener* theListener = 0); void popContext(); FormatterListener* getFormatterListener() const { return (*m_stackPosition).m_flistener; } FormatterListener*& getFormatterListener() { return (*m_stackPosition).m_flistener; } const AttributeListImpl& getPendingAttributes() const { return (*m_stackPosition).m_pendingAttributes; } AttributeListImpl& getPendingAttributes() { return (*m_stackPosition).m_pendingAttributes; } const XalanDOMString& getPendingElementName() const { return (*m_stackPosition).m_pendingElementName; } XalanDOMString& getPendingElementName() { return (*m_stackPosition).m_pendingElementName; } const bool& getHasPendingStartDocument() const { return (*m_stackPosition).m_hasPendingStartDocument; } bool& getHasPendingStartDocument() { return (*m_stackPosition).m_hasPendingStartDocument; } const bool& getMustFlushPendingStartDocument() const { return (*m_stackPosition).m_mustFlushPendingStartDocument; } bool& getMustFlushPendingStartDocument() { return (*m_stackPosition).m_mustFlushPendingStartDocument; } size_type size() const { // Since we always keep one dummy entry at the beginning, // subtract one from the size assert(m_stackSize == size_type(OutputContextStackType::const_iterator(m_stackPosition) - m_stack.begin())); return m_stackSize; } bool empty() const { return size() == 0 ? true : false; } void clear(); void reset(); private: // not implemented OutputContextStack(const OutputContextStack&); bool operator==(const OutputContextStack&) const; OutputContextStack& operator=(const OutputContextStack&); /** * A stack to hold the output contexts... */ OutputContextStackType m_stack; OutputContextStackType::iterator m_stackPosition; size_type m_stackSize; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_RESULTNAMESPACESSTACK_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/KeyDeclaration.hpp0000664000175000000640000000723511731656103020443 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_KEYDECLARATION_HEADER_GUARD) #define XALAN_KEYDECLARATION_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" XALAN_CPP_NAMESPACE_BEGIN #include class XPath; /** * Holds the attribute declarations for the "xsl:key" element. */ class KeyDeclaration { public: /** * Construct an object containing attributes of an "xsl:key" element * * @param qname name of element * @param matchPattern XPath for "match" attribute * @param use XPath for "use" attribute */ KeyDeclaration( const XalanQName& qname, const XPath& matchPattern, const XPath& use, const XalanDOMString& uri, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : m_qname(&qname), m_match(&matchPattern), m_use(&use), m_uri(&uri), m_lineNumber(lineNumber), m_columnNumber(columnNumber) { } explicit KeyDeclaration() : m_qname(0), m_match(0), m_use(0), m_uri(0), m_lineNumber(0), m_columnNumber(0) { } KeyDeclaration(const KeyDeclaration& theSource) : m_qname(theSource.m_qname), m_match(theSource.m_match), m_use(theSource.m_use) { } ~KeyDeclaration() { } /** * Retrieves name of element * * @return name string */ const XalanQName* getQName() const { return m_qname; } /** * Retrieves "use" XPath * * @return XPath for "use" attribute */ const XPath* getUse() const { return m_use; } /** * Retrieves "match" XPath * * @return XPath for "match" attribute */ const XPath* getMatchPattern() const { return m_match; } /** * Retrieves the URI. * * @return A pointer to a URI string. */ const XalanDOMString* getURI() const { return m_uri; } /** * Retrieves the line number where the xsl:key element occurred. * * @return The line number */ XalanFileLoc getLineNumber() const { return m_lineNumber; } /** * Retrieves the column number where the xsl:key element occurred. * * @return The column number */ XalanFileLoc getColumnNumber() const { return m_columnNumber; } private: const XalanQName* m_qname; const XPath* m_match; const XPath* m_use; const XalanDOMString* m_uri; XalanFileLoc m_lineNumber; XalanFileLoc m_columnNumber; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_KEYDECLARATION_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/ElemTextLiteral.cpp0000664000175000000640000000634511731656103020605 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemTextLiteral.hpp" #include #include #include "Constants.hpp" #include "Stylesheet.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemTextLiteral::ElemTextLiteral( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, XalanFileLoc lineNumber, XalanFileLoc columnNumber, const XMLCh* ch, XalanDOMString::size_type start, XalanDOMString::size_type length, bool fPreserveSpace, bool fDisableOutputEscaping) : ElemTemplateElement( constructionContext, stylesheetTree, StylesheetConstructionContext::ELEMNAME_TEXT_LITERAL_RESULT, stylesheetTree.getBaseIdentifier(), lineNumber, columnNumber), m_isWhitespace(isXMLWhitespace(ch, start, length)), // Always null-terminate our buffer, since we may need it that way. m_ch(constructionContext.allocateXalanDOMCharVector(ch + start, length, true)), m_length(length) { disableOutputEscaping(fDisableOutputEscaping); preserveSpace(fPreserveSpace); } ElemTextLiteral::~ElemTextLiteral() { } const XalanDOMString& ElemTextLiteral::getElementName() const { return Constants::ELEMNAME_TEXT_WITH_PREFIX_STRING; } bool ElemTextLiteral::isWhitespace() const { return m_isWhitespace; } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemTextLiteral::startElement(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::startElement(executionContext); if (disableOutputEscaping() == false) { executionContext.characters(m_ch, 0, m_length); } else { executionContext.charactersRaw(m_ch, 0, m_length); } return 0; } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemTextLiteral::execute(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::execute(executionContext); if (disableOutputEscaping() == false) { executionContext.characters(m_ch, 0, m_length); } else { executionContext.charactersRaw(m_ch, 0, m_length); } } #endif XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemAttribute.cpp0000664000175000000640000006665611731656103020322 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemAttribute.hpp" #include #include #include #include #include #include "AVT.hpp" #include "Constants.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN typedef StylesheetExecutionContext::GetCachedString GetCachedString; ElemAttribute::ElemAttribute( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemTemplateElement(constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_ATTRIBUTE), m_nameAVT(0), m_namespaceAVT(0) { const XalanSize_t nAttrs = atts.getLength(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if(equals(aname, Constants::ATTRNAME_NAME)) { m_nameAVT = constructionContext.createAVT(getLocator(), aname, atts.getValue(i), *this); } else if(equals(aname, Constants::ATTRNAME_NAMESPACE)) { m_namespaceAVT = constructionContext.createAVT(getLocator(), aname, atts.getValue(i), *this); } else if(isAttrOK( aname, atts, i, constructionContext) == false && processSpaceAttr( Constants::ELEMNAME_ATTRIBUTE_WITH_PREFIX_STRING.c_str(), aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_ATTRIBUTE_WITH_PREFIX_STRING.c_str(), aname); } } if(0 == m_nameAVT) { XalanDOMString theResult(constructionContext.getMemoryManager()); error( constructionContext, XalanMessages::ElementMustHaveAttribute_2Param, Constants::ELEMNAME_ATTRIBUTE_WITH_PREFIX_STRING, Constants::ATTRNAME_NAME); } } ElemAttribute::~ElemAttribute() { } const XalanDOMString& ElemAttribute::getElementName() const { return Constants::ELEMNAME_ATTRIBUTE_WITH_PREFIX_STRING; } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemAttribute::startElement(StylesheetExecutionContext& executionContext) const { assert(m_nameAVT != 0); ElemTemplateElement::startElement(executionContext); XalanDOMString& attrName = executionContext.getAndPushCachedString(); m_nameAVT->evaluate(attrName, *this, executionContext); if(XalanQName::isValidQName(attrName) == false) { warn( executionContext, XalanMessages::AttributeNameNotValidQName_1Param, attrName); executionContext.pushProcessCurrentAttribute(false); } else { // save original attribute name const GetCachedString origAttrNameGuard(executionContext); XalanDOMString& origAttrName = origAttrNameGuard.get(); origAttrName.assign(attrName); const XalanDOMString::size_type origAttrNameLength = origAttrName.length(); XalanDOMString::size_type indexOfNSSep = 0; const GetCachedString attrNameSpaceGuard(executionContext); XalanDOMString& attrNameSpace = attrNameSpaceGuard.get(); if(0 != m_namespaceAVT) { m_namespaceAVT->evaluate(attrNameSpace, *this, executionContext); indexOfNSSep = indexOf(origAttrName, XalanUnicode::charColon); if (attrNameSpace.empty()) { // If there's no namespace, but the attribute has a // prefix, then we must strip the prefix off. if (indexOfNSSep < origAttrNameLength) { substring(origAttrName, attrName, indexOfNSSep + 1); } // We set this to indicate that there is no prefix any // longer. indexOfNSSep = origAttrNameLength; } else { // See if the namespace already exists. If it does, we'll get the // prefix that was used when it was declared. const XalanDOMString* const prefix = executionContext.getResultPrefixForNamespace(attrNameSpace); // If there is already a prefix for the namespace, and it's length // is not 0, and there is no prefix on the attribute name, or // it's equal to the prefix on the attribute, then go ahead // and use that prefix. if(prefix != 0 && prefix->empty() == false && (indexOfNSSep == origAttrNameLength || equals(prefix->c_str(), attrName.c_str(), indexOfNSSep) == true)) { if(indexOfNSSep < origAttrNameLength) { attrName.reserve(attrName.length() - (indexOfNSSep + 1) + DOMServices::s_XMLNamespaceSeparatorStringLength + prefix->length() + 1); attrName.erase(0, indexOfNSSep + 1); } else { attrName.reserve( attrName.length() + DOMServices::s_XMLNamespaceSeparatorStringLength + prefix->length() + 1); } attrName.insert(0, DOMServices::s_XMLNamespaceSeparatorString); attrName.insert(0, *prefix); } else { const GetCachedString newPrefixGuard(executionContext); XalanDOMString& newPrefix = newPrefixGuard.get(); // If the prefix on the QName is xmlns, we cannot use it. const bool fPrefixIsXMLNS = startsWith(origAttrName, DOMServices::s_XMLNamespaceWithSeparator); // If there's a prefix, and it's not xmlns, then use // the prefix that's provided. if(indexOfNSSep < origAttrNameLength && fPrefixIsXMLNS == false) { substring(origAttrName, newPrefix, 0, indexOfNSSep); // OK, make sure that the prefix provided maps to // the same namespace as the one the user requested, // and see if it's in use... const XalanDOMString* const theNamespace = executionContext.getResultNamespaceForPrefix(newPrefix); if (theNamespace != 0 && equals(*theNamespace, attrNameSpace) == false && executionContext.isPendingResultPrefix(newPrefix) == true) { // It doesn't, so we'll need to manufacture a // prefix. newPrefix.clear(); // Strip the user-supplied prefix from the name... substring(origAttrName, attrName, indexOfNSSep + 1); } } if (newPrefix.empty() == true) { // If there's a prefix, and it's xmlns, then strip it // off... if (fPrefixIsXMLNS == true) { attrName.erase(0, indexOfNSSep + 1); } // Get a new, unique namespace prefix... executionContext.getUniqueNamespaceValue(newPrefix); // Reserve some space in the string. attrName.reserve( attrName.length() + DOMServices::s_XMLNamespaceSeparatorStringLength + newPrefix.length() + 1); attrName.insert(0, DOMServices::s_XMLNamespaceSeparatorString); attrName.insert(0, newPrefix); } // OK, now we have to generate a namespace declaration... const GetCachedString nsDeclGuard(executionContext); XalanDOMString& nsDecl = nsDeclGuard.get(); nsDecl.reserve(DOMServices::s_XMLNamespaceWithSeparatorLength + newPrefix.length() + 1); nsDecl.assign(DOMServices::s_XMLNamespaceWithSeparator); nsDecl.append(newPrefix); // Add the namespace declaration... executionContext.addResultAttribute(nsDecl, attrNameSpace); } } } // Note we are using original attribute name for these tests. else if(executionContext.isElementPending() == true && !equals(origAttrName, DOMServices::s_XMLNamespace)) { // Don't try to create a namespace declaration for anything that // starts with xml: if (startsWith(origAttrName, DOMServices::s_XMLString) == true) { // This just fakes out the test below. It would be better if // we had a better way of testing this... indexOfNSSep = origAttrNameLength; } else { // make sure that if a prefix is specified on the attribute name, it is valid indexOfNSSep = indexOf(origAttrName, XalanUnicode::charColon); if(indexOfNSSep < origAttrNameLength) { const GetCachedString nsprefixGuard(executionContext); XalanDOMString& nsprefix = nsprefixGuard.get(); substring(origAttrName, nsprefix, 0, indexOfNSSep); const XalanDOMString* const theNamespace = getNamespaceForPrefix(nsprefix); if (theNamespace != 0) { attrNameSpace.assign(*theNamespace); const XalanDOMString* const theResultNamespace = executionContext.getResultNamespaceForPrefix(nsprefix); if (theResultNamespace != 0 && *theNamespace != *theResultNamespace) { // Oops! There's a conflict between an existing // result namespace and the attribute's namespace. // To be safe, because we are generating namespace // declaration here, rather than somewhere that // knows more about how that result namespace is // used, let's change the prefix of the attribute. nsprefix.clear(); executionContext.getUniqueNamespaceValue(nsprefix); // Fix the name by removing the original prefix and // inserting the new one. attrName.erase(0, indexOfNSSep); attrName.insert(attrName.begin(), nsprefix.begin(), nsprefix.end()); } } if (attrNameSpace.empty()) { warn( executionContext, XalanMessages::PrefixIsNotDeclared_1Param, nsprefix); } else { // Check to see if there's already a namespace declaration in scope... const XalanDOMString* const prefix = executionContext.getResultPrefixForNamespace(attrNameSpace); if (prefix == 0) { // We need to generate a namespace declaration... const GetCachedString nsDeclGuard(executionContext); XalanDOMString& nsDecl = nsDeclGuard.get(); nsDecl.reserve(DOMServices::s_XMLNamespaceWithSeparatorLength + nsprefix.length() + 1); nsDecl.assign(DOMServices::s_XMLNamespaceWithSeparator); nsDecl.append(nsprefix); // Add the namespace declaration... executionContext.addResultAttribute(nsDecl, attrNameSpace); } } } } } else { warn( executionContext, XalanMessages::AttributesCannotBeAdded); } // If there was no namespace, or the namespace was resolved, process // the result attribute. if (indexOfNSSep == origAttrNameLength || !attrNameSpace.empty()) { executionContext.pushProcessCurrentAttribute(true); executionContext.pushCopyTextNodesOnly(true); XalanDOMString& theResult = executionContext.getAndPushCachedString(); return beginChildrenToString(executionContext,theResult); } else { executionContext.pushProcessCurrentAttribute(false); } } executionContext.getAndPopCachedString(); return 0; } void ElemAttribute::endElement(StylesheetExecutionContext& executionContext) const { if (executionContext.popProcessCurrentAttribute() == true) { endChildrenToString(executionContext); XalanDOMString& theResult = executionContext.getAndPopCachedString(); XalanDOMString& attrName = executionContext.getAndPopCachedString(); executionContext.addResultAttribute(attrName,theResult); executionContext.popCopyTextNodesOnly(); } } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemAttribute::execute(StylesheetExecutionContext& executionContext) const { assert(m_nameAVT != 0); ElemTemplateElement::execute(executionContext); const GetCachedString attrNameGuard(executionContext); XalanDOMString& attrName = attrNameGuard.get(); m_nameAVT->evaluate(attrName, *this, executionContext); if(XalanQName::isValidQName(attrName) == false) { warn( executionContext, XalanMessages::AttributeNameNotValidQName_1Param, attrName); } else { // save original attribute name const GetCachedString origAttrNameGuard(executionContext); XalanDOMString& origAttrName = origAttrNameGuard.get(); assign(origAttrName, attrName); const XalanDOMString::size_type origAttrNameLength = length(origAttrName); XalanDOMString::size_type indexOfNSSep = 0; const GetCachedString attrNameSpaceGuard(executionContext); XalanDOMString& attrNameSpace = attrNameSpaceGuard.get(); if(0 != m_namespaceAVT) { m_namespaceAVT->evaluate(attrNameSpace, *this, executionContext); indexOfNSSep = indexOf(origAttrName, XalanUnicode::charColon); if(attrNameSpace.empty()) { // If there's no namespace, but the attribute has a // prefix, then we must strip the prefix off. if (indexOfNSSep < origAttrNameLength) { substring(origAttrName, attrName, indexOfNSSep + 1); } // We set this to indicate that there is no prefix any // longer. indexOfNSSep = origAttrNameLength; } else { // See if the namespace already exists. If it does, we'll get the // prefix that was used when it was declared. const XalanDOMString* const prefix = executionContext.getResultPrefixForNamespace(attrNameSpace); // If there is already a prefix for the namespace, and it's length // is not 0, and there is no prefix on the attribute name, or // it's equal to the prefix on the attribute, then go ahead // and use that prefix. if(prefix != 0 && length(*prefix) != 0 && (indexOfNSSep == origAttrNameLength || equals(prefix->c_str(), attrName.c_str(), indexOfNSSep) == true)) { if(indexOfNSSep < origAttrNameLength) { reserve( attrName, length(attrName) - (indexOfNSSep + 1) + DOMServices::s_XMLNamespaceSeparatorStringLength + length(*prefix) + 1); attrName.erase(0, indexOfNSSep + 1); } else { reserve( attrName, length(attrName) + DOMServices::s_XMLNamespaceSeparatorStringLength + length(*prefix) + 1); } insert(attrName, 0, DOMServices::s_XMLNamespaceSeparatorString); insert(attrName, 0, *prefix); } else { const GetCachedString newPrefixGuard(executionContext); XalanDOMString& newPrefix = newPrefixGuard.get(); // If the prefix on the QName is xmlns, we cannot use it. const bool fPrefixIsXMLNS = startsWith(origAttrName, DOMServices::s_XMLNamespaceWithSeparator); // If there's a prefix, and it's not xmlns, then use // the prefix that's provided. if(indexOfNSSep < origAttrNameLength && fPrefixIsXMLNS == false) { substring(origAttrName, newPrefix, 0, indexOfNSSep); // OK, make sure that the prefix provided maps to // the same namespace as the one the user requested, // and see if it's in use... const XalanDOMString* const theNamespace = executionContext.getResultNamespaceForPrefix(newPrefix); if (theNamespace != 0 && equals(*theNamespace, attrNameSpace) == false && executionContext.isPendingResultPrefix(newPrefix) == true) { // It doesn't, so we'll need to manufacture a // prefix. clear(newPrefix); // Strip the user-supplied prefix from the name... substring(origAttrName, attrName, indexOfNSSep + 1); } } if (length(newPrefix) == 0) { // If there's a prefix, and it's xmlns, then strip it // off... if (fPrefixIsXMLNS == true) { attrName.erase(0, indexOfNSSep + 1); } // Get a new, unique namespace prefix... executionContext.getUniqueNamespaceValue(newPrefix); // Reserve some space in the string. reserve( attrName, length(attrName) + DOMServices::s_XMLNamespaceSeparatorStringLength + length(newPrefix) + 1); insert(attrName, 0, DOMServices::s_XMLNamespaceSeparatorString); insert(attrName, 0, newPrefix); } // OK, now we have to generate a namespace declaration... const GetCachedString nsDeclGuard(executionContext); XalanDOMString& nsDecl = nsDeclGuard.get(); reserve(nsDecl, DOMServices::s_XMLNamespaceWithSeparatorLength + length(newPrefix) + 1); assign(nsDecl, DOMServices::s_XMLNamespaceWithSeparator); append(nsDecl, newPrefix); // Add the namespace declaration... executionContext.addResultAttribute(nsDecl, attrNameSpace); } } } // Note we are using original attribute name for these tests. else if(executionContext.isElementPending() == true && !equals(origAttrName, DOMServices::s_XMLNamespace)) { // Don't try to create a namespace declaration for anything that // starts with xml: if (startsWith(origAttrName, DOMServices::s_XMLString) == true) { // This just fakes out the test below. It would be better if // we had a better way of testing this... indexOfNSSep = origAttrNameLength; } else { // make sure that if a prefix is specified on the attribute name, it is valid indexOfNSSep = indexOf(origAttrName, XalanUnicode::charColon); if(indexOfNSSep < origAttrNameLength) { const GetCachedString nsprefixGuard(executionContext); XalanDOMString& nsprefix = nsprefixGuard.get(); substring(origAttrName, nsprefix, 0, indexOfNSSep); const XalanDOMString* const theNamespace = getNamespaceForPrefix(nsprefix); if (theNamespace != 0) { assign(attrNameSpace, *theNamespace); const XalanDOMString* const theResultNamespace = executionContext.getResultNamespaceForPrefix(nsprefix); if (theResultNamespace != 0 && *theNamespace != *theResultNamespace) { // Oops! There's a conflict between an existing // result namespace and the attribute's namespace. // To be safe, because we are generating namespace // declaration here, rather than somewhere that // knows more about how that result namespace is // used, let's change the prefix of the attribute. nsprefix.clear(); executionContext.getUniqueNamespaceValue(nsprefix); // Fix the name by removing the original prefix and // inserting the new one. attrName.erase(0, indexOfNSSep); attrName.insert(attrName.begin(), nsprefix.begin(), nsprefix.end()); } } if (attrNameSpace.empty()) { // Could not resolve prefix warn( executionContext, XalanMessages::PrefixIsNotDeclared_1Param, nsprefix); } else { // Check to see if there's already a namespace declaration in scope... const XalanDOMString* const prefix = executionContext.getResultPrefixForNamespace(attrNameSpace); if (prefix == 0) { // We need to generate a namespace declaration... const GetCachedString nsDeclGuard(executionContext); XalanDOMString& nsDecl = nsDeclGuard.get(); reserve(nsDecl, DOMServices::s_XMLNamespaceWithSeparatorLength + length(nsprefix) + 1); assign(nsDecl, DOMServices::s_XMLNamespaceWithSeparator); append(nsDecl, nsprefix); // Add the namespace declaration... executionContext.addResultAttribute(nsDecl, attrNameSpace); } } } } } else { warn( executionContext, XalanMessages::AttributesCannotBeAdded); } // If there was no namespace, or the namespace was resolved, process // the result attribute. if (indexOfNSSep == origAttrNameLength || !attrNameSpace.empty()) { StylesheetExecutionContext::SetAndRestoreCopyTextNodesOnly theSetAndRestore(executionContext, true); childrenToResultAttribute( executionContext, attrName); } } } #endif bool ElemAttribute::childTypeAllowed(int xslToken) const { bool fResult = false; switch(xslToken) { // char-instructions case StylesheetConstructionContext::ELEMNAME_TEXT_LITERAL_RESULT: case StylesheetConstructionContext::ELEMNAME_APPLY_TEMPLATES: case StylesheetConstructionContext::ELEMNAME_APPLY_IMPORTS: case StylesheetConstructionContext::ELEMNAME_CALL_TEMPLATE: case StylesheetConstructionContext::ELEMNAME_FOR_EACH: case StylesheetConstructionContext::ELEMNAME_VALUE_OF: case StylesheetConstructionContext::ELEMNAME_COPY_OF: case StylesheetConstructionContext::ELEMNAME_NUMBER: case StylesheetConstructionContext::ELEMNAME_CHOOSE: case StylesheetConstructionContext::ELEMNAME_IF: case StylesheetConstructionContext::ELEMNAME_TEXT: case StylesheetConstructionContext::ELEMNAME_COPY: case StylesheetConstructionContext::ELEMNAME_VARIABLE: case StylesheetConstructionContext::ELEMNAME_MESSAGE: fResult = true; break; default: break; } return fResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/FunctionFormatNumber.cpp0000664000175000000640000000642211731656103021644 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionFormatNumber.hpp" #include #include XALAN_CPP_NAMESPACE_BEGIN FunctionFormatNumber::FunctionFormatNumber() { } FunctionFormatNumber::~FunctionFormatNumber() { } XObjectPtr FunctionFormatNumber::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const XObjectPtr arg2, const Locator* locator) const { assert(arg1.null() == false && arg2.null() == false); const double theNumber = arg1->num(executionContext); const XalanDOMString& thePattern = arg2->str(executionContext); GetCachedString theString(executionContext); executionContext.formatNumber( theNumber, thePattern, theString.get(), context, locator); return executionContext.getXObjectFactory().createString(theString); } XObjectPtr FunctionFormatNumber::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const XObjectPtr arg2, const XObjectPtr arg3, const Locator* locator) const { assert(arg1.null() == false && arg2.null() == false && arg3.null() == false); const double theNumber = arg1->num(executionContext); const XalanDOMString& thePattern = arg2->str(executionContext); const XalanDOMString& theDFSName = arg3->str(executionContext); assert(theDFSName.empty() == false); GetCachedString theString(executionContext); executionContext.formatNumber( theNumber, thePattern, theDFSName, theString.get(), context, locator); return executionContext.getXObjectFactory().createString(theString); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionFormatNumber* #endif FunctionFormatNumber::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionFormatNumber::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionTakesTwoOrThreeArguments_1Param, "format-number()"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XSLTEngineImpl.hpp0000664000175000000640000013354711731656103020315 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_XSLTENGINEIMPL_HEADER_GUARD) #define XALAN_XSLTENGINEIMPL_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class #include "XSLTProcessor.hpp" // Standard library headers #include #include #if defined(XALAN_AUTO_PTR_REQUIRES_DEFINITION) #include #endif #include #include #include #include #include #include #include #include #include "OutputContextStack.hpp" #include "ProblemListenerDefault.hpp" #include "ResultNamespacesStack.hpp" #include "StylesheetExecutionContext.hpp" #include "XSLTProcessorException.hpp" #include "XalanParamHolder.hpp" XALAN_DECLARE_XERCES_CLASS(InputSource) XALAN_DECLARE_XERCES_CLASS(DocumentHandler) XALAN_CPP_NAMESPACE_BEGIN typedef XERCES_CPP_NAMESPACE_QUALIFIER InputSource InputSourceType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DocumentHandler DocumentHandlerType; XALAN_USING_XERCES(InputSource) XALAN_USING_XERCES(DocumentHandler) // Forward declarations... class DOMSupport; class GenerateEvent; class PrintWriter; class StylesheetConstructionContext; class StylesheetRoot; class XalanAttr; class XalanSourceTreeDocument; class XalanText; class XMLParserLiaison; class XObject; class XPathEnvSupport; class XPathFactory; class XPathProcessor; class XSLTResultTarget; /** * It's the responsibility of the XSLTEngineImpl class, collaborating with the * XML parser liaison, the DOM, and the XPath engine, to transform a source * tree of nodes into a result tree according to instructions and templates * specified by a stylesheet tree. The process method is the primary * public entry points. * * * If you reuse the processor instance, you should call reset() between calls. * */ class XALAN_XSLT_EXPORT XSLTEngineImpl : public XSLTProcessor, public PrefixResolver { public: struct LessXalanDOMStringPointers { bool operator()( const XalanDOMString* theLHS, const XalanDOMString* theRHS) const { if (theLHS == 0 && theRHS != 0) { return true; } else if (theRHS == 0) { return false; } else { return theLHS->compare(*theRHS) < 0 ? true : false; } } }; typedef XalanVector LocatorStack; typedef XalanVector TraceListenerVectorType; typedef XalanVector XalanDOMStringPointerVectorType; typedef XalanVector BoolVectorType; struct FindStringPointerFunctor { FindStringPointerFunctor(const XalanDOMString& theString) : m_string(theString) { } bool operator()(const XalanDOMString* theString) const { assert(theString != 0); return *theString == m_string; } private: const XalanDOMString& m_string; }; typedef XalanMemMgrAutoPtr XPathProcessorPtrType; typedef Function::XObjectArgVectorType XObjectArgVectorType; typedef StylesheetExecutionContext::ParamVectorType ParamVectorType; typedef XPathConstructionContext::GetCachedString CCGetCachedString; typedef XPathExecutionContext::GetCachedString ECGetCachedString; typedef XalanMap ParamMapType; // Public members //--------------------------------------------------------------------- /** * Construct an XSL processor that can call back to a XML processor, so it * can handle included files, and the like. You must create a new instance * of the XSLTEngineImpl class each time you run a transformation. * * @param XMLParserLiaison liaison to an object that can help with a * specific parser implementation * @param xpathEnvSupport An XPathEnvSupport instance * @param domSupport A DOMSupport instance for the DOM being used * @param xobjectFactory object responsible for XObject objects * @param xpathFactory object responsible for XPath objects */ XSLTEngineImpl( MemoryManager& theManager, XMLParserLiaison& parserLiaison, XPathEnvSupport& xpathEnvSupport, DOMSupport& domSupport, XObjectFactory& xobjectFactory, XPathFactory& xpathFactory); virtual ~XSLTEngineImpl(); MemoryManager& getMemoryManager() const { return m_xpathConstructionContext.getMemoryManager(); } MemoryManager& getMemoryManager() { return m_xpathConstructionContext.getMemoryManager(); } /** * Perform initialization of statics -- must be called before any * processing occurs. See class XSLTInit. */ static void initialize(MemoryManager& theManager); /** * Perform termination of statics. See class XSLTInit. */ static void terminate(); // These methods are inherited from XSLTProcessor ... virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode); virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode); virtual void process( const XSLTInputSource& inputSource, const XSLTInputSource& stylesheetSource, XSLTResultTarget& outputTarget, StylesheetConstructionContext& constructionContext, StylesheetExecutionContext& executionContext); virtual void process( const XSLTInputSource& inputSource, XSLTResultTarget& outputTarget, StylesheetExecutionContext& executionContext); virtual StylesheetRoot* processStylesheet( const XSLTInputSource& stylesheetSource, StylesheetConstructionContext& constructionContext); virtual StylesheetRoot* processStylesheet( const XalanDOMString& xsldocURLString, StylesheetConstructionContext& constructionContext); virtual XalanNode* getSourceTreeFromInput(const XSLTInputSource& inputSource); virtual void resolveTopLevelParams(StylesheetExecutionContext& executionContext); virtual XMLParserLiaison& getXMLParserLiaison() const; virtual void getUniqueNamespaceValue(XalanDOMString& theValue); virtual void setStylesheetParam( const XalanDOMString& key, const XalanDOMString& expression); virtual void setStylesheetParam( const XalanDOMString& key, XObjectPtr value); virtual void clearStylesheetParams(); virtual FormatterListener* getFormatterListener() const; virtual void setFormatterListener(FormatterListener* flistener); // Trace-related functions... virtual size_type getTraceListeners() const; virtual void addTraceListener(TraceListener* tl); virtual void removeTraceListener(TraceListener* tl); virtual void fireGenerateEvent(const GenerateEvent& ge); virtual void fireTraceEvent(const TracerEvent& te); virtual void fireSelectEvent(const SelectionEvent& se); virtual bool getTraceSelects() const; virtual void setTraceSelects(bool b); void traceSelect( StylesheetExecutionContext& executionContext, const ElemTemplateElement& theTemplate, const NodeRefListBase& nl, const XPath* xpath) const; virtual void setQuietConflictWarnings(bool b); virtual void setDiagnosticsOutput(PrintWriter* pw); // Inherited from PrefixResolver... /** * Retrieve a namespace corresponding to a prefix. This assumes that * the PrevixResolver hold's its own namespace context, or is a namespace * context itself. * * @param prefix Prefix to resolve * @return namespace that prefix resolves to, or null if prefix is not found */ virtual const XalanDOMString* getNamespaceForPrefix(const XalanDOMString& prefix) const; /** * Retrieve the base URI for the resolver. * * @return URI string */ virtual const XalanDOMString& getURI() const; /** * Read in the XML file, either producing a Document or calling SAX events, * and register the document in a table. If the document has already been * read in, it will not be reparsed. * * @param urlString location of the XML * @param docHandler pointer to SAX event handler * @param docToRegister if using a SAX event handler, the object to register in the source docs table. * @return document object, which represents the parsed XML * @exception SAXException */ XalanDocument* parseXML( const XalanDOMString& urlString, DocumentHandler* docHandler, XalanDocument* docToRegister, ErrorHandler* theErrorHandler = 0); /** * Read in the XML file, either producing a Document or calling SAX events, * and register the document in a table. If the document has already been * read in, it will not be reparsed. * * @param inputSource location of the XML * @param docHandler pointer to SAX event handler * @param docToRegister if using a SAX event handler, the object to register in the source docs table. * @return document object, which represents the parsed XML * @exception SAXException */ XalanDocument* parseXML( const InputSource& inputSource, DocumentHandler* docHandler, XalanDocument* docToRegister, ErrorHandler* theErrorHandler = 0); /** * Reset the state of the XSL processor by reading in a new XSL stylesheet * from a processing instruction. * * @param xslURLString valid URI to an XSL stylesheet * @param fragBase base of tree if URI represents document * fragment * @param xmlBaseIdent base identifier for stylesheet URI * @param isRoot true if stylesheet is root of tree * @param constructionContext context for construction of object * @return pointer to stylesheet */ Stylesheet* getStylesheetFromPIURL( const XalanDOMString& xslURLString, XalanNode& fragBase, const XalanDOMString& xmlBaseIdent, bool isRoot, StylesheetConstructionContext& constructionContext); /** * Flush the pending element. */ void flushPending(); /** * Add a namespace declaration to the namespace stack * * @param prefix namespace prefix * @param namespaceVal value of namespace */ void addResultNamespaceDecl( const XalanDOMString& prefix, const XalanDOMString& namespaceVal) { addResultNamespaceDecl( prefix, namespaceVal.c_str(), namespaceVal.length()); } /** * Add a namespace declaration to the namespace stack * * @param prefix namespace prefix * @param namespaceVal value of namespace * @param len length of namespace */ void addResultNamespaceDecl( const XalanDOMString& prefix, const XalanDOMChar* namespaceVal, size_type len) { m_resultNamespacesStack.addDeclaration( prefix, namespaceVal, len); } /** * Add attribute to attribute list, and if it is a namespace, add it to the * namespaces stack. * * @param attList attribute list added to * @param aname name of attribute * @param value value of attribute * @param fromCopy true if the attribute is being copied from the source tree * @param locator The Locator for reporting errors. */ void addResultAttribute( AttributeListImpl& attList, const XalanDOMString& aname, const XalanDOMString& value, bool fromCopy = false, const Locator* locator = 0) { addResultAttribute( attList, aname, value.c_str(), fromCopy, locator); } /** * Add attribute to attribute list, and if it is a namespace, add it to the * namespaces stack. * * @param attList attribute list added to * @param aname name of attribute * @param value value of attribute * @param fromCopy true if the attribute is being copied from the source tree * @param locator The Locator for reporting errors. */ void addResultAttribute( AttributeListImpl& attList, const XalanDOMString& aname, const XalanDOMChar* value, bool fromCopy = false, const Locator* locator = 0) { addResultAttribute( attList, aname, value, length(value), fromCopy, locator); } /** * Add attribute to attribute list, and if it is a namespace, add it to the * namespaces stack. * * @param attList attribute list added to * @param aname name of attribute * @param value value of attribute * @param theLength The length of the value * @param fromCopy true if the attribute is being copied from the source tree * @param locator The Locator for reporting errors. */ void addResultAttribute( AttributeListImpl& attList, const XalanDOMString& aname, const XalanDOMChar* value, size_type theLength, bool fromCopy = false, const Locator* locator = 0); /** * Add attribute to pending attributes list, and if it is a namespace, add * it to the namespaces stack. * * @param aname name of attribute * @param value value of attribute * @param fromCopy true if the attribute is being copied from the source tree * @param locator The Locator for reporting errors. */ void addResultAttribute( const XalanDOMString& aname, const XalanDOMChar* value, bool fromCopy = false, const Locator* locator = 0) { assert(m_outputContextStack.empty() == false); addResultAttribute( getPendingAttributesImpl(), aname, value, fromCopy, locator); } /** * Add attribute to pending attributes list, and if it is a namespace, add * it to the namespaces stack. * * @param aname name of attribute * @param value value of attribute * @param fromCopy true if the attribute is being copied from the source tree * @param locator The Locator for reporting errors. */ void addResultAttribute( const XalanDOMString& aname, const XalanDOMString& value, bool fromCopy = false, const Locator* locator = 0) { assert(m_outputContextStack.empty() == false); addResultAttribute( getPendingAttributesImpl(), aname, value, fromCopy, locator); } /** * Report an error copying a duplicate namespace node. * * @param theName The name of the node. */ void reportDuplicateNamespaceNodeError( const XalanDOMString& theName, const Locator* locator); void setDocumentLocator(const Locator* locator); void startDocument(); void endDocument(); void startElement( const XalanDOMChar* name, AttributeListType& atts); void endElement(const XalanDOMChar* name); void characters ( const XalanDOMChar* ch, size_type length); void ignorableWhitespace( const XalanDOMChar* ch, size_type length); void processingInstruction( const XalanDOMChar* target, const XalanDOMChar* data); void resetDocument(); /** * Receive notification of character data. * * @param ch pointer to characters from the XML document * @param start startng offset in 'ch' array * @param length number of characters to read from the array */ void characters( const XalanDOMChar* ch, size_type start, size_type length); /** * Send character data from the node to the result tree. * * @param node The node to send. */ void characters(const XalanNode& node); /** * Send character data from an XObject to the result tree. * * @param node The xobject to send. */ void characters(const XObjectPtr& xobject); /** * Receive notification of the beginning of an element with an empty * attribute list * * @param name element type name */ void startElement(const XalanDOMChar* name); /** * Receive notification of character data. If available, when the * disable-output-escaping attribute is used, output raw text without * escaping. * * @param ch pointer to characters from the XML document * @param start start position in the array * @param length number of characters to read from the array */ void charactersRaw( const XalanDOMChar* ch, size_type start, size_type length); /** * Send raw character data from the node to the result tree. * * @param node The node to send. */ void charactersRaw(const XalanNode& node); /** * Send raw character data from an XObject to the result tree. * * @param node The xobject to send. */ void charactersRaw(const XObjectPtr& xobject); /** * Called when a Comment is to be constructed. * * @param data pointer to comment data */ void comment(const XalanDOMChar* data); /** * Receive notification of a entityReference. * * @param data pointer to characters from the XML document * @exception SAXException */ void entityReference(const XalanDOMChar* data); /** * Receive notification of cdata. * * @param ch pointer to characters from the XML document * @param start start position in the array * @param length number of characters to read from the array */ void cdata( const XalanDOMChar* ch, size_type start, size_type length); /** * Clone a node to the result tree * * @param node node to clone * @param cloneTextNodesOnly if true, only text nodes will be cloned * @param locator the Locator for the event, if any. */ void cloneToResultTree( const XalanNode& node, bool cloneTextNodesOnly, const Locator* locator); /** * Clone a node to the result tree * * @param node node to clone * @param nodeType the type of the node * @param overrideStrip false if white space stripping should be done * @param shouldCloneAttributes true if attributes should be cloned * @param cloneTextNodesOnly if true, only text nodes will be cloned * @param locator the Locator for the event, if any. */ void cloneToResultTree( const XalanNode& node, XalanNode::NodeType nodeType, bool overrideStrip, bool shouldCloneAttributes, bool cloneTextNodesOnly, const Locator* locator); /** * Output an object to the result tree by doing the right conversions. * * @param value the XObject to output * @param outputTextNodesOnly if true, only text nodes will be copied * @param locator the Locator for the event, if any. */ void outputToResultTree( const XObject& value, bool outputTextNodesOnly, const Locator* locator); /** * Given a result tree fragment, walk the tree and output it to the result * stream. * * @param theTree result tree fragment * @param outputTextNodesOnly if true, only text nodes will be copied * @param locator the Locator for the event, if any. */ void outputResultTreeFragment( const XObject& theTree, bool outputTextNodesOnly, const Locator* locator) { outputResultTreeFragment( theTree.rtree(), outputTextNodesOnly, locator); } /** * Given a result tree fragment, walk the tree and output it to the result * stream. * * @param theTree result tree fragment * @param outputTextNodesOnly if true, only text nodes will be copied * @param locator the Locator for the event, if any. */ void outputResultTreeFragment( const XalanDocumentFragment& theTree, bool outputTextNodesOnly, const Locator* locator); /** * Retrieve the root stylesheet. * * @return pointer to root stylesheet */ virtual const StylesheetRoot* getStylesheetRoot() const; /** * Set the root stylesheet. * * @param theStylesheet pointer to new root stylesheet */ virtual void setStylesheetRoot(const StylesheetRoot* theStylesheet); /** * Set the execution context. * * @param theExecutionContext pointer to new execution context. */ virtual void setExecutionContext(StylesheetExecutionContext* theExecutionContext); /** * Retrieve the URI for the current XSL namespace, for example, * "http://www.w3.org/1999/XSL/Transform" * * @return URI string */ static const XalanDOMString& getXSLNameSpaceURL() { return s_XSLNameSpaceURL; } /** * Special Xalan namespace for built-in extensions. * * @return Xalan namespace for extensions */ static const XalanDOMString& getXalanXSLNameSpaceURL() { return s_XalanNamespaceURL; } /** * Whether to warn about pattern match conflicts. * * @return true to not warn about pattern match conflicts */ bool getQuietConflictWarnings() const { return m_quietConflictWarnings; } /** * Retrieve the result namespace corresponding to a prefix. * * @param prefix prefix for namespace * @return string for namespace URI */ const XalanDOMString* getResultNamespaceForPrefix(const XalanDOMString& prefix) const; /** * Retrieve the result prefix corresponding to a namespace. * * @param theNamespace namespace for prefix * @return string for namespace prefix */ const XalanDOMString* getResultPrefixForNamespace(const XalanDOMString& theNamespace) const; /** * Determine whether or not a prefix is in use on the pending element or * the pending attributes. * * @param thePrefix prefix for namespace * * @return true if the prefix is in use, false if not. */ bool isPendingResultPrefix(const XalanDOMString& thePrefix) const; /** * Evaluate an xpath string and return the result as a numberic score. * * @param str string to evaluate * @param context context node * @param executionContext current execution context * @return score number, higher representing better match */ double evalMatchPatternStr( const XalanDOMString& str, XalanNode* context, XPathExecutionContext& executionContext); /** * Create and initialize an xpath and return it. * * @param str string for XPath * @param resolver resolver for namespace resolution * @return pointer to XPath created */ const XPath* createMatchPattern( const XalanDOMString& str, const PrefixResolver& resolver); /** * Return the xpath created by createXPath() or * createMatchPattern(). * * @param xpath The XPath to return. */ void returnXPath(const XPath* xpath); /** * Copy XMLNS: attributes in if not already in scope. * * @param src source node */ void copyNamespaceAttributes(const XalanNode& src); /** * Evaluate an xpath string and return the result. * * @param str string to evaluate * @param executionContext current execution context * @return pointer to XObject result */ const XObjectPtr evalXPathStr( const XalanDOMString& str, XPathExecutionContext& executionContext); /** * Evaluate an xpath string and return the result. * * @param str string to evaluate * @param contextNode context node * @param prefixResolver prefix resolver to use * @param executionContext current execution context * @return pointer to XObject result */ const XObjectPtr evalXPathStr( const XalanDOMString& str, XalanNode* contextNode, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext); /** * Evaluate an xpath string and return the result. * * @param str string to evaluate * @param contextNode context node * @param prefixResolver prefix resolver to use * @param executionContext current execution context * @return pointer to XObject result */ const XObjectPtr evalXPathStr( const XalanDOMString& str, XalanNode* contextNode, const XalanElement& prefixResolver, XPathExecutionContext& executionContext); /** * Copy an attribute to an AttributeListImpl. * * @param attrName The name of the attribute * @param attrValue The value of the attribute * @param attrList The attribute list added to */ void copyAttributeToTarget( const XalanDOMString& attrName, const XalanDOMString& attrValue, AttributeListImpl& attrList); /** * Get the factory for making xpaths. * * @return XPath factory object */ XPathFactory& getXPathFactory() { return m_xpathFactory; } /** * Get the XPath processor object. * * @return XPathProcessor interface being used */ XPathProcessor& getXPathProcessor() { return *m_xpathProcessor.get(); } /** * Reset the state. This needs to be called after a process() call * is invoked, if the processor is to be used again. */ virtual void reset(); /** * Retrieve the XPath environment support object * * @return XPath environment support object */ XPathEnvSupport& getXPathEnvSupport() { return m_xpathEnvSupport; } /** * Set the problem listener property. The XSL class can have a single * listener that can be informed of errors and warnings, and can normally * control if an exception is thrown or not (or the problem listeners can * throw their own RuntimeExceptions). * * @param l pointer to ProblemListener interface */ void setProblemListener(ProblemListener* l) { m_problemListener = l; } /** * Get the problem listener property. The XSL class can have a single * listener that can be informed of errors and warnings, and can normally * control if an exception is thrown or not (or the problem listeners can * throw their own RuntimeExceptions). * * @return pointer to ProblemListener interface */ ProblemListener* getProblemListener() const { return m_problemListener; } /* * Push a new output context using the provided FormatterListener. * * @param A pointer to the FormatterListener instance for the new context. */ void pushOutputContext(FormatterListener* theListener) { m_outputContextStack.pushContext(theListener); } /* * Pop the current output context. */ void popOutputContext() { m_outputContextStack.popContext(); } /* * See if there is a pending start document event waiting. * @return true if there is a start document event waiting. */ bool getHasPendingStartDocument() const { return getHasPendingStartDocumentImpl(); } /* * Set the pending start document event state. * @param the new value */ void setHasPendingStartDocument(bool b) { setHasPendingStartDocumentImpl(b); } /* * See if a pending start document event must be flushed. * @return true if the event must be flushed. */ bool getMustFlushPendingStartDocument() const { return getMustFlushPendingStartDocumentImpl(); } /* * Set the pending start document event flush state. * @param the new value */ void setMustFlushPendingStartDocument(bool b) { setMustFlushPendingStartDocumentImpl(b); } /** * Get the list of attributes yet to be processed * * @return attribute list */ const AttributeListType& getPendingAttributes() const { return getPendingAttributesImpl(); } /** * Set the list of attributes yet to be processed * * @param pendingAttributes The attribute list */ void setPendingAttributes(const AttributeListType& pendingAttributes) { getPendingAttributesImpl() = pendingAttributes; } /** * Replace the contents of a pending attribute. * * @param theName name of attribute * @param theNewType type of attribute * @param theNewValue new value of attribute */ void replacePendingAttribute( const XalanDOMChar* theName, const XalanDOMChar* theNewType, const XalanDOMChar* theNewValue) { // Remove the old attribute, then add the new one. AttributeListImpl::addAttribute() // does this for us. getPendingAttributesImpl().addAttribute(theName, theNewType, theNewValue); } bool isElementPending() const { return !getPendingElementNameImpl().empty(); } /** * Retrieve name of the pending element currently being processed. * * @return element name */ const XalanDOMString& getPendingElementName() const { return getPendingElementNameImpl(); } /** * Changes the currently pending element name. * * @param elementName new name of element */ void setPendingElementName(const XalanDOMString& elementName) { setPendingElementNameImpl(elementName); } void setPendingElementName(const XalanDOMChar* elementName) { setPendingElementNameImpl(elementName); } /** * Get the locator from the top of the locator stack. * * @return A pointer to the Locator, or 0 if there is nothing on the stack. */ const Locator* getLocatorFromStack() const { return m_stylesheetLocatorStack.empty() == true ? 0 : m_stylesheetLocatorStack.back(); } /** * Push a locator on to the locator stack. * * @param A pointer to the Locator to push. */ void pushLocatorOnStack(const Locator* locator) { m_stylesheetLocatorStack.push_back(locator); } /** * Pop the locator from the top of the locator stack. */ void popLocatorStack() { if (m_stylesheetLocatorStack.empty() == false) { m_stylesheetLocatorStack.pop_back(); } } protected: /** * Get the list of attributes yet to be processed * * @return attribute list */ const AttributeListImpl& getPendingAttributesImpl() const { return m_outputContextStack.getPendingAttributes(); } /** * Get the list of attributes yet to be processed * * @return attribute list */ AttributeListImpl& getPendingAttributesImpl() { return m_outputContextStack.getPendingAttributes(); } /** * Set the list of attributes yet to be processed * * @param pendingAttributes The attribute list */ void setPendingAttributesImpl(const AttributeListType& pendingAttributes) { getPendingAttributesImpl() = pendingAttributes; } /** * Retrieve name of the pending element currently being processed. * * @return element name */ const XalanDOMString& getPendingElementNameImpl() const { return m_outputContextStack.getPendingElementName(); } /** * Retrieve name of the pending element currently being processed. * * @return element name */ XalanDOMString& getPendingElementNameImpl() { return m_outputContextStack.getPendingElementName(); } /** * Changes the currently pending element name. * * @param elementName new name of element */ void setPendingElementNameImpl(const XalanDOMString& elementName) { m_outputContextStack.getPendingElementName() = elementName; } /** * Changes the currently pending element name. * * @param elementName new name of element */ void setPendingElementNameImpl(const XalanDOMChar* elementName) { assert(elementName != 0); m_outputContextStack.getPendingElementName() = elementName; } /* * See if there is a pending start document event waiting. * @return true if there is a start document event waiting. */ bool getHasPendingStartDocumentImpl() const { return m_outputContextStack.getHasPendingStartDocument(); } /* * Set the pending start document event state. * @param the new value */ void setHasPendingStartDocumentImpl(bool b) { m_outputContextStack.getHasPendingStartDocument() = b; } /* * See if a pending start document event must be flushed. * @return true if the event must be flushed. */ bool getMustFlushPendingStartDocumentImpl() const { return m_outputContextStack.getMustFlushPendingStartDocument(); } /* * Set the pending start document event flush state. * @param the new value */ void setMustFlushPendingStartDocumentImpl(bool b) { m_outputContextStack.getMustFlushPendingStartDocument() = b; } FormatterListener* getFormatterListenerImpl() const { return m_outputContextStack.getFormatterListener(); } void setFormatterListenerImpl(FormatterListener* flistener) { m_outputContextStack.getFormatterListener() = flistener; } /** * The namespace that the result tree conforms to. A null value * indicates that result-ns is not used and there is no checking. * A empty string indicates that the result tree conforms to the * default namespace. */ XalanDOMString m_resultNameSpacePrefix; /** * The URL that belongs to the result namespace. */ XalanDOMString m_resultNameSpaceURL; /** * Copy the attributes from the XSL element to the created * output element. */ void copyAttributesToAttList( const XalanNode& node, AttributeListImpl& attList); // Factory for creating xpaths. XPathFactory& m_xpathFactory; // Factory for creating xobjects XObjectFactory& m_xobjectFactory; // The query/pattern-matcher object. const XPathProcessorPtrType m_xpathProcessor; /** * Stack of Booleans to keep track of if we should be outputting * cdata instead of escaped text. */ BoolVectorType m_cdataStack; private: /** * Issue a warning that only text nodes can be copied. * * @param sourceNode node in source where error occurred * @param locator The Locator to use, if any. */ void warnCopyTextNodesOnly( const XalanNode* sourceNode, const Locator* locator); /** * Clone a text node to the result tree * * @param node node to clone * @param overrideStrip false if white space stripping should be done */ void cloneToResultTree( const XalanText& node, bool overrideStrip); /** * Determine if any pending attributes is a default * namespace. */ bool pendingAttributesHasDefaultNS() const; void addResultNamespace( const XalanDOMString& thePrefix, const XalanDOMString& theName, const XalanNode& theNode, AttributeListImpl& thePendingAttributes, bool fOnlyIfPrefixNotPresent); void addResultNamespace( const XalanNode& theNode, AttributeListImpl& thePendingAttributes, bool fOnlyIfPrefixNotPresent = false); /** * The top of this stack should contain the currently processed * stylesheet SAX locator object. */ LocatorStack m_stylesheetLocatorStack; /** * The XSL class can have a single listener that can be informed * of errors and warnings, and can normally control if an exception * is thrown or not (or the problem listeners can throw their * own RuntimeExceptions). */ ProblemListenerDefault m_defaultProblemListener; ProblemListener* m_problemListener; /** * The root of a linked set of stylesheets. */ const StylesheetRoot* m_stylesheetRoot; /** * The namespace that we must match as a minimum for XSLT. */ static const XalanDOMString& s_XSLNameSpaceURL; //"http://www.w3.org/1999/XSL/Transform" /** * Special Xalan namespace for built-in extensions. */ static const XalanDOMString& s_XalanNamespaceURL; // "http://xml.apache.org/xalan" /** * Prefix to use when generating unique namespaces. */ static const XalanDOMString& s_uniqueNamespacePrefix; /** * If this is set to true, selects will be traced */ bool m_traceSelects; /** * If this is set to true, do not warn about pattern * match conflicts. */ bool m_quietConflictWarnings; /* * A stream to print diagnostics to. */ PrintWriter* m_diagnosticsPrintWriter; /** * List of listeners who are interested in tracing what's * being generated. */ TraceListenerVectorType m_traceListeners; void problem( const XalanDOMString& msg, ProblemListener::eClassification classification, const XalanNode* sourceNode, const ElemTemplateElement* styleNode) const; void problem( const XalanDOMString& msg, ProblemListener::eClassification classification, const Locator& locator, const XalanNode* sourceNode) const; void problem( const XalanDOMString& msg, ProblemListener::eClassification classification) const; //========================================================== // SECTION: Function to do with attribute handling //========================================================== /** * This is used whenever a unique namespace is needed. */ unsigned long m_uniqueNSValue; ParamVectorType m_topLevelParams; public: /** * Reset the vector of top level parameters */ void clearTopLevelParams() { m_topLevelParams.clear(); } private: bool generateCDATASection() const { if (m_hasCDATASectionElements == false) { return false; } else { assert(m_cdataStack.empty() == false); return m_cdataStack.back(); } } void doFlushPending() { setMustFlushPendingStartDocument(true); flushPending(); } /** * Tell if a given element name should output its text * as cdata. * * @param elementName name of element * @return true if it should output as cdata */ bool isCDataResultElem(const XalanDOMString& elementName); void fireCharacterGenerateEvent( const XalanNode& theNode, bool isCDATA); void fireCharacterGenerateEvent( const XObjectPtr& theXObject, bool isCDATA); void fireCharacterGenerateEvent( const XalanDOMString& theString, bool isCDATA); void fireCharacterGenerateEvent( const XalanDOMChar* ch, size_type start, size_type length, bool isCDATA); void checkDefaultNamespace( const XalanDOMString& theElementName, const XalanDOMString& theElementNamespaceURI); void error( const XalanDOMString& theMessage, const Locator* theLocator, const XalanNode* theSourceNode); void warn( const XalanDOMString& theMessage, const Locator* theLocator, const XalanNode* theSourceNode); void message( const XalanDOMString& theMessage, const Locator* theLocator, const XalanNode* theSourceNode); // Data members... XMLParserLiaison& m_parserLiaison; XPathEnvSupport& m_xpathEnvSupport; DOMSupport& m_domSupport; /** * Current execution context... */ StylesheetExecutionContext* m_executionContext; /* * Stack of current output contexts... */ OutputContextStack m_outputContextStack; /* * Stack of current result namespaces... */ XalanNamespacesStack m_resultNamespacesStack; /* * Dummy AttributeListImpl */ AttributeListImpl m_dummyAttributesList; XalanDOMString m_scratchString; XalanDOMStringPointerVectorType m_attributeNamesVisited; bool m_hasCDATASectionElements; XPathConstructionContextDefault m_xpathConstructionContext; ParamMapType m_stylesheetParams; static void installFunctions(MemoryManager& theManager); static void uninstallFunctions(); static const XalanDOMString s_emptyString; static const XalanDOMString& s_stylesheetNodeName; static const XalanDOMString& s_typeString; static const XalanDOMString& s_hrefString; static const XalanDOMString& s_piTokenizerString; static const XalanDOMString& s_typeValueString1; static const XalanDOMString& s_typeValueString2; static const XalanDOMString& s_typeValueString3; static const XalanDOMString& s_typeValueString4; // Not implemented... XSLTEngineImpl(const XSLTEngineImpl&); XSLTEngineImpl& operator=(const XSLTEngineImpl&); bool operator==(const XSLTEngineImpl&) const; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_XSLTENGINEIMPL_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/NodeSortKey.hpp0000664000175000000640000000766211731656103017757 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_NODESORTKEY_HEADER_GUARD) #define XALAN_NODESORTKEY_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // $$$ ToDo: This is necessary while XalanDOMString is a typedef. #include #include XALAN_CPP_NAMESPACE_BEGIN class ExecutionContext; class PrefixResolver; class XPath; /** * Simple data structure class for use by the NodeSorter class. */ class XALAN_XSLT_EXPORT NodeSortKey { public: /** * Construct a node sort key. * * @param executionContext current execution context * @param selectPat XPath for selection * @param treatAsNumbers treat as numeric values if true * @param descending sort in descending order if true * @param caseOrder case sort order enum * @param langValue language * @param resolver resolver for namespace resolution */ NodeSortKey( ExecutionContext& executionContext, const XPath* selectPat, bool treatAsNumbers, bool descending, XalanCollationServices::eCaseOrder caseOrder, const XalanDOMString& langValue, const PrefixResolver& resolver); NodeSortKey(); NodeSortKey(const NodeSortKey& theSource); ~NodeSortKey(); NodeSortKey& operator=(const NodeSortKey& theRHS); /** * Retrieve the selection XPath. * * @return XPath for selection */ const XPath* getSelectPattern() const { return m_selectPat; } /** * Whether to treat values as numbers. * * @return treat as numeric values if true */ bool getTreatAsNumbers() const { return m_treatAsNumbers; } /** * Whether to sort in descending order. * * @return sort in descending order if true */ bool getDescending() const { return m_descending; } /** * Get the enumeration value for the case order. * * @return sort upper case before lower case if true */ XalanCollationServices::eCaseOrder getCaseOrder() const { return m_caseOrder; } /** * Retrieve the resolver for namespaces. * * @return object for namespace resolution */ const PrefixResolver* getPrefixResolver() const { return m_prefixResolver; } const XalanDOMString& getLanguageString() const { return *m_languageString; } private: ExecutionContext* m_executionContext; // needed for error reporting. const XPath* m_selectPat; bool m_treatAsNumbers; bool m_descending; XalanCollationServices::eCaseOrder m_caseOrder; const PrefixResolver* m_prefixResolver; const XalanDOMString* m_languageString; }; XALAN_CPP_NAMESPACE_END #endif xalan-c-1.11/c/src/xalanc/XSLT/ElemPI.cpp0000664000175000000640000001611411731656103016647 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemPI.hpp" #include #include #include #include "AVT.hpp" #include "Constants.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemPI::ElemPI( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemTemplateElement( constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_PI), m_nameAVT(0) { const XalanSize_t nAttrs = atts.getLength(); for(XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (equals(aname, Constants::ATTRNAME_NAME)) { m_nameAVT = constructionContext.createAVT(getLocator(), aname, atts.getValue(i), *this); } else if (isAttrOK( aname, atts, i, constructionContext) == false && processSpaceAttr( Constants::ELEMNAME_PI_WITH_PREFIX_STRING.c_str(), aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_PI_WITH_PREFIX_STRING.c_str(), aname); } } if (0 == m_nameAVT) { error( constructionContext, XalanMessages::ElementMustHaveAttribute_2Param, Constants::ELEMNAME_PI_WITH_PREFIX_STRING, Constants::ATTRNAME_NAME); } } ElemPI::~ElemPI() { } const XalanDOMString& ElemPI::getElementName() const { return Constants::ELEMNAME_PI_WITH_PREFIX_STRING; } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemPI::startElement(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::startElement(executionContext); XalanDOMString& piName = executionContext.getAndPushCachedString(); m_nameAVT->evaluate(piName, *this, executionContext); if (equalsIgnoreCaseASCII( piName, Constants::ATTRVAL_OUTPUT_METHOD_XML) || isValidNCName(piName) == false) { error( executionContext, XalanMessages::PINameInvalid_1Param, piName); } XalanDOMString& theResult = executionContext.getAndPushCachedString(); executionContext.pushCopyTextNodesOnly(true); return beginChildrenToString(executionContext,theResult); } void ElemPI::endElement(StylesheetExecutionContext& executionContext) const { endChildrenToString(executionContext); XalanDOMString& piData = executionContext.getAndPopCachedString(); const XalanDOMString& piName = executionContext.getAndPopCachedString(); XalanDOMString::iterator theEnd = piData.end(); XalanDOMString::iterator theCurrent = piData.begin(); // We need to fix up any occurrences of the sequence '?>' in // the PI's data by inserting a space between them. while (theCurrent != theEnd) { const XalanDOMChar theChar = *theCurrent; if (theChar == XalanUnicode::charQuestionMark) { XalanDOMString::iterator theNext = theCurrent + 1; if (theNext != theEnd && *theNext == XalanUnicode::charGreaterThanSign) { theCurrent = piData.insert( theNext, XalanUnicode::charSpace); theEnd = piData.end(); // Move forward, since we're not interested in // the '>' character. ++theCurrent; } } ++theCurrent; } executionContext.processingInstruction( piName.c_str(), piData.c_str()); executionContext.popCopyTextNodesOnly(); } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemPI::execute(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::execute(executionContext); const StylesheetExecutionContext::GetCachedString theGuard(executionContext); XalanDOMString& piName = theGuard.get(); m_nameAVT->evaluate(piName, *this, executionContext); if (equalsIgnoreCaseASCII( piName, Constants::ATTRVAL_OUTPUT_METHOD_XML) || isValidNCName(piName) == false) { error( executionContext, XalanMessages::PINameInvalid_1Param, piName); } StylesheetExecutionContext::SetAndRestoreCopyTextNodesOnly theSetAndRestore(executionContext, true); childrenToResultPI( executionContext, piName); } #endif bool ElemPI::childTypeAllowed(int xslToken) const { bool fResult = false; switch(xslToken) { // char-instructions case StylesheetConstructionContext::ELEMNAME_TEXT_LITERAL_RESULT: case StylesheetConstructionContext::ELEMNAME_APPLY_TEMPLATES: case StylesheetConstructionContext::ELEMNAME_APPLY_IMPORTS: case StylesheetConstructionContext::ELEMNAME_CALL_TEMPLATE: case StylesheetConstructionContext::ELEMNAME_FOR_EACH: case StylesheetConstructionContext::ELEMNAME_VALUE_OF: case StylesheetConstructionContext::ELEMNAME_COPY_OF: case StylesheetConstructionContext::ELEMNAME_NUMBER: case StylesheetConstructionContext::ELEMNAME_CHOOSE: case StylesheetConstructionContext::ELEMNAME_IF: case StylesheetConstructionContext::ELEMNAME_TEXT: case StylesheetConstructionContext::ELEMNAME_COPY: case StylesheetConstructionContext::ELEMNAME_VARIABLE: case StylesheetConstructionContext::ELEMNAME_MESSAGE: fResult = true; break; default: break; } return fResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemTemplate.cpp0000664000175000000640000001552711731656103020121 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemTemplate.hpp" #include #include #include #include #include #include #include "Constants.hpp" #include "Stylesheet.hpp" #include "StylesheetConstructionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN static const XalanQNameByValue s_empty(XalanMemMgrs::getDummyMemMgr()); ElemTemplate::ElemTemplate( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemTemplateElement( constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_TEMPLATE), m_matchPattern(0), m_name(&s_empty), m_mode(&s_empty), m_priority(XPath::getMatchScoreValue(XPath::eMatchScoreNone)) { const XalanSize_t nAttrs = atts.getLength(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (equals(aname, Constants::ATTRNAME_MATCH)) { m_matchPattern = constructionContext.createMatchPattern(getLocator(), atts.getValue(i), *this); } else if (equals(aname, Constants::ATTRNAME_NAME)) { m_name = constructionContext.createXalanQName( atts.getValue(i), getStylesheet().getNamespaces(), getLocator()); if (m_name->isValid() == false) { error( constructionContext, XalanMessages::AttributeValueNotValidQName_2Param, aname, atts.getValue(i)); } } else if (equals(aname, Constants::ATTRNAME_PRIORITY)) { assert(atts.getValue(i) != 0); m_priority = DoubleSupport::toDouble(atts.getValue(i), constructionContext.getMemoryManager()); } else if (equals(aname, Constants::ATTRNAME_MODE)) { m_mode = constructionContext.createXalanQName( atts.getValue(i), getStylesheet().getNamespaces(), getLocator()); if (m_mode->isValid() == false) { error( constructionContext, XalanMessages::AttributeValueNotValidQName_2Param, aname, atts.getValue(i)); } } else if(isAttrOK( aname, atts, i, constructionContext) == false && processSpaceAttr( Constants::ELEMNAME_TEMPLATE_WITH_PREFIX_STRING.c_str(), aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_TEMPLATE_WITH_PREFIX_STRING.c_str(), aname); } } if (0 == m_matchPattern && m_name->isEmpty() == true) { error( constructionContext, XalanMessages::ElementRequiresEitherNameOrMatchAttribute_1Param, Constants::ELEMNAME_TEMPLATE_WITH_PREFIX_STRING); } assert(m_name->isEmpty() == true || m_name->isValid() == true); assert(m_mode->isEmpty() == true || m_mode->isValid() == true); } ElemTemplate::~ElemTemplate() { } void ElemTemplate::addToStylesheet( StylesheetConstructionContext& constructionContext, Stylesheet& theStylesheet) { theStylesheet.addTemplate(this, constructionContext); } const XalanQName& ElemTemplate::getNameAttribute() const { return *m_name; } const XalanDOMString& ElemTemplate::getElementName() const { return Constants::ELEMNAME_TEMPLATE_WITH_PREFIX_STRING; } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemTemplate::startElement(StylesheetExecutionContext& executionContext) const { ParentType::startElement(executionContext); executionContext.pushCurrentTemplate(this); return beginExecuteChildren(executionContext); } void ElemTemplate::endElement(StylesheetExecutionContext& executionContext) const { executionContext.popCurrentTemplate(); endExecuteChildren(executionContext); } const ElemTemplateElement* ElemTemplate::getInvoker(StylesheetExecutionContext& executionContext) const { return executionContext.getInvoker(); } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemTemplate::execute(StylesheetExecutionContext& executionContext) const { ParentType::execute(executionContext); executeChildren(executionContext); } #endif const XPath* ElemTemplate::getXPath(XalanSize_t index) const { return index == 0 ? m_matchPattern : 0; } bool ElemTemplate::childTypeAllowed(int xslToken) const { bool fResult = true; switch(xslToken) { case StylesheetConstructionContext::ELEMNAME_WITH_PARAM: fResult = false; break; default: break; } return fResult; } #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemTemplate::executeChildren(StylesheetExecutionContext& executionContext) const { StylesheetExecutionContext::PushAndPopCurrentTemplate thePushAndPop(executionContext, this); ParentType::executeChildren(executionContext); } void ElemTemplate::executeChildren( StylesheetExecutionContext& executionContext, XalanNode* sourceNode) const { ParentType::executeChildren(executionContext, sourceNode); } #endif XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/TraceListenerDefault.hpp0000664000175000000640000000704511731656103021615 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_TraceListenerDefault_HEADER_GUARD) #define XALAN_TraceListenerDefault_HEADER_GUARD // Base include file. Must be first. #include // Base class header file... #include #include XALAN_CPP_NAMESPACE_BEGIN class DOMSupport; class ElemTemplateElement; class ExecutionContext; class NodeRefListBase; class PrintWriter; class XPathExecutionContext; class XALAN_XSLT_EXPORT TraceListenerDefault : public TraceListener { public: TraceListenerDefault( PrintWriter& thePrintWriter, MemoryManager& theManager, bool traceTemplates = false, bool traceElements = false, bool traceGeneration = false, bool traceSelection = false); TraceListenerDefault( XPathExecutionContext& theExecutionContext, PrintWriter& thePrintWriter, MemoryManager& theManager, bool traceTemplates = false, bool traceElements = false, bool traceGeneration = false, bool traceSelection = false); virtual ~TraceListenerDefault(); virtual void trace(const TracerEvent& ev); virtual void selected(const SelectionEvent& ev); virtual void generated(const GenerateEvent& ev); bool getTraceTemplates() const { return m_traceTemplates; } void setTraceTemplates(bool b) { m_traceTemplates = b; } bool getTraceElement() const { return m_traceElements; } void setTraceElements(bool b) { m_traceElements = b; } bool getTraceGeneration() const { return m_traceGeneration; } void setTraceGeneration(bool b) { m_traceGeneration = b; } bool getTraceSelection() const { return m_traceSelection; } void setTraceSelection(bool b) { m_traceSelection = b; } private: void processNodeList(const NodeRefListBase& nl); void printNodeInfo(const ElemTemplateElement& node); // Data members... XPathExecutionContext* m_executionContext; PrintWriter& m_printWriter; bool m_traceTemplates; bool m_traceElements; bool m_traceGeneration; bool m_traceSelection; MemoryManager& m_memoryManager; }; XALAN_CPP_NAMESPACE_END #endif //XALAN_TraceListenerDefault_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/XalanMatchPatternDataAllocator.hpp0000664000175000000640000001014111731656103023544 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANMATCHPATTERNDATAALLOCATOR_INCLUDE_GUARD_12455133) #define XALANMATCHPATTERNDATAALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include "xalanc/XSLT/XSLTDefinitions.hpp" #include "xalanc/XSLT/XalanMatchPatternData.hpp" #include "xalanc/PlatformSupport/ArenaAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN class XALAN_XSLT_EXPORT XalanMatchPatternDataAllocator { public: typedef XalanMatchPatternData data_type; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanMatchPatternDataAllocator(MemoryManager& theManager, size_type theBlockCount); ~XalanMatchPatternDataAllocator(); /** * Construct an instance * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document * * @param theTemplate The ElemTemplate node that contains the template for this pattern * @param thePosition The position in the stylesheet * @param theTargetString The target string for match pattern * @param TheMatchPattern The match pattern * @param thePatternString the pattern string * @param thePriority The priority for the match pattern. * * @return A pointer to the new instance. */ data_type* create( const ElemTemplate& theTemplate, data_type::size_type thePosition, const XalanDOMString& theTargetString, const XPath& theMatchPattern, const XalanDOMString& thePatternString, data_type::eMatchScore thePriority); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const data_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all objects from the allocator. */ void reset() { m_allocator.reset(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanMatchPatternDataAllocator(const XalanMatchPatternDataAllocator&); XalanMatchPatternDataAllocator& operator=(const XalanMatchPatternDataAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANMATCHPATTERNDATAALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XSLT/ElemForEach.hpp0000664000175000000640000001643611731656103017662 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMFOREACH_HEADER_GUARD) #define XALAN_ELEMFOREACH_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" #include // Base class header file. #include "ElemTemplateElement.hpp" #include #include #include #include "Constants.hpp" XALAN_CPP_NAMESPACE_BEGIN class ElemSort; class ElemTemplate; class NodeSorter; class XPath; class ElemForEach: public ElemTemplateElement { public: /** * Construct an object corresponding to an "xsl:for-each" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemForEach( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); virtual ~ElemForEach(); typedef XalanVector SortElemsVectorType; // These methods are inherited from ElemTemplateElement ... virtual const XalanDOMString& getElementName() const; virtual void processSortElement( StylesheetConstructionContext& constructionContext, Stylesheet& theStylesheet, const AttributeListType& atts, const Locator* locator = 0); virtual void postConstruction( StylesheetConstructionContext& constructionContext, const NamespacesHandler& theParentHandler); #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; virtual void endElement(StylesheetExecutionContext& executionContext) const; virtual const ElemTemplateElement* getNextChildElemToExecute( StylesheetExecutionContext& executionContext, const ElemTemplateElement* currentElem) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif virtual const XPath* getXPath(XalanSize_t index) const; protected: /** * Construct an object derived from ElemForEach * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param lineNumber line number in document * @param columnNumber column number in document * @param xslToken an integer representing the type of instance. */ ElemForEach( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, XalanFileLoc lineNumber, XalanFileLoc columnNumber, int xslToken); #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) /* * Returns a pointer to a list of the selected nodes. The * nodes are sorted if required. * * @param executionContext context for executing this element * @return pointer to the list of selected (and sorted) nodes */ virtual const NodeRefListBase* createSelectedAndSortedNodeList( StylesheetExecutionContext& executionContext) const; /* * Release any objects used to maintain the last selected * (and sorted) node list to be created * * @param executionContext context for executing this element */ virtual void releaseSelectedAndSortedNodeList( StylesheetExecutionContext& executionContext) const; /* * Sorts a list of nodes * * @param executionContext context for executing this element * @param selectedNodeList list of nodes to be sorted * @param sortedNodeList list for sorted nodes * * @returns pointer to list of sorted nodes */ virtual const NodeRefListBase* sortChildren( StylesheetExecutionContext& executionContext, const NodeRefListBase& selectedNodeList, MutableNodeRefList& sortedNodeList) const; #else /** * Perform a query if needed, and call transformChild for each child. * * @param executionContext The current execution context * @param template The owning template context. * @param sourceNodeContext The current source node context. */ void transformSelectedChildren( StylesheetExecutionContext& executionContext, const ElemTemplateElement* theTemplate) const; /** * Perform a query if needed, and call transformChild for each child. * * @param executionContext The current execution context * @param theTemplate The owning template context. * @param sourceNodes The source nodes to transform. * @param sourceNodesCount The count of source nodes to transform. */ void transformSelectedChildren( StylesheetExecutionContext& executionContext, const ElemTemplateElement* theTemplate, const NodeRefListBase& sourceNodes, NodeRefListBase::size_type sourceNodesCount) const; /** * Perform a query if needed, and call transformChild for each child. * * @param executionContext The current execution context * @param template The owning template context. * @param sorter The NodeSorter instance, if any. * @param selectStackFrameIndex stack frame context for executing the * select statement */ virtual void selectAndSortChildren( StylesheetExecutionContext& executionContext, const ElemTemplateElement* theTemplate, NodeSorter* sorter, int selectStackFrameIndex) const; #endif const XPath* m_selectPattern; private: SortElemsVectorType m_sortElems; SortElemsVectorType::size_type m_sortElemsCount; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMFOREACH_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/Constants.hpp0000664000175000000640000002234511731656103017520 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_CONSTANTS_HEADER_GUARD) #define XALAN_CONSTANTS_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" #include XALAN_CPP_NAMESPACE_BEGIN /** * Primary constants used in the XSLTProcessor classes. */ class XALAN_XSLT_EXPORT Constants { public: /** * Perform initialization of statics -- must be called before any * processing occurs. See class XSLTInit. */ static void initialize(MemoryManager& theManager); /** * Perform termination of statics. See class XSLTInit. */ static void terminate(); /** * Literals for XSL element names. Note that there are more * names than IDs, because some names map to the same ID. */ // Result tree counting static const XalanDOMString& ELEMNAME_ANY_STRING; static const XalanDOMString& ELEMNAME_APPLY_IMPORTS_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_APPLY_TEMPLATES_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_ATTRIBUTESET_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_ATTRIBUTE_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_CALLTEMPLATE_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_CHOOSE_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_COMMENT_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_COPY_OF_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_COPY_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_DECIMALFORMAT_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_ELEMENT_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_FALLBACK_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_FOREACH_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_HTML_STRING; static const XalanDOMString& ELEMNAME_IF_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_IMPORT_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_INCLUDE_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_KEY_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_MESSAGE_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_NUMBER_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_OTHERWISE_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_SORT_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_STRIPSPACE_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_TEMPLATE_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_TEXT_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_PARAM_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_PRESERVESPACE_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_PI_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_VALUEOF_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_VARIABLE_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_WHEN_WITH_PREFIX_STRING; static const XalanDOMString& ELEMNAME_WITHPARAM_WITH_PREFIX_STRING; /*--------------------------------------------- * Literals for XSL attribute names. */ static const XalanDOMString& ATTRNAME_CASEORDER; static const XalanDOMString& ATTRNAME_COUNT; static const XalanDOMString& ATTRNAME_DATATYPE; static const XalanDOMString& ATTRNAME_DECIMALSEPARATOR; static const XalanDOMString& ATTRNAME_DEFAULT; static const XalanDOMString& ATTRNAME_DEFAULTSPACE; static const XalanDOMString& ATTRNAME_DIGIT; static const XalanDOMString& ATTRNAME_DIGITGROUPSEP; static const XalanDOMString& ATTRNAME_ELEMENTS; static const XalanDOMString& ATTRNAME_ESCAPE_URLS; static const XalanDOMString& ATTRNAME_EXCLUDE_RESULT_PREFIXES; static const XalanDOMString& ATTRNAME_EXTENSIONELEMENTPREFIXES; static const XalanDOMString& ATTRNAME_FORMAT; static const XalanDOMString& ATTRNAME_FROM; static const XalanDOMString& ATTRNAME_GROUPINGSEPARATOR; static const XalanDOMString& ATTRNAME_GROUPINGSIZE; static const XalanDOMString& ATTRNAME_HREF; static const XalanDOMString& ATTRNAME_ID; static const XalanDOMString& ATTRNAME_INDENTAMOUNT; static const XalanDOMString& ATTRNAME_INDENTRESULT; static const XalanDOMString& ATTRNAME_INFINITY; static const XalanDOMString& ATTRNAME_LANG; static const XalanDOMString& ATTRNAME_LETTERVALUE; static const XalanDOMString& ATTRNAME_MATCH; static const XalanDOMString& ATTRNAME_MINUSSIGN; static const XalanDOMString& ATTRNAME_MODE; static const XalanDOMString& ATTRNAME_NAME; static const XalanDOMString& ATTRNAME_NAMESPACE; static const XalanDOMString& ATTRNAME_NAN; static const XalanDOMString& ATTRNAME_NDIGITSPERGROUP; static const XalanDOMString& ATTRNAME_OMIT_META_TAG; static const XalanDOMString& ATTRNAME_ORDER; static const XalanDOMString& ATTRNAME_PATTERNSEPARATOR; static const XalanDOMString& ATTRNAME_PERCENT; static const XalanDOMString& ATTRNAME_PERMILLE; static const XalanDOMString& ATTRNAME_PREFIX; static const XalanDOMString& ATTRNAME_PRIORITY; static const XalanDOMString& ATTRNAME_RESULTNS; static const XalanDOMString& ATTRNAME_RESULT_PREFIX; static const XalanDOMString& ATTRNAME_SELECT; static const XalanDOMString& ATTRNAME_STYLESHEET_PREFIX; static const XalanDOMString& ATTRNAME_TERMINATE; static const XalanDOMString& ATTRNAME_TEST; static const XalanDOMString& ATTRNAME_TYPE; static const XalanDOMString& ATTRNAME_USE; static const XalanDOMString& ATTRNAME_USEATTRIBUTESETS; static const XalanDOMString& ATTRNAME_VALUE; static const XalanDOMString& ATTRNAME_VERSION; static const XalanDOMString& ATTRNAME_SPACE; static const XalanDOMString& ATTRNAME_XMLSPACE; static const XalanDOMString& ATTRNAME_ZERODIGIT; static const XalanDOMString& ATTRTYPE_CDATA; // For space-att static const XalanDOMString& ATTRVAL_PRESERVE; static const XalanDOMString& ATTRVAL_STRIP; // For indent-result static const XalanDOMString& ATTRVAL_YES; static const XalanDOMString& ATTRVAL_NO; // Output stuff static const XalanDOMString& ATTRNAME_OUTPUT_METHOD; static const XalanDOMString& ATTRNAME_DISABLE_OUTPUT_ESCAPING; static const XalanDOMString& ATTRNAME_OUTPUT_CDATA_SECTION_ELEMENTS; static const XalanDOMString& ATTRNAME_OUTPUT_DOCTYPE_PUBLIC; static const XalanDOMString& ATTRNAME_OUTPUT_DOCTYPE_SYSTEM; static const XalanDOMString& ATTRNAME_OUTPUT_ENCODING; static const XalanDOMString& ATTRNAME_OUTPUT_INDENT; static const XalanDOMString& ATTRNAME_OUTPUT_MEDIATYPE; static const XalanDOMString& ATTRNAME_OUTPUT_STANDALONE; static const XalanDOMString& ATTRNAME_OUTPUT_VERSION; static const XalanDOMString& ATTRNAME_OUTPUT_OMITXMLDECL; static const XalanDOMString& ATTRVAL_OUTPUT_METHOD_HTML; static const XalanDOMString& ATTRVAL_OUTPUT_METHOD_XML; static const XalanDOMString& ATTRVAL_OUTPUT_METHOD_TEXT; static const XalanDOMString& ATTRVAL_THIS; // Stuff for sorting static const XalanDOMString& ATTRVAL_DATATYPE_TEXT; static const XalanDOMString& ATTRVAL_DATATYPE_NUMBER; static const XalanDOMString& ATTRVAL_ORDER_ASCENDING; static const XalanDOMString& ATTRVAL_ORDER_DESCENDING; static const XalanDOMString& ATTRVAL_CASEORDER_UPPER; static const XalanDOMString& ATTRVAL_CASEORDER_LOWER; // Stuff for xsl:decimal-format... static const XalanDOMString& ATTRVAL_INFINITY; static const XalanDOMString& ATTRVAL_NAN; static const XalanDOMString& ATTRVAL_SIMPLE; // Default whitespace separator string for StringTokenizer. static const XalanDOMString& DEFAULT_WHITESPACE_SEPARATOR_STRING; // Value for default text rule static const XalanDOMString& ATTRVAL_DEFAULT_TEXT_RULE; static const XalanDOMString& ATTRVAL_DEFAULT; // For Stylesheet-prefix and result-prefix in xsl:namespace-alias static const XalanDOMString& ATTRVAL_DEFAULT_PREFIX; // This is used for trace reporting. static const XalanDOMString& PSEUDONAME_NODE; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_CONSTANTS_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/XalanElemElementAllocator.cpp0000664000175000000640000000361011731656103022552 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanElemElementAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanElemElementAllocator::XalanElemElementAllocator( MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanElemElementAllocator::~XalanElemElementAllocator() { } XalanElemElementAllocator::data_type* XalanElemElementAllocator::create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type( constructionContext, stylesheetTree, atts, lineNumber, columnNumber); m_allocator.commitAllocation(theBlock); return theResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XSLTInit.hpp0000664000175000000640000000407511731656103017162 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XSLTINIT_INCLUDE_GUARD_1357924680) #define XSLTINIT_INCLUDE_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XSLT_EXPORT XSLTInit { public: XSLTInit(MemoryManager& theManager); ~XSLTInit(); static XSLTInit* create(MemoryManager& theManager); MemoryManager& getMemoryManager(); private: // Not implemented... XSLTInit(const XSLTInit&); XSLTInit& operator=(const XSLTInit&); static void initialize(MemoryManager& theManager); static void terminate(); const PlatformSupportInit m_platformSupportInit; const DOMSupportInit m_domSupportInit; const XMLSupportInit m_xmlSupportInit; const XalanSourceTreeInit m_xalanSourceTreeInit; const XPathInit m_xpathInit; static unsigned long s_initCounter; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XSLTINIT_INCLUDE_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XSLT/XalanParamHolder.hpp0000664000175000000640000000420111731656103020715 0ustar stevesamba/* * Copyright 1999-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_PARAMHOLDER_HEADER_GUARD) #define XALAN_PARAMHOLDER_HEADER_GUARD // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN XALAN_USING_XERCES(MemoryManager) class XalanParamHolder { public: XalanParamHolder(MemoryManager& theMemoryManager) : m_expression(theMemoryManager), m_value() { } XalanParamHolder( const XalanParamHolder& theRHS, MemoryManager& theMemoryManager) : m_expression(theRHS.m_expression, theMemoryManager), m_value(theRHS.m_value) { } XalanParamHolder( MemoryManager& theMemoryManager, const XalanDOMString& theString) : m_expression(theString, theMemoryManager), m_value() { } XalanParamHolder( MemoryManager& theMemoryManager, XObjectPtr theXObject) : m_expression(theMemoryManager), m_value(theXObject) { } XalanDOMString m_expression; XObjectPtr m_value; private: // These are not implemented... XalanParamHolder(); XalanParamHolder(const XalanParamHolder& theRHS); }; XALAN_USES_MEMORY_MANAGER(XalanParamHolder) XALAN_CPP_NAMESPACE_END #endif // XALAN_PARAMHOLDER_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/TopLevelArg.hpp0000664000175000000640000000706011731656103017725 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_TOPLEVELARG_HEADER_GUARD) #define XALAN_TOPLEVELARG_HEADER_GUARD // Base include file. Must be first. #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XObjectPtr; /** * This class holds an instance of an argument on the stack. */ class XALAN_XSLT_EXPORT TopLevelArg { public: /** * Construct an argument object from a string expression * * @param name name of argument * @param expr expression argument represents */ TopLevelArg( MemoryManager& theManager, const XalanQName& name, const XalanDOMString& expr); static TopLevelArg* create( MemoryManager& theManager, const XalanQName& name, const XalanDOMString& expr); /** * Construct an argument object from an XObject instance. * * @param name name of argument * @param variable the XObject instance. */ TopLevelArg( MemoryManager& theManager, const XalanQName& name, const XObjectPtr variable = XObjectPtr()); static TopLevelArg* create( MemoryManager& theManager, const XalanQName& name, const XObjectPtr variable = XObjectPtr()); /** * Copy constructor * * @param theSource the TopLevelArg to copy. */ TopLevelArg( const TopLevelArg& theSource, MemoryManager& theManager); /** * Destructor */ ~TopLevelArg(); /** * Retrieve object name * * @return qualified name of object */ const XalanQName& getName() const { return m_qname; } /** * Retrieve object's expression * * @return string representation of expression */ const XalanDOMString& getExpression() const { return m_expression; }; /** * Retrieve object's XObject variable. * * @return pointer to the XObject instance */ const XObjectPtr getXObject() const { return m_xobject; } /** * Assignment operator */ TopLevelArg& operator=(const TopLevelArg& theRHS) { if (&theRHS != this) { m_qname = theRHS.m_qname; m_expression = theRHS.m_expression; } return *this; } private: // not implemented TopLevelArg(const TopLevelArg& theSource); XalanQNameByValue m_qname; XalanDOMString m_expression; const XObjectPtr m_xobject; }; XALAN_USES_MEMORY_MANAGER(TopLevelArg) XALAN_CPP_NAMESPACE_END #endif // XALAN_TOPLEVELARG_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/XSLTDefinitions.hpp0000664000175000000640000000243111731656103020524 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XSLTDEFINITIONS_HEADER_GUARD_1357924680) #define XSLTDEFINITIONS_HEADER_GUARD_1357924680 #include #if defined(XALAN_BUILD_DLL) # define XALAN_XSLT_EXPORT XALAN_PLATFORM_EXPORT # define XALAN_XSLT_EXPORT_FUNCTION(T) XALAN_PLATFORM_EXPORT_FUNCTION(T) #else # define XALAN_XSLT_EXPORT XALAN_PLATFORM_IMPORT # define XALAN_XSLT_EXPORT_FUNCTION(T) XALAN_PLATFORM_IMPORT_FUNCTION(T) #endif #endif // XSLTDEFINITIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XSLT/XalanElemAttributeAllocator.cpp0000664000175000000640000000362611731656103023133 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanElemAttributeAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanElemAttributeAllocator::XalanElemAttributeAllocator( MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanElemAttributeAllocator::~XalanElemAttributeAllocator() { } XalanElemAttributeAllocator::data_type* XalanElemAttributeAllocator::create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type( constructionContext, stylesheetTree, atts, lineNumber, columnNumber); m_allocator.commitAllocation(theBlock); return theResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/StylesheetHandler.hpp0000664000175000000640000005675111731656103021203 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_STYLESHEETHANDLER_HEADER_GUARD) #define XALAN_STYLESHEETHANDLER_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" #include #include #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class ElemTemplate; class ElemTemplateElement; class ElemTextLiteral; class ExtensionNSHandler; class StylesheetConstructionContext; /** * This class processes a stylesheet via SAX events, and inits * the given stylesheet. If you need to alter the code in here, * it is not for the faint-of-heart, due to the state tracking * that has to be done due to the SAX event model. */ class XALAN_XSLT_EXPORT StylesheetHandler : public FormatterListener { public: typedef XalanVector ElemTemplateStackType; typedef XalanVector ElemTextLiteralStackType; typedef XalanVector BoolStackType; typedef XalanSet QNameSetType; typedef XalanVector > QNameSetVectorType; /** * Perform static initialization. See class XMLSupportInit. */ static void initialize(MemoryManager& theManager); /** * Perform static shut down. See class XMLSupportInit. */ static void terminate(); /** * Construct a StylesheetHandler ... it will add the DOM nodes * to the document fragment. */ StylesheetHandler( Stylesheet& stylesheetTree, StylesheetConstructionContext& constructionContext); MemoryManager& getMemoryManager() { return m_constructionContext.getMemoryManager(); } virtual ~StylesheetHandler(); /** * Receive notification of character data. * *

    The Parser will call this method to report each chunk of * character data. SAX parsers may return all contiguous character * data in a single chunk, or they may split it into several * chunks; however, all of the characters in any single event * must come from the same external entity, so that the Locator * provides useful information.

    * *

    The application must not attempt to read from the array * outside of the specified range.

    * *

    Note that some parsers will report whitespace using the * ignorableWhitespace() method rather than this one (validating * parsers must do so).

    * * @param chars pointer to characters from the XML document * @param length number of characters to read from the array * @exception SAXException * @see #ignorableWhitespace * @see org.xml.sax.Locator */ virtual void characters( const XMLCh* const chars, const size_type length); /** * Receive notification of character data. If available, when the * disable-output-escaping attribute is used, output raw text without * escaping. * * @param ch pointer to characters from the XML document * @param start start position in the array * @param length number of characters to read from the array * @exception SAXException */ virtual void charactersRaw( const XMLCh* const chars, const size_type length); /** * Receive notification of cdata. * *

    The Parser will call this method to report each chunk of * character data. SAX parsers may return all contiguous character * data in a single chunk, or they may split it into several * chunks; however, all of the characters in any single event * must come from the same external entity, so that the Locator * provides useful information.

    * *

    The application must not attempt to read from the array * outside of the specified range.

    * *

    Note that some parsers will report whitespace using the * ignorableWhitespace() method rather than this one (validating * parsers must do so).

    * * @param ch pointer to characters from the XML document * @param start start position in the array * @param length number of characters to read from the array * @exception SAXException * @see #ignorableWhitespace */ virtual void cdata( const XMLCh* const ch, const size_type length); /** * Receive notification of ignorable whitespace in element content. * *

    Validating Parsers must use this method to report each chunk * of ignorable whitespace (see the W3C XML 1.0 recommendation, * section 2.10): non-validating parsers may also use this method * if they are capable of parsing and using content models.

    * *

    SAX parsers may return all contiguous whitespace in a single * chunk, or they may split it into several chunks; however, all of * the characters in any single event must come from the same * external entity, so that the Locator provides useful * information.

    * *

    The application must not attempt to read from the array * outside of the specified range.

    * * @param chars characters from the XML document * @param start start position in the array * @param length number of characters to read from the array * @exception SAXException * @see #characters */ virtual void ignorableWhitespace( const XMLCh* const chars, const size_type length); /** * Receive notification of a processing instruction. * *

    The Parser will invoke this method once for each processing * instruction found: note that processing instructions may occur * before or after the main document element.

    * *

    A SAX parser should never report an XML declaration (XML 1.0, * section 2.8) or a text declaration (XML 1.0, section 4.3.1) * using this method.

    * * @param target pointer to processing instruction target * @param data pointer to processing instruction data, or null if none * was supplied * @exception SAXException */ virtual void processingInstruction (const XMLCh* const target, const XMLCh* const data); /** * Called when a Comment is to be constructed. * * @param data comment data * @exception SAXException */ virtual void comment(const XMLCh* const data); /** * Receive notification of a entityReference. * * @param data pointer to characters from the XML document * @exception SAXException */ virtual void entityReference(const XMLCh* const data); // These methods are inherited DocumentHandler ... // $$$ Theoretically, shouldn't need javadoc for these, since they are // inherited from DocumentHandler, but let's leave them in for now -- JMD /** * Receive an object for locating the origin of SAX document events. * *

    SAX parsers are strongly encouraged (though not absolutely * required) to supply a locator: if it does so, it must supply * the locator to the application by invoking this method before * invoking any of the other methods in the DocumentHandler * interface.

    * *

    The locator allows the application to determine the end * position of any document-related event, even if the parser is * not reporting an error. Typically, the application will * use this information for reporting its own errors (such as * character content that does not match an application's * business rules). The information returned by the locator * is probably not sufficient for use with a search engine.

    * *

    Note that the locator will return correct information only * during the invocation of the events in this interface. The * application should not attempt to use it at any other time.

    * * @param locator object that can return the location of * any SAX document event. * @see org.xml.sax.Locator */ virtual void setDocumentLocator(const Locator* const locator); /** * Receive notification of the beginning of a document. * *

    The SAX parser will invoke this method only once, before any * other methods in this interface or in DTDHandler (except for * setDocumentLocator).

    * * @exception SAXException */ virtual void startDocument(); /** * Receive notification of the end of a document. * *

    The SAX parser will invoke this method only once, and it will * be the last method invoked during the parse. The parser shall * not invoke this method until it has either abandoned parsing * (because of an unrecoverable error) or reached the end of * input.

    * * @exception SAXException */ virtual void endDocument(); /** * Receive notification of the beginning of an element. * *

    The Parser will invoke this method at the beginning of every * element in the XML document; there will be a corresponding * endElement() event for every startElement() event (even when the * element is empty). All of the element's content will be * reported, in order, before the corresponding endElement() * event.

    * *

    If the element name has a namespace prefix, the prefix will * still be attached. Note that the attribute list provided will * contain only attributes with explicit values (specified or * defaulted): #IMPLIED attributes will be omitted.

    * * @param name element type name * @param atts attributes attached to the element, if any * @exception SAXException * @see #endElement * @see org.xml.sax.AttributeList */ virtual void startElement(const XMLCh* const name, AttributeListType& attrs); /** * Receive notification of the end of an element. * *

    The SAX parser will invoke this method at the end of every * element in the XML document; there will be a corresponding * startElement() event for every endElement() event (even when the * element is empty).

    * *

    If the element name has a namespace prefix, the prefix will * still be attached to the name.

    * * @param name element type name * @exception SAXException */ virtual void endElement(const XMLCh* const name); /** * This method allows the user installed Document Handler to 'reset' * itself, freeing all the memory resources. The scanner calls this * method before starting a new parse event. */ virtual void resetDocument(); protected: /** * See if this is a xmlns attribute, and, if so, process it. * * @param attrName Qualified name of attribute. * @param atts The attribute list where the element comes from (not used at * this time). * @param which The index into the attribute list (not used at this time). * @return True if this is a namespace name. */ bool isAttrOK( const XalanDOMChar* attrName, const AttributeListType& atts, XalanSize_t which); /** * Tell whether or not this is a xml:space attribute and, if so, process it. * * @param elementName The name of the element that owns the attribute * @param aname The name of the attribute in question. * @param atts The attribute list that owns the attribute. * @param which The index of the attribute into the attribute list. * @param locator A Locator instance for error reporting. * @param fPreserve set to true if the attribute value is "preserve" * @return True if this is a xml:space attribute. */ bool processSpaceAttr( const XalanDOMChar* elementName, const XalanDOMChar* aname, const AttributeListType& atts, XalanSize_t which, const Locator* locator, bool& fPreserve); /** * Tell whether or not this is a xml:space attribute and, if so, process it. * * @param elementName The name of the element that owns the attributes * @param atts The attribute list that owns the attribute. * @param locator A Locator instance for error reporting. * @param fPreserve set to true if an xml:space attribute value is "preserve" * @return True if this is a xml:space attribute. */ bool processSpaceAttr( const XalanDOMChar* elementName, const AttributeListType& atts, const Locator* locator, bool& fPreserve); /** * Process xsl:import. */ void processImport( const XalanDOMChar* name, const AttributeListType& atts, const Locator* locator); /** * Process xsl:include. */ void processInclude( const XalanDOMChar* name, const AttributeListType& atts, const Locator* locator); void doCleanup(); private: enum { eElemEmptyAllocatorBlockSize = 10, eElemTextBlockSize = 10 }; // not implemented StylesheetHandler(const StylesheetHandler&); StylesheetHandler& operator=(const StylesheetHandler&); // Utility functions... void illegalAttributeError( const XalanDOMChar* theElementName, const XalanDOMChar* theAttributeName, const Locator* theLocator) const; void error( const XalanDOMChar* theMessage1, const XalanDOMChar* theMessage2, const Locator* theLocator) const; void error( const XalanDOMChar* theMessage1, const XalanDOMString& theMessage2, const Locator* theLocator) const; void error( const XalanDOMString& theMessage1, const XalanDOMChar* theMessage2, const Locator* theLocator) const; void error( const XalanDOMString& theMessage1, const XalanDOMString& theMessage2, const Locator* theLocator) const; void warn( const XalanDOMChar* theMessage1, const XalanDOMChar* theMessage2, const Locator* theLocator) const; void warn( const XalanDOMChar* theMessage1, const XalanDOMString& theMessage2, const Locator* theLocator) const; void warn( const XalanDOMString& theMessage, const Locator* theLocator) const; void error( const XalanDOMString& theMessage, const Locator* theLocator) const; void processText( const XMLCh* chars, size_type length); void accumulateText( const XMLCh* chars, size_type length); void processAccumulatedText(); void processTopLevelElement( const XalanDOMChar* name, const AttributeListType& atts, int xslToken, const Locator* locator, bool& fPreserveSpace, bool& fSpaceAttrProcessed); void processStylesheet( const XalanDOMChar* name, const AttributeListType& atts, const Locator* locator, bool& fPreserveSpace, bool& fSpaceAttrProcessed); void processPreserveStripSpace( const XalanDOMChar* name, const AttributeListType& atts, const Locator* locator, int xslToken); void appendChildElementToParent( ElemTemplateElement* elem, const Locator* locator); void appendChildElementToParent( ElemTemplateElement* parent, ElemTemplateElement* elem); void appendChildElementToParent( ElemTemplateElement* parent, ElemTemplateElement* elem, const Locator* locator); bool inExtensionElement() const; void processExtensionElement( const XalanDOMChar* name, const XalanDOMString& localName, const AttributeListType& atts, const Locator* locator); void checkForOrAddVariableName( const XalanQName& theVariableName, const Locator* theLocator); // Data members... /** * The owning stylesheet. */ Stylesheet& m_stylesheet; /** * The construction context. */ StylesheetConstructionContext& m_constructionContext; /** * An allocator for ElemEmpty instances. */ XalanElemEmptyAllocator m_elemEmptyAllocator; /** * An allocator for ElemText instances. */ XalanElemTextAllocator m_elemTextAllocator; /** * The stack of elements, pushed and popped as events occur. */ ElemTemplateStackType m_elemStack; /** * Need to keep a stack of found whitespace elements so that * whitespace elements next to non-whitespace elements can * be merged. For instance: <out> <![CDATA[test]]> </out> */ ElemTextLiteralStackType m_whiteSpaceElems; /** * The current template. */ ElemTemplateElement* m_pTemplate; class LastPoppedHolder { public: LastPoppedHolder(StylesheetHandler& theStylesheetHandler) : m_stylesheetHandler(theStylesheetHandler), m_lastPopped(0) { } ~LastPoppedHolder() { cleanup(); } ElemTemplateElement* operator->() const { return m_lastPopped; } bool operator==(ElemTemplateElement* theRHS) { return m_lastPopped == theRHS; } bool operator!=(ElemTemplateElement* theRHS) { return m_lastPopped != theRHS; } void operator=(ElemTemplateElement* theRHS) { if (theRHS != m_lastPopped) { cleanup(); m_lastPopped = theRHS; } } void swap(LastPoppedHolder& theOther) { ElemTemplateElement* const theTemp = m_lastPopped; m_lastPopped = theOther.m_lastPopped; theOther.m_lastPopped = theTemp; } ElemTemplateElement* get() const { return m_lastPopped; } private: void set(ElemTemplateElement* theNewElement) { if (theNewElement != m_lastPopped) { cleanup(); m_lastPopped = theNewElement; } } // Not implemented... LastPoppedHolder& operator=(const LastPoppedHolder&); LastPoppedHolder(const LastPoppedHolder&); // Helper functions... void cleanup(); // Data members... StylesheetHandler& m_stylesheetHandler; ElemTemplateElement* m_lastPopped; }; friend class LastPoppedHolder; /** * Manages the last element popped from the stack. */ LastPoppedHolder m_lastPopped; /** * True if the process is in a template context. */ bool m_inTemplate; /** * True if the stylesheet element was found, or if it was determined that * the stylesheet is wrapperless. */ bool m_foundStylesheet; /** * Flag to let us know when we've found an element inside the * stylesheet that is not an xsl:import, so we can restrict imports * to being the first elements. */ bool m_foundNotImport; XalanDOMString m_elementLocalName; /** * Accumulate character buffer to create contiguous character data * where possible. */ XalanDOMString m_accumulateText; XalanDOMString m_includeBase; BoolStackType m_inExtensionElementStack; BoolStackType m_preserveSpaceStack; // Note that these variables must not be saved by // PushPopIncludeState... unsigned long m_locatorsPushed; QNameSetType m_globalVariableNames; enum { eVariablesStackDefault = 20 }; QNameSetVectorType m_inScopeVariableNamesStack; /** * Init the wrapperless template */ ElemTemplateElement* initWrapperless( const XalanDOMChar* name, const AttributeListType& atts, const Locator* locator); const XalanDOMString* getNamespaceFromStack(const XalanDOMChar* theName, XalanDOMString& theBuffer) const; const XalanDOMString* getNamespaceForPrefixFromStack(const XalanDOMString& thePrefix) const; class PushPopIncludeState; friend class StylesheetHandler::PushPopIncludeState; class PushPopIncludeState { public: PushPopIncludeState(StylesheetHandler& theHandler); ~PushPopIncludeState(); private: StylesheetHandler& m_handler; ElemTemplateStackType m_elemStack; ElemTemplateElement* const m_pTemplate; LastPoppedHolder m_lastPopped; const bool m_inTemplate; const bool m_foundStylesheet; const XalanDOMString m_XSLNameSpaceURL; const bool m_foundNotImport; Stylesheet::NamespaceVectorType m_namespaceDecls; Stylesheet::NamespacesStackType m_namespaces; NamespacesHandler m_namespacesHandler; BoolStackType m_inExtensionElementStack; BoolStackType m_preserveSpaceStack; }; static const XalanDOMString s_emptyString; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_STYLESHEETHANDLER_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/XResultTreeFragAllocator.hpp0000664000175000000640000000667011731656103022436 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XRESULTTREEFRAGALLOCATOR_INCLUDE_GUARD_12455133) #define XRESULTTREEFRAGALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XSLT_EXPORT XResultTreeFragAllocator { public: typedef XResultTreeFrag data_type; typedef ReusableArenaAllocator ArenaAllocatorType; typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XResultTreeFragAllocator(MemoryManager& theManager, size_type theBlockCount); ~XResultTreeFragAllocator(); /** * Create an XResultTreeFrag object. * * @param theValue source value * * @return pointer to a node */ data_type* create(XalanDocumentFragment& theValue); /** * Create an XResultTreeFrag object. * * @param theSource source XResultTreeFrag * * @return pointer to a node */ data_type* create(const data_type& theSource); /** * Clone an XResultTreeFrag object. * * @param theSource source XResultTreeFrag * * @return pointer to an XResultTreeFrag */ data_type* clone(const XResultTreeFrag& theSource); /** * Delete an XResultTreeFrag object from allocator. */ bool destroy(data_type* theObject); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const data_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all XResultTreeFrag objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XResultTreeFragAllocator(const XResultTreeFragAllocator&); XResultTreeFragAllocator& operator=(const XResultTreeFragAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XRESULTTREEFRAGALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XSLT/FunctionKey.cpp0000664000175000000640000001261711731656103017776 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionKey.hpp" #include #include #include #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN FunctionKey::FunctionKey() { } FunctionKey::~FunctionKey() { } inline void getNodeSet( XPathExecutionContext& executionContext, XalanNode* context, const XalanDOMString& keyname, const XalanDOMString& ref, const Locator* locator, MutableNodeRefList& theNodeRefList) { assert(context != 0); if (indexOf(keyname, XalanUnicode::charColon) < keyname.length()) { executionContext.getNodeSetByKey( context, keyname, ref, locator, theNodeRefList); } else { const XalanQNameByReference theQName(keyname); executionContext.getNodeSetByKey( context, theQName, ref, locator, theNodeRefList); } } XObjectPtr FunctionKey::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const XObjectPtr arg2, const Locator* locator) const { assert(arg1.null() == false && arg2.null() == false); if (context == 0) { const GetCachedString theGuard(executionContext); executionContext.problem( XPathExecutionContext::eXPath, XPathExecutionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::FunctionRequiresNonNullContextNode_1Param, "key()"), locator, context); return XObjectPtr(); } else { assert(executionContext.getPrefixResolver() != 0); const XalanDOMString& keyname = arg1->str(executionContext); assert(arg2.null() == false); // This list will hold the nodes... GetCachedNodeList theNodeRefList(executionContext); if (arg2->getType() != XObject::eTypeNodeSet) { getNodeSet( executionContext, context, keyname, arg2->str(executionContext), locator, *theNodeRefList.get()); } else { const NodeRefListBase& theNodeSet = arg2->nodeset(); const NodeRefListBase::size_type nRefs = theNodeSet.getLength(); if (nRefs == 1) { getNodeSet( executionContext, context, keyname, arg2->str(executionContext), locator, *theNodeRefList.get()); } else if (nRefs > 1) { const GetCachedString theResult(executionContext); XalanDOMString& ref = theResult.get(); for(NodeRefListBase::size_type i = 0; i < nRefs; i++) { assert(theNodeSet.item(i) != 0); DOMServices::getNodeData(*theNodeSet.item(i), executionContext, ref); if (0 != ref.length()) { getNodeSet( executionContext, context, keyname, ref, locator, *theNodeRefList.get()); } ref.clear(); } } } return executionContext.getXObjectFactory().createNodeSet(theNodeRefList); } } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionKey* #endif FunctionKey::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } const XalanDOMString& FunctionKey::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionTakesTwoArguments_1Param, "key()"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XalanElemTextLiteralAllocator.hpp0000664000175000000640000001040711731656103023431 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANELEMTEXTLITERALALLOCATOR_INCLUDE_GUARD_12455133) #define XALANELEMTEXTLITERALALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XSLT_EXPORT XalanElemTextLiteralAllocator { public: typedef ElemTextLiteral data_type; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanElemTextLiteralAllocator( MemoryManager& theManager, size_type theBlockCount); ~XalanElemTextLiteralAllocator(); /** * Construct an instance * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param lineNumber line number in document * @param columnNumber column number in document * @param ch pointer to character string for element * @param start starting offset of element * @param length number of characters in element * @param preserveSpace true is space should be preserved * @param disableOutputEscaping true if output escaping should be disabled * * @return A pointer to the new instance. */ data_type* create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, XalanFileLoc lineNumber, XalanFileLoc columnNumber, const XalanDOMChar* ch, XalanDOMString::size_type start, XalanDOMString::size_type length, bool preserveSpace, bool disableOutputEscaping); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const data_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all objects from the allocator. */ void reset() { m_allocator.reset(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanElemTextLiteralAllocator(const XalanElemTextLiteralAllocator&); XalanElemTextLiteralAllocator& operator=(const XalanElemTextLiteralAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANELEMTEXTLITERALALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XSLT/FunctionSystemProperty.cpp0000664000175000000640000001537711731656103022305 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FunctionSystemProperty.hpp" #include #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN static const XalanDOMString s_emptyString(XalanMemMgrs::getDummyMemMgr()); FunctionSystemProperty::FunctionSystemProperty(MemoryManager& theManager) : Function(), m_xsltNamespaceURI("http://www.w3.org/1999/XSL/Transform", theManager), m_versionPropertyString("version", theManager), m_vendorPropertyString("vendor", theManager), m_vendorURLPropertyString("vendor-url", theManager), m_vendorString("Apache Software Foundation", theManager), m_vendorURLString("http://xml.apache.org/xalan-c", theManager) { } FunctionSystemProperty::FunctionSystemProperty( const FunctionSystemProperty& other, MemoryManager& theManager) : Function(other), m_xsltNamespaceURI(other.m_xsltNamespaceURI, theManager), m_versionPropertyString(other.m_versionPropertyString, theManager), m_vendorPropertyString(other.m_vendorPropertyString, theManager), m_vendorURLPropertyString(other.m_vendorURLPropertyString, theManager), m_vendorString(other.m_vendorString, theManager), m_vendorURLString(other.m_vendorURLString, theManager) { } FunctionSystemProperty::~FunctionSystemProperty() { } inline void validateNCName( XPathExecutionContext& executionContext, XalanNode* context, const Locator* locator, const XalanDOMString& ncname) { if (XalanQName::isValidNCName(ncname) == false) { const Function::GetCachedString theGuard(executionContext); executionContext.problem( XPathExecutionContext::eXPath, XPathExecutionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::PropertyIsNotValidQName_1Param, "system-property()"), locator, context); } } XObjectPtr FunctionSystemProperty::execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectPtr arg1, const Locator* locator) const { assert(arg1.null() == false); const XalanDOMString& fullName = arg1->str(executionContext); const XalanDOMString::size_type fullNameLength = fullName.length(); const XalanDOMString::size_type indexOfNSSep = indexOf(fullName, XalanUnicode::charColon); if(indexOfNSSep < fullNameLength) { const GetCachedString guard(executionContext); XalanDOMString& theBuffer = guard.get(); substring(fullName, theBuffer, 0, indexOfNSSep); validateNCName(executionContext, context, locator, theBuffer); const XalanDOMString* const nspace = executionContext.getNamespaceForPrefix(theBuffer); if (nspace == 0) { const GetCachedString theGuard(executionContext); executionContext.problem( XPathExecutionContext::eXPath, XPathExecutionContext::eError, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::PrefixIsNotDeclared_1Param, theBuffer), locator, context); } else { if(*nspace == m_xsltNamespaceURI) { substring(fullName, theBuffer, indexOfNSSep + 1); validateNCName(executionContext, context, locator, theBuffer); if(equals(theBuffer, m_versionPropertyString)) { return executionContext.getXObjectFactory().createNumber(1.0); } else if(equals(theBuffer, m_vendorPropertyString)) { return executionContext.getXObjectFactory().createStringReference(m_vendorString); } else if(equals(theBuffer, m_vendorURLPropertyString)) { return executionContext.getXObjectFactory().createStringReference(m_vendorURLString); } else { return executionContext.getXObjectFactory().createStringReference(s_emptyString); } } } } else { validateNCName(executionContext, context, locator, fullName); XalanDOMString::CharVectorType theResultVect(executionContext.getMemoryManager()); TranscodeToLocalCodePage(fullName, theResultVect, true); const char* const theEnvString = #if defined(XALAN_STRICT_ANSI_HEADERS) std::getenv(c_str(theResultVect)); #else getenv(c_str(theResultVect)); #endif if (theEnvString != 0) { GetCachedString theResult(executionContext); XalanDOMString& theString = theResult.get(); TranscodeFromLocalCodePage(theEnvString, theString); return executionContext.getXObjectFactory().createString(theResult); } } return executionContext.getXObjectFactory().createStringReference(s_emptyString); } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) Function* #else FunctionSystemProperty* #endif FunctionSystemProperty::clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this, theManager); } const XalanDOMString& FunctionSystemProperty::getError(XalanDOMString& theResult) const { return XalanMessageLoader::getMessage( theResult, XalanMessages::FunctionAcceptsOneArgument_1Param, "system-property()"); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/AVTPartSimple.hpp0000664000175000000640000000443311731656103020175 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_AVTPARTSIMPLE_HEADER_GUARD) #define XALAN_AVTPARTSIMPLE_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" #include #include "AVTPart.hpp" XALAN_CPP_NAMESPACE_BEGIN class StylesheetConstructionContext; /** * Simple string part of a complex AVT. */ class AVTPartSimple: public AVTPart { public: /** * Construct a simple Attribute Value Template (AVT) part. * * @param constructionContext context when object constructed * @param val A pure string section of an AVT * @param len The length of val */ AVTPartSimple( StylesheetConstructionContext& constructionContext, const XalanDOMChar* val, XalanDOMString::size_type len); // These methods are inherited from AVTPart ... virtual void evaluate( XalanDOMString& buf, XalanNode* contextNode, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext) const; virtual void evaluate( XalanDOMString& buf, const PrefixResolver& prefixResolver, XPathExecutionContext& executionContext) const; private: /** * Simple string value; */ const XalanDOMChar* const m_val; const XalanDOMString::size_type m_len; }; XALAN_CPP_NAMESPACE_END #endif //XALAN_AVTPARTSIMPLE_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/XSLTProcessorEnvSupport.cpp0000664000175000000640000000202011731656103022263 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XSLTProcessorEnvSupport.hpp" XALAN_CPP_NAMESPACE_BEGIN XSLTProcessorEnvSupport::XSLTProcessorEnvSupport() : XPathEnvSupport() { } XSLTProcessorEnvSupport::~XSLTProcessorEnvSupport() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XSLTResultTarget.cpp0000664000175000000640000001000511731656103020665 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Base include file. Must be first. #include "XSLTResultTarget.hpp" #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif XALAN_CPP_NAMESPACE_BEGIN XSLTResultTarget::XSLTResultTarget(MemoryManager& theManager) : m_fileName(theManager), m_byteStream(0), m_encoding(theManager), m_characterStream(0), m_formatterListener(0), m_stream(0) { } XSLTResultTarget::XSLTResultTarget(const XalanDOMString& fileName, MemoryManager& theManager) : m_fileName(fileName, theManager), m_byteStream(0), m_encoding(theManager), m_characterStream(0), m_formatterListener(0), m_stream(0) { } XSLTResultTarget::XSLTResultTarget(const XalanDOMChar* fileName, MemoryManager& theManager) : m_fileName(fileName, theManager), m_byteStream(0), m_encoding(theManager), m_characterStream(0), m_formatterListener(0), m_stream(0) { } XSLTResultTarget::XSLTResultTarget(const char* fileName, MemoryManager& theManager) : m_fileName(fileName, theManager), m_byteStream(0), m_encoding(theManager), m_characterStream(0), m_formatterListener(0), m_stream(0) { } XSLTResultTarget::XSLTResultTarget(const XSLTResultTarget& other, MemoryManager& theManager) : m_fileName(other.m_fileName, theManager), m_byteStream(other.m_byteStream), m_encoding(other.m_encoding, theManager), m_characterStream(other.m_characterStream), m_formatterListener(other.m_formatterListener), m_stream(other.m_stream) { } XSLTResultTarget::XSLTResultTarget(StreamType* theStream, MemoryManager& theManager) : m_fileName(theManager), m_byteStream(theStream), m_encoding(theManager), m_characterStream(0), m_formatterListener(0), m_stream(0) { assert(theStream != 0); } XSLTResultTarget::XSLTResultTarget(StreamType& theStream, MemoryManager& theManager) : m_fileName(theManager), m_byteStream(&theStream), m_encoding(theManager), m_characterStream(0), m_formatterListener(0), m_stream(0) { } XSLTResultTarget::XSLTResultTarget(Writer* characterStream, MemoryManager& theManager) : m_fileName(theManager), m_byteStream(0), m_encoding(theManager), m_characterStream(characterStream), m_formatterListener(0), m_stream(0) { assert(characterStream != 0); } XSLTResultTarget::XSLTResultTarget(FILE* stream, MemoryManager& theManager) : m_fileName(theManager), m_byteStream(0), m_encoding(theManager), m_characterStream(0), m_formatterListener(0), m_stream(stream) { assert(stream != 0); } XSLTResultTarget::XSLTResultTarget(FormatterListener& flistener, MemoryManager& theManager) : m_fileName(theManager), m_byteStream(0), m_encoding(theManager), m_characterStream(0), m_formatterListener(&flistener), m_stream(0) { } XSLTResultTarget::~XSLTResultTarget() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemFallback.cpp0000664000175000000640000001170311731656103020035 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemFallback.hpp" #include #include #include #include #include "Constants.hpp" #include "StylesheetConstructionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemFallback::ElemFallback( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemTemplateElement( constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_FALLBACK) { const XalanSize_t nAttrs = atts.getLength(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (isAttrOK( aname, atts, i, constructionContext) == false && processSpaceAttr( Constants::ELEMNAME_FALLBACK_WITH_PREFIX_STRING.c_str(), aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_FALLBACK_WITH_PREFIX_STRING.c_str(), aname); } } } const XalanDOMString& ElemFallback::getElementName() const { return Constants::ELEMNAME_FALLBACK_WITH_PREFIX_STRING; } ElemFallback::~ElemFallback() { } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemFallback::startElement(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::startElement(executionContext); return beginExecuteChildren(executionContext); } const ElemTemplateElement* ElemFallback::getFirstChildElemToExecute( StylesheetExecutionContext& executionContext) const { const int parentXSLToken = getParentNodeElem()->getXSLToken(); if (parentXSLToken == StylesheetConstructionContext::ELEMNAME_FORWARD_COMPATIBLE || parentXSLToken == StylesheetConstructionContext::ELEMNAME_EXTENSION_CALL) { return ParentType::getFirstChildElemToExecute(executionContext); } else { return 0; } } const ElemTemplateElement* ElemFallback::getNextChildElemToExecute(StylesheetExecutionContext& /*executionContext*/, const ElemTemplateElement* currentElem) const { const ElemTemplateElement* previousElement = currentElem; const ElemTemplateElement* nextElement = currentElem->getNextSiblingElem(); while (nextElement != 0 && nextElement->getXSLToken() == StylesheetConstructionContext::ELEMNAME_FALLBACK && previousElement->getXSLToken() == StylesheetConstructionContext::ELEMNAME_FORWARD_COMPATIBLE) { previousElement = nextElement; nextElement = nextElement->getNextSiblingElem(); } return nextElement; } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemFallback::execute(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::execute(executionContext); int thePreviousToken = StylesheetConstructionContext::ELEMNAME_UNDEFINED; for (const ElemTemplateElement* child = getFirstChildElem(); child != 0; child = child->getNextSiblingElem()) { const int theCurrentToken = child->getXSLToken(); if(theCurrentToken == StylesheetConstructionContext::ELEMNAME_FALLBACK) { // Don't execute a fallback if it's preceeded by a forward-compatible // element. if (thePreviousToken != StylesheetConstructionContext::ELEMNAME_FORWARD_COMPATIBLE) { child->execute(executionContext); } } else { child->execute(executionContext); } thePreviousToken = theCurrentToken; } } #endif XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemLiteralResult.hpp0000664000175000000640000001230511731656103021135 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMLITERALRESULT_HEADER_GUARD) #define XALAN_ELEMLITERALRESULT_HEADER_GUARD // Base include file. Must be first. #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN class AVT; class ElemLiteralResult: public ElemUse { public: /** * Construct an object corresponding to a literal result element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param name name of element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemLiteralResult( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const XalanDOMChar* name, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); virtual ~ElemLiteralResult(); // These methods are inherited from ElemUse ... virtual const XalanDOMString& getElementName() const; virtual void postConstruction( StylesheetConstructionContext& constructionContext, const NamespacesHandler& theParentHandler); virtual bool isAttrOK( const XalanDOMChar* attrName, const AttributeListType& atts, XalanSize_t which, StylesheetConstructionContext& constructionContext) const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; virtual void endElement(StylesheetExecutionContext& executionContext) const; virtual void evaluateAVTs(StylesheetExecutionContext& executionContext) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif protected: /** * Do common initialization. * * @param constructionContext The current onstruction context. * @param stylesheetTree The stylesheet containing the element. * @param name The name of the element. * @param atts The list of attributes for the element. */ void init( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const XalanDOMChar* name, const AttributeListType& atts); /** * Construct an object corresponding to a literal result element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param name name of element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document * @param xslToken The xsl token value for this class */ ElemLiteralResult( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const XalanDOMChar* name, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber, int xslToken); virtual void namespacesPostConstruction( StylesheetConstructionContext& constructionContext, const NamespacesHandler& theParentHandler, NamespacesHandler& theHandler); private: // not implemented ElemLiteralResult(const ElemLiteralResult &); ElemLiteralResult& operator=(const ElemLiteralResult&); /** * The name of the literal result element. */ const XalanDOMString& m_elementName; /** * A vector to keep track of the attribute elements. */ const AVT** m_avts; /** * The size of m_avts, once the stylesheet is compiled... */ XalanSize_t m_avtsCount; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMLITERALRESULT_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/VariablesStack.hpp0000664000175000000640000003437711731656103020452 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_VARIABLESSTACK_HEADER_GUARD) #define XALAN_VARIABLESSTACK_HEADER_GUARD // Base include file. Must be first. #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class Arg; class ElemTemplateElement; class ElemVariable; class StylesheetExecutionContext; class XalanNode; /** * Defines a class to keep track of a stack for macro arguments. */ class XALAN_XSLT_EXPORT VariablesStack { public: typedef unsigned long size_type; /** * Constructor for a variable stack. */ explicit VariablesStack(MemoryManager& theManager); ~VariablesStack(); /** * Reset the stack. */ void reset(); /** * Push a frame marker for an element. * * @param elem the element */ void pushElementFrame(const ElemTemplateElement* elem); /** * Pop a frame marker for an element. * * @param elem the element */ void popElementFrame(); /** * Push a context marker onto the stack to let us know when to stop * searching for a var. * * @param caller caller node * @param sourceNode source node */ void pushContextMarker(); /** * Pop the current context from the current context stack. */ void popContextMarker(); struct ParamsVectorEntry { ParamsVectorEntry() : m_qname(0), m_value(), m_variable(0) { } ParamsVectorEntry( const XalanQName* qname, const XObjectPtr value) : m_qname(qname), m_value(value), m_variable(0) { } ParamsVectorEntry( const XalanQName* qname, const ElemVariable* variable) : m_qname(qname), m_value(), m_variable(variable) { } const XalanQName* m_qname; XObjectPtr m_value; const ElemVariable* m_variable; }; typedef XalanVector ParamsVectorType; typedef XalanVector RecursionGuardStackType; typedef XalanVector ElemTemplateElementStackType; /** * Push the provided objects as parameters. You must call * popContextMarker() when you are done with the arguments. * * @param theParam The vector containing the parameters. */ void pushParams(const ParamsVectorType& theParams); /** * Given a name, return a string representing the value, but don't look * in the global space. Since the variable may not yet have been * evaluated, this may return a null XObjectPtr. * * @param theName name of variable * @param exeuctionContext the current execution context * @param fNameFound set to true if the name was found, false if not. * @return pointer to XObject for variable */ const XObjectPtr getParamVariable( const XalanQName& qname, StylesheetExecutionContext& executionContext, bool& fNameFound) { return findXObject(qname, executionContext, true, false, fNameFound); } /** * Given a name, find the corresponding XObject. If the variable * exists, but has not yet been evaluated, the variable will be * evaluated and the result returned. This may return a null XObjectPtr, * if the variable was not found. * * @param qname name of variable * @param exeuctionContext the current execution context * @param fNameFound set to true if the name was found, false if not. * @return pointer to the corresponding XObject */ const XObjectPtr getVariable( const XalanQName& qname, StylesheetExecutionContext& executionContext, bool& fNameFound) { return findXObject(qname, executionContext, false, true, fNameFound); } /** * Push a named variable onto the processor variable stack. Don't forget * to call startContext before pushing a series of arguments for a given * template. * * @param name name of variable * @param val pointer to ElemVariable * @param e element marker for variable */ void pushVariable( const XalanQName& name, const ElemVariable* var, const ElemTemplateElement* e); /** * Push a named variable onto the processor variable stack. Don't forget * to call startContext before pushing a series of arguments for a given * template. * * @param name name of variable * @param val pointer to XObject value * @param e element marker for variable */ void pushVariable( const XalanQName& name, const XObjectPtr& val, const ElemTemplateElement* e); /** * Mark the top of the stack. */ void start(); /** * Reset all params in the current stack frame. */ void resetParams(); /** * Mark the top of the global stack frame. */ void markGlobalStackFrame(); /** * Clear the marking of the global stack frame. */ void unmarkGlobalStackFrame(); /** * Set the top of the stack frame from where a search for a variable or * param should take place. Calling with no parameter will cause the * index to be set to the size of the stack. * * @param currentStackFrameIndex new value of index */ void setCurrentStackFrameIndex(size_type currentStackFrameIndex = ~0u) { if (currentStackFrameIndex == ~0u) { assert(size_type(m_stack.size()) == m_stack.size()); m_currentStackFrameIndex = size_type(m_stack.size()); } else { m_currentStackFrameIndex = currentStackFrameIndex; } } /** * Get the top of the stack frame from where a search * for a variable or param should take place. * * @return current value of index */ size_type getCurrentStackFrameIndex() const { return m_currentStackFrameIndex; } /** * Get the top of the global stack frame. * * @return current value of index */ size_type getGlobalStackFrameIndex() const { return m_globalStackFrameIndex; } class InvalidStackContextException : public XSLTProcessorException { public: InvalidStackContextException(XalanDOMString& theResult); virtual ~InvalidStackContextException(); virtual const XalanDOMChar* getType() const { return m_type; } private: static const XalanDOMChar m_type[]; }; class PushParamFunctor { public: PushParamFunctor(VariablesStack& theVariablesStack) : m_variablesStack(theVariablesStack) { } void operator()(const ParamsVectorType::value_type& theEntry) const; private: VariablesStack& m_variablesStack; }; class XALAN_XSLT_EXPORT StackEntry { public: /** * Enumeration for types of stack entries, one of context state, context * marker, element marker, or argument. */ enum eType { eContextMarker, eVariable, eParam, eActiveParam, eElementFrameMarker, eNextValue }; /** * Construct a context marker. */ explicit StackEntry(); /** * Construct a variable that is already evaluated. */ StackEntry( const XalanQName* name, const XObjectPtr& val, bool isParam = false); /** * Construct a variable that has not been evaluated yet. */ StackEntry( const XalanQName* name, const ElemVariable* var, bool isParam = false); /** * Construct an element frame marker. */ StackEntry(const ElemTemplateElement* elem); /** * Copy constructor... */ StackEntry(const StackEntry& theSource); /** * Destructor... */ ~StackEntry(); /** * Determine type of stack entry * * @return enumeration value for type */ eType getType() const { return m_type; } /** * Retrieve object name. Valid only for variables * * @return qualified name of object */ const XalanQName* getName() const { return m_qname; } /** * Retrieve object's XObject pointer. Valid only for variables * * @return pointer to XObject */ const XObjectPtr& getValue() const { return m_value; } /** * Retrieve object's XObject pointer. Valid only for variables * * @return pointer to XObject */ void setValue(const XObjectPtr& theValue) { m_value = theValue; } /** * Retrieve object's XObject pointer. Valid only for variables * * @return pointer to XObject */ const ElemVariable* getVariable() const { return m_variable; } void activate(); void deactivate(); /** * Retrieve the ElemTemplateElem where frame begins. Valid only for element frame markers * * @return ElemTemplateElement corresponding to marker */ const ElemTemplateElement* getElement() const { return m_element; } StackEntry& operator=(const StackEntry& theRHS); bool operator==(const StackEntry& theRHS) const; private: // Data members... eType m_type; const XalanQName* m_qname; XObjectPtr m_value; const ElemVariable* m_variable; const ElemTemplateElement* m_element; }; typedef XalanVector VariableStackStackType; size_type getStackSize() const { return size_type(m_stack.size()); } enum { eDefaultStackSize = 100 }; private: class CommitPushParams { public: CommitPushParams(VariablesStack& theVariablesStack); ~CommitPushParams(); void commit() { m_variablesStack = 0; } private: VariablesStack* m_variablesStack; size_type m_stackSize; }; friend class CommitPushParams; /** * Check to see if an element frame for the particular element has already * been pushed. * * @param elem element in question * @return true if it has been pushed already */ bool elementFrameAlreadyPushed(const ElemTemplateElement* elem) const; /** * Push an entry onto the stack. * * @param stack entry to push */ void push(const StackEntry& theEntry); /** * Pop an entry from the top of the stack. */ void pop(); /** * Get a reference to the entry at the back (top) of the stack. * * @return a reference to the back of the stack. */ const StackEntry& back() const { assert(m_stack.empty() == false); return m_stack.back(); } friend class CommitPushElementFrame; friend class EnsurePop; friend class PushParamFunctor; friend class SetAndRestoreForceGlobalSearch; const XObjectPtr findXObject( const XalanQName& name, StylesheetExecutionContext& executionContext, bool fIsParam, bool fSearchGlobalSpace, bool& fNameFound); size_type findEntry( const XalanQName& name, bool fIsParam, bool fSearchGlobalSpace); VariableStackStackType m_stack; size_type m_globalStackFrameIndex; bool m_globalStackFrameMarked; /** * This is the top of the stack frame from where a search * for a variable or param should take place. It may not * be the real stack top. */ size_type m_currentStackFrameIndex; /** * This will be a stack for any variable definitions * that are being evaluated dynamically, to protect * against circular definitions. */ RecursionGuardStackType m_guardStack; /** * This will be a stack for tracking element frames. * This is only used in debug builds. */ ElemTemplateElementStackType m_elementFrameStack; }; XALAN_CPP_NAMESPACE_END #endif // #if !defined(XALAN_VARIABLESSTACK_HEADER_GUARD) xalan-c-1.11/c/src/xalanc/XSLT/ElemComment.cpp0000664000175000000640000001320011731656103017732 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemComment.hpp" #include #include #include #include "Constants.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemComment::ElemComment( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemTemplateElement(constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_COMMENT) { const XalanSize_t nAttrs = atts.getLength(); for(XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (isAttrOK( aname, atts, i, constructionContext) == false && processSpaceAttr( Constants::ELEMNAME_COMMENT_WITH_PREFIX_STRING.c_str(), aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_COMMENT_WITH_PREFIX_STRING.c_str(), aname); } } } ElemComment::~ElemComment() { } const XalanDOMString& ElemComment::getElementName() const { return Constants::ELEMNAME_COMMENT_WITH_PREFIX_STRING; } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemComment::startElement(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::startElement(executionContext); executionContext.pushCopyTextNodesOnly(true); XalanDOMString& theResult = executionContext.getAndPushCachedString(); return beginChildrenToString(executionContext,theResult); } void ElemComment::endElement(StylesheetExecutionContext& executionContext) const { endChildrenToString(executionContext); XalanDOMString& theResult = executionContext.getAndPopCachedString(); XalanDOMString::iterator theEnd = theResult.end(); XalanDOMString::iterator theCurrent = theResult.begin(); // We need to fix up any occurrences of the sequence '--' in // the comment's data by inserting a space between them. Also, // if the data ends with a '-', then we must append a space to // the data. while(theCurrent != theEnd) { const XalanDOMChar theChar = *theCurrent; if (theChar == XalanUnicode::charHyphenMinus) { XalanDOMString::iterator theNext = theCurrent + 1; if (theNext == theEnd || *theNext == XalanUnicode::charHyphenMinus) { theCurrent = theResult.insert( theNext, XalanUnicode::charSpace); theEnd = theResult.end(); } } ++theCurrent; } executionContext.comment(theResult.c_str()); executionContext.popCopyTextNodesOnly(); } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemComment::execute(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::execute(executionContext); StylesheetExecutionContext::SetAndRestoreCopyTextNodesOnly theSetAndRestore(executionContext, true); childrenToResultComment(executionContext); } #endif bool ElemComment::childTypeAllowed(int xslToken) const { bool fResult = false; switch(xslToken) { // char-instructions case StylesheetConstructionContext::ELEMNAME_TEXT_LITERAL_RESULT: case StylesheetConstructionContext::ELEMNAME_APPLY_TEMPLATES: case StylesheetConstructionContext::ELEMNAME_APPLY_IMPORTS: case StylesheetConstructionContext::ELEMNAME_CALL_TEMPLATE: case StylesheetConstructionContext::ELEMNAME_FOR_EACH: case StylesheetConstructionContext::ELEMNAME_VALUE_OF: case StylesheetConstructionContext::ELEMNAME_COPY_OF: case StylesheetConstructionContext::ELEMNAME_NUMBER: case StylesheetConstructionContext::ELEMNAME_CHOOSE: case StylesheetConstructionContext::ELEMNAME_IF: case StylesheetConstructionContext::ELEMNAME_TEXT: case StylesheetConstructionContext::ELEMNAME_COPY: case StylesheetConstructionContext::ELEMNAME_VARIABLE: case StylesheetConstructionContext::ELEMNAME_MESSAGE: fResult = true; break; default: break; } return fResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/StylesheetConstructionContext.cpp0000664000175000000640000000213411731656103023642 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "StylesheetConstructionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN StylesheetConstructionContext::StylesheetConstructionContext(MemoryManager& theManager) : XPathConstructionContext(theManager) { } StylesheetConstructionContext::~StylesheetConstructionContext() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/TraceListener.hpp0000664000175000000640000000553611731656103020313 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_TraceListener_HEADER_GUARD) #define XALAN_TraceListener_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" XALAN_CPP_NAMESPACE_BEGIN class TracerEvent; class SelectionEvent; class GenerateEvent; class XALAN_XSLT_EXPORT TraceListener { public: TraceListener(); virtual ~TraceListener(); /** * Method that is called when a trace event occurs. The method is blocking. * It must return before processing continues. * * @param ev trace event */ virtual void trace(const TracerEvent& ev) = 0; /** * Method that is called just after the formatter listener is called. * * @param ev generate event */ virtual void selected(const SelectionEvent& ev) = 0; /** * Method that is called just after the formatter listener is called. * * @param ev generate event */ virtual void generated(const GenerateEvent& ev) = 0; struct TraceListenerTraceFunctor { TraceListenerTraceFunctor(const TracerEvent& theEvent) : m_event(theEvent) { } void operator()(TraceListener* theListener) const { theListener->trace(m_event); } const TracerEvent& m_event; }; struct TraceListenerSelectFunctor { TraceListenerSelectFunctor(const SelectionEvent& theEvent) : m_event(theEvent) { } void operator()(TraceListener* theListener) const { theListener->selected(m_event); } const SelectionEvent& m_event; }; struct TraceListenerGenerateFunctor { TraceListenerGenerateFunctor(const GenerateEvent& theEvent) : m_event(theEvent) { } void operator()(TraceListener* theListener) const { theListener->generated(m_event); } const GenerateEvent& m_event; }; }; XALAN_CPP_NAMESPACE_END #endif //XALAN_TraceListener_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/XalanSourceTreeDocumentAllocator.hpp0000664000175000000640000001640411731656103024147 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEDOCUMENTALLOCATOR_INCLUDE_GUARD_12455133) #define XALANSOURCETREEDOCUMENTALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XSLT_EXPORT XalanSourceTreeDocumentAllocator { public: typedef XalanSourceTreeDocument data_type; typedef ReusableArenaAllocator ArenaAllocatorType; typedef ArenaAllocatorType::size_type size_type; enum { eDefaultAttributeAllocatorBlockSize = XalanSourceTreeDocument::eDefaultAttributeAllocatorBlockSize, eDefaultAttributeNSAllocatorBlockSize = XalanSourceTreeDocument::eDefaultAttributeNSAllocatorBlockSize, eDefaultCommentAllocatorBlockSize = XalanSourceTreeDocument::eDefaultCommentAllocatorBlockSize, eDefaultElementAllocatorBlockSize = XalanSourceTreeDocument::eDefaultElementAllocatorBlockSize, eDefaultElementNSAllocatorBlockSize = XalanSourceTreeDocument::eDefaultElementNSAllocatorBlockSize, eDefaultPIAllocatorBlockSize = XalanSourceTreeDocument::eDefaultPIAllocatorBlockSize, eDefaultTextAllocatorBlockSize = XalanSourceTreeDocument::eDefaultTextAllocatorBlockSize, eDefaultTextIWSAllocatorBlockSize = XalanSourceTreeDocument::eDefaultTextIWSAllocatorBlockSize, eDefaultNamesStringPoolBlockSize = XalanSourceTreeDocument::eDefaultNamesStringPoolBlockSize, eDefaultNamesStringPoolBucketCount = XalanSourceTreeDocument::eDefaultNamesStringPoolBucketCount, eDefaultNamesStringPoolBucketSize = XalanSourceTreeDocument::eDefaultNamesStringPoolBucketSize, eDefaultValuesStringPoolBlockSize = XalanSourceTreeDocument::eDefaultValuesStringPoolBlockSize, eDefaultValuesStringPoolBucketCount = XalanSourceTreeDocument::eDefaultValuesStringPoolBucketCount, eDefaultValuesStringPoolBucketSize = XalanSourceTreeDocument::eDefaultValuesStringPoolBucketSize }; typedef XalanSourceTreeDocument::block_size_type block_size_type; typedef XalanSourceTreeDocument::bucket_count_type bucket_count_type; typedef XalanSourceTreeDocument::bucket_size_type bucket_size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanSourceTreeDocumentAllocator(MemoryManager& theManager, size_type theBlockCount); ~XalanSourceTreeDocumentAllocator(); /** * Create a XalanSourceTreeDocument object. * * @param fPoolAllText If false, text node data that is not whitespace will not be pooled. * @param theNamesStringPoolBlockSize The block size for allocating strings in the name pool * @param theNamesStringPoolBucketCount The number of buckets for allocating strings in the name pool * @param theNamesStringPoolBucketSize The bucket size for allocating strings in the name pool * @param theValuesStringPoolBlockSize The block size for allocating strings in the values pool * @param theValuesStringPoolBucketCount The number of buckets for allocating strings in the values pool * @param theValuesStringPoolBucketSize The bucket size for allocating strings in the values pool * * @return pointer to a node */ data_type* create( bool fPoolAllText = true, block_size_type theNamesStringPoolBlockSize = eDefaultNamesStringPoolBlockSize, bucket_count_type theNamesStringPoolBucketCount = eDefaultNamesStringPoolBucketCount, bucket_size_type theNamesStringPoolBucketSize = eDefaultNamesStringPoolBucketSize, block_size_type theValuesStringPoolBlockSize = eDefaultValuesStringPoolBlockSize, bucket_count_type theValuesStringPoolBucketCount = eDefaultValuesStringPoolBucketCount, bucket_size_type theValuesStringPoolBucketSize = eDefaultValuesStringPoolBucketSize); /** * Create a XalanSourceTreeDocument object. * * @param fPoolAllText If false, text node data that is not whitespace will not be pooled. * @param theAttributeBlockSize The block size for allocating attribute nodes * @param theAttributeNSBlockSize The block size for allocating attribute NS nodes * @param theCommentBlockSize The block size for allocating comment nodes * @param theElementBlockSize The block size for allocating element nodes * @param theElementNSBlockSize The block size for allocating element nodes * @param theTextBlockSize The block size for allocating text nodes, * @param theTextIWSBlockSize The block size for allocating text IWS nodes, * * @return pointer to a node */ data_type* create( size_type theAttributeBlockSize, size_type theAttributeNSBlockSize, size_type theCommentBlockSize, size_type theElementBlockSize, size_type theElementNSBlockSize, size_type thePIBlockSize, size_type theTextBlockSize, size_type theTextIWSBlockSize, bool fPoolAllText = true); /** * Delete a XalanSourceTreeDocument object from allocator. */ bool destroy(data_type* theObject); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const data_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all XalanSourceTreeDocument objects from allocator. */ void reset(); /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanSourceTreeDocumentAllocator(const XalanSourceTreeDocumentAllocator&); XalanSourceTreeDocumentAllocator& operator=(const XalanSourceTreeDocumentAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANSOURCETREEDOCUMENTALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XSLT/ElemDecimalFormat.cpp0000664000175000000640000002412511731656103021047 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemDecimalFormat.hpp" #include #include #include #include #include "Constants.hpp" #include "Stylesheet.hpp" #include "StylesheetConstructionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN static const XalanQNameByValue s_empty(XalanMemMgrs::getDummyMemMgr()); ElemDecimalFormat::ElemDecimalFormat( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemTemplateElement(constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_DECIMAL_FORMAT), m_countMatchPattern(0), m_fromMatchPattern(0), m_valueExpr(0), m_qname(&s_empty), m_decimalFormatSymbols(constructionContext.getMemoryManager()) { m_decimalFormatSymbols.setInfinity(XalanDOMString(constructionContext.getMemoryManager())); m_decimalFormatSymbols.setNaN(XalanDOMString(constructionContext.getMemoryManager())); const XalanSize_t nAttrs = atts.getLength(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (equals(aname, Constants::ATTRNAME_NAME)) { assert(atts.getValue(i) != 0); m_qname = constructionContext.createXalanQName( atts.getValue(i), getStylesheet().getNamespaces(), getLocator()); if (m_qname->isValid() == false) { error( constructionContext, XalanMessages::AttributeValueNotValidQName_2Param, Constants::ATTRNAME_NAME.c_str(), atts.getValue(i)); } } else if (equals(aname, Constants::ATTRNAME_DECIMALSEPARATOR)) { const XalanDOMChar* const decimalSepValue = atts.getValue(i); assert(decimalSepValue != 0); if (length(decimalSepValue) == 1) { m_decimalFormatSymbols.setDecimalSeparator(decimalSepValue[0]); } else { warn( constructionContext, XalanMessages::ElementHasIllegalAttributeValue_3Param, Constants::ELEMNAME_DECIMALFORMAT_WITH_PREFIX_STRING.c_str(), aname, decimalSepValue); } } else if (equals(aname, Constants::ATTRNAME_GROUPINGSEPARATOR)) { const XalanDOMChar* const sepValue = atts.getValue(i); assert(sepValue!= 0); if (length(sepValue) == 1) { m_decimalFormatSymbols.setGroupingSeparator(sepValue[0]); } else { warn( constructionContext, XalanMessages::ElementHasIllegalAttributeValue_3Param, Constants::ELEMNAME_DECIMALFORMAT_WITH_PREFIX_STRING.c_str(), aname, sepValue); } } else if (equals(aname, Constants::ATTRNAME_INFINITY)) { assert(atts.getValue(i) != 0); m_decimalFormatSymbols.setInfinity(atts.getValue(i)); } else if (equals(aname, Constants::ATTRNAME_MINUSSIGN)) { const XalanDOMChar* const minusValue = atts.getValue(i); assert(minusValue != 0); if (length(minusValue) == 1) { m_decimalFormatSymbols.setMinusSign(minusValue[0]); } else { warn( constructionContext, XalanMessages::ElementHasIllegalAttributeValue_3Param, Constants::ELEMNAME_DECIMALFORMAT_WITH_PREFIX_STRING.c_str(), aname, minusValue); } } else if (equals(aname, Constants::ATTRNAME_NAN)) { assert(atts.getValue(i) != 0); m_decimalFormatSymbols.setNaN(atts.getValue(i)); } else if (equals(aname, Constants::ATTRNAME_PERCENT)) { const XalanDOMChar* const percentValue = atts.getValue(i); assert(percentValue != 0); if (length(percentValue) == 1) { m_decimalFormatSymbols.setPercent(percentValue[0]); } else { warn( constructionContext, XalanMessages::ElementHasIllegalAttributeValue_3Param, Constants::ELEMNAME_DECIMALFORMAT_WITH_PREFIX_STRING.c_str(), aname, percentValue); } } else if (equals(aname, Constants::ATTRNAME_PERMILLE)) { const XalanDOMChar* const permilleValue = atts.getValue(i); assert(permilleValue != 0); if (length(permilleValue) == 1) { m_decimalFormatSymbols.setPerMill(permilleValue[0]); } else { warn( constructionContext, XalanMessages::ElementHasIllegalAttributeValue_3Param, Constants::ELEMNAME_DECIMALFORMAT_WITH_PREFIX_STRING.c_str(), aname, permilleValue); } } else if (equals(aname, Constants::ATTRNAME_ZERODIGIT)) { const XalanDOMChar* const zeroDigitValue = atts.getValue(i); assert(zeroDigitValue != 0); if (length(zeroDigitValue) == 1) { m_decimalFormatSymbols.setZeroDigit(zeroDigitValue[0]); } else { warn( constructionContext, XalanMessages::ElementHasIllegalAttributeValue_3Param, Constants::ELEMNAME_DECIMALFORMAT_WITH_PREFIX_STRING.c_str(), aname, zeroDigitValue); } } else if (equals(aname, Constants::ATTRNAME_DIGIT)) { const XalanDOMChar* const digitValue = atts.getValue(i); assert(digitValue != 0); if (length(digitValue) == 1) { m_decimalFormatSymbols.setDigit(digitValue[0]); } else { warn( constructionContext, XalanMessages::ElementHasIllegalAttributeValue_3Param, Constants::ELEMNAME_DECIMALFORMAT_WITH_PREFIX_STRING.c_str(), aname, digitValue); } } else if(equals(aname, Constants::ATTRNAME_PATTERNSEPARATOR)) { const XalanDOMChar* const patternSepValue = atts.getValue(i); assert(patternSepValue != 0); if (length(patternSepValue) == 1) { m_decimalFormatSymbols.setPatternSeparator(patternSepValue[0]); } else { warn( constructionContext, XalanMessages::ElementHasIllegalAttributeValue_3Param, Constants::ELEMNAME_DECIMALFORMAT_WITH_PREFIX_STRING.c_str(), aname, patternSepValue); } } else if(isAttrOK( aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_DECIMALFORMAT_WITH_PREFIX_STRING.c_str(), aname); } } if (m_decimalFormatSymbols.getInfinity().empty() == true) { m_decimalFormatSymbols.setInfinity(Constants::ATTRVAL_INFINITY); } if (m_decimalFormatSymbols.getNaN().empty() == true) { m_decimalFormatSymbols.setNaN(Constants::ATTRVAL_NAN); } // Look for duplicate decimal-format names const XalanDecimalFormatSymbols* const theOther = stylesheetTree.getDecimalFormatSymbols(*m_qname); if (theOther != 0 && *theOther != m_decimalFormatSymbols) { error( constructionContext, XalanMessages::DuplicateDefinitions_1Param, Constants::ELEMNAME_DECIMALFORMAT_WITH_PREFIX_STRING); } } ElemDecimalFormat::~ElemDecimalFormat() { } const XalanDOMString& ElemDecimalFormat::getElementName() const { return Constants::ELEMNAME_DECIMALFORMAT_WITH_PREFIX_STRING; } const XPath* ElemDecimalFormat::getXPath(XalanSize_t index) const { const XPath* result = 0; switch(index) { case 0: result = m_valueExpr; break; case 1: result = m_countMatchPattern; break; case 2: result = m_fromMatchPattern; break; default: break; } return result; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ProblemListenerDefault.cpp0000664000175000000640000001113411731656103022144 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Base class header file. #include "ProblemListenerDefault.hpp" #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN ProblemListenerDefault::ProblemListenerDefault( MemoryManager& theManager, PrintWriter* pw) : ProblemListener(), m_memoryManager(theManager), m_pw(pw) { } ProblemListenerDefault::~ProblemListenerDefault() { } void ProblemListenerDefault::setPrintWriter(PrintWriter* pw) { m_pw = pw; } void ProblemListenerDefault::problem( eSource source, eClassification classification, const XalanNode* sourceNode, const ElemTemplateElement* styleNode, const XalanDOMString& msg, const XalanDOMChar* uri, XalanFileLoc lineNo, XalanFileLoc charOffset) { if (m_pw != 0) { defaultFormat( *m_pw, source, classification, sourceNode, styleNode, msg, uri, lineNo, charOffset); } } void ProblemListenerDefault::problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode) { if (m_pw != 0) { ProblemListener::defaultFormat( *m_pw, source, classification, msg, locator, sourceNode); } } void ProblemListenerDefault::problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode) { if (m_pw != 0) { ProblemListener::defaultFormat( *m_pw, source, classification, msg, sourceNode); } } void ProblemListenerDefault::defaultFormat( PrintWriter& pw, eSource source, eClassification classification, const XalanNode* sourceNode, const ElemTemplateElement* styleNode, const XalanDOMString& msg, const XalanDOMChar* uri, XalanFileLoc lineNo, XalanFileLoc charOffset) { MemoryManager& theManager = pw.getMemoryManager(); XalanDOMString theTypeBuffer(theManager); XalanMessageLoader::getMessage( theTypeBuffer, s_messageCodes[source][classification]); XalanDOMString theBuffer(theManager); XSLException::defaultFormat( msg.c_str(), msg.length(), uri, uri == 0 ? 0 : length(uri), lineNo, charOffset, theTypeBuffer.c_str(), theTypeBuffer.length(), theBuffer); pw.println(theBuffer); if (0 != styleNode) { pw.println( XalanMessageLoader::getMessage( theBuffer, XalanMessages::StyleTreeNode_1Param, styleNode->getElementName())); } if (0 != sourceNode) { pw.println( XalanMessageLoader::getMessage( theBuffer, XalanMessages::SourceTreeNode_1Param, sourceNode->getNodeName())); } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ExtensionNSHandler.cpp0000664000175000000640000001234311731656103021247 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ExtensionNSHandler.hpp" #include #include #include #include #include "StylesheetExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN class XSLTProcessor; struct XSLProcessorContext { const XSLTProcessor& m_processor; const Stylesheet& m_stylesheetTree; const XalanNode* m_sourceTree; const XalanNode* m_sourceNode; const XalanQName& m_mode; XSLProcessorContext( const XSLTProcessor& processor, const Stylesheet& stylesheetTree, const XalanNode* sourceTree, const XalanNode* sourceNode, const XalanQName& mode) : m_processor(processor), m_stylesheetTree(stylesheetTree), m_sourceTree(sourceTree), m_sourceNode(sourceNode), m_mode(mode) { } }; /** * Construct a new extension namespace handler for a given extension NS. * This doesn't do anything - just hang on to the namespace URI. * * @param namespaceUri the extension namespace URI that I'm implementing */ ExtensionNSHandler::ExtensionNSHandler( const XalanDOMString& namespaceUri, MemoryManager& theManager) : ExtensionFunctionHandler(namespaceUri, theManager), m_elements(theManager), m_componentDescLoaded(false) { } ExtensionNSHandler* ExtensionNSHandler::create( const XalanDOMString& namespaceUri, MemoryManager& theManager) { typedef ExtensionNSHandler ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( namespaceUri, theManager); theGuard.release(); return theResult; } ExtensionNSHandler::ExtensionNSHandler ( MemoryManager& theManager, const XalanDOMString& namespaceUri, const XalanDOMString& elemNames, const XalanDOMString& funcNames, const XalanDOMString& lang, const XalanDOMString& srcURL, const XalanDOMString& src) : ExtensionFunctionHandler(theManager, namespaceUri, funcNames, lang, srcURL, src), m_elements(theManager), m_componentDescLoaded(true) { setElements(elemNames); } void ExtensionNSHandler::setFunctions(const XalanDOMString& funcNames) { ExtensionFunctionHandler::setFunctions(funcNames); m_componentDescLoaded = true; } void ExtensionNSHandler::setScript( const XalanDOMString& lang, const XalanDOMString& srcURL, const XalanDOMString& scriptSrc) { ExtensionFunctionHandler::setScript(lang, srcURL, scriptSrc); m_componentDescLoaded = true; } void ExtensionNSHandler::setElements(const XalanDOMString& elemNames) { if (elemNames.empty() == false) { StringTokenizer st(elemNames, s_tokenDelimiterCharacters, false); XalanDOMString theResult(m_elements.getMemoryManager()); while (st.hasMoreTokens() == true) { st.nextToken(theResult); m_elements.insert(theResult); // just stick it in there basically } m_componentDescLoaded = true; } } bool ExtensionNSHandler::isElementAvailable(const XalanDOMString& element) const { return (m_elements.find(element) != m_elements.end()); } void ExtensionNSHandler::processElement( StylesheetExecutionContext& /* executionContext */, const XalanDOMString& /* localPart */, const XalanElement* /* element */, Stylesheet& /* stylesheetTree */, const XalanNode* /* sourceTree */, const XalanNode* /* sourceNode */, const XalanQName& /* mode */) { } void ExtensionNSHandler::startupComponent() { ExtensionFunctionHandler::startupComponent(); } void ExtensionNSHandler::loadComponentDescription() { assert(0); // Don't try this in C++ } XalanDOMString& ExtensionNSHandler::getScriptString(const XalanElement& /* elem */, XalanDOMString& theResult) { theResult.erase(); return theResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XalanAVTPartXPathAllocator.cpp0000664000175000000640000000272211731656103022607 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanAVTPartXPathAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanAVTPartXPathAllocator::XalanAVTPartXPathAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanAVTPartXPathAllocator::~XalanAVTPartXPathAllocator() { } XalanAVTPartXPathAllocator::data_type* XalanAVTPartXPathAllocator::create(const XPath* xpath) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type(xpath); m_allocator.commitAllocation(theBlock); return theResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemForwardCompatible.hpp0000664000175000000640000000640711731656103021754 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMFORWARDCOMPATIBLE_HEADER_GUARD) #define XALAN_ELEMFORWARDCOMPATIBLE_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemTemplateElement.hpp" XALAN_CPP_NAMESPACE_BEGIN class ElemForwardCompatible : public ElemTemplateElement { public: /** * Construct an object corresponding to an unknown XSLT element * for forward-compatible processing. * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param name name of element * @param atts the attribute list * @param lineNumber line number in document * @param columnNumber column number in document */ ElemForwardCompatible( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const XalanDOMChar* name, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); static ElemForwardCompatible* create( MemoryManager& theManager, StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const XalanDOMChar* name, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); virtual ~ElemForwardCompatible(); // These methods are inherited from ElemTemplateElement ... virtual const XalanDOMString& getElementName() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; virtual bool executeChildElement( StylesheetExecutionContext& executionContext, const ElemTemplateElement* element) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif private: // not implemented ElemForwardCompatible(const ElemForwardCompatible&); ElemForwardCompatible& operator=(const ElemForwardCompatible&); const XalanDOMString& m_elementName; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMFORWARDCOMPATIBLE_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/ElemOtherwise.cpp0000664000175000000640000000613611731656103020313 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemOtherwise.hpp" #include #include #include #include "Constants.hpp" #include "StylesheetConstructionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemOtherwise::ElemOtherwise( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemTemplateElement( constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_OTHERWISE) { const XalanSize_t nAttrs = atts.getLength(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (isAttrOK( aname, atts, i, constructionContext) == false && processSpaceAttr( Constants::ELEMNAME_OTHERWISE_WITH_PREFIX_STRING.c_str(), aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_OTHERWISE_WITH_PREFIX_STRING.c_str(), aname); } } } const XalanDOMString& ElemOtherwise::getElementName() const { return Constants::ELEMNAME_OTHERWISE_WITH_PREFIX_STRING; } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemOtherwise::startElement(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::startElement(executionContext); return beginExecuteChildren(executionContext); } void ElemOtherwise::endElement(StylesheetExecutionContext& executionContext) const { endExecuteChildren(executionContext); } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemOtherwise::execute(StylesheetExecutionContext& executionContext) const { ElemTemplateElement::execute(executionContext); executeChildren(executionContext); } #endif XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XalanMatchPatternData.hpp0000664000175000000640000001013111731656103021702 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_MATCHPATTERNDATA_HEADER_GUARD) #define XALAN_MATCHPATTERNDATA_HEADER_GUARD // Base include file. Must be first. #include "xalanc/XSLT/XSLTDefinitions.hpp" #include #include "xalanc/XalanDOM/XalanDOMString.hpp" #include "xalanc/XPath/XPath.hpp" XALAN_CPP_NAMESPACE_BEGIN class ElemTemplate; /** * This class contains information concerning a match pattern in * a stylesheet. */ class XALAN_XSLT_EXPORT XalanMatchPatternData { public: typedef XPath::eMatchScore eMatchScore; #if defined(XALAN_STRICT_ANSI_HEADERS) typedef std::size_t size_type; #else typedef size_t size_type; #endif /** * Construct a XalanMatchPatternData from a pattern and template. * * @param theTemplate The ElemTemplate node that contains the template for this pattern * @param thePosition The position in the stylesheet * @param theTargetString The target string for match pattern * @param TheMatchPattern The match pattern * @param thePatternString the pattern string * @param thePriority The priority for the match pattern. */ XalanMatchPatternData( MemoryManager& theManager, const ElemTemplate& theTemplate, size_type thePosition, const XalanDOMString& theTargetString, const XPath& theMatchPattern, const XalanDOMString& thePatternString, eMatchScore thePriority) : m_template(&theTemplate), m_position(thePosition), m_targetString(theTargetString, theManager), m_matchPattern(&theMatchPattern), m_pattern(&thePatternString), m_priority(thePriority) { } ~XalanMatchPatternData() { } /** * Retrieve string for target. * * @return target string */ const XalanDOMString& getTargetString() const { return m_targetString; } /** * Retrieve the match pattern associated with pattern. * * @return XPath for pattern */ const XPath* getExpression() const { return m_matchPattern; } /** * Retrieve position of pattern in stylesheet. * * @return The position in the stylesheet */ size_type getPosition() const { return m_position; } /** * Retrieve pattern string. * * @return string that contains element pattern */ const XalanDOMString* getPattern() const { return m_pattern; } /** * Retrieve node that contains the template for this pattern. * * @return template node */ const ElemTemplate* getTemplate() const { return m_template; } eMatchScore getDefaultPriority() const { return m_priority; } double getPriorityOrDefault() const; private: // not implemented XalanMatchPatternData(); XalanMatchPatternData( const XalanMatchPatternData&); const ElemTemplate* m_template; size_type m_position; XalanDOMString m_targetString; const XPath* m_matchPattern; const XalanDOMString* m_pattern; eMatchScore m_priority; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_MATCHPATTERNDATA_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/ElemCallTemplate.hpp0000664000175000000640000000650711731656103020720 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMCALLTEMPLATE_HEADER_GUARD) #define XALAN_ELEMCALLTEMPLATE_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemTemplateElement.hpp" XALAN_CPP_NAMESPACE_BEGIN class ElemTemplate; class ElemCallTemplate: public ElemTemplateElement { public: /** * Construct an object corresponding to an "xsl:call-template" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemCallTemplate ( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); virtual ~ElemCallTemplate(); // These methods are inherited from ElemTemplateElement ... virtual const XalanDOMString& getElementName() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; virtual void endElement(StylesheetExecutionContext& executionContext) const; virtual const ElemTemplateElement* getNextChildElemToExecute( StylesheetExecutionContext& executionContext, const ElemTemplateElement* currentElem) const; virtual const ElemTemplateElement* getFirstChildElemToExecute( StylesheetExecutionContext& executionContext) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif virtual void postConstruction( StylesheetConstructionContext& constructionContext, const NamespacesHandler& theParentHandler); const ElemTemplate* getTemplate() const { return m_template; } protected: virtual bool childTypeAllowed(int xslToken) const; private: // not implemented ElemCallTemplate(const ElemCallTemplate&); ElemCallTemplate& operator=(const ElemCallTemplate&); // Data members... const XalanQName* m_templateName; const ElemTemplate* m_template; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMCALLTEMPLATE_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/AVTPart.cpp0000664000175000000640000000165011731656103017014 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "AVTPart.hpp" XALAN_CPP_NAMESPACE_BEGIN AVTPart::AVTPart() { } AVTPart::~AVTPart() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XalanSpaceNodeTester.hpp0000664000175000000640000000437711731656103021565 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_SPACENODETESTER_HEADER_GUARD_1357924680) #define XALAN_SPACENODETESTER_HEADER_GUARD_1357924680 // Base include file. Must be first. #include "XSLTDefinitions.hpp" #include "xalanc/XPath/XPath.hpp" XALAN_CPP_NAMESPACE_BEGIN class PrefixResolver; class StylesheetConstructionContext; class XalanSpaceNodeTester : public XPath::NodeTester { public: typedef XPath::NodeTester ParentType; enum eType { eStrip, ePreserve }; XalanSpaceNodeTester(); XalanSpaceNodeTester(const XalanSpaceNodeTester& theSource); XalanSpaceNodeTester( eType theType, StylesheetConstructionContext& theContext, const XalanDOMString& theNameTest, const PrefixResolver& thePrefixResolver, const Locator* theLocator); ~XalanSpaceNodeTester(); XPath::eMatchScore getMatchScore() const { return m_matchScore; } eType getType() const { return m_type; } XalanSpaceNodeTester& operator=(const XalanSpaceNodeTester& theRHS) { m_matchScore = theRHS.m_matchScore; m_type = theRHS.m_type; ParentType::operator=(theRHS); return *this; } private: XPath::eMatchScore m_matchScore; eType m_type; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALAN_SPACENODETESTER_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XSLT/ElemAttributeSet.cpp0000664000175000000640000001315111731656103020754 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemAttributeSet.hpp" #include #include #include "Constants.hpp" #include "Stylesheet.hpp" #include "StylesheetRoot.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemAttributeSet::ElemAttributeSet( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemUse(constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_ATTRIBUTE_SET), m_qname(0) { const XalanSize_t nAttrs = atts.getLength(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if (equals(aname, Constants::ATTRNAME_NAME)) { m_qname = constructionContext.createXalanQName( atts.getValue(i), stylesheetTree.getNamespaces(), getLocator()); if (m_qname->isValid() == false) { error( constructionContext, XalanMessages::AttributeValueNotValidQName_2Param, aname, atts.getValue(i)); } } else if (processUseAttributeSets( constructionContext, aname, atts, i) == false && isAttrOK( aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_ATTRIBUTESET_WITH_PREFIX_STRING.c_str(), aname); } } if (m_qname == 0) { error( constructionContext, XalanMessages::ElementMustHaveAttribute_2Param, Constants::ELEMNAME_ATTRIBUTESET_WITH_PREFIX_STRING, Constants::ATTRNAME_NAME); } assert(m_qname->isValid() == true); } ElemAttributeSet::~ElemAttributeSet() { } const XalanDOMString& ElemAttributeSet::getElementName() const { return Constants::ELEMNAME_ATTRIBUTESET_WITH_PREFIX_STRING; } #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemAttributeSet::startElement(StylesheetExecutionContext& executionContext) const { ElemUse::startElement(executionContext); executionContext.pushCurrentStackFrameIndex(executionContext.getGlobalStackFrameIndex()); executionContext.pushOnElementRecursionStack(this); return getFirstChildElemToExecute(executionContext); } void ElemAttributeSet::endElement(StylesheetExecutionContext& executionContext) const { executionContext.popElementRecursionStack(); executionContext.popCurrentStackFrameIndex(); ElemUse::endElement(executionContext); } const ElemTemplateElement* ElemAttributeSet::getInvoker(StylesheetExecutionContext& executionContext) const { return executionContext.getInvoker(); } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemAttributeSet::execute(StylesheetExecutionContext& executionContext) const { typedef StylesheetExecutionContext::SetAndRestoreCurrentStackFrameIndex SetAndRestoreCurrentStackFrameIndex; typedef StylesheetExecutionContext::ElementRecursionStackPusher ElementRecursionStackPusher; // This will push and pop the stack automatically... ElementRecursionStackPusher thePusher(executionContext, this); // Make sure only global variables are visible during execution... SetAndRestoreCurrentStackFrameIndex theSetAndRestore( executionContext, executionContext.getGlobalStackFrameIndex()); ElemUse::execute(executionContext); const ElemTemplateElement* attr = getFirstChildElem(); while(0 != attr) { attr->execute(executionContext); attr = attr->getNextSiblingElem(); } } #endif void ElemAttributeSet::addToStylesheet( StylesheetConstructionContext& /* constructionContext */, Stylesheet& theStylesheet) { theStylesheet.getStylesheetRoot().addAttributeSet(*this); } bool ElemAttributeSet::childTypeAllowed(int xslToken) const { bool fResult = false; switch(xslToken) { case StylesheetConstructionContext::ELEMNAME_ATTRIBUTE: fResult = true; break; default: break; } return fResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/TracerEvent.cpp0000664000175000000640000000663211731656103017762 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "TracerEvent.hpp" #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN TracerEvent::TracerEvent( const StylesheetExecutionContext& executionContext, const ElemTemplateElement& styleNode) : m_executionContext(executionContext), m_styleNode(styleNode) { } TracerEvent::~TracerEvent() { } XalanDOMString& TracerEvent::printNode(const XalanNode& n, XalanDOMString& r) { PointerToDOMString(&n, r); r.append(" "); if (n.getNodeType() == XalanNode::ELEMENT_NODE) { r += XalanDOMString("<", r.getMemoryManager()); r += n.getNodeName(); const XalanNode* c = n.getFirstChild(); XalanDOMString theBuffer(r.getMemoryManager()); while (c != 0) { if (c->getNodeType() == XalanNode::ATTRIBUTE_NODE) { r += printNode(*c,theBuffer); r += XalanDOMString(" ", r.getMemoryManager()); } c = c->getNextSibling(); } r += XalanDOMString(">", r.getMemoryManager()); } else { if (n.getNodeType() == XalanNode::ATTRIBUTE_NODE) { r += n.getNodeName(); r += XalanDOMString("=", r.getMemoryManager()); r += n.getNodeValue(); } else { r += n.getNodeName(); } } return r; } /** Returns a string representation of the node list. The string will contain the list of nodes inside square braces. Elements will contain the element name and any attributes enclosed in angle brackets. Attributes will be of form, "name=value." @param l any DOM node list. Must not be null. @return a string representation of the given node list. */ XalanDOMString& TracerEvent::printNodeList(const XalanNodeList& l, XalanDOMString& r) { PointerToDOMString(&l, r); r.append(XalanDOMString("[", r.getMemoryManager())); const XalanSize_t len = l.getLength(); XalanSize_t i = 0; XalanDOMString theBuffer(r.getMemoryManager()); while (i < len) { XalanNode* const n = l.item(i); if (n != 0) { r += printNode(*n, theBuffer); if (i != len - 1) { r += XalanDOMString(", ", r.getMemoryManager()); } } ++i; } r += XalanDOMString("]", r.getMemoryManager()); return r; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XResultTreeFrag.cpp0000664000175000000640000001650311731656103020564 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XResultTreeFrag.hpp" #include #include #include #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN inline const XalanDOMString* getSingleTextChildValue(const XalanDocumentFragment& theRTreeFrag) { const XalanNode* const theFirstChild = theRTreeFrag.getFirstChild(); if (theFirstChild != 0 && theFirstChild->getNodeType() == XalanNode::TEXT_NODE && theFirstChild->getNextSibling() == 0) { return &theFirstChild->getNodeValue(); } else { return 0; } } const double theBogusNumberValue = 123456789; XResultTreeFrag::XResultTreeFrag( XalanDocumentFragment& value, MemoryManager& theManager) : XObject(eTypeResultTreeFrag, theManager), m_value(&value), m_singleTextChildValue(getSingleTextChildValue(value)), m_executionContext(0), m_cachedStringValue(theManager), m_cachedNumberValue(theBogusNumberValue) { } XResultTreeFrag::XResultTreeFrag( const XResultTreeFrag& source, MemoryManager& theManager) : XObject(source, theManager), m_value(source.m_value), m_singleTextChildValue(source.m_singleTextChildValue), m_executionContext(0), m_cachedStringValue(source.m_cachedStringValue, theManager), m_cachedNumberValue(source.m_cachedNumberValue) { assert(m_value != 0); } XResultTreeFrag::~XResultTreeFrag() { } const XalanDOMString& XResultTreeFrag::getTypeString() const { return s_resultTreeFragmentString; } double XResultTreeFrag::num(XPathExecutionContext& executionContext) const { if (m_cachedNumberValue == theBogusNumberValue) { m_cachedNumberValue = DoubleSupport::toDouble( str(executionContext), getMemoryManager()); } return m_cachedNumberValue; } double XResultTreeFrag::num() const { if (m_cachedNumberValue == theBogusNumberValue) { m_cachedNumberValue = DoubleSupport::toDouble( str(), getMemoryManager()); } return m_cachedNumberValue; } bool XResultTreeFrag::boolean(XPathExecutionContext& /* executionContext */) const { // Result tree fragments always evaluate to true. return true; } const XalanDOMString& XResultTreeFrag::str(XPathExecutionContext& /* executionContext */) const { return XResultTreeFrag::str(); } const XalanDOMString& XResultTreeFrag::str() const { if (m_singleTextChildValue != 0) { assert(m_value->getFirstChild() != 0 && m_value->getFirstChild()->getNodeType() == XalanNode::TEXT_NODE); return *m_singleTextChildValue; } else if (m_cachedStringValue.empty() == true) { DOMServices::getNodeData( *m_value, m_cachedStringValue); } return m_cachedStringValue; } void XResultTreeFrag::str( XPathExecutionContext& /* executionContext */, FormatterListener& formatterListener, MemberFunctionPtr function) const { XResultTreeFrag::str(formatterListener, function); } void XResultTreeFrag::str( FormatterListener& formatterListener, MemberFunctionPtr function) const { if (m_singleTextChildValue != 0) { assert(m_value->getFirstChild() != 0 && m_value->getFirstChild()->getNodeType() == XalanNode::TEXT_NODE); XObject::string(*m_singleTextChildValue, formatterListener, function); } else if (m_cachedStringValue.empty() == false) { XObject::string(m_cachedStringValue, formatterListener, function); } else { DOMServices::getNodeData( *m_value, formatterListener, function); } } void XResultTreeFrag::str( XPathExecutionContext& /* executionContext */, XalanDOMString& theBuffer) const { XResultTreeFrag::str(theBuffer); } void XResultTreeFrag::str(XalanDOMString& theBuffer) const { if (m_singleTextChildValue != 0) { theBuffer.append(*m_singleTextChildValue); } else if (m_cachedStringValue.empty() == false) { theBuffer.append(m_cachedStringValue); } else { DOMServices::getNodeData( *m_value, theBuffer); } } double XResultTreeFrag::stringLength(XPathExecutionContext& executionContext) const { if (m_singleTextChildValue != 0) { return static_cast(m_singleTextChildValue->length()); } else if (m_cachedStringValue.empty() == false) { return static_cast(m_cachedStringValue.length()); } else { FormatterStringLengthCounter theCounter; DOMServices::getNodeData( *m_value, executionContext, theCounter, &FormatterListener::characters); return static_cast(theCounter.getCount()); } } const XalanDocumentFragment& XResultTreeFrag::rtree() const { assert(m_value != 0); return *m_value; } void XResultTreeFrag::ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject) { theCallbackObject.ResultTreeFragment( *this, rtree()); } void XResultTreeFrag::ProcessXObjectTypeCallback(XObjectTypeCallback& theCallbackObject) const { theCallbackObject.ResultTreeFragment( *this, rtree()); } XalanDocumentFragment* XResultTreeFrag::release() { m_singleTextChildValue = 0; m_cachedStringValue.clear(); m_cachedNumberValue = theBogusNumberValue; XalanDocumentFragment* const temp = m_value; m_value = 0; return temp; } void XResultTreeFrag::set(XalanDocumentFragment& theValue) { release(); m_value = &theValue; m_singleTextChildValue = getSingleTextChildValue(*m_value); } void XResultTreeFrag::dereferenced() { if (m_executionContext == 0 || // We're dead after we call this, if it returns true; m_executionContext->returnXResultTreeFrag(this) == false) { delete m_value; delete this; } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/ElemChoose.hpp0000664000175000000640000000500411731656103017560 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMCHOOSE_HEADER_GUARD) #define XALAN_ELEMCHOOSE_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" // Base class header file. #include "ElemTemplateElement.hpp" XALAN_CPP_NAMESPACE_BEGIN class ElemChoose: public ElemTemplateElement { public: /** * Construct an object corresponding to an "xsl:choose" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemChoose( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); // These methods are inherited from ElemTemplateElement ... virtual const XalanDOMString& getElementName() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; virtual const ElemTemplateElement* getNextChildElemToExecute( StylesheetExecutionContext& executionContext, const ElemTemplateElement* currentElem) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif protected: virtual bool childTypeAllowed(int xslToken) const; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMCHOOSE_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/ElemApplyImport.hpp0000664000175000000640000000527611731656103020633 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_ELEMAPPLYIMPORT_HEADER_GUARD) #define XALAN_ELEMAPPLYIMPORT_HEADER_GUARD // Base include file. Must be first. #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN class ElemApplyImport: public ElemTemplateElement { public: /** * Construct an object corresponding to an "xsl:apply-imports" element * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document */ ElemApplyImport( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); // These methods are inherited from ElemTemplateElement ... virtual const XalanDOMString& getElementName() const; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) virtual const ElemTemplateElement* startElement(StylesheetExecutionContext& executionContext) const; virtual void endElement(StylesheetExecutionContext& executionContext) const; virtual const ElemTemplateElement* getNextChildElemToExecute( StylesheetExecutionContext& executionContext, const ElemTemplateElement* currentElem) const; #else virtual void execute(StylesheetExecutionContext& executionContext) const; #endif virtual ElemTemplateElement* appendChildElem(ElemTemplateElement* newChild); private: }; XALAN_CPP_NAMESPACE_END #endif // XALAN_ELEMAPPLYIMPORT_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/XalanElemLiteralResultAllocator.hpp0000664000175000000640000000756311731656103023774 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANELEMLITERALRESULTALLOCATOR_INCLUDE_GUARD_12455133) #define XALANELEMLITERALRESULTALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XSLT_EXPORT XalanElemLiteralResultAllocator { public: typedef ElemLiteralResult data_type; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanElemLiteralResultAllocator( MemoryManager& theManager, size_type theBlockCount); ~XalanElemLiteralResultAllocator(); /** * Construct an instance * * @param constructionContext context for construction of object * @param stylesheetTree stylesheet containing element * @param name name of element * @param atts list of attributes for element * @param lineNumber line number in document * @param columnNumber column number in document * * @return A pointer to the new instance. */ data_type* create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const XalanDOMChar* name, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber); /** * Determine if an object is owned by the allocator... */ bool ownsObject(const data_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all objects from the allocator. */ void reset() { m_allocator.reset(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanElemLiteralResultAllocator(const XalanElemLiteralResultAllocator&); XalanElemLiteralResultAllocator& operator=(const XalanElemLiteralResultAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANELEMLITERALRESULTALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XSLT/NodeSorter.hpp0000664000175000000640000001514511731656103017630 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_NODESORTER_HEADER_GUARD) #define XALAN_NODESORTER_HEADER_GUARD // Base include file. Must be first. #include "XSLTDefinitions.hpp" #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class MutableNodeRefList; class StylesheetExecutionContext; class XalanNode; class XPath; typedef XalanVector NumberVectorTypeDecl; XALAN_USES_MEMORY_MANAGER(NumberVectorTypeDecl) typedef XalanVector StringVectorTypeDecl; XALAN_USES_MEMORY_MANAGER(StringVectorTypeDecl) /** * This class can sort vectors of nodes according to a select pattern. */ class XALAN_XSLT_EXPORT NodeSorter { public: struct XALAN_XSLT_EXPORT VectorEntry { public: VectorEntry( XalanNode* theNode = 0, XalanSize_t thePosition = 0) : m_node(theNode), m_position(thePosition) { } XalanNode* m_node; XalanSize_t m_position; }; typedef XalanVector NodeVectorType; typedef XalanVector NodeSortKeyVectorType; explicit NodeSorter(MemoryManager& theManager); ~NodeSorter(); NodeSortKeyVectorType& getSortKeys() { return m_keys; } /** * Given a list of nodes, sort each node according to the criteria in the * keys. The list is assumed to be in document order. * * @param executionContext current execution context * @param v list of Nodes */ void sort( StylesheetExecutionContext& executionContext, MutableNodeRefList& theList); /** * Return the results of a compare of two nodes. */ #if defined(XALAN_NO_STD_NAMESPACE) struct XALAN_XSLT_EXPORT NodeSortKeyCompare : public binary_function #else struct XALAN_XSLT_EXPORT NodeSortKeyCompare : public std::binary_function #endif { public: /** * Construct a NodeSortKeyCompare object, to perform the sort * * @param executionContext current execution context * @param theNodes vector or nodes to be sorted * @param theNodeSortKeys vector of keys upon which to sort */ NodeSortKeyCompare( StylesheetExecutionContext& executionContext, NodeSorter& theSorter, const NodeVectorType& theNodes, const NodeSortKeyVectorType& theNodeSortKeys) : m_executionContext(executionContext), m_sorter(theSorter), m_nodes(theNodes), m_nodeSortKeys(theNodeSortKeys) { } /** * Compare two nodes, returning a value to indicate the * result * * @param theLHS the first node to compare * @param theRHS the second node to compare * @param theKeyIndex the index of the key to use * @result < 0 if theLHS is less than theRHS, 0 if they are equal, and > 0 if theLHS is greater than theRHS */ int compare( first_argument_type theLHS, second_argument_type theRHS, XalanSize_t theKeyIndex = 0) const; /** * Compare two nodes as a less predicate. * * @param theLHS the first node to compare * @param theRHS the second node to compare * @param theKeyIndex the index of the key to use * @return true if theLHS is less than theRHS */ result_type operator()( first_argument_type theLHS, second_argument_type theRHS, XalanSize_t theKeyIndex = 0) const { return compare(theLHS, theRHS, theKeyIndex) < 0 ? true : false; } protected: double getNumberResult( const NodeSortKey& theKey, XalanSize_t theKeyIndex, first_argument_type theEntry) const; const XalanDOMString& getStringResult( const NodeSortKey& theKey, XalanSize_t theKeyIndex, first_argument_type theEntry) const; private: StylesheetExecutionContext& m_executionContext; NodeSorter& m_sorter; const NodeVectorType& m_nodes; const NodeSortKeyVectorType& m_nodeSortKeys; }; friend struct NodeSortKeyCompare; typedef NumberVectorTypeDecl NumberVectorType; typedef XalanVector XObjectVectorType; typedef StringVectorTypeDecl StringVectorType; typedef XalanVector NumberCacheType; typedef XalanVector XObjectCacheType; typedef XalanVector StringCacheType; typedef NumberCacheType NumberResultsCacheType; #if defined(XALAN_NODESORTER_CACHE_XOBJECTS) typedef XObjectCacheType StringResultsCacheType; #else typedef StringCacheType StringResultsCacheType; #endif private: /** * Given a vector of nodes, sort each node according to the criteria in the * keys. * * @param executionContext current execution context */ void sort(StylesheetExecutionContext& executionContext); // Data members... NumberResultsCacheType m_numberResultsCache; StringResultsCacheType m_stringResultsCache; NodeSortKeyVectorType m_keys; NodeVectorType m_scratchVector; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_NODESORTER_HEADER_GUARD xalan-c-1.11/c/src/xalanc/XSLT/XalanElemEmptyAllocator.hpp0000664000175000000640000001032211731656103022262 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANELEMEMPTYALLOCATOR_INCLUDE_GUARD_12455133) #define XALANELEMEMPTYALLOCATOR_INCLUDE_GUARD_12455133 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XSLT_EXPORT XalanElemEmptyAllocator { public: typedef ElemEmpty data_type; typedef ReusableArenaAllocator ArenaAllocatorType; typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanElemEmptyAllocator( MemoryManager& theManager, size_type theBlockCount); ~XalanElemEmptyAllocator(); /** * Construct an instance * * @param constructionContext The current construction context * @param stylesheetTree The stylesheet containing element * @param lineNumber The line number in the document * @param columnNumber The column number in the document * @param elementName The name of element. Can be 0. * * @return A pointer to the new instance. */ data_type* create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, XalanFileLoc lineNumber, XalanFileLoc columnNumber, const XalanDOMString* elementName = 0); /** * Construct an instance * * @param constructionContext The current construction context * @param stylesheetTree The stylesheet containing element * @param elementName The name of element. Can be 0. */ data_type* create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const XalanDOMString* elementName = 0); /** * Destroy an instance previously created. * * @param theObject A pointer to the instance to destroy. * * @return true if the instance was destroyed, false if not. */ bool destroy(data_type* theObject) { return m_allocator.destroyObject(theObject); } /** * Determine if an object is owned by the allocator... */ bool ownsObject(const data_type* theObject) { return m_allocator.ownsObject(theObject); } /** * Delete all objects from the allocator. */ void reset() { m_allocator.reset(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanElemEmptyAllocator(const XalanElemEmptyAllocator&); XalanElemEmptyAllocator& operator=(const XalanElemEmptyAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANELEMEMPTYALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XSLT/ElemElement.cpp0000664000175000000640000004531011731656103017730 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ElemElement.hpp" #include #include #include #include "AVT.hpp" #include "Constants.hpp" #include "Stylesheet.hpp" #include "StylesheetConstructionContext.hpp" #include "StylesheetExecutionContext.hpp" XALAN_CPP_NAMESPACE_BEGIN ElemElement::ElemElement( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) : ElemUse(constructionContext, stylesheetTree, lineNumber, columnNumber, StylesheetConstructionContext::ELEMNAME_ELEMENT), m_nameAVT(0), m_namespaceAVT(0) { // Namespace aliases are not used for xsl:element, so // turn them off... // m_namespacesHandler.setProcessNamespaceAliaises(false); const XalanSize_t nAttrs = atts.getLength(); for (XalanSize_t i = 0; i < nAttrs; i++) { const XalanDOMChar* const aname = atts.getName(i); if(equals(aname, Constants::ATTRNAME_NAME)) { m_nameAVT = constructionContext.createAVT(getLocator(), aname, atts.getValue(i), *this); } else if(equals(aname, Constants::ATTRNAME_NAMESPACE)) { m_namespaceAVT = constructionContext.createAVT(getLocator(), aname, atts.getValue(i), *this); } else if(processUseAttributeSets( constructionContext, aname, atts, i) == false && processSpaceAttr( Constants::ELEMNAME_ELEMENT_WITH_PREFIX_STRING.c_str(), aname, atts, i, constructionContext) == false && isAttrOK( aname, atts, i, constructionContext) == false) { error( constructionContext, XalanMessages::ElementHasIllegalAttribute_2Param, Constants::ELEMNAME_ELEMENT_WITH_PREFIX_STRING.c_str(), aname); } } if(0 == m_nameAVT) { error( constructionContext, XalanMessages::ElementMustHaveAttribute_2Param, Constants::ELEMNAME_ELEMENT_WITH_PREFIX_STRING, Constants::ATTRNAME_NAME); } } ElemElement::~ElemElement() { } const XalanDOMString& ElemElement::getElementName() const { return Constants::ELEMNAME_ELEMENT_WITH_PREFIX_STRING; } typedef const StylesheetExecutionContext::GetCachedString GetCachedString; #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) const ElemTemplateElement* ElemElement::startElement(StylesheetExecutionContext& executionContext) const { XalanDOMString& elemName = executionContext.getAndPushCachedString(); m_nameAVT->evaluate(elemName, *this, executionContext); bool isIllegalElement = !XalanQName::isValidQName(elemName); if (isIllegalElement == true) { warn( executionContext, XalanMessages::IllegalElementName_1Param, elemName); executionContext.pushSkipElementAttributes(true); } else { const GetCachedString elemNameSpaceGuard(executionContext); XalanDOMString& elemNameSpace = elemNameSpaceGuard.get(); if (m_namespaceAVT != 0) { m_namespaceAVT->evaluate(elemNameSpace, *this, executionContext); } XalanDOMString::size_type namespaceLen = elemNameSpace.length(); XalanDOMString::size_type len = elemName.length(); const XalanDOMString::size_type indexOfNSSep = indexOf(elemName, XalanUnicode::charColon); const bool havePrefix = indexOfNSSep == len ? false : true; const GetCachedString prefixGuard(executionContext); XalanDOMString& prefix = prefixGuard.get(); if (havePrefix == true) { substring(elemName, prefix, 0, indexOfNSSep); const XalanDOMString* const theNamespace = getNamespacesHandler().getNamespace(prefix); if(theNamespace == 0 && namespaceLen == 0) { warn( executionContext, XalanMessages::PrefixIsNotDeclared_1Param, prefix); if (m_namespaceAVT != 0) { elemName.erase(0, indexOfNSSep + 1); } else { isIllegalElement = true; warn( executionContext, XalanMessages::IllegalElementName_1Param, elemName); } } else if (theNamespace != 0 && namespaceLen == 0 && equals(prefix, DOMServices::s_XMLNamespace) == false) { elemNameSpace = *theNamespace; } } if (isIllegalElement == false) { executionContext.startElement(elemName.c_str()); if(0 == m_namespaceAVT && havePrefix == false ) { if (havePrefix == false) { fixupDefaultNamespace(executionContext); } } else { if(havePrefix == false) { if (namespaceLen > 0) { const XalanDOMString* const theDefaultNamespace = executionContext.getResultNamespaceForPrefix(s_emptyString); if (theDefaultNamespace == 0 || equals(*theDefaultNamespace, elemNameSpace) == false) { executionContext.addResultAttribute( DOMServices::s_XMLNamespace, elemNameSpace); } } else { // OK, the namespace we're generating is the default namespace, // so let's make sure that we really need it. If we don't, // we end up with another xmlns="" on the element we're // generating. Although this isn't really an error, it's // a bit unsightly, so let's suppress it... const XalanDOMString& theParentDefaultNamespace = getParentDefaultNamespace(); if (theParentDefaultNamespace.empty() == false || executionContext.getResultNamespaceForPrefix(s_emptyString) != 0) { executionContext.addResultAttribute(DOMServices::s_XMLNamespace, elemNameSpace); } } } else { const XalanDOMString* const theNamespace = executionContext.getResultNamespaceForPrefix(prefix); if (theNamespace == 0 || equals(*theNamespace, elemNameSpace) == false) { prefix.insert(0, DOMServices::s_XMLNamespaceWithSeparator); executionContext.addResultAttribute(prefix, elemNameSpace); } } } } if (isIllegalElement == true) { executionContext.pushSkipElementAttributes(true); } else { ElemUse::startElement(executionContext); executionContext.pushSkipElementAttributes(false); } } return beginExecuteChildren(executionContext); } void ElemElement::endElement(StylesheetExecutionContext& executionContext) const { endExecuteChildren(executionContext); bool ignoreAttributeElements = executionContext.popSkipElementAttributes(); const XalanDOMString& elemName = executionContext.getAndPopCachedString(); if (!ignoreAttributeElements) { executionContext.endElement(elemName.c_str()); ElemUse::endElement(executionContext); } } bool ElemElement::executeChildElement( StylesheetExecutionContext& executionContext, const ElemTemplateElement* element) const { return !(element->getXSLToken() == StylesheetConstructionContext::ELEMNAME_ATTRIBUTE && executionContext.getSkipElementAttributes() == true); } #endif #if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION) void ElemElement::execute(StylesheetExecutionContext& executionContext) const { const GetCachedString elemNameGuard(executionContext); XalanDOMString& elemName = elemNameGuard.get(); m_nameAVT->evaluate(elemName, *this, executionContext); bool isIllegalElement = !XalanQName::isValidQName(elemName); if (isIllegalElement == true) { warn( executionContext, XalanMessages::IllegalElementName_1Param, elemName); ElemUse::doExecute(executionContext, false); doExecuteChildren(executionContext, true); } else { const GetCachedString elemNameSpaceGuard(executionContext); XalanDOMString& elemNameSpace = elemNameSpaceGuard.get(); if (m_namespaceAVT != 0) { m_namespaceAVT->evaluate(elemNameSpace, *this, executionContext); } XalanDOMString::size_type namespaceLen = length(elemNameSpace); bool foundResultNamespaceForPrefix = false; XalanDOMString::size_type len = length(elemName); const XalanDOMString::size_type indexOfNSSep = indexOf(elemName, XalanUnicode::charColon); const bool havePrefix = indexOfNSSep == len ? false : true; const GetCachedString prefixGuard(executionContext); XalanDOMString& prefix = prefixGuard.get(); if (havePrefix == true) { substring(elemName, prefix, 0, indexOfNSSep); const XalanDOMString* const theNamespace = executionContext.getResultNamespaceForPrefix(prefix); if (theNamespace != 0) { foundResultNamespaceForPrefix = true; } else { const XalanDOMString* const theNamespace = getNamespacesHandler().getNamespace(prefix); if(theNamespace == 0 && namespaceLen == 0) { warn( executionContext, XalanMessages::PrefixIsNotDeclared_1Param, prefix); if (m_namespaceAVT != 0) { elemName.erase(0, indexOfNSSep + 1); } else { isIllegalElement = true; warn( executionContext, XalanMessages::IllegalElementName_1Param, elemName); } } else if (theNamespace != 0 && namespaceLen == 0 && equals(prefix, DOMServices::s_XMLNamespace) == false) { elemNameSpace = *theNamespace; } } } if (isIllegalElement == false) { executionContext.startElement(elemName.c_str()); if(0 == m_namespaceAVT && (havePrefix == false || foundResultNamespaceForPrefix == true)) { if (havePrefix == false) { fixupDefaultNamespace(executionContext); } } else { if(havePrefix == false) { if (namespaceLen > 0) { const XalanDOMString* const theDefaultNamespace = executionContext.getResultNamespaceForPrefix(s_emptyString); if (theDefaultNamespace == 0 || equals(*theDefaultNamespace, elemNameSpace) == false) { executionContext.addResultAttribute( DOMServices::s_XMLNamespace, elemNameSpace); } } else { // OK, the namespace we're generating is the default namespace, // so let's make sure that we really need it. If we don't, // we end up with another xmlns="" on the element we're // generating. Although this isn't really an error, it's // a bit unsightly, so let's suppress it... const XalanDOMString& theParentDefaultNamespace = getParentDefaultNamespace(); if (length(theParentDefaultNamespace) == 0) { if (executionContext.getResultNamespaceForPrefix(s_emptyString) != 0) { executionContext.addResultAttribute(DOMServices::s_XMLNamespace, elemNameSpace); } } else { executionContext.addResultAttribute(DOMServices::s_XMLNamespace, elemNameSpace); } } } else { const XalanDOMString* const theNamespace = executionContext.getResultNamespaceForPrefix(prefix); if (theNamespace == 0 || equals(*theNamespace, elemNameSpace) == false) { insert(prefix, 0, DOMServices::s_XMLNamespaceWithSeparator); executionContext.addResultAttribute(prefix, elemNameSpace); } } } } if (isIllegalElement == true) { ElemUse::doExecute(executionContext, false); doExecuteChildren(executionContext, true); } else { ElemUse::doExecute(executionContext, true); doExecuteChildren(executionContext, false); executionContext.endElement(elemName.c_str()); } } } void ElemElement::doExecuteChildren( StylesheetExecutionContext& executionContext, bool skipAttributeChildren) const { if (skipAttributeChildren == false) { // If we should execute all children, then just call // executeChildren()... executeChildren(executionContext); } else { StylesheetExecutionContext::PushAndPopElementFrame thePushAndPop(executionContext, this); for (ElemTemplateElement* node = getFirstChildElem(); node != 0; node = node->getNextSiblingElem()) { if (node->getXSLToken() != StylesheetConstructionContext::ELEMNAME_ATTRIBUTE) { node->execute(executionContext); } } } } #endif void ElemElement::namespacesPostConstruction( StylesheetConstructionContext& constructionContext, const NamespacesHandler& theParentHandler, NamespacesHandler& theHandler) { theHandler.postConstruction( constructionContext, false, getElementName(), &theParentHandler); } void ElemElement::fixupDefaultNamespace(StylesheetExecutionContext& executionContext) const { // OK, now let's check to make sure we don't have to change the default namespace... const XalanDOMString* const theCurrentDefaultNamespace = executionContext.getResultNamespaceForPrefix(s_emptyString); const XalanDOMString* const theElementDefaultNamespace = getNamespacesHandler().getNamespace(s_emptyString); if (theCurrentDefaultNamespace != 0) { if (theElementDefaultNamespace == 0) { // There was no default namespace, so we have to turn the // current one off. executionContext.addResultAttribute(DOMServices::s_XMLNamespace, s_emptyString); } else if (equals(*theCurrentDefaultNamespace, *theElementDefaultNamespace) == false) { // There is a default namespace, but it's different from the current one, // so we have to change it. executionContext.addResultAttribute(DOMServices::s_XMLNamespace, *theElementDefaultNamespace); } } else if (theElementDefaultNamespace != 0) { executionContext.addResultAttribute(DOMServices::s_XMLNamespace, *theElementDefaultNamespace); } } const XalanDOMString& ElemElement::getParentDefaultNamespace() const { const ElemTemplateElement* const theParent = getParentNodeElem(); if (theParent == 0) { return s_emptyString; } else { const XalanDOMString* const theParentDefaultNamespace = theParent->getNamespacesHandler().getNamespace(s_emptyString); if (theParentDefaultNamespace == 0) { return s_emptyString; } else { return *theParentDefaultNamespace; } } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XSLT/XalanElemApplyTemplatesAllocator.cpp0000664000175000000640000000367111731656103024134 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanElemApplyTemplatesAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanElemApplyTemplatesAllocator::XalanElemApplyTemplatesAllocator( MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanElemApplyTemplatesAllocator::~XalanElemApplyTemplatesAllocator() { } XalanElemApplyTemplatesAllocator::data_type* XalanElemApplyTemplatesAllocator::create( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, const AttributeListType& atts, XalanFileLoc lineNumber, XalanFileLoc columnNumber) { data_type* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); data_type* const theResult = new(theBlock) data_type( constructionContext, stylesheetTree, atts, lineNumber, columnNumber); m_allocator.commitAllocation(theBlock); return theResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/NLS/0002775000175000000640000000000012037700125014663 5ustar stevesambaxalan-c-1.11/c/src/xalanc/NLS/en_US/0002775000175000000640000000000012037700125015674 5ustar stevesambaxalan-c-1.11/c/src/xalanc/NLS/en_US/XalanMsg_en_US.xlf0000664000175000000640000012367311731656103021232 0ustar stevesamba
    The system error code (errno) is {0}. The system error code (errno) is {0}. The encoding '{0}' is not supported. The encoding '{0}' is not supported. The error code '{0}' was returned when creating a transcoder for the encoding '{1}'. The error code '{0}' was returned when creating a transcoder for the encoding '{1}'. An unknown error occurred while transcoding to '{0}'. An unknown error occurred while transcoding to '{0}'. An error occurred while transcoding. An error occurred while transcoding. The error code is '{0}'. The error code is '{0}'. Internal error: The function '{0}' requires a non-null context node. Internal error: The function '{0}' requires a non-null context node. The function '{0}' requires two arguments. The function '{0}' requires two arguments. The function '{0}' requires zero or one arguments. The function '{0}' requires zero or one arguments. The function '{0}' requires two or three arguments. The function '{0}' requires two or three arguments. The function '{0}' requires three arguments. The function '{0}' requires three arguments. Cannot convert '{0}' to '{1}'. Cannot convert '{0}' to '{1}'. The expression does not evaluate to a node-set. The expression does not evaluate to a node-set. Internal error: An unknown axis '{0}' was detected. Internal error: An unknown axis '{0}' was detected. Internal error: An XPath expression cannot be evaluated as match pattern. Internal error: An XPath expression cannot be evaluated as match pattern. Internal error: The argument count of '{0}' was detected in a node test. Internal error: The argument count of '{0}' was detected in a node test. Internal error: An invalid op code '{0}' was detected. Internal error: An invalid op code '{0}' was detected. Internal error: An invalid number of arguments for op code '{0}' was detected. The required number of arguments is '{1}', but '{2}' argument(s) were supplied. Internal error: An invalid number of arguments for op code '{0}' was detected. The required number of arguments is '{1}', but '{2}' argument(s) were supplied. Internal error: An invalid number of arguments '{0}' was supplied for op code '{1}'. Internal error: An invalid number of arguments '{0}' was supplied for op code '{1}'. Remaining tokens are: Remaining tokens are: The function '{0}' is not implemented. The function '{0}' is not implemented. The function number '{0}' is not available. The function number '{0}' is not available. The function '{0}' is not a known XPath function. The function '{0}' is not a known XPath function. Extra illegal token. Extra illegal token. A string literal is not terminated. A '"' or "'" is missing. A string literal is not terminated. A '"' or "'" is missing. The expression is empty. The expression is empty. '{0}' is not a valid NCName. '{0}' is not a valid NCName. The prefix '{0}' is bound to a zero-length URI. The prefix '{0}' is bound to a zero-length URI. The prefix '{0}' is not declared. The prefix '{0}' is not declared. Expected '{0}', but found '{1}' instead. Expected '{0}', but found '{1}' instead. A literal argument is required. A literal argument is required. Found ',' but no preceding argument. Found ',' but no preceding argument. Found ',' but no following argument. Found ',' but no following argument. The function '{0}' was not found. The function '{0}' was not found. On The function '{0}' does not accept any arguments. The function '{0}' does not accept any arguments. Use 'self::node()[predicate]' instead of '.[predicate]'. Use 'self::node()[predicate]' instead of '.[predicate]'. Use 'parent::node()[predicate]' instead of '..[predicate]'. Use 'parent::node()[predicate]' instead of '..[predicate]'. The token '{0}' was unexpected. The token '{0}' was unexpected. An axis or node test was expected. An axis or node test was expected. '{0}' is not a valid axis. '{0}' is not a valid axis. '{0}' is an unknown node type. '{0}' is an unknown node type. A node test was expected. A node test was expected. Only 'child' and 'attribute' axes are allowed in match patterns. Only 'child' and 'attribute' axes are allowed in match patterns. A variable reference is allowed in a match pattern or expression in this context. A variable reference is allowed in a match pattern or expression in this context. The value of either the 'use' attribute or the 'match' attribute of xsl:key cannot contain a call to the key() function. The value of either the 'use' attribute or the 'match' attribute of xsl:key cannot contain a call to the key() function. The function '{0}' requires two or more arguments. The function '{0}' requires two or more arguments. pattern = '{0}' pattern = '{0}' expression = '{0}' expression = '{0}' The function '{0}' is not available. The function '{0}' is not available. xsl:attribute cannot create an attribute if no element node is open, or if a child node exists. xsl:attribute cannot create an attribute if no element node is open, or if a child node exists. xsl:element cannot create an element because '{0}' is not a a legal name. xsl:element cannot create an element because '{0}' is not a a legal name. The processor does not support extension elements. The processor does not support extension elements. Cannot resolve a relative URI when the node-set provided as the second argument to the 'document' function is empty. Cannot resolve a relative URI when the node-set provided as the second argument to the 'document' function is empty. The element {0} is an unknown XSLT element. The element {0} is an unknown XSLT element. name="{0}" name="{0}" An attribute cannot be added to the result tree when there is no open element. The attribute will be ignored. An attribute cannot be added to the result tree when there is no open element. The attribute will be ignored. Cannot create an item in result tree. Cannot create an item in result tree. The brace '{' cannot appear within an expression. The brace '{' cannot appear within an expression. The attribute value template is missing a '}' brace. The attribute value template is missing a '}' brace. There is no current template. There is no current template. The attribute name '{0}' is not a valid QName. The attribute name '{0}' is not a valid QName. The name '{0}' is not a valid QName. The name '{0}' is not a valid QName. The name '{0}' is not a valid NCName. The name '{0}' is not a valid NCName. The attribute '{0}' has a value '{1}' which is not a valid QName. The attribute '{0}' has a value '{1}' which is not a valid QName. The element '{0}' must have a '{1}' attribute. The element '{0}' must have a '{1}' attribute. The template name specified in the 'xsl:call-template' instruction was not found. The template name specified in the 'xsl:call-template' instruction was not found. The element '{0}' has an attribute '{1}' with an illegal value of '{2}'. The element '{0}' has an attribute '{1}' with an illegal value of '{2}'. Duplicate definition of {0} element. Duplicate definition of {0} element. The xsl:sort 'data-type' attribute must evaluate to 'text', 'number' or a prefixed name. The xsl:sort 'data-type' attribute must evaluate to 'text', 'number' or a prefixed name. The xsl:sort 'data-type' attribute evaluates to an unknown data-type. The data-type will be 'text'. The xsl:sort 'data-type' attribute evaluates to an unknown data-type. The data-type will be 'text'. The grouping-separator value must be one character in length. The grouping-separator value must be one character in length. The numbering format '{0}' is not yet supported. The numbering format '{0}' is not yet supported. The processing instruction name '{0}' is invalid. The processing instruction name '{0}' is invalid. A processing instruction name must be a valid NCName. A processing instruction name must be a valid NCName. The element '{0}' requires either a 'name' or 'match' attribute. The element '{0}' requires either a 'name' or 'match' attribute. '{0}' has an invalid '{1}' attribute. '{0}' has an invalid '{1}' attribute. The element '{0}' is not allowed at this position in the stylesheet. The element '{0}' is not allowed at this position in the stylesheet. The xsl:variable instance was added to the wrong stylesheet. The xsl:variable instance was added to the wrong stylesheet. The xsl:variable instance already has a parent and cannot be a top-level element. The xsl:variable instance already has a parent and cannot be a top-level element. The second argument to the function '{0}' must be a node-set. The second argument to the function '{0}' must be a node-set. The function '{0}' accepts one or two arguments. The function '{0}' accepts one or two arguments. The decimal-format element '{0}' was not found. The decimal-format element '{0}' was not found. The property '{0}' is not a valid QName. The property '{0}' is not a valid QName. Invalid argument type in the EXSLT function '{0}'. Invalid argument type in the EXSLT function '{0}'. The function '{0}' accepts one argument. The function '{0}' accepts one argument. XSLT error XSLT error XSLT warning XSLT warning XSLT message XSLT message XML error XML error XML warning XML warning XML message XML message XPath error XPath error XPath warning XPath warning XPath message XPath message Style tree node: {0}. Style tree node: {0}. Source tree node: {0}. Source tree node: {0}. line {0}, column {1}. line {0}, column {1}. '{0}' has an invalid '{1}' attribute. '{0}' has an invalid '{1}' attribute. The value of the attribute '{0}' must be '{1}' or '{2}'. The value of the attribute '{0}' must be '{1}' or '{2}'. The stylesheet already has a literal result element template. The stylesheet already has a literal result element template. The stylesheet already has a template with the expanded name '{0}'. The stylesheet already has a template with the expanded name '{0}'. The token '{0}' is an unknown XSLT token value. The token '{0}' is an unknown XSLT token value. Infinite recursion was detected for element '{0}'. Infinite recursion was detected for element '{0}'. The variable '{0}' is not defined. The variable '{0}' is not defined. The element '{0}' is not allowed at this position in the stylesheet. The element '{0}' is not allowed at this position in the stylesheet. Element '{0}' not parented by '{1}'. Element '{0}' not parented by '{1}'. The element '{0}' is not allowed inside a template. The element '{0}' is not allowed inside a template. The stylesheet element did not specify a version attribute. The stylesheet element did not specify a version attribute. A global variable or parameter with this name has already been declared. A global variable or parameter with this name has already been declared. A variable or parameter with this name has already been declared in this template. A variable or parameter with this name has already been declared in this template. Imports can only occur as the first elements in the stylesheet. Imports can only occur as the first elements in the stylesheet. {0} is directly or indirectly importing itself. {0} is directly or indirectly importing itself. {0} is directly or indirectly including itself. {0} is directly or indirectly including itself. Character data is not allowed at this position in the stylesheet. Character data is not allowed at this position in the stylesheet. transform transform There is no valid result target There is no valid result target xsl:output has an unknown method '{1}'. xsl:output has an unknown method '{1}'. '{0}' is an unsupported Xalan-specific attribute. '{0}' is an unsupported Xalan-specific attribute. The element '{0}' has an illegal attribute '{1}'. The element '{0}' has an illegal attribute '{1}'. Line {0}, Column {0}, Line {0}, Column {0}, match='{0}' match='{0}' Warning: Warning: Fatal Error: Fatal Error: The call to 'format-number()' failed. The call to 'format-number()' failed. Internal error: An invalid match op code '{0}' was detected. Internal error: An invalid match op code '{0}' was detected. Occurred in entity '{0}', at an unknown location. Occurred in entity '{0}', at an unknown location. Occurred in entity '{0}', at line {1}, column {2}. Occurred in entity '{0}', at line {1}, column {2}. Occurred in an unknown entity, at line {0}, column {1}. Occurred in an unknown entity, at line {0}, column {1}. Occurred in an unknown entity, at an unknown location. Occurred in an unknown entity, at an unknown location. Empty node list Empty node list Default {0} rule. Default {0} rule. Default root rule. Default root rule. Invalid stack context Invalid stack context Failed to process stylesheet. Failed to process stylesheet. Total time Total time No stylesheet is available to process. No stylesheet is available to process. Compiling a stylesheet from a DOM instance requires a Document or Element node. Compiling a stylesheet from a DOM instance requires a Document or Element node. Could not identify the fragment '{0}'. Could not identify the fragment '{0}'. The fragment '{0}' was not found. The fragment '{0}' was not found. The node pointed to by the fragment identifier '{0}' was not an Element. The node pointed to by the fragment identifier '{0}' was not an Element. Only text nodes can be copied in this context. The node is ignored. Only text nodes can be copied in this context. The node is ignored. An unmatched '}' was found. An unmatched '}' was found. The document '{0}' could not be loaded. The document '{0}' could not be loaded. The document '{0}' could not be loaded. (Base URI: '{1}') The document '{0}' could not be loaded. (Base URI: '{1}') '{0}' requires a '{1}' attribute. '{0}' requires a '{1}' attribute. Input XSL Input XSL More than one matching template was found. The last found in stylesheet will be used. More than one matching template was found. The last found in stylesheet will be used. A circular variable definition was detected. A circular variable definition was detected. The function '{0}' accepts two arguments. The function '{0}' accepts two arguments. No PrefixResolver is available in the function 'evaluate()'. No PrefixResolver is available in the function 'evaluate()'. Invalid argument type in the function '{0}'. Invalid argument type in the function '{0}'. A namespace node for the default namespace already exists in the result tree. A namespace node for the default namespace already exists in the result tree. A namespace node with the name '{0}' already exists in the result tree. A namespace node with the name '{0}' already exists in the result tree. Invalid UTF-16 high surrogate detected: {0}. Invalid UTF-16 high surrogate detected: {0}. Invalid UTF-16 surrogate pair detected: {0}:{0}. Invalid UTF-16 surrogate pair detected: {0}:{0}. The EXSLT function '{0}' accepts one argument. The EXSLT function '{0}' accepts one argument. The EXSLT function '{0}' does not accept any arguments. The EXSLT function '{0}' does not accept any arguments. The EXSLT function '{0}' accepts two arguments. The EXSLT function '{0}' accepts two arguments. The EXSLT function '{0}' accepts two or three arguments. The EXSLT function '{0}' accepts two or three arguments. The EXSLT function '{0}' accepts one or two arguments. The EXSLT function '{0}' accepts one or two arguments. XalanDOMException caught. The code is '{0}'. XalanDOMException caught. The code is '{0}'. An invalid compiled stylesheet was provided. An invalid compiled stylesheet was provided. An invalid parsed source was provided. An invalid parsed source was provided. Number of bytes written does not equal number of bytes sent. Number of bytes written does not equal number of bytes sent. Xalan version {0}. Xalan version {0}. Xerces version {0}. Xerces version {0}. Messages XalanExeHelpMenu - XalanExeHelpMenu10 are messages for the one menu. Don't change the order and don't add in the middle other messages Usage: Xalan [options] source stylesheet Usage: Xalan [options] source stylesheet Messages XalanExeHelpMenu - XalanExeHelpMenu10 are messages for the one menu. Don't change the order and don't add in the middle other messages Options: Options: Messages XalanExeHelpMenu - XalanExeHelpMenu10 are messages for the one menu. Don't change the order and don't add in the middle other messages -a Use xml-stylesheet PI, not the 'stylesheet' argument -a Use xml-stylesheet PI, not the 'stylesheet' argument Messages XalanExeHelpMenu - XalanExeHelpMenu10 are messages for the one menu. Don't change the order and don't add in the middle other messages -e encoding Force the specified encoding for the output. -e encoding Force the specified encoding for the output. Messages XalanExeHelpMenu - XalanExeHelpMenu10 are messages for the one menu. Don't change the order and don't add in the middle other messages -i integer Indent the specified amount. -i integer Indent the specified amount. Messages XalanExeHelpMenu - XalanExeHelpMenu10 are messages for the one menu. Don't change the order and don't add in the middle other messages -m Omit the META tag in HTML output. -m Omit the META tag in HTML output. Messages XalanExeHelpMenu - XalanExeHelpMenu10 are messages for the one menu. Don't change the order and don't add in the middle other messages -o filename Write output to the specified file. -o filename Write output to the specified file. Messages XalanExeHelpMenu - XalanExeHelpMenu10 are messages for the one menu. Don't change the order and don't add in the middle other messages -p name expression Sets a stylesheet parameter. -p name expression Sets a stylesheet parameter. Messages XalanExeHelpMenu - XalanExeHelpMenu10 are messages for the one menu. Don't change the order and don't add in the middle other messages -t Display timing information. -t Display timing information. Messages XalanExeHelpMenu - XalanExeHelpMenu10 are messages for the one menu. Don't change the order and don't add in the middle other messages -u Disable escaping of URLs in HTML output. -u Disable escaping of URLs in HTML output. Messages XalanExeHelpMenu - XalanExeHelpMenu10 are messages for the one menu. Don't change the order and don't add in the middle other messages -? Display this message. -? Display this message. Messages XalanExeHelpMenu - XalanExeHelpMenu10 are messages for the one menu. Don't change the order and don't add in the middle other messages -v Validates source documents. -v Validates source documents. Messages XalanExeHelpMenu - XalanExeHelpMenu10 are messages for the one menu. Don't change the order and don't add in the middle other messages - A dash as the 'source' argument reads from stdin. - A dash as the 'source' argument reads from stdin. Messages XalanExeHelpMenu - XalanExeHelpMenu10 are messages for the one menu. Don't change the order and don't add in the middle other messages ('-' cannot be used for both arguments.) ('-' cannot be used for both arguments.) The element {0} or literal text is not allowed at this position in the stylesheet The element {0} or literal text is not allowed at this position in the stylesheet The element {0} is not allowed at this position in the stylesheet The element {0} is not allowed at this position in the stylesheet Error writing file: {0}. Error writing file: {0}. Error opening file: {0}. Error opening file: {0}. Error Error Error writing to standard stream. Error writing to standard stream. The Unicode code point U+{0} cannot be represented in the encoding '{1}'. The Unicode code point U+{0} cannot be represented in the encoding '{1}'. '{0}' is an invalid Unicode scalar value. '{0}' is an invalid Unicode scalar value. A zero-length prefix was detected A zero-length prefix was detected. The xsl:sort 'order' value must be 'ascending' or 'descending'. The xsl:sort 'order' value must be 'ascending' or 'descending'. The xsl:sort attribute 'data-type' value must be 'text', 'number' or a prefixed name. The xsl:sort attribute 'data-type' value must be 'text', 'number' or a prefixed name. The xsl:sort element has an unknown value in an attribute 'data-type'. The data-type will be 'text' The xsl:sort element has an unknown value in an attribute 'data-type'. The data-type will be 'text' The xsl:sort attribute 'case-order' value must be 'upper-first' or 'lower-first'. The xsl:sort attribute 'case-order' value must be 'upper-first' or 'lower-first'. The legal values for letter-value are 'alphabetic' and 'traditional'. The legal values for letter-value are 'alphabetic' and 'traditional'. Invalid URI. Invalid URI. Expected a token but reached the end of the expression instead. Expected a token but reached the end of the expression instead. The Unicode code point '{0}' is not a legal XML {1} character. The Unicode code point '{0}' is not a legal XML {1} character. There is no xsl:key instruction with the expanded name '{0}'. There is no xsl:key instruction with the expanded name '{0}'. The processor cannot use the HTML output method because the current extension output method does not support it. The processor cannot use the HTML output method because the current extension output method does not support it. The fragment '{0}' was not found in the document '{1}'. The fragment '{0}' was not found in the document '{1}'.
    xalan-c-1.11/c/src/xalanc/NLS/xliff.dtd0000664000175000000640000003061411731656103016500 0ustar stevesamba xalan-c-1.11/c/src/xalanc/ICUBridge/0002775000175000000640000000000012037700125015764 5ustar stevesambaxalan-c-1.11/c/src/xalanc/ICUBridge/ICUBridgeDefinitions.hpp0000664000175000000640000000247311731656103022440 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(ICUBRIDGEDEFINITIONS_HEADER_GUARD_1357924680) #define ICUBRIDGEDEFINITIONS_HEADER_GUARD_1357924680 #include #if defined(XALAN_BUILD_DLL) #define XALAN_ICUBRIDGE_EXPORT XALAN_PLATFORM_EXPORT #define XALAN_ICUBRIDGE_EXPORT_FUNCTION(T) XALAN_PLATFORM_EXPORT_FUNCTION(T) #else #define XALAN_ICUBRIDGE_EXPORT XALAN_PLATFORM_IMPORT #define XALAN_ICUBRIDGE_EXPORT_FUNCTION(T) XALAN_PLATFORM_IMPORT_FUNCTION(T) #endif #endif // ICUBRIDGEDEFINITIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/ICUBridge/ICUXalanNumberFormatFactory.cpp0000664000175000000640000000255711731656103023763 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ICUXalanNumberFormatFactory.hpp" #include "ICUXalanNumberFormatProxy.hpp" XALAN_CPP_NAMESPACE_BEGIN ICUXalanNumberFormatFactory::ICUXalanNumberFormatFactory(MemoryManager& theManager) : StylesheetExecutionContextDefault::XalanNumberFormatFactory(), m_memoryManager(theManager) { } ICUXalanNumberFormatFactory::~ICUXalanNumberFormatFactory() { } XalanNumberFormat* ICUXalanNumberFormatFactory::create() { ICUXalanNumberFormatProxy* theInstance; return XalanConstruct(m_memoryManager, theInstance, m_memoryManager); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/ICUBridge/ICUBridgeCollationCompareFunctor.hpp0000664000175000000640000000462011731656103024755 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(ICUBRIDGE_COLLATIONCOMPAREFUNCTOR_GUARD_1357924680) #define ICUBRIDGE_COLLATIONCOMPAREFUNCTOR_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class ICUBridgeCollationCompareFunctorImpl; class XALAN_ICUBRIDGE_EXPORT ICUBridgeCollationCompareFunctor : public XalanCollationServices::CollationCompareFunctor { public: /** * Constructor. * * @param fCacheCollators If true, the instance will cache collators. This is not thread-safe, so each thread must have its own instance. */ ICUBridgeCollationCompareFunctor(MemoryManager& theManager, bool fCacheCollators = false); static ICUBridgeCollationCompareFunctor* create(MemoryManager& theManager, bool fCacheCollators = false); virtual ~ICUBridgeCollationCompareFunctor(); virtual int operator()( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, XalanCollationServices::eCaseOrder theCaseOrder = XalanCollationServices::eDefault) const; virtual int operator()( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, const XalanDOMChar* theLocale, XalanCollationServices::eCaseOrder theCaseOrder = XalanCollationServices::eDefault) const; private: ICUBridgeCollationCompareFunctorImpl* const m_impl; }; XALAN_CPP_NAMESPACE_END #endif // ICUBRIDGE_COLLATIONCOMPAREFUNCTOR_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/ICUBridge/ICUBridgeCollationCompareFunctorImpl.hpp0000664000175000000640000001463311731656103025604 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(ICUBRIDGE_COLLATIONCOMPAREFUNCTORIMPL_GUARD_1357924680) #define ICUBRIDGE_COLLATIONCOMPAREFUNCTORIMPL_GUARD_1357924680 #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN #if defined(XALAN_HAS_CPP_NAMESPACE) typedef U_ICU_NAMESPACE::Collator CollatorType; #else typedef Collator CollatorType; #endif struct CollationCacheStruct { CollationCacheStruct( MemoryManager& theManager, const XalanDOMString& theLocale, CollatorType* theCollator) : m_locale(theLocale, theManager), m_collator(theCollator) { } CollationCacheStruct(MemoryManager& theManager) : m_locale(theManager), m_collator(0) { } CollationCacheStruct( const CollationCacheStruct& other, MemoryManager& theManager) : m_locale(other.m_locale,theManager), m_collator(other.m_collator) { } void swap(CollationCacheStruct& theOther) { m_locale.swap(theOther.m_locale); CollatorType* const theTemp = m_collator; m_collator = theOther.m_collator; theOther.m_collator = theTemp; } #if defined(XALAN_NO_SELECTIVE_TEMPLATE_INSTANTIATION) bool operator<(const CollationCacheStruct& theRHS) const { return this < &theRHS; } bool operator==(const CollationCacheStruct& theRHS) const { return this == &theRHS; } #endif XalanDOMString m_locale; CollatorType* m_collator; struct CollatorDeleteFunctor { CollatorDeleteFunctor(MemoryManager& theManager): m_memoryManager(theManager) { } void operator()(CollationCacheStruct& theStruct) const { delete theStruct.m_collator; } private: MemoryManager& m_memoryManager; }; struct CollatorFindFunctor { CollatorFindFunctor(const XalanDOMChar* theLocale) : m_locale(theLocale) { } bool operator()(CollationCacheStruct& theStruct) const { return XalanDOMString::equals(theStruct.m_locale ,m_locale); } const XalanDOMChar* const m_locale; }; }; XALAN_USES_MEMORY_MANAGER(CollationCacheStruct) class XALAN_ICUBRIDGE_EXPORT ICUBridgeCollationCompareFunctorImpl : public XalanCollationServices::CollationCompareFunctor { public: /** * Constructor. * * @param fCacheCollators If true, the instance will cache collators. This is not thread-safe, so each thread must have its own instance. */ ICUBridgeCollationCompareFunctorImpl( MemoryManager& theManager , bool fCacheCollators = false); static ICUBridgeCollationCompareFunctorImpl* create( MemoryManager& theManager, bool fCacheCollators = false); ~ICUBridgeCollationCompareFunctorImpl(); MemoryManager& getMemoryManager()const { return m_collatorCache.getMemoryManager(); } int operator()( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, XalanCollationServices::eCaseOrder theCaseOrder = XalanCollationServices::eDefault) const; int operator()( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, const XalanDOMChar* theLocale, XalanCollationServices::eCaseOrder theCaseOrder = XalanCollationServices::eDefault) const; bool isValid() const { return m_isValid; } typedef XalanList CollatorCacheListType; enum { eCacheMax = 10 }; private: int doDefaultCompare( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS) const; int doCompare( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, const XalanDOMChar* theLocale, XalanCollationServices::eCaseOrder theCaseOrder) const; int doCompareCached( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, const XalanDOMChar* theLocale, XalanCollationServices::eCaseOrder theCaseOrder) const; int doCompare( const CollatorType& theCollator, const XalanDOMChar* theLHS, const XalanDOMChar* theRHS) const; int doCompare( CollatorType& theCollator, const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, XalanCollationServices::eCaseOrder theCaseOrder) const; CollatorType* getCachedCollator(const XalanDOMChar* theLocale) const; void cacheCollator( CollatorType* theCollator, const XalanDOMChar* theLocale) const; // Data members... bool m_isValid; CollatorType* m_defaultCollator; XalanDOMString m_defaultCollatorLocaleName; bool m_cacheCollators; mutable CollatorCacheListType m_collatorCache; static const StylesheetExecutionContextDefault::DefaultCollationCompareFunctor s_defaultFunctor; }; XALAN_CPP_NAMESPACE_END #endif // ICUBRIDGE_COLLATIONCOMPAREFUNCTORIMPL_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/ICUBridge/ICUBridge.hpp0000664000175000000640000000360711731656103020244 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(ICUBRIDGE_HEADER_GUARD_1357924680) #define ICUBRIDGE_HEADER_GUARD_1357924680 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_ICUBRIDGE_EXPORT ICUBridge { public: static const UnicodeString XalanDOMCharStringToUnicodeString(MemoryManager& theManager, const XalanDOMChar* theString); static const UnicodeString XalanDOMCharStringToUnicodeString( MemoryManager& theManager, const XalanDOMChar* theString, XalanDOMString::size_type theLHSLength); static const UnicodeString XalanDOMStringToUnicodeString(MemoryManager& theManager, const XalanDOMString& theString); static XalanDOMString& UnicodeStringToXalanDOMString( const UnicodeString& theString, XalanDOMString& theResult); }; XALAN_CPP_NAMESPACE_END #endif // ICUBRIDGE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/ICUBridge/ICUFormatNumberFunctor.cpp0000664000175000000640000003135011731656103023001 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ICUFormatNumberFunctor.hpp" #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN ICUFormatNumberFunctor::ICUFormatNumberFunctor(MemoryManager& theManager) : m_decimalFormatCache(theManager), m_defaultDecimalFormat(theManager, createDecimalFormat(theManager)), m_memoryManager(theManager) { } ICUFormatNumberFunctor* ICUFormatNumberFunctor::create(MemoryManager& theManager) { typedef ICUFormatNumberFunctor ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType(theManager); theGuard.release(); return theResult; } ICUFormatNumberFunctor::~ICUFormatNumberFunctor() { XALAN_USING_STD(for_each) for_each( m_decimalFormatCache.begin(), m_decimalFormatCache.end(), DecimalFormatCacheStruct::DecimalFormatDeleteFunctor(m_memoryManager)); } void ICUFormatNumberFunctor::operator() ( XPathExecutionContext& executionContext, double theNumber, const XalanDOMString& thePattern, const XalanDecimalFormatSymbols* theDFS, XalanDOMString& theResult, const XalanNode* context, const Locator* locator) const { if (!doFormat(theNumber, thePattern, theResult, theDFS)) { const XPathExecutionContext::GetCachedString theGuard(executionContext); executionContext.problem( XPathExecutionContext::eXSLTProcessor, XPathExecutionContext::eWarning, XalanMessageLoader::getMessage( theGuard.get(), XalanMessages::FormatNumberFailed), locator, context); } } DecimalFormatType * ICUFormatNumberFunctor::getCachedDecimalFormat(const XalanDecimalFormatSymbols &theDFS) const { XALAN_USING_STD(find_if) DecimalFormatCacheListType::iterator i = find_if( m_decimalFormatCache.begin(), m_decimalFormatCache.end(), DecimalFormatCacheStruct::DecimalFormatFindFunctor(&theDFS)); if (i == m_decimalFormatCache.end()) { return 0; } else { // Let's do a quick check to see if we found the first entry. // If so, we don't have to update the cache, so just return the // appropriate value... const DecimalFormatCacheListType::iterator theBegin = m_decimalFormatCache.begin(); if (i == theBegin) { return (*i).m_formatter; } else { // Save the formatter, because splice() may invalidate // the iterator. DecimalFormatType* const theFormatter = (*i).m_formatter; // Move the entry to the beginning the cache m_decimalFormatCache.splice(theBegin, m_decimalFormatCache, i); return theFormatter; } } } bool ICUFormatNumberFunctor::doFormat( double theNumber, const XalanDOMString& thePattern, XalanDOMString& theResult, const XalanDecimalFormatSymbols* theDFS) const { if (theDFS == 0) { return doICUFormat(theNumber, thePattern, theResult); } XalanDOMString nonLocalPattern(m_memoryManager); UnlocalizePatternFunctor formatter(*theDFS); formatter(thePattern, nonLocalPattern, m_memoryManager); DecimalFormatType* const theFormatter = getCachedDecimalFormat(*theDFS); if (theFormatter != 0) { return doICUFormat( theNumber, nonLocalPattern, theResult, theFormatter); } else { DFAutoPtrType theDecimalFormatGuard( m_memoryManager, createDecimalFormat(*theDFS, m_memoryManager)); if (theDecimalFormatGuard.get() != 0) { // OK, there was no error, so cache the instance... cacheDecimalFormat(theDecimalFormatGuard.get(), *theDFS); // Release the collator, since it's in the cache and // will be controlled by the cache... DecimalFormatType* const theDecimalFormat = theDecimalFormatGuard.releasePtr(); return doICUFormat( theNumber, nonLocalPattern, theResult, theDecimalFormat); } else { return doICUFormat(theNumber,nonLocalPattern,theResult); } } } DecimalFormatType* ICUFormatNumberFunctor::createDecimalFormat( const XalanDecimalFormatSymbols& theXalanDFS, MemoryManager& theManager) { UErrorCode theStatus = U_ZERO_ERROR; // Use a XalanAutoPtr, to keep this safe until we construct the DecimalFormat instance. XalanAutoPtr theDFS(new DecimalFormatSymbols(theStatus)); // We got a XalanDecimalFormatSymbols, so set the // corresponding data in the ICU DecimalFormatSymbols. theDFS->setSymbol( DecimalFormatSymbols::kZeroDigitSymbol, UChar(theXalanDFS.getZeroDigit())); theDFS->setSymbol( DecimalFormatSymbols::kGroupingSeparatorSymbol, UChar(theXalanDFS.getGroupingSeparator())); theDFS->setSymbol( DecimalFormatSymbols::kDecimalSeparatorSymbol, UChar(theXalanDFS.getDecimalSeparator())); theDFS->setSymbol( DecimalFormatSymbols::kPerMillSymbol, UChar(theXalanDFS.getPerMill())); theDFS->setSymbol( DecimalFormatSymbols::kPercentSymbol, UChar(theXalanDFS.getPercent())); theDFS->setSymbol( DecimalFormatSymbols::kDigitSymbol, UChar(theXalanDFS.getDigit())); theDFS->setSymbol( DecimalFormatSymbols::kPatternSeparatorSymbol, UChar(theXalanDFS.getPatternSeparator())); theDFS->setSymbol( DecimalFormatSymbols::kInfinitySymbol, ICUBridge::XalanDOMStringToUnicodeString( theManager, theXalanDFS.getInfinity())); theDFS->setSymbol( DecimalFormatSymbols::kNaNSymbol, ICUBridge::XalanDOMStringToUnicodeString( theManager, theXalanDFS.getNaN())); theDFS->setSymbol( DecimalFormatSymbols::kMinusSignSymbol, UChar(theXalanDFS.getMinusSign())); theDFS->setSymbol( DecimalFormatSymbols::kCurrencySymbol, ICUBridge::XalanDOMStringToUnicodeString( theManager, theXalanDFS.getCurrencySymbol())); theDFS->setSymbol( DecimalFormatSymbols::kIntlCurrencySymbol, ICUBridge::XalanDOMStringToUnicodeString( theManager, theXalanDFS.getInternationalCurrencySymbol())); theDFS->setSymbol( DecimalFormatSymbols::kMonetarySeparatorSymbol, UChar(theXalanDFS.getMonetaryDecimalSeparator())); // Construct a DecimalFormat instance. DecimalFormatType* theFormatter = 0; XalanConstruct( theManager, theFormatter, theStatus); // Guard this, just in case something happens before // we return it. DFAutoPtrType theGuard(theManager, theFormatter); if (U_SUCCESS(theStatus)) { // Note that we release the XalanAutoPtr, since the // DecimalFormat will adopt the DecimalFormatSymbols instance. theGuard->adoptDecimalFormatSymbols(theDFS.release()); return theGuard.releasePtr(); } else { assert(false); return 0; } } void ICUFormatNumberFunctor::cacheDecimalFormat( DecimalFormatType * theFormatter, const XalanDecimalFormatSymbols& theDFS) const { assert(theFormatter != 0); // Is the cache full? if (m_decimalFormatCache.size() == eCacheMax) { // Yes, so guard the collator instance, in case pop_back() throws... DFAutoPtrType theDecimalFormatGuard( m_memoryManager, m_decimalFormatCache.back().m_formatter); m_decimalFormatCache.pop_back(); } const DecimalFormatCacheListType::value_type emptyDFC(m_memoryManager); m_decimalFormatCache.push_front(emptyDFC); DecimalFormatCacheListType::value_type& theEntry = m_decimalFormatCache.front(); theEntry.m_formatter = theFormatter; theEntry.m_DFS = theDFS; } bool ICUFormatNumberFunctor::doICUFormat( double theNumber, const XalanDOMString& thePattern, XalanDOMString& theResult, DecimalFormatType* theFormatter) const { UErrorCode theStatus = U_ZERO_ERROR; if (theFormatter == 0) { if (m_defaultDecimalFormat.get() != 0) { theFormatter = m_defaultDecimalFormat.get(); } else { return false; } } theFormatter->applyPattern( ICUBridge::XalanDOMStringToUnicodeString(m_memoryManager, thePattern), theStatus); if (U_SUCCESS(theStatus)) { // Do the format... UnicodeString theUnicodeResult; theFormatter->format(theNumber, theUnicodeResult); ICUBridge::UnicodeStringToXalanDOMString(theUnicodeResult, theResult); } return U_SUCCESS(theStatus) ? true : false; } XalanDOMString& ICUFormatNumberFunctor::UnlocalizePatternFunctor::operator()( const XalanDOMString& thePattern, XalanDOMString& theResult, MemoryManager& theManager) const { XalanDecimalFormatSymbols defaultDFS(theManager); XalanDOMString::const_iterator iterator = thePattern.begin(); while( iterator != thePattern.end()) { if( m_DFS.getDecimalSeparator() == *iterator ) { theResult.push_back(defaultDFS.getDecimalSeparator()); } else if(m_DFS.getDigit() == *iterator) { theResult.push_back(defaultDFS.getDigit()); } else if(m_DFS.getGroupingSeparator() == *iterator) { theResult.push_back(defaultDFS.getGroupingSeparator()); } else if(m_DFS.getMinusSign() == *iterator) { theResult.push_back(defaultDFS.getMinusSign()); } else if(m_DFS.getPatternSeparator() == *iterator) { theResult.push_back(defaultDFS.getPatternSeparator()); } else if(m_DFS.getPercent() == *iterator) { theResult.push_back(defaultDFS.getPercent()); } else if(m_DFS.getPerMill() == *iterator) { theResult.push_back(defaultDFS.getPerMill()); } else if(m_DFS.getZeroDigit() == *iterator) { theResult.push_back(defaultDFS.getZeroDigit()); } else { switch(*iterator) { case XalanUnicode::charFullStop: case XalanUnicode::charNumberSign: case XalanUnicode::charComma: case XalanUnicode::charHyphenMinus: case XalanUnicode::charSemicolon: case XalanUnicode::charPercentSign: case XalanUnicode::charPerMilleSign: case XalanUnicode::charDigit_0: { theResult.push_back(XalanUnicode::charAmpersand); theResult.push_back(*iterator); theResult.push_back(XalanUnicode::charAmpersand); } } } iterator++; } return theResult; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/ICUBridge/ICUXalanNumberFormatFactory.hpp0000664000175000000640000000313311731656103023757 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(ICUXALANNUMBERFORMATFACTORY_HEADER_GUARD_1357924680) #define ICUXALANNUMBERFORMATFACTORY_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN // Class that implements the XSLT function format-number using the ICU. // class XALAN_ICUBRIDGE_EXPORT ICUXalanNumberFormatFactory : public StylesheetExecutionContextDefault::XalanNumberFormatFactory { public: ICUXalanNumberFormatFactory(MemoryManager& theManager); virtual ~ICUXalanNumberFormatFactory(); virtual XalanNumberFormat* create(); private: MemoryManager& m_memoryManager; }; XALAN_CPP_NAMESPACE_END #endif // ICUXALANNUMBERFORMATFACTORY_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/ICUBridge/ICUBridgeCleanup.cpp0000664000175000000640000000214711731656103021545 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ICUBridgeCleanup.hpp" #include #include XALAN_CPP_NAMESPACE_BEGIN void ICUBridgeCleanup::cleanup() { // release all lasily allocated data u_cleanup(); } void ICUBridgeCleanup::startup(MemoryManager& /*theManager*/) { //TBD } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/ICUBridge/ICUFormatNumberFunctor.hpp0000664000175000000640000001537111731656103023013 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FUNCTIONICUFORMATNUMBERFUNCTOR_HEADER_GUARD_1357924680) #define FUNCTIONICUFORMATNUMBERFUNCTOR_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN typedef StylesheetExecutionContextDefault::FormatNumberFunctor FormatNumberFunctor; #if defined(XALAN_HAS_CPP_NAMESPACE) typedef U_ICU_NAMESPACE::DecimalFormat DecimalFormatType; #else typedef DecimalFormat DecimalFormatType; #endif struct DecimalFormatCacheStruct { DecimalFormatCacheStruct( MemoryManager& theManager, const XalanDecimalFormatSymbols& theDFS, DecimalFormatType* theFormatter) : m_DFS(theDFS, theManager), m_formatter(theFormatter) { } DecimalFormatCacheStruct(MemoryManager& theManager) : m_DFS(theManager), m_formatter(0) { } DecimalFormatCacheStruct( const DecimalFormatCacheStruct& other, MemoryManager& theManager) : m_DFS(other.m_DFS, theManager), m_formatter(other.m_formatter) { } #if defined(XALAN_NO_SELECTIVE_TEMPLATE_INSTANTIATION) bool operator<(const DecimalFormatCacheStruct& theRHS) const { return this < &theRHS; } bool operator==(const DecimalFormatCacheStruct& theRHS) const { return this == &theRHS; } #endif XalanDecimalFormatSymbols m_DFS; DecimalFormatType * m_formatter; class DecimalFormatDeleteFunctor { public: DecimalFormatDeleteFunctor(MemoryManager& theManager) : m_memoryManager(theManager) { } void operator()(DecimalFormatCacheStruct& theStruct) const { assert(theStruct.m_formatter != 0); XalanDestroy( m_memoryManager, *theStruct.m_formatter); } private: // Not implemented... DecimalFormatDeleteFunctor& operator=(const DecimalFormatDeleteFunctor&); // Data members. MemoryManager& m_memoryManager; }; struct DecimalFormatFindFunctor { DecimalFormatFindFunctor(const XalanDecimalFormatSymbols* theDFS) : m_DFS(theDFS) { } bool operator()(DecimalFormatCacheStruct& theStruct) const { return theStruct.m_DFS == (*m_DFS); } const XalanDecimalFormatSymbols * const m_DFS; }; private: DecimalFormatCacheStruct(); DecimalFormatCacheStruct(const DecimalFormatCacheStruct& other); }; XALAN_USES_MEMORY_MANAGER(DecimalFormatCacheStruct) // Class that implements the XSLT function format-number using the ICU. // class XALAN_ICUBRIDGE_EXPORT ICUFormatNumberFunctor : public FormatNumberFunctor { public: ICUFormatNumberFunctor(MemoryManager& theManager); static ICUFormatNumberFunctor* create(MemoryManager& theManager); virtual ~ICUFormatNumberFunctor(); virtual void operator() ( XPathExecutionContext& executionContext, double theNumber, const XalanDOMString& thePattern, const XalanDecimalFormatSymbols* theDFS, XalanDOMString& theResult, const XalanNode* context = 0, const Locator* locator = 0) const; class UnlocalizePatternFunctor { public: UnlocalizePatternFunctor(const XalanDecimalFormatSymbols& theDFS): m_DFS(theDFS) { } XalanDOMString& operator()( const XalanDOMString& thePattern, XalanDOMString& theResult, MemoryManager& theManager) const; private: const XalanDecimalFormatSymbols& m_DFS; }; typedef XalanList DecimalFormatCacheListType; private: DecimalFormatType* getCachedDecimalFormat(const XalanDecimalFormatSymbols &theDFS) const; bool doFormat( double theNumber, const XalanDOMString& thePattern, XalanDOMString& theResult, const XalanDecimalFormatSymbols* theDFS = 0) const; bool doICUFormat( double theNumber, const XalanDOMString& thePattern, XalanDOMString& theResult, DecimalFormatType* theFormatter = 0) const; void cacheDecimalFormat( DecimalFormatType* theFormatter, const XalanDecimalFormatSymbols& theDFS) const; static DecimalFormat* createDecimalFormat( const XalanDecimalFormatSymbols& theXalanDFS, MemoryManager& theManager); static DecimalFormat* createDecimalFormat(MemoryManager& theManager) { const XalanDecimalFormatSymbols theDFS(theManager); return createDecimalFormat(theDFS, theManager); } enum { eCacheMax = 10u }; private: // These are not implemented... ICUFormatNumberFunctor& operator=(const ICUFormatNumberFunctor&); bool operator==(const ICUFormatNumberFunctor&) const; typedef XalanMemMgrAutoPtr DFAutoPtrType; // Data members... mutable DecimalFormatCacheListType m_decimalFormatCache; const DFAutoPtrType m_defaultDecimalFormat; MemoryManager& m_memoryManager; }; XALAN_CPP_NAMESPACE_END #endif // FUNCTIONICUFORMATNUMBERFUNCTOR_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/ICUBridge/ICUXalanNumberFormatProxy.cpp0000664000175000000640000001043411731656103023466 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ICUXalanNumberFormatProxy.hpp" #include U_NAMESPACE_USE #include #include "ICUBridge.hpp" XALAN_CPP_NAMESPACE_BEGIN ICUXalanNumberFormatProxy::ICUXalanNumberFormatProxy(MemoryManager& theManager) : XalanNumberFormat(theManager), m_decimalFormat(0) { UErrorCode theResult = U_ZERO_ERROR; new DecimalFormatType(theResult); } ICUXalanNumberFormatProxy::~ICUXalanNumberFormatProxy() { delete m_decimalFormat; } XalanDOMString& ICUXalanNumberFormatProxy::format(double theValue, XalanDOMString& theResult) { UnicodeString theUnicodeResult; m_decimalFormat->format(theValue, theUnicodeResult); return ICUBridge::UnicodeStringToXalanDOMString(theUnicodeResult, theResult); } XalanDOMString& ICUXalanNumberFormatProxy::format(int theValue, XalanDOMString& theResult) { UnicodeString theUnicodeResult; m_decimalFormat->format(int32_t(theValue), theUnicodeResult); return ICUBridge::UnicodeStringToXalanDOMString(theUnicodeResult, theResult); } XalanDOMString& ICUXalanNumberFormatProxy::format(unsigned int theValue, XalanDOMString& theResult) { UnicodeString theUnicodeResult; m_decimalFormat->format(int32_t(theValue), theUnicodeResult); return ICUBridge::UnicodeStringToXalanDOMString(theUnicodeResult, theResult); } XalanDOMString& ICUXalanNumberFormatProxy::format(long theValue, XalanDOMString& theResult) { UnicodeString theUnicodeResult; m_decimalFormat->format(int32_t(theValue), theUnicodeResult); return ICUBridge::UnicodeStringToXalanDOMString(theUnicodeResult, theResult); } XalanDOMString& ICUXalanNumberFormatProxy::format(unsigned long theValue, XalanDOMString& theResult) { UnicodeString theUnicodeResult; m_decimalFormat->format(int32_t(theValue), theUnicodeResult); return ICUBridge::UnicodeStringToXalanDOMString(theUnicodeResult, theResult); } XalanDOMString& ICUXalanNumberFormatProxy::format( XALAN_UINT64 theValue, XalanDOMString& theResult) { // $$$ ToDo: Fix this! return format(static_cast(theValue), theResult); } XalanDOMString& ICUXalanNumberFormatProxy::format( XALAN_INT64 theValue, XalanDOMString& theResult) { // $$$ ToDo: Fix this! return format(static_cast(theValue), theResult); } bool ICUXalanNumberFormatProxy::isGroupingUsed() const { return m_decimalFormat->isGroupingUsed() ? true : false; } void ICUXalanNumberFormatProxy::setGroupingUsed(bool bUsed) { m_decimalFormat->setGroupingUsed(bUsed); } void ICUXalanNumberFormatProxy::setGroupingSize(unsigned long size) { m_decimalFormat->setGroupingSize(size); } void ICUXalanNumberFormatProxy::setGroupingSeparator(const XalanDOMString& s) { const DecimalFormatSymbols* const theCurrentSymbols = m_decimalFormat->getDecimalFormatSymbols(); assert(theCurrentSymbols != 0); DecimalFormatSymbols* const theNewSymbols = new DecimalFormatSymbols(*theCurrentSymbols); theNewSymbols->setSymbol( DecimalFormatSymbols::kGroupingSeparatorSymbol, ICUBridge::XalanDOMStringToUnicodeString(getMemoryManager(), s)); m_decimalFormat->adoptDecimalFormatSymbols(theNewSymbols); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/ICUBridge/ICUBridgeCleanup.hpp0000664000175000000640000000237711731656103021557 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(ICUBRIDGECLEANUP_HEADER_GUARD_1357924680) #define ICUBRIDGECLEANUP_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_ICUBRIDGE_EXPORT ICUBridgeCleanup { public: static void cleanup(); static void startup(MemoryManager& theManager); }; XALAN_CPP_NAMESPACE_END #endif // ICUBRIDGECLEANUP_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/ICUBridge/ICUBridgeCollationCompareFunctor.cpp0000664000175000000640000000470511731656103024754 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ICUBridgeCollationCompareFunctor.hpp" #include "ICUBridge.hpp" #include "ICUBridgeCollationCompareFunctorImpl.hpp" XALAN_CPP_NAMESPACE_BEGIN ICUBridgeCollationCompareFunctor::ICUBridgeCollationCompareFunctor( MemoryManager& theManager, bool fCacheCollators) : m_impl(ICUBridgeCollationCompareFunctorImpl::create(theManager, fCacheCollators)) { } ICUBridgeCollationCompareFunctor* ICUBridgeCollationCompareFunctor::create( MemoryManager& theManager, bool fCacheCollators) { typedef ICUBridgeCollationCompareFunctor ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType(theManager, fCacheCollators); theGuard.release(); return theResult; } ICUBridgeCollationCompareFunctor::~ICUBridgeCollationCompareFunctor() { XalanDestroy( m_impl->getMemoryManager(), *m_impl); } int ICUBridgeCollationCompareFunctor::operator()( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, XalanCollationServices::eCaseOrder theCaseOrder) const { return (*m_impl)(theLHS, theRHS, theCaseOrder); } int ICUBridgeCollationCompareFunctor::operator()( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, const XalanDOMChar* theLocale, XalanCollationServices::eCaseOrder theCaseOrder) const { return (*m_impl)(theLHS, theRHS, theLocale, theCaseOrder); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/ICUBridge/ICUBridgeCollationCompareFunctorImpl.cpp0000664000175000000640000003055511731656103025600 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ICUBridgeCollationCompareFunctorImpl.hpp" #include "ICUBridge.hpp" #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN const StylesheetExecutionContextDefault::DefaultCollationCompareFunctor ICUBridgeCollationCompareFunctorImpl::s_defaultFunctor; inline CollatorType* createCollator( UErrorCode& theStatus, const Locale& theLocale, XalanDOMString* theLocaleName = 0) { if (theLocaleName != 0) { *theLocaleName = theLocale.getName(); // Replace _ with -, since that's what xml:lang specifies... XalanDOMString::size_type theIndex; while((theIndex = indexOf(*theLocaleName, XalanUnicode::charLowLine)) != theLocaleName->length()) { (*theLocaleName)[theIndex] = XalanUnicode::charHyphenMinus; } } return CollatorType::createInstance(theLocale, theStatus); } inline CollatorType* createCollator( UErrorCode& theStatus, XalanDOMString* theLocaleName = 0) { const char* theLang = #if defined(XALAN_STRICT_ANSI_HEADERS) std::getenv("LANG"); #else getenv("LANG"); #endif if (theLang == 0) { #if defined(XALAN_ICU_DEFAULT_LOCALE_PROBLEM) return createCollator(theStatus, Locale::US, theLocaleName); #else return createCollator(theStatus, Locale::getDefault(), theLocaleName); #endif } else { return createCollator(theStatus, Locale(theLang), theLocaleName); } } ICUBridgeCollationCompareFunctorImpl::ICUBridgeCollationCompareFunctorImpl(MemoryManager& theManager, bool fCacheCollators) : m_isValid(false), m_defaultCollator(0), m_defaultCollatorLocaleName(theManager), m_cacheCollators(fCacheCollators), m_collatorCache(theManager) { UErrorCode theStatus = U_ZERO_ERROR; m_defaultCollator = createCollator(theStatus, &m_defaultCollatorLocaleName); if (U_SUCCESS(theStatus)) { m_isValid = true; } } ICUBridgeCollationCompareFunctorImpl* ICUBridgeCollationCompareFunctorImpl::create( MemoryManager& theManager, bool fCacheCollators) { ICUBridgeCollationCompareFunctorImpl* theInstance; return XalanConstruct( theManager, theInstance, theManager, fCacheCollators); } ICUBridgeCollationCompareFunctorImpl::~ICUBridgeCollationCompareFunctorImpl() { XALAN_USING_STD(for_each) delete m_defaultCollator; for_each( m_collatorCache.begin(), m_collatorCache.end(), CollationCacheStruct::CollatorDeleteFunctor(getMemoryManager())); } int ICUBridgeCollationCompareFunctorImpl::doCompare( const CollatorType& theCollator, const XalanDOMChar* theLHS, const XalanDOMChar* theRHS) const { const XalanDOMString::size_type theLHSLength = length(theLHS); const XalanDOMString::size_type theRHSLength = length(theRHS); assert( theLHSLength == static_cast(theLHSLength) && theRHSLength == static_cast(theRHSLength)); return theCollator.compare( theLHS, static_cast(theLHSLength), theRHS, static_cast(theRHSLength)); } inline UColAttributeValue caseOrderConvert(XalanCollationServices::eCaseOrder theCaseOrder) { switch(theCaseOrder) { case XalanCollationServices::eLowerFirst: return UCOL_LOWER_FIRST; break; case XalanCollationServices::eUpperFirst: return UCOL_UPPER_FIRST; break; case XalanCollationServices::eDefault: break; default: assert(false); break; } return UCOL_DEFAULT; } int ICUBridgeCollationCompareFunctorImpl::doDefaultCompare( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS) const { if (isValid() == false) { return s_defaultFunctor(theLHS, theRHS, XalanCollationServices::eDefault); } else { assert(m_defaultCollator != 0); return doCompare(*m_defaultCollator, theLHS, theRHS); } } inline CollatorType* createCollator( const XalanDOMChar* theLocale, UErrorCode& theStatus) { assert(theLocale != 0); const XalanDOMString::size_type theLength = length(theLocale); if (theLength >= ULOC_FULLNAME_CAPACITY) { theStatus = U_ILLEGAL_ARGUMENT_ERROR; return 0; } else { #if defined(XALAN_NON_ASCII_PLATFORM) CharVectorType theVector; TranscodeToLocalCodePage(theLocale, theVector, true); const char* const theBuffer = c_str(theVector); #else char theBuffer[ULOC_FULLNAME_CAPACITY]; // Since language names must be ASCII, this // is the cheapest way to "transcode"... for (XalanDOMString::size_type i = 0; i <= theLength; ++i) { theBuffer[i] = char(theLocale[i]); } #endif return CollatorType::createInstance( Locale::createFromName(theBuffer), theStatus); } } int ICUBridgeCollationCompareFunctorImpl::doCompare( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, const XalanDOMChar* theLocale, XalanCollationServices::eCaseOrder theCaseOrder) const { UErrorCode theStatus = U_ZERO_ERROR; XalanAutoPtr theCollator(createCollator(theLocale, theStatus)); if (U_SUCCESS(theStatus)) { assert(theCollator.get() != 0); return doCompare( *theCollator.get(), theLHS, theRHS, theCaseOrder); } else { return s_defaultFunctor(theLHS, theRHS, theCaseOrder); } } int ICUBridgeCollationCompareFunctorImpl::doCompareCached( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, const XalanDOMChar* theLocale, XalanCollationServices::eCaseOrder theCaseOrder) const { CollatorType* theCollator = getCachedCollator(theLocale); if (theCollator != 0) { return doCompare(*theCollator, theLHS, theRHS, theCaseOrder); } else { UErrorCode theStatus = U_ZERO_ERROR; XalanAutoPtr theCollatorGuard(createCollator(theLocale, theStatus)); if (U_SUCCESS(theStatus)) { assert(theCollatorGuard.get() != 0); // OK, there was no error, so cache the instance... cacheCollator(theCollatorGuard.get(), theLocale); // Release the collator, since it's in the cache and // will be controlled by the cache... theCollator = theCollatorGuard.release(); return doCompare( *theCollator, theLHS, theRHS, theCaseOrder); } else { return s_defaultFunctor(theLHS, theRHS, theCaseOrder); } } } int ICUBridgeCollationCompareFunctorImpl::doCompare( CollatorType& theCollator, const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, XalanCollationServices::eCaseOrder theCaseOrder) const { UErrorCode theStatus = U_ZERO_ERROR; theCollator.setAttribute( UCOL_CASE_FIRST, caseOrderConvert(theCaseOrder), theStatus); const XalanDOMString::size_type theLHSLength = length(theLHS); const XalanDOMString::size_type theRHSLength = length(theRHS); assert( theLHSLength == static_cast(theLHSLength) && theRHSLength == static_cast(theRHSLength)); return theCollator.compare( theLHS, static_cast(theLHSLength), theRHS, static_cast(theRHSLength)); } int ICUBridgeCollationCompareFunctorImpl::operator()( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, XalanCollationServices::eCaseOrder theCaseOrder) const { if (theCaseOrder == XalanCollationServices::eDefault) { return doDefaultCompare(theLHS, theRHS); } else { return doCompare( theLHS, theRHS, m_defaultCollatorLocaleName.c_str(), theCaseOrder); } } int ICUBridgeCollationCompareFunctorImpl::operator()( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS, const XalanDOMChar* theLocale, XalanCollationServices::eCaseOrder theCaseOrder) const { if (theCaseOrder == XalanCollationServices::eDefault && XalanDOMString::equals(m_defaultCollatorLocaleName, theLocale) == true) { return doDefaultCompare(theLHS, theRHS); } else if (m_cacheCollators == true) { return doCompareCached(theLHS, theRHS, theLocale, theCaseOrder); } else { return doCompare(theLHS, theRHS, theLocale, theCaseOrder); }; } CollatorType* ICUBridgeCollationCompareFunctorImpl::getCachedCollator(const XalanDOMChar* theLocale) const { XALAN_USING_STD(find_if) CollatorCacheListType::iterator i = find_if( m_collatorCache.begin(), m_collatorCache.end(), CollationCacheStruct::CollatorFindFunctor(theLocale)); if (i == m_collatorCache.end()) { return 0; } else { // Let's do a quick check to see if we found the first entry. // If so, we don't have to update the cache, so just return the // appropriate value... const CollatorCacheListType::iterator theBegin = m_collatorCache.begin(); if (i == theBegin) { return (*i).m_collator; } else { // Save the collator, because splice() may invalidate // i. CollatorType* const theCollator = (*i).m_collator; // Move the entry to the beginning the cache m_collatorCache.splice(theBegin, m_collatorCache, i); return theCollator; } } } void ICUBridgeCollationCompareFunctorImpl::cacheCollator( CollatorType* theCollator, const XalanDOMChar* theLocale) const { assert(theCollator != 0); assert(theLocale != 0); // Is the cache full? if (m_collatorCache.size() == eCacheMax) { // Yes, so guard the collator instance, in case pop_back() throws... XalanAutoPtr theCollatorGuard(m_collatorCache.back().m_collator); m_collatorCache.pop_back(); } m_collatorCache.push_front(CollatorCacheListType::value_type(getMemoryManager())); CollatorCacheListType::value_type& theEntry = m_collatorCache.front(); // Set the locale first, since that might throw an exception... theEntry.m_locale = theLocale; theEntry.m_collator = theCollator; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/ICUBridge/ICUBridge.cpp0000664000175000000640000000631011731656103020231 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ICUBridge.hpp" #include #include #include XALAN_CPP_NAMESPACE_BEGIN typedef XalanVector UCharVectorType; // Use a stack-based buffer up to this size. const XalanSize_t theStackBufferSize = 200u; const UnicodeString ICUBridge::XalanDOMCharStringToUnicodeString( MemoryManager& theManager, const XalanDOMChar* theString) { if (theString == 0) { return UnicodeString(); } else { return XalanDOMCharStringToUnicodeString(theManager, theString, length(theString)); } } const UnicodeString ICUBridge::XalanDOMCharStringToUnicodeString( MemoryManager& /* theManager */, const XalanDOMChar* theString, XalanDOMString::size_type theLength) { assert(theString != 0); if (theLength == 0) { return UnicodeString(); } else { assert(theLength == static_cast(theLength)); return UnicodeString( theString, static_cast(theLength)); } } const UnicodeString ICUBridge::XalanDOMStringToUnicodeString( MemoryManager& theManager, const XalanDOMString& theString) { // Just call up to the XalanDOMChar* version... return XalanDOMCharStringToUnicodeString(theManager, theString.c_str(), theString.length()); } XalanDOMString& ICUBridge::UnicodeStringToXalanDOMString( const UnicodeString& theString, XalanDOMString& theResult) { const int32_t theLength = theString.length(); if (theStackBufferSize > theLength) { UChar theBuffer[theStackBufferSize]; // Extract the data... theString.extract(0, theLength, theBuffer); theResult.assign(theBuffer, theLength); return theResult; } else { // Create a buffer to copy out the UnicodeString data... UCharVectorType theBuffer(theResult.getMemoryManager()); // Resize the buffer appropriately... theBuffer.resize(theLength); // Extract the data... theString.extract(0, theLength, &theBuffer[0]); assert(theLength == int32_t(theBuffer.size())); theResult.assign(&theBuffer[0], theLength); return theResult; } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/ICUBridge/ICUXalanNumberFormatProxy.hpp0000664000175000000640000000614411731656103023476 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(ICUXALANNUMBERFORMATPROXY_HEADER_GUARD_1357924680) #define ICUXALANNUMBERFORMATPROXY_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN // Class that implements the XSLT function format-number using the ICU. // class XALAN_ICUBRIDGE_EXPORT ICUXalanNumberFormatProxy : public XalanNumberFormat { public: explicit ICUXalanNumberFormatProxy(MemoryManager& theManager); virtual ~ICUXalanNumberFormatProxy(); virtual XalanDOMString& format( double theValue, XalanDOMString& theResult); virtual XalanDOMString& format( int theValue, XalanDOMString& theResult); virtual XalanDOMString& format( unsigned int theValue, XalanDOMString& theResult); virtual XalanDOMString& format( long theValue, XalanDOMString& theResult); virtual XalanDOMString& format( unsigned long theValue, XalanDOMString& theResult); /** * Format a number into a string. * * @param theValue number to format * @param theResult the string result */ virtual XalanDOMString& format( XALAN_INT64 theValue, XalanDOMString& theResult); /** * Format a number into a string. * * @param theValue number to format * @param theResult the string result */ virtual XalanDOMString& format( XALAN_UINT64 theValue, XalanDOMString& theResult); virtual bool isGroupingUsed() const; virtual void setGroupingUsed(bool bUsed); virtual void setGroupingSize(unsigned long size); virtual void setGroupingSeparator(const XalanDOMString& s); private: #if defined(XALAN_HAS_CPP_NAMESPACE) typedef U_ICU_NAMESPACE::DecimalFormat DecimalFormatType; #else typedef DecimalFormat* DecimalFormatType; #endif DecimalFormatType* m_decimalFormat; }; XALAN_CPP_NAMESPACE_END #endif // ICUXALANNUMBERFORMATPROXY_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XMLSupport/0002775000175000000640000000000012037700125016264 5ustar stevesambaxalan-c-1.11/c/src/xalanc/XMLSupport/XMLSupportDefinitions.hpp0000664000175000000640000000250511731656103023234 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XMLSUPPORT_DEFINITIONS_HEADER_GUARD_1357924680) #define XMLSUPPORT_DEFINITIONS_HEADER_GUARD_1357924680 #include #if defined(XALAN_BUILD_DLL) #define XALAN_XMLSUPPORT_EXPORT XALAN_PLATFORM_EXPORT #define XALAN_XMLSUPPORT_EXPORT_FUNCTION(T) XALAN_PLATFORM_EXPORT_FUNCTION(T) #else #define XALAN_XMLSUPPORT_EXPORT XALAN_PLATFORM_IMPORT #define XALAN_XMLSUPPORT_EXPORT_FUNCTION(T) XALAN_PLATFORM_IMPORT_FUNCTION(T) #endif #endif // XMLSUPPORT_DEFINITIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XMLSupport/XMLParserLiaison.hpp0000664000175000000640000002426711731656103022150 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XMLPARSERLIAISON_HEADER_GUARD_1357924680) #define XMLPARSERLIAISON_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include XALAN_DECLARE_XERCES_CLASS(DocumentHandler) XALAN_DECLARE_XERCES_CLASS(EntityResolver) XALAN_DECLARE_XERCES_CLASS(ErrorHandler) XALAN_DECLARE_XERCES_CLASS(InputSource) XALAN_DECLARE_XERCES_CLASS(XMLEntityResolver) XALAN_CPP_NAMESPACE_BEGIN typedef XERCES_CPP_NAMESPACE_QUALIFIER DocumentHandler DocumentHandlerType; typedef XERCES_CPP_NAMESPACE_QUALIFIER EntityResolver EntityResolverType; typedef XERCES_CPP_NAMESPACE_QUALIFIER ErrorHandler ErrorHandlerType; typedef XERCES_CPP_NAMESPACE_QUALIFIER InputSource InputSourceType; XALAN_USING_XERCES(DocumentHandler) XALAN_USING_XERCES(EntityResolver) XALAN_USING_XERCES(ErrorHandler) XALAN_USING_XERCES(InputSource) XALAN_USING_XERCES(XMLEntityResolver) class ExecutionContext; class FormatterListener; class XalanAttr; class XalanDocument; class XalanElement; class XALAN_XMLSUPPORT_EXPORT XMLParserLiaison { public: XMLParserLiaison(); virtual ~XMLParserLiaison(); // These interfaces are new to XMLParserLiaison /** * Reset the instance, freeing any XalanDocument instances created * through parseXMLStream(). */ virtual void reset() = 0; /** * Get a pointer to the current ExecutionContext instance, which * may be null. * * @return A pointer to the current ExecutionContext, if any. */ virtual ExecutionContext* getExecutionContext() const = 0; /** * Get a reference to the current MemoryManager instance. * * @return A pointer to the current ExecutionContext, if any. */ virtual MemoryManager& getMemoryManager() = 0; /** * Set the current ExecutionContext instance. * * @parameter theContext A reference to the new ExecutionContext instance. */ virtual void setExecutionContext(ExecutionContext& theContext) = 0; /** * Parse the text pointed at by the reader as XML, and return a DOM * Document interface. It is recommended that you pass in some sort of * recognizable name, such as the filename or URI, with which the reader * can be recognized if the parse fails. * * The liaison owns the XalanDocument instance, and will delete it when * asked (see DestroyDocument()), or when the liaison is reset, or goes * out of scope. * * This function is not reentrant, so you cannot call it again until * the current call exits. * * @param reader stream that should hold valid XML * @param identifier used for diagnostic purposes only, some sort of * identification for error reporting, default an empty * string * @return DOM document created */ virtual XalanDocument* parseXMLStream( const InputSource& inputSource, const XalanDOMString& identifier) = 0; /** * Parse the text pointed at by the reader as XML. It is recommended that * you pass in some sort of recognizable name, such as the filename or URI, * with which the reader can be recognized if the parse fails. * * This function is reentrant, so you can call it again before any * other call exits. However, it is not thread-safe. * * @param inputSource input source that should hold valid XML * @param handler instance of a DocumentHandler * @param identifier used for diagnostic purposes only, some sort of * identification for error reporting, default an * empty string */ virtual void parseXMLStream( const InputSource& inputSource, DocumentHandler& handler, const XalanDOMString& identifier) = 0; /** * Destroy the supplied XalanDocument instance. It must be an instance that * was created by a previous call to parseXMLStream(). * * @param theDocument The XalanDocument instance to destroy. */ virtual void destroyDocument(XalanDocument* theDocument) = 0; /** * Get the amount to indent when indent-result="yes". * * @deprecated * * @return number of characters to indent */ virtual int getIndent() const = 0; /** * Set the amount to indent when indent-result="yes". * * @deprecated * * @param i number of characters to indent */ virtual void setIndent(int i) = 0; /** * Get whether or not validation will be performed. Validation is off by * default. * * @return true to perform validation */ virtual bool getUseValidation() const = 0; /** * If set to true, validation will be performed. Validation is off by * default. * * @param b true to perform validation */ virtual void setUseValidation(bool b) = 0; /** * Return a string suitable for telling the user what parser is being used. * * @return string describing parser */ virtual const XalanDOMString& getParserDescription(XalanDOMString& theResult) const = 0; /** * This method returns the installed EntityResolver. * * @return The pointer to the installed EntityResolver object. */ virtual EntityResolver* getEntityResolver() const = 0; /** * This method installs the user-specified EntityResolver on the * parser. It allows applications to trap and redirect calls to * external entities. * * A call to setEntityResolver with a non-null pointer will * uninstall any XMLEntityResolver previously installed. * * @param handler A pointer to the EntityResolver to be called * when the parser encounters references to * external entities. */ virtual void setEntityResolver(EntityResolver* resolver) = 0; /** * This method returns the installed XMLEntityResolver. * * @return The pointer to the installed XMLEntityResolver object. */ virtual XMLEntityResolver* getXMLEntityResolver() const = 0; /** * This method installs the user-specified XMLEntityResolver on the * parser. It allows applications to trap and redirect calls to * external entities. * * A call to setXMLEntityResolver with a non-null pointer will * uninstall any EntityResolver previously installed. * * @param handler A pointer to the entity resolver to be called * when the parser encounters references to * external entities. */ virtual void setXMLEntityResolver(XMLEntityResolver* resolver) = 0; /** * This method returns the installed error handler. * * @return The pointer to the installed error handler object. */ virtual ErrorHandler* getErrorHandler() const = 0; /** * This method installs the user-specified error handler. * * @param handler A pointer to the error handler to be called upon error. */ virtual void setErrorHandler(ErrorHandler* handler) = 0; // A utility class for classes to use. class EnsureResetErrorHandler { public: EnsureResetErrorHandler( XMLParserLiaison* theLiaison = 0, ErrorHandler* theErrorHandler = 0) : m_liaison(theLiaison), m_errorHandler(theErrorHandler) { if (theLiaison != 0) { theLiaison->setErrorHandler(theErrorHandler); } } ~EnsureResetErrorHandler() { if (m_liaison != 0) { m_liaison->setErrorHandler(m_errorHandler); } } void set( XMLParserLiaison* theLiaison, ErrorHandler* theErrorHandler) { m_liaison = theLiaison; m_errorHandler = theErrorHandler; if (theLiaison != 0) { theLiaison->setErrorHandler(theErrorHandler); } } private: XMLParserLiaison* m_liaison; ErrorHandler* m_errorHandler; }; protected: // A utility class for derived classes to use. class EnsureDestroyDocument { public: EnsureDestroyDocument( XMLParserLiaison& theLiaison, XalanDocument* theDocument) : m_liaison(theLiaison), m_document(theDocument) { } ~EnsureDestroyDocument() { if (m_document != 0) { m_liaison.destroyDocument(m_document); } } XalanDocument* get() const { return m_document; } XalanDocument* release() { XalanDocument* theDocument = m_document; m_document = 0; return theDocument; } private: XMLParserLiaison& m_liaison; XalanDocument* m_document; }; private: // Not implemented XMLParserLiaison(const XMLParserLiaison&); XMLParserLiaison& operator=(const XMLParserLiaison&); }; XALAN_CPP_NAMESPACE_END #endif // XMLPARSERLIAISON_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XMLSupport/XalanUTF8Writer.cpp0000664000175000000640000000222011731656103021677 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanUTF8Writer.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanUTF8Writer::XalanUTF8Writer( Writer& writer, MemoryManager& theMemoryManager) : XalanFormatterWriter( writer, theMemoryManager), m_buffer(), m_bufferPosition(m_buffer), m_bufferRemaining(kBufferSize) { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XMLSupport/XalanIndentWriter.hpp0000664000175000000640000001026311731656103022405 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANIDENTWRITER_HEADER_GUARD_1357924680) #define XALANIDENTWRITER_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN template< class WhiteSpaceWriter, class NewLineWriter> class XalanIndentWriter { public: typedef FormatterListener::size_type size_type; typedef XalanVector BoolStackType; typedef typename WhiteSpaceWriter::writer_type writer_type; XalanIndentWriter( writer_type& writer, size_type ident) : m_whiteSpaceWriter(writer), m_newLineWriter(writer), m_indent(ident), m_currentIndent(0), m_startNewLine(false), m_ispreserve(false), m_isprevtext(false), m_preserves(writer.getMemoryManager(), 5) { assert( m_indent != -1); } ~XalanIndentWriter() { } void setIndent(size_type value) { m_indent = value; } size_type getIndent()const { return m_indent; } void indent() { if( shouldIndent() ) { if(m_startNewLine == true) { m_newLineWriter(); } m_whiteSpaceWriter(m_currentIndent); } } void increaseIndent() { m_currentIndent += m_indent; } void decreaseIndent() { assert( m_currentIndent >= m_indent); m_currentIndent -= m_indent; } void setStartNewLine(bool value) { m_startNewLine = value; } /** * Output a line break. */ void outputLineSep() { m_newLineWriter(); } void setPrevText(bool value) { m_isprevtext = value; } void setPreserve(bool value) { m_ispreserve = value; } void pop_preserve() { if ( m_preserves.empty() ) { m_ispreserve = false; } else { m_ispreserve = m_preserves.back(); m_preserves.pop_back(); } } void push_preserve() { m_preserves.push_back(m_ispreserve); } private: bool shouldIndent() const { return (!m_ispreserve && !m_isprevtext); // return true; } private: //data members WhiteSpaceWriter m_whiteSpaceWriter; NewLineWriter m_newLineWriter; /** * Amount to indent. */ size_type m_indent; /** * Flag to keep track of the indent amount. */ size_type m_currentIndent; /** * Flag to signal that a newline should be added. */ bool m_startNewLine; /** * State flag to tell if preservation of whitespace * is important. */ bool m_ispreserve; /** * State flag that tells if the previous node processed * was text, so we can tell if we should preserve whitespace. */ bool m_isprevtext; /** * Stack to keep track of whether or not we need to * preserve whitespace. */ BoolStackType m_preserves; }; XALAN_CPP_NAMESPACE_END #endif // XALANIDENTWRITER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XMLSupport/XalanUTF8Writer.hpp0000664000175000000640000002436211731656103021717 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANUTF8WRITER_HEADER_GUARD_1357924680) #define XALANUTF8WRITER_HEADER_GUARD_1357924680 #include XALAN_CPP_NAMESPACE_BEGIN inline char bits19to21(XalanUnicodeChar theChar) { return static_cast((theChar >> 18) & 0x7); } inline char bits13to18(XalanUnicodeChar theChar) { return static_cast((theChar >> 12) & 0x3F); } inline char bits13to16(XalanUnicodeChar theChar) { return static_cast((theChar >> 12) & 0xF); } inline char bits7to12(XalanUnicodeChar theChar) { return static_cast((theChar >> 6) & 0x3f); } inline char bits7to11(XalanUnicodeChar theChar) { return static_cast((theChar >> 6) & 0x1f); } inline char bits1to6(XalanUnicodeChar theChar) { return static_cast(theChar & 0x3f); } inline char leadingByteOf2(char theBits) { return static_cast(0xC0 + theBits); } inline char leadingByteOf3(char theBits) { return static_cast(0xE0 + theBits); } inline char leadingByteOf4(char theBits) { return static_cast(0xF0 + theBits); } inline char trailingByte(char theBits) { return static_cast(0x80 + theBits); } class XalanUTF8Writer : public XalanFormatterWriter { public: typedef char value_type; XalanUTF8Writer( Writer& writer, MemoryManager& theMemoryManager); virtual ~XalanUTF8Writer() { } /** * Output a line break. */ void outputNewline() { assert(m_newlineString != 0); assert(length(m_newlineString) == m_newlineStringLength); write( m_newlineString, m_newlineStringLength); } size_type writeCDATAChar( const XalanDOMChar chars[], size_type start, size_type length, bool& /* outsideCDATA */) { assert(chars != 0 && length != 0 && start < length); return write(chars, start, length); } /** * Writes name characters. If characters that are not * representable are encountered, an exception is thrown. */ void writeNameChar( const XalanDOMChar* data, size_type theLength) { write(data, theLength); } /** * Writes PI characters. If characters that are not * representable are encountered, an exception is thrown. */ void writePIChars( const XalanDOMChar* data, size_type theLength) { write(data, theLength); } /** * Writes comment characters. If characters that are not * representable are encountered, an exception is thrown. */ void writeCommentChars( const XalanDOMChar* data, size_type theLength) { write(data, theLength); } void safeWriteContent( const XalanDOMChar* theChars, size_type theLength) { for(size_type i = 0; i < theLength; ++i) { write(value_type(theChars[i])); } } void write( const value_type* theChars, size_type theLength) { #if defined(NDEBUG) if (theLength > sizeof(m_buffer)) { flushBuffer(); m_writer.write(theChars, 0, theLength); } else { if (m_bufferRemaining < theLength) { flushBuffer(); } for(size_type i = 0; i < theLength; ++i) { *m_bufferPosition = theChars[i]; ++m_bufferPosition; } m_bufferRemaining -= theLength; } #else for(size_type i = 0; i < theLength; ++i) { write(theChars[i]); } #endif } void write(const XalanDOMChar* theChars) { write(theChars, XalanDOMString::length(theChars)); } void write(const XalanDOMString& theChars) { write(theChars.c_str(), theChars.length()); } void write(value_type theChar) { assert(theChar < 128); if (m_bufferRemaining == 0) { flushBuffer(); } *m_bufferPosition = theChar; ++m_bufferPosition; --m_bufferRemaining; } void write( const XalanDOMChar* theChars, size_type theLength) { for(size_type i = 0; i < theLength; ++i) { if (isUTF16HighSurrogate(theChars[i]) == false) { write(static_cast(theChars[i])); } else if (i + 1 >= theLength) { throwInvalidUTF16SurrogateException( theChars[i], 0, getMemoryManager()); } else { write( decodeUTF16SurrogatePair( theChars[i], theChars[i + 1], getMemoryManager())); ++i; } } } size_type write( const XalanDOMChar chars[], size_type start, size_type length) { const XalanDOMChar ch = chars[start]; if (isUTF16HighSurrogate(ch) == false) { write(static_cast(ch)); } else if (start + 1 >= length) { throwInvalidUTF16SurrogateException( ch, 0, getMemoryManager()); } else { write( decodeUTF16SurrogatePair( ch, chars[++start], getMemoryManager())); } return start; } void writeSafe( const XalanDOMChar* theChars, size_type theLength) { for(size_type i = 0; i < theLength; ++i) { const XalanDOMChar ch = theChars[i]; if (isUTF16HighSurrogate(ch) == true) { if (i + 1 >= theLength) { throwInvalidUTF16SurrogateException( ch, 0, getMemoryManager()); } else { write( decodeUTF16SurrogatePair( ch, theChars[i + 1], getMemoryManager())); ++i; } } else { write(static_cast(ch)); } } } void write(const value_type* theChars) { write(theChars, XalanDOMString::length(theChars)); } void flushWriter() { m_writer.flush(); } void flushBuffer() { m_writer.write(m_buffer, 0, m_bufferPosition - m_buffer); m_bufferPosition = m_buffer; m_bufferRemaining = kBufferSize; } private: void write(XalanUnicodeChar theChar) { if (theChar <= 0x7F) { write(char(theChar)); } else if (theChar <= 0x7FF) { if (m_bufferRemaining < 2) { flushBuffer(); } *m_bufferPosition = leadingByteOf2(bits7to11(theChar)); ++m_bufferPosition; *m_bufferPosition = trailingByte(bits1to6(theChar)); ++m_bufferPosition; m_bufferRemaining -= 2; } else if (theChar <= 0xFFFF) { // We should never get a high or low surrogate here... assert(theChar < 0xD800 || theChar > 0xDBFF); assert(theChar < 0xDC00 || theChar > 0xDFFF); if (m_bufferRemaining < 3) { flushBuffer(); } *m_bufferPosition = leadingByteOf3(bits13to16(theChar)); ++m_bufferPosition; *m_bufferPosition = trailingByte(bits7to12(theChar)); ++m_bufferPosition; *m_bufferPosition = trailingByte(bits1to6(theChar)); ++m_bufferPosition; m_bufferRemaining -= 3; } else if (theChar <= 0x10FFFF) { if (m_bufferRemaining < 4) { flushBuffer(); } *m_bufferPosition = leadingByteOf4(bits19to21(theChar)); ++m_bufferPosition; *m_bufferPosition = trailingByte(bits13to18(theChar)); ++m_bufferPosition; *m_bufferPosition = trailingByte(bits7to12(theChar)); ++m_bufferPosition; *m_bufferPosition = trailingByte(bits1to6(theChar)); ++m_bufferPosition; m_bufferRemaining -= 4; } else { throwInvalidCharacterException(theChar, getMemoryManager()); } } enum { kBufferSize = 512 // The size of the buffer }; // Data members... value_type m_buffer[kBufferSize]; value_type* m_bufferPosition; size_type m_bufferRemaining; }; XALAN_CPP_NAMESPACE_END #endif // XALANUTF8WRITER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XMLSupport/XalanOtherEncodingWriter.hpp0000664000175000000640000003117111731656103023715 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANUNICODESUBSETWRITER_HEADER_GUARD_1357924680) #define XALANUNICODESUBSETWRITER_HEADER_GUARD_1357924680 #include XALAN_CPP_NAMESPACE_BEGIN template class XalanOtherEncodingWriter : public XalanFormatterWriter { public: typedef XalanOtherEncodingWriter ThisType; class WriteCharRef { public: WriteCharRef(ThisType& writer) : m_writer(writer) { } void operator()(XalanUnicodeChar value) const { m_writer.writeNumericCharacterReference(value); } private: ThisType& m_writer; }; class ThrowTranscodingException { public: ThrowTranscodingException(ThisType& writer) : m_writer(writer) { } void operator()(XalanUnicodeChar value) const { m_writer.throwUnrepresentableCharacterException( value, m_writer.getMemoryManager()); } private: ThisType& m_writer; }; friend class WriteCharRef; friend class ThrowTranscodingException; typedef XalanDOMChar value_type; XalanOtherEncodingWriter( Writer& writer, MemoryManager& theMemoryManager) : XalanFormatterWriter( writer, theMemoryManager), m_buffer(), m_bufferPosition(m_buffer), m_bufferRemaining(kBufferSize), m_predicate(writer.getStream()), m_constants(), m_charRefFunctor(*this), m_exceptionFunctor(*this) { } virtual ~XalanOtherEncodingWriter() { } /** * Output a line break. */ void outputNewline() { assert(m_newlineString != 0); assert(length(m_newlineString) == m_newlineStringLength); write( m_newlineString, m_newlineStringLength); } /** * Writes CDATA chars , if not presentable, fixes it * with addition CDATA sections */ size_type writeCDATAChar( const XalanDOMChar chars[], size_type start, size_type length, bool& outsideCDATA) { assert(chars != 0 && length > 0 && start < length); const XalanDOMChar theChar = chars[start]; XalanUnicodeChar value = theChar; size_type result = start; if (isUTF16HighSurrogate(theChar) == true) { if (start + 1 >= length) { throwInvalidUTF16SurrogateException( theChar, 0, getMemoryManager()); } else { value = decodeUTF16SurrogatePair(theChar, chars[start+1], getMemoryManager()); ++result; } } if(m_predicate(value)) { if (outsideCDATA == false) { // We have a representable char in the normal state, // so just print it. write(value); } else { // The previous character was a not representable. // Open the CDATA section again, print the character, // then change the flag. write( m_constants.s_cdataOpenString, m_constants.s_cdataOpenStringLength); write(value); outsideCDATA = false; } } else { if(outsideCDATA == false) { // we have a non-representable char in the normal state - // close the CDATA section and print the value write( m_constants.s_cdataCloseString, m_constants.s_cdataCloseStringLength); writeNumericCharacterReference(value); outsideCDATA = true; } else { writeNumericCharacterReference(value); } } return result; } /** * Writes name characters. If a character is not representable, * an exception is thrown. */ void writeNameChar( const XalanDOMChar* data, size_type theLength) { for( size_type i = 0; i < theLength; ++i) { i = write(data, i , theLength, m_exceptionFunctor); } } /** * Writes PI characters. If a character is not representable, * an exception is thrown. */ void writePIChars( const XalanDOMChar* data, size_type theLength) { for( size_type i = 0; i < theLength; ) { i = write(data, i , theLength, m_exceptionFunctor); } } /** * Writes comment characters. If a character is not representable, * or must be written as a character reference for compatibility with * XML 1.1, an exception is thrown. */ void writeCommentChars( const XalanDOMChar* data, size_type theLength) { for( size_type i = 0; i < theLength; ) { i = write(data, i , theLength, m_exceptionFunctor); } } void write( const XalanDOMChar* theChars, size_type theLength) { for(size_type i = 0; i < theLength; ++i) { write(theChars[i]); } } void write(const XalanDOMString& theChars) { write(theChars.c_str(), theChars.length()); } /** * Writes writes a UTF-16 code unit that isn't * part of the surrogate pair */ void write(XalanDOMChar theChar) { assert( isUTF16HighSurrogate(theChar) == false && isUTF16LowSurrogate(theChar) == false); if (m_bufferRemaining == 0) { flushBuffer(); } if(m_predicate(theChar)) { *m_bufferPosition = theChar; ++m_bufferPosition; --m_bufferRemaining; } else { writeNumericCharacterReference(theChar); } } size_type write( const XalanDOMChar chars[], size_type start, size_type length) { return write(chars, start, length, m_charRefFunctor); } void writeSafe( const XalanDOMChar* theChars, size_type theLength) { for(size_type i = 0; i < theLength; ++i) { const XalanDOMChar ch = theChars[i]; if (isUTF16HighSurrogate(ch) == true) { if (i + 1 >= theLength) { throwInvalidUTF16SurrogateException(ch, 0, getMemoryManager()); } else { XalanUnicodeChar value = decodeUTF16SurrogatePair(ch, theChars[i+1], getMemoryManager()); if (this->m_isPresentable(value)) { write(value); } else { this->writeNumberedEntityReference(value); } ++i; } } else { write(static_cast(ch)); } } } void write(const XalanDOMChar* theChars) { write(theChars, XalanDOMString::length(theChars)); } void flushWriter() { m_writer.flush(); } void flushBuffer() { m_writer.write(m_buffer, 0, m_bufferPosition - m_buffer); m_bufferPosition = m_buffer; m_bufferRemaining = kBufferSize; } private: /** * Writes a representable code point * * @param chars Array of the characters for transcoding * * @param start Place int the array the transcoding should start * * @param length The length of the array * * @param failureHandler The functor handles the non-representable characters * * @return Place int the array of the next character */ template size_type write( const XalanDOMChar chars[], size_type start, size_type length, TranscodingFailureFunctor& failureHandler) { assert(chars != 0 && length > 0); assert(start <= length); size_type result = start; const XalanDOMChar ch = chars[start]; XalanUnicodeChar value = ch; if (isUTF16HighSurrogate(ch) == true) { if (start + 1 >= length) { throwInvalidUTF16SurrogateException( ch, 0, getMemoryManager()); } else { value = decodeUTF16SurrogatePair(ch, chars[start+1], getMemoryManager()); ++result; } } if(m_predicate(value)) { write(value); } else { failureHandler(value); } return result; } /** * Writes a representable code point * * @param theChar UTF-32 code point . For passing it to the Xerces * transcoder, we convert it back to UTF-16 */ void write(XalanUnicodeChar theChar) { // encode back UTF-32 into UTF-16 if (theChar > 0xFFFF) { if (m_bufferRemaining < 2) { flushBuffer(); } *m_bufferPosition = static_cast((theChar >> 10) + 0xD7C0); ++m_bufferPosition; *m_bufferPosition = static_cast((theChar & 0x03FF) + 0xDC00); ++m_bufferPosition; m_bufferRemaining = m_bufferRemaining - size_type(2); } else { if (m_bufferRemaining == 0) { flushBuffer(); } *m_bufferPosition = XalanDOMChar(theChar); ++m_bufferPosition; --m_bufferRemaining; } } void writeNumericCharacterReference(XalanUnicodeChar theChar) { const XalanDOMString& theString = formatNumericCharacterReference(theChar); const XalanDOMString::size_type theLength = theString.length(); if (m_bufferRemaining < theLength) { flushBuffer(); } XALAN_USING_STD(copy) assert(theString.size() <= m_bufferRemaining); m_bufferPosition = copy( theString.begin(), theString.end(), m_bufferPosition); m_bufferRemaining -= theLength; } enum { // The size of the buffer. The minimum for this // is the length of the longest numeric character // reference that can be written. kBufferSize = 512u }; // Data members... XalanDOMChar m_buffer[kBufferSize]; XalanDOMChar* m_bufferPosition; size_type m_bufferRemaining; const Predicate m_predicate; const ConstantsType m_constants; const WriteCharRef m_charRefFunctor; const ThrowTranscodingException m_exceptionFunctor; }; XALAN_CPP_NAMESPACE_END #endif // XALANUNICODESUBSETWRITER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XMLSupport/XMLSupportInit.cpp0000664000175000000640000000300611731656103021654 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XMLSupportInit.hpp" #include "XalanXMLSerializerBase.hpp" XALAN_CPP_NAMESPACE_BEGIN unsigned long XMLSupportInit::s_initCounter = 0; XMLSupportInit::XMLSupportInit(MemoryManager& theManager) : m_platformSupportInit(theManager), m_domSupportInit(theManager) { ++s_initCounter; if (s_initCounter == 1) { initialize(theManager); } } XMLSupportInit::~XMLSupportInit() { --s_initCounter; if (s_initCounter == 0) { terminate(); } } void XMLSupportInit::initialize(MemoryManager& theManager) { XalanXMLSerializerBase::initialize(theManager); } void XMLSupportInit::terminate() { XalanXMLSerializerBase::terminate(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XMLSupport/XalanDummyIndentWriter.hpp0000664000175000000640000000433611731656103023425 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANDUMMYIDENTWRITER_HEADER_GUARD_1357924680) #define XALANDUMMYIDENTWRITER_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN template class XalanDummyIndentWriter { public: typedef typename WriteHandeler::size_type size_type; typedef typename WriteHandeler::value_type value_type; XalanDummyIndentWriter( WriteHandeler& /*writer*/, size_type /*ident*/) { } ~XalanDummyIndentWriter() { } void setIndent(size_type /*value*/) { } size_type getIndent()const { return 0; } void indent() { } void increaseIndent() { } void decreaseIndent() { } void setStartNewLine(bool /*value*/) { } /** * Output a line break. */ void outputLineSep() { } void setPrevText(bool /*value*/) { } void setPreserve(bool /*value*/) { // Empty of the function } void pop_preserve() { // Empty body of the function } void push_preserve() { // Empty of the function } private: }; XALAN_CPP_NAMESPACE_END #endif // XALANDUMMYIDENTWRITER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XMLSupport/XMLSupportInit.hpp0000664000175000000640000000340311731656103021662 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XMLSUPPORTINIT_INCLUDE_GUARD_1357924680) #define XMLSUPPORTINIT_INCLUDE_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XMLSUPPORT_EXPORT XMLSupportInit { public: explicit XMLSupportInit(MemoryManager& theManager XALAN_DEFAULT_MEMMGR); ~XMLSupportInit(); private: // Not implemented... XMLSupportInit(const XMLSupportInit&); XMLSupportInit& operator=(const XMLSupportInit&); static void initialize(MemoryManager& theManager); static void terminate(); const PlatformSupportInit m_platformSupportInit; const DOMSupportInit m_domSupportInit; static unsigned long s_initCounter; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XMLSUPPORTINIT_INCLUDE_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XMLSupport/XalanFormatterWriter.hpp0000664000175000000640000002154711731656103023136 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANFORMATTERWRITER_HEADER_GUARD_1357924680) #define XALANFORMATTERWRITER_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN XALAN_USING_XERCES(MemoryManager) class XalanFormatterWriter { public: typedef FormatterListener::size_type size_type; template class NewLineWriterFunctor { public: typedef WriterType writer_type; NewLineWriterFunctor(WriterType& writer) : m_writer(writer), m_newlineString(0), m_newlineStringLength(0) { XalanOutputStream* stream = writer.getStream(); if(stream != 0) { m_newlineString = stream->getNewlineString(); } else { m_newlineString = XalanOutputStream::defaultNewlineString(); } assert(m_newlineString != 0); m_newlineStringLength = length(m_newlineString); } void operator()() { assert(m_newlineString != 0 && length(m_newlineString) == m_newlineStringLength); m_writer.write(m_newlineString, m_newlineStringLength); } private: WriterType& m_writer; /** * The string of characters that represents the newline */ const XalanDOMChar* m_newlineString; /** * The length of the the string of characters that represents the newline */ size_type m_newlineStringLength; }; template class WhiteSpaceWriterFunctor { typedef typename WriterType::value_type value_type; public: typedef WriterType writer_type; WhiteSpaceWriterFunctor(WriterType& writer) : m_writer(writer) { } void operator()(size_type count) { for ( size_type i = 0 ; i < count ; i++ ) { m_writer.write(value_type(XalanUnicode::charSpace)); } } private: WriterType& m_writer; }; class CommonRepresentableCharFunctor { public: CommonRepresentableCharFunctor(const XalanOutputStream* stream) : m_stream(stream) { assert(stream != 0); } bool operator()(XalanUnicodeChar theChar) const { bool result = true; if (m_stream != 0) { result = m_stream->canTranscodeTo(theChar); } return result; } private: const XalanOutputStream* const m_stream; }; public: XalanFormatterWriter( Writer& theWriter, MemoryManager& theMemoryManager) : m_writer(theWriter), m_memoryManager(theMemoryManager), m_stringBuffer(5, 0, theMemoryManager) { const XalanOutputStream* const theStream = theWriter.getStream(); if (theStream == 0) { m_newlineString = XalanOutputStream::defaultNewlineString(); } else { m_newlineString = theStream->getNewlineString(); } assert(m_newlineString != 0); m_newlineStringLength = length(m_newlineString); assert(m_newlineString != 0); } MemoryManager& getMemoryManager() { return m_memoryManager; } virtual ~XalanFormatterWriter() { } Writer* getWriter() const { return &m_writer; } XalanOutputStream* getStream() { return m_writer.getStream(); } const XalanOutputStream* getStream() const { return m_writer.getStream(); } void flushWriter() { m_writer.flush(); } static bool isUTF16HighSurrogate(XalanDOMChar theChar) { return 0xD800u <= theChar && theChar <= 0xDBFFu ? true : false; } static bool isUTF16LowSurrogate(XalanDOMChar theChar) { return 0xDC00u <= theChar && theChar <= 0xDFFFu ? true : false; } static XalanUnicodeChar decodeUTF16SurrogatePair( XalanDOMChar theHighSurrogate, XalanDOMChar theLowSurrogate, MemoryManager& theManager) { assert(isUTF16HighSurrogate(theHighSurrogate) == true); if (isUTF16LowSurrogate(theLowSurrogate) == false) { throwInvalidUTF16SurrogateException(theHighSurrogate, theLowSurrogate, theManager); } return ((theHighSurrogate - 0xD800u) << 10) + theLowSurrogate - 0xDC00u + 0x00010000u; } static void throwInvalidCharacterException( XalanUnicodeChar ch, MemoryManager& theManager) { XalanDOMString theMessage(theManager); XalanDOMString theBuffer(theManager); XalanMessageLoader::getMessage( theMessage, XalanMessages::InvalidScalar_1Param, NumberToHexDOMString(ch, theBuffer)); XALAN_USING_XERCES(SAXException) throw SAXException(theMessage.c_str(), &theManager); } void throwUnrepresentableCharacterException( XalanUnicodeChar ch, MemoryManager& theManager) { XalanDOMString theBuffer(theManager); const XalanOutputStream* const theStream = m_writer.getStream(); throw XalanTranscodingServices::UnrepresentableCharacterException( ch, theStream->getOutputEncoding(), theBuffer); } static void throwInvalidUTF16SurrogateException( XalanDOMChar ch, XalanDOMChar next, MemoryManager& theManager) { XalanDOMString chStr(theManager); XalanDOMString nextStr(theManager); NumberToHexDOMString(ch, chStr); NumberToHexDOMString(next, nextStr); XalanDOMString theMessage(theManager); XalanMessageLoader::getMessage( theMessage, XalanMessages::InvalidSurrogatePair_2Param, theMessage, chStr, nextStr); XALAN_USING_XERCES(SAXException) throw SAXException(theMessage.c_str(),&theManager); } protected: /** * The writer. */ Writer& m_writer; /** * The MemoryManager instance to use for any dynamically- * allocated memory. */ MemoryManager& m_memoryManager; XalanDOMString m_stringBuffer; /** * The string of characters that represents the newline */ const XalanDOMChar* m_newlineString; /** * The length of the the string of characters that represents the newline */ size_type m_newlineStringLength; /** * Format a code point as a numeric character reference. * * @param theChar A Unicode code point. */ const XalanDOMString& formatNumericCharacterReference(XalanUnicodeChar theChar) { m_stringBuffer.clear(); m_stringBuffer.push_back(XalanDOMChar(XalanUnicode::charAmpersand)); m_stringBuffer.push_back(XalanDOMChar(XalanUnicode::charNumberSign)); NumberToDOMString(theChar, m_stringBuffer); m_stringBuffer.push_back(XalanDOMChar(XalanUnicode::charSemicolon)); return m_stringBuffer; } private: // These are not implemented. XalanFormatterWriter(); XalanFormatterWriter& operator=(const XalanFormatterWriter&); }; XALAN_CPP_NAMESPACE_END #endif // XALANFORMATTERWRITER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XMLSupport/FormatterTreeWalker.cpp0000664000175000000640000001045211731656103022727 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "FormatterTreeWalker.hpp" // Xerces header files... #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN FormatterTreeWalker::FormatterTreeWalker( FormatterListener& formatterListener, MemoryManager& theManager) : TreeWalker(), m_formatterListener(formatterListener), m_memoryManager(theManager) { } FormatterTreeWalker::~FormatterTreeWalker() { } bool FormatterTreeWalker::startNode(const XalanNode* node) { assert(node != 0); switch(node->getNodeType()) { case XalanNode::COMMENT_NODE: { m_formatterListener.comment(node->getNodeValue().c_str()); } break; case XalanNode::DOCUMENT_FRAGMENT_NODE: // ?? break; case XalanNode::DOCUMENT_NODE: m_formatterListener.startDocument(); break; case XalanNode::ELEMENT_NODE: { const XalanElement* theElementNode = static_cast(node); const XalanNamedNodeMap* atts = theElementNode->getAttributes(); assert(atts != 0); NamedNodeMapAttributeList theAttributeList(*atts, m_memoryManager); m_formatterListener.startElement( theElementNode->getNodeName().c_str(), theAttributeList); } break; case XalanNode::PROCESSING_INSTRUCTION_NODE: { m_formatterListener.processingInstruction( node->getNodeName().c_str(), node->getNodeValue().c_str()); } break; case XalanNode::CDATA_SECTION_NODE: { const XalanDOMString& data = node->getNodeValue(); assert(data.length() == static_cast(data.length())); m_formatterListener.cdata( data.c_str(), static_cast(data.length())); } break; case XalanNode::TEXT_NODE: { const XalanDOMString& data = node->getNodeValue(); assert(data.length() == static_cast(data.length())); m_formatterListener.characters( data.c_str(), static_cast(data.length())); } break; case XalanNode::ENTITY_REFERENCE_NODE: m_formatterListener.entityReference(node->getNodeName().c_str()); break; default: // Do nothing... break; } return false; } bool FormatterTreeWalker::startNode(XalanNode* node) { assert(node != 0); return startNode(const_cast(node)); } bool FormatterTreeWalker::endNode(const XalanNode* node) { assert(node != 0); switch(node->getNodeType()) { case XalanNode::DOCUMENT_NODE: m_formatterListener.endDocument(); break; case XalanNode::ELEMENT_NODE: m_formatterListener.endElement(node->getNodeName().c_str()); break; default: // Do nothing break; } return false; } bool FormatterTreeWalker::endNode(XalanNode* node) { return endNode(const_cast(node)); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XMLSupport/FormatterToHTML.cpp0000664000175000000640000022005211731656103021730 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "FormatterToHTML.hpp" #include #include #include #include #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN const XalanDOMString FormatterToHTML::s_emptyString(XalanMemMgrs::getDummyMemMgr()); FormatterToHTML::FormatterToHTML( Writer& writer, const XalanDOMString& encoding, const XalanDOMString& mediaType, const XalanDOMString& doctypeSystem, const XalanDOMString& doctypePublic, bool doIndent, int indent, bool escapeURLs, bool omitMetaTag, MemoryManager& theManager) : FormatterToXML( writer, s_emptyString, doIndent, indent, encoding, mediaType, doctypeSystem, doctypePublic, false, s_emptyString, OUTPUT_METHOD_HTML, true, theManager), m_currentElementName(theManager), m_inBlockElem(false), m_isRawStack(theManager), m_isScriptOrStyleElem(false), m_inScriptElemStack(theManager), m_escapeURLs(escapeURLs), m_isFirstElement(false), m_elementLevel(0), m_hasNamespaceStack(theManager), m_omitMetaTag(omitMetaTag), m_elementPropertiesStack(theManager) { initCharsMap(); // FormatterToXML may have enabled this property, based on // the encoding, so we should force it off. m_shouldWriteXMLHeader = false; } FormatterToHTML* FormatterToHTML::create( MemoryManager& theManager, Writer& writer, const XalanDOMString& encoding, const XalanDOMString& mediaType, const XalanDOMString& doctypeSystem, const XalanDOMString& doctypePublic, bool doIndent, int indent, bool escapeURLs, bool omitMetaTag) { typedef FormatterToHTML ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( writer, encoding, mediaType, doctypeSystem, doctypePublic, doIndent, indent, escapeURLs, omitMetaTag, theManager); theGuard.release(); return theResult; } FormatterToHTML::~FormatterToHTML() { } void FormatterToHTML::initAttrCharsMap() { FormatterToXML::initAttrCharsMap(); m_attrCharsMap[XalanUnicode::charLF] = 'S'; // These should _not_ be escaped... m_attrCharsMap[XalanUnicode::charHTab] = 0; m_attrCharsMap[XalanUnicode::charLessThanSign] = 0; m_attrCharsMap[XalanUnicode::charGreaterThanSign] = 0; for(size_type i = 160; i < SPECIALSSIZE; i++) { m_attrCharsMap[i] = 'S'; } } void FormatterToHTML::initCharsMap() { initAttrCharsMap(); #if defined(XALAN_STRICT_ANSI_HEADERS) using std::memset; #endif memset(m_charsMap, 0, sizeof(m_charsMap)); m_charsMap[XalanUnicode::charLF] = 'S'; m_charsMap[XalanUnicode::charLessThanSign] = 'S'; m_charsMap[XalanUnicode::charGreaterThanSign] = 'S'; m_charsMap[XalanUnicode::charAmpersand] = 'S'; memset(m_charsMap, 'S', 10); m_charsMap[0x0A] = 'S'; m_charsMap[0x0D] = 'S'; for(int i = 160; i < SPECIALSSIZE; ++i) { m_charsMap[i] = 'S'; } for(int j = m_maxCharacter; j < SPECIALSSIZE; ++j) { m_charsMap[j] = 'S'; } } void FormatterToHTML::startDocument() { // Clear the buffer, just in case... m_stringBuffer.clear(); // Reset this, just in case... m_elementLevel = 0; m_isFirstElement = true; m_startNewLine = false; m_shouldWriteXMLHeader = false; m_isScriptOrStyleElem = false; m_isRawStack.clear(); m_inScriptElemStack.push_back(false); m_hasNamespaceStack.clear(); m_elementPropertiesStack.clear(); const bool isEmptySystem = m_doctypeSystem.empty(); const bool isEmptyPublic = m_doctypePublic.empty(); // Output the header if either the System or Public attributes are // specified if(isEmptySystem == false || isEmptyPublic == false) { accumContent(s_doctypeHeaderStartString, 0, s_doctypeHeaderStartStringLength); if(isEmptyPublic == false) { accumContent(s_doctypeHeaderPublicString, 0, s_doctypeHeaderPublicStringLength); accumContent(m_doctypePublic); accumContent(XalanUnicode::charQuoteMark); } if(isEmptySystem == false) { if(isEmptyPublic == true) { accumContent(s_doctypeHeaderSystemString, 0, s_doctypeHeaderSystemStringLength); } accumContent(XalanUnicode::charSpace); accumContent(XalanUnicode::charQuoteMark); accumContent(m_doctypeSystem); accumContent(XalanUnicode::charQuoteMark); } accumContent(XalanUnicode::charGreaterThanSign); outputLineSep(); } m_needToOutputDocTypeDecl = false; } void FormatterToHTML::endDocument() { assert(m_isRawStack.empty() == true); assert(m_inScriptElemStack.empty() == false); assert(m_hasNamespaceStack.empty() == true); assert(m_elementPropertiesStack.empty() == true); assert(m_elementLevel == 0); m_inScriptElemStack.pop_back(); assert(m_inScriptElemStack.empty() == true); FormatterToXML::endDocument(); } void FormatterToHTML::startElement( const XMLCh* const name, AttributeListType& attrs) { if (pushHasNamespace(name) == true) { FormatterToXML::startElement(name, attrs); } else { writeParentTagEnd(); const XalanHTMLElementsProperties::ElementProperties& elemProperties = XalanHTMLElementsProperties::find(name); assert(elemProperties.null() == false); assert( length(elemProperties.getName()) == 0 || compareIgnoreCaseASCII(name, elemProperties.getName()) == 0); // Push a copy onto the stack for endElement(). Don't worry -- // the copy is cheap! m_elementPropertiesStack.push_back(elemProperties); const bool isBlockElement = elemProperties.is(XalanHTMLElementsProperties::BLOCK); if (elemProperties.is(XalanHTMLElementsProperties::SCRIPTELEM) == true) { m_isScriptOrStyleElem = true; m_inScriptElemStack.push_back(true); } else { if (elemProperties.is(XalanHTMLElementsProperties::STYLEELEM) == true) { m_isScriptOrStyleElem = true; } m_inScriptElemStack.push_back(m_inScriptElemStack.back()); } // Increment the level... ++m_elementLevel; if(m_ispreserve == true) { m_ispreserve = false; } else if(m_doIndent && m_elementLevel > 0 && m_isFirstElement == false && (m_inBlockElem == false || isBlockElement == true)) { m_startNewLine = true; indent(m_currentIndent); } m_inBlockElem = !isBlockElement; m_isRawStack.push_back(elemProperties.is(XalanHTMLElementsProperties::RAW)); accumContent(XalanUnicode::charLessThanSign); accumName(name); const XalanSize_t nAttrs = attrs.getLength(); for (XalanSize_t i = 0; i < nAttrs ; i++) { processAttribute(attrs.getName(i), attrs.getValue(i), elemProperties); } // Flag the current element as not yet having any children. openElementForChildren(); m_currentIndent += m_indent; m_isprevtext = false; if (elemProperties.is(XalanHTMLElementsProperties::HEADELEM) == true) { writeParentTagEnd(); if (m_omitMetaTag == false) { if (m_doIndent) { indent(m_currentIndent); } accumContent(s_metaString, 0, s_metaStringLength); accumContent(getEncoding()); accumContent(XalanUnicode::charQuoteMark); accumContent(XalanUnicode::charGreaterThanSign); } } // We've written the first element, so turn off the flag... if (m_isFirstElement == true) { m_isFirstElement = false; } assert(m_elementLevel > 0); } } void FormatterToHTML::endElement(const XMLCh* const name) { if (popHasNamespace() == true) { FormatterToXML::endElement(name); } else { m_currentIndent -= m_indent; const bool hasChildNodes = childNodesWereAdded(); assert(m_isRawStack.empty() == false); assert(m_inScriptElemStack.empty() == false); assert(m_elementPropertiesStack.empty() == false); m_isRawStack.pop_back(); m_inScriptElemStack.pop_back(); const XalanHTMLElementsProperties::ElementProperties elemProperties = m_elementPropertiesStack.back(); assert(elemProperties.null() == false); assert( length(elemProperties.getName()) == 0 || compareIgnoreCaseASCII(name, elemProperties.getName()) == 0); m_elementPropertiesStack.pop_back(); const bool isBlockElement = elemProperties.is(XalanHTMLElementsProperties::BLOCK); bool shouldIndent = false; if(m_ispreserve == true) { m_ispreserve = false; } else if(m_doIndent == true && (m_inBlockElem == false || isBlockElement == true)) { m_startNewLine = true; shouldIndent = true; } m_inBlockElem = !isBlockElement; if (hasChildNodes) { if (shouldIndent == true) { indent(m_currentIndent); } if(elemProperties.is(XalanHTMLElementsProperties::EMPTY) == false) { accumContent(XalanUnicode::charLessThanSign); accumContent(XalanUnicode::charSolidus); accumName(name); accumContent(XalanUnicode::charGreaterThanSign); } } else { if(elemProperties.is(XalanHTMLElementsProperties::EMPTY) == false) { accumContent(XalanUnicode::charGreaterThanSign); accumContent(XalanUnicode::charLessThanSign); accumContent(XalanUnicode::charSolidus); accumName(name); accumContent(XalanUnicode::charGreaterThanSign); } else { accumContent(XalanUnicode::charGreaterThanSign); } } if (elemProperties.is(XalanHTMLElementsProperties::WHITESPACESENSITIVE) == true) { m_ispreserve = true; } if (hasChildNodes == true) { if (m_preserves.empty() == false) { m_preserves.pop_back(); } } m_isprevtext = false; // Decrement the level... --m_elementLevel; } } void FormatterToHTML::characters( const XMLCh* const chars, const size_type length) { if(length != 0) { if(m_inCData == true) { cdata(chars, length); } else if(m_nextIsRaw) { m_nextIsRaw = false; charactersRaw(chars, length); } else if (m_inScriptElemStack.back() == true) { charactersRaw(chars, length); } else if (m_isRawStack.empty() == false && m_isRawStack.back() == true) { writeParentTagEnd(); m_ispreserve = true; if (shouldIndent() == true) { indent(m_currentIndent); } writeNormalizedChars(chars, 0, length, false); } else { writeParentTagEnd(); m_ispreserve = true; writeCharacters(chars, length); } } if (m_isprevtext == false) { m_isprevtext = true; } } bool FormatterToHTML::accumDefaultEntity( XalanDOMChar ch, bool escLF) { assert(ch != 0); if(FormatterToXML::accumDefaultEntity(ch, escLF) == true) { return true; } else { // Find the entity, if any... const Entity* theFirst = s_entities; const Entity* theLast = s_lastEntity; while(theFirst <= theLast) { const Entity* const theCurrent = theFirst + (theLast - theFirst) / 2; assert(theCurrent->m_char != 0); if (ch < theCurrent->m_char) { theLast = theCurrent - 1; } else if (ch > theCurrent->m_char) { theFirst = theCurrent + 1; } else { assert(length(theCurrent->m_string) == theCurrent->m_length); copyEntityIntoBuffer(theCurrent->m_string, theCurrent->m_length); return true; } } return false; } } void FormatterToHTML::entityReference(const XMLCh* const name) { accumContent(XalanUnicode::charAmpersand); accumName(name); accumContent(XalanUnicode::charSemicolon); } void FormatterToHTML::cdata( const XMLCh* const ch, const size_type length) { if(m_isScriptOrStyleElem == true) { writeParentTagEnd(); m_ispreserve = true; if (shouldIndent() == true) { indent(m_currentIndent); } writeNormalizedChars(ch, 0, length, true); } else if(m_stripCData == true) { writeParentTagEnd(); m_ispreserve = true; if (shouldIndent() == true) { indent(m_currentIndent); } accumContent(ch, 0, length); } else { FormatterToXML::cdata(ch, length); } } void FormatterToHTML::processingInstruction( const XMLCh* const target, const XMLCh* const data) { const size_type dataLength = length(data); // Use a fairly nasty hack to tell if the next node is supposed to be // unescaped text. if(equals(target, length(target), s_piTarget, s_piTargetLength) == true && equals(data, dataLength, s_piData, s_piDataLength) == true) { m_nextIsRaw = true; } else { writeParentTagEnd(); if (shouldIndent() == true) { indent(m_currentIndent); } accumContent(XalanUnicode::charLessThanSign); accumContent(XalanUnicode::charQuestionMark); accumName(target); if (length(data) > 0) { if(isXMLWhitespace(data[0]) == false) { accumContent(XalanUnicode::charSpace); } writeCharacters(data, dataLength); } accumContent(XalanUnicode::charGreaterThanSign); // different from XML // If outside of an element, then put in a new line. This whitespace // is not significant. if (m_elementLevel == 0) { outputLineSep(); } m_startNewLine = true; } } void FormatterToHTML::writeCharacters(const XalanDOMString& theString) { writeCharacters(theString.c_str(), theString.length()); } void FormatterToHTML::writeCharacters( const XalanDOMChar* theString, size_type theLength) { assert(theString != 0); size_type i = 0; size_type firstIndex = 0; while(i < theLength) { const XalanDOMChar ch = theString[i]; if(ch < SPECIALSSIZE && m_charsMap[ch] != 'S') { ++i; } else if (XalanUnicode::charLF == ch) // sta this can be removed? { accumContent(theString, firstIndex, i - firstIndex); outputLineSep(); ++i; firstIndex = i; } else { accumContent(theString, firstIndex, i - firstIndex); if (accumDefaultEntity(ch, true) == false) { if (0xd800 <= ch && ch < 0xdc00) { // UTF-16 surrogate if (i + 1 >= theLength) { throwInvalidUTF16SurrogateException(ch, getMemoryManager()); } XalanUnicodeChar next = theString[++i]; if (!(0xdc00 <= next && next < 0xe000)) { throwInvalidUTF16SurrogateException(ch, static_cast(next), getMemoryManager()); } next = ((ch - 0xd800) << 10) + next - 0xdc00 + 0x00010000; writeNumberedEntityReference(next); } else if(ch >= 0x007Fu && ch <= m_maxCharacter) { // Hope this is right... accumContent(ch); } else { writeNumberedEntityReference(ch); } } ++i; firstIndex = i; } } accumContent(theString, firstIndex, theLength - firstIndex); } void FormatterToHTML::writeAttrString( const XalanDOMChar* theString, size_type theStringLength) { assert(theString != 0); size_type i = 0; size_type firstIndex = 0; while(i < theStringLength) { const XalanDOMChar ch = theString[i]; if(ch < SPECIALSSIZE && m_attrCharsMap[ch] != 'S') { ++i; } else if(XalanUnicode::charAmpersand == ch && i + 1 < theStringLength && XalanUnicode::charLeftCurlyBracket == theString[i + 1]) { ++i; } else { accumContent(theString, firstIndex, i - firstIndex); if (accumDefaultEntity(ch, true) == false) { if (0xd800 <= ch && ch < 0xdc00) { // UTF-16 surrogate XalanDOMChar next = 0; if (i + 1 >= theStringLength) { throwInvalidUTF16SurrogateException(ch, getMemoryManager()); } else { next = theString[++i]; if (!(0xdc00 <= next && next < 0xe000)) { throwInvalidUTF16SurrogateException(ch, next, getMemoryManager()); } next = XalanDOMChar(((ch - 0xd800) << 10) + next -0xdc00 + 0x00010000); } accumContent(XalanUnicode::charAmpersand); accumContent(XalanUnicode::charNumberSign); accumContent(NumberToDOMString(next, m_stringBuffer)); m_stringBuffer.clear(); accumContent(XalanUnicode::charSemicolon); } else { writeNumberedEntityReference(ch); } } ++i; firstIndex = i; } } accumContent(theString, firstIndex, theStringLength - firstIndex); } void FormatterToHTML::accumCommentData(const XalanDOMChar* data) { accumName(data); } void FormatterToHTML::copyEntityIntoBuffer( const XalanDOMChar* s, size_type theLength) { assert(s != 0); accumName(XalanUnicode::charAmpersand); accumName(s, 0, theLength); accumName(XalanUnicode::charSemicolon); } void FormatterToHTML::copyEntityIntoBuffer(const XalanDOMString& s) { accumName(XalanUnicode::charAmpersand); accumName(s); accumName(XalanUnicode::charSemicolon); } void FormatterToHTML::processAttribute( const XalanDOMChar* name, const XalanDOMChar* value, const XalanHTMLElementsProperties::ElementProperties& elemProperties) { const size_type nameLength = length(name); accumContent(XalanUnicode::charSpace); const size_type valueLength = length(value); if((valueLength == 0 || equalsIgnoreCaseASCII(name, nameLength, value, valueLength)) && elemProperties.isAttribute(name, XalanHTMLElementsProperties::ATTREMPTY) == true) { accumName(name); } else { accumName(name, 0, nameLength); accumContent(XalanUnicode::charEqualsSign); accumContent(XalanUnicode::charQuoteMark); if(elemProperties.isAttribute(name, XalanHTMLElementsProperties::ATTRURL) == true) { writeAttrURI(value, valueLength); } else { writeAttrString(value, valueLength); } accumContent(XalanUnicode::charQuoteMark); } } void FormatterToHTML::writeAttrURI( const XalanDOMChar* theString, size_type theStringLength) { assert(theString != 0); // http://www.ietf.org/rfc/rfc2396.txt says: // A URI is always in an "escaped" form, since escaping or unescaping a // completed URI might change its semantics. Normally, the only time // escape encodings can safely be made is when the URI is being created // from its component parts; each component may have its own set of // characters that are reserved, so only the mechanism responsible for // generating or interpreting that component can determine whether or // not escaping a character will change its semantics. Likewise, a URI // must be separated into its components before the escaped characters // within those components can be safely decoded. // // ...So we do our best to do limited escaping of the URL, without // causing damage. If the URL is already properly escaped, in theory, this // function should not change the string value. for (size_type i = 0; i < theStringLength; ++i) { const XalanDOMChar ch = theString[i]; if (ch < 33 || ch > 126) { if (m_escapeURLs == true) { // For the gory details of encoding these characters as // UTF-8 hex, see: // // Unicode, A Primer, by Tony Graham, p. 92. // if (ch == XalanUnicode::charSpace) { accumContent(ch); } else if(ch <= 0x7F) { accumHexNumber(ch); } else if(ch <= 0x7FF) { const XalanDOMChar highByte = XalanDOMChar((ch >> 6) | 0xC0); const XalanDOMChar lowByte = XalanDOMChar((ch & 0x3F) | 0x80); accumHexNumber(highByte); accumHexNumber(lowByte); } else if(isUTF16Surrogate(ch) == true) // high surrogate { // I'm sure this can be done in 3 instructions, but I choose // to try and do it exactly like it is done in the book, at least // until we are sure this is totally clean. I don't think performance // is a big issue with this particular function, though I could be // wrong. Also, the stuff below clearly does more masking than // it needs to do. // Clear high 6 bits. const XalanDOMChar highSurrogate = XalanDOMChar(ch & 0x03FF); // Middle 4 bits (wwww) + 1 // "Note that the value of wwww from the high surrogate bit pattern // is incremented to make the uuuuu bit pattern in the scalar value // so the surrogate pair don't address the BMP." const XalanDOMChar wwww = XalanDOMChar((highSurrogate & 0x03C0) >> 6); const XalanDOMChar uuuuu = XalanDOMChar(wwww + 1); // next 4 bits const XalanDOMChar zzzz = XalanDOMChar((highSurrogate & 0x003C) >> 2); // low 2 bits const XalanDOMChar temp = XalanDOMChar(((highSurrogate & 0x0003) << 4) & 0x30); // Get low surrogate character. const XalanDOMChar nextChar = theString[++i]; // Clear high 6 bits. const XalanDOMChar lowSurrogate = XalanDOMChar(nextChar & 0x03FF); // put the middle 4 bits into the bottom of yyyyyy (byte 3) const XalanDOMChar yyyyyy = XalanDOMChar(temp | ((lowSurrogate & 0x03C0) >> 6)); // bottom 6 bits. const XalanDOMChar xxxxxx = XalanDOMChar(lowSurrogate & 0x003F); const XalanDOMChar byte1 = XalanDOMChar(0xF0 | (uuuuu >> 2)); // top 3 bits of uuuuu const XalanDOMChar byte2 = XalanDOMChar(0x80 | (((uuuuu & 0x03) << 4) & 0x30) | zzzz); const XalanDOMChar byte3 = XalanDOMChar(0x80 | yyyyyy); const XalanDOMChar byte4 = XalanDOMChar(0x80 | xxxxxx); accumHexNumber(byte1); accumHexNumber(byte2); accumHexNumber(byte3); accumHexNumber(byte4); } else { const XalanDOMChar highByte = XalanDOMChar((ch >> 12) | 0xE0); const XalanDOMChar middleByte = XalanDOMChar(((ch & 0x0FC0) >> 6) | 0x80); const XalanDOMChar lowByte = XalanDOMChar((ch & 0x3F) | 0x80); accumHexNumber(highByte); accumHexNumber(middleByte); accumHexNumber(lowByte); } } else if (ch < m_maxCharacter) { accumContent(ch); } else { accumContent(XalanUnicode::charAmpersand); accumContent(XalanUnicode::charNumberSign); accumContent(NumberToDOMString(ch, m_stringBuffer)); m_stringBuffer.clear(); accumContent(XalanUnicode::charSemicolon); } } // Since http://www.ietf.org/rfc/rfc2396.txt refers to the URI grammar as // not allowing quotes in the URI proper syntax, nor in the fragment // identifier, we believe that double quotes should be escaped. else if (ch == XalanUnicode::charQuoteMark) { if (m_escapeURLs == true) { accumContent(XalanUnicode::charPercentSign); accumContent(XalanUnicode::charDigit_2); accumContent(XalanUnicode::charDigit_2); } else { accumDefaultEntity(ch, true); } } else if (ch == XalanUnicode::charAmpersand) { accumDefaultEntity(ch, true); } else { accumContent(ch); } } } void FormatterToHTML::accumHexNumber(XalanDOMChar theChar) { accumContent(XalanUnicode::charPercentSign); assert(m_stringBuffer.empty() == true); NumberToHexDOMString(theChar, m_stringBuffer); if (m_stringBuffer.length() == 1) { accumContent(XalanUnicode::charDigit_0); } accumContent(m_stringBuffer); m_stringBuffer.clear(); } bool FormatterToHTML::doPopHasNamespace() { assert(m_prefixResolver != 0); assert(m_hasNamespaceStack.empty() == false); const bool theValue = m_hasNamespaceStack.back(); m_hasNamespaceStack.pop_back(); return theValue; } bool FormatterToHTML::doPushHasNamespace(const XalanDOMChar* theElementName) { assert(m_prefixResolver != 0); bool fHasNamespace = false; const size_type theLength = length(theElementName); const size_type theColonIndex = indexOf( theElementName, XalanUnicode::charColon); const XalanDOMString* thePrefix = &s_emptyString; if (theColonIndex < theLength) { substring( theElementName, m_stringBuffer, 0, theColonIndex); thePrefix = &m_stringBuffer; } assert(thePrefix != 0); // Check for the namespace... const XalanDOMString* const theNamespace = m_prefixResolver->getNamespaceForPrefix(*thePrefix); if (theNamespace != 0 && theNamespace->length() != 0) { fHasNamespace = true; } m_stringBuffer.clear(); m_hasNamespaceStack.push_back(fHasNamespace); return fHasNamespace; } // Some of these are now commented out to match Xalan-J, which claims that Netscape cannot handle many of these entities. const FormatterToHTML::Entity FormatterToHTML::s_entities[] = { // These must always be in order by the character. // Otherwise, the binary search for them will fail. { 160, 4, { XalanUnicode::charLetter_n, XalanUnicode::charLetter_b, XalanUnicode::charLetter_s, XalanUnicode::charLetter_p, 0 } }, { 161, 5, { XalanUnicode::charLetter_i, XalanUnicode::charLetter_e, XalanUnicode::charLetter_x, XalanUnicode::charLetter_c, XalanUnicode::charLetter_l, 0 } }, { 162, 4, { XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, 0 } }, { 163, 5, { XalanUnicode::charLetter_p, XalanUnicode::charLetter_o, XalanUnicode::charLetter_u, XalanUnicode::charLetter_n, XalanUnicode::charLetter_d, 0 } }, { 164, 6, { XalanUnicode::charLetter_c, XalanUnicode::charLetter_u, XalanUnicode::charLetter_r, XalanUnicode::charLetter_r, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, 0 } }, { 165, 3, { XalanUnicode::charLetter_y, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, 0 } }, { 166, 6, { XalanUnicode::charLetter_b, XalanUnicode::charLetter_r, XalanUnicode::charLetter_v, XalanUnicode::charLetter_b, XalanUnicode::charLetter_a, XalanUnicode::charLetter_r, 0 } }, { 167, 4, { XalanUnicode::charLetter_s, XalanUnicode::charLetter_e, XalanUnicode::charLetter_c, XalanUnicode::charLetter_t, 0 } }, { 168, 3, { XalanUnicode::charLetter_u, XalanUnicode::charLetter_m, XalanUnicode::charLetter_l, 0 } }, { 169, 4, { XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_p, XalanUnicode::charLetter_y, 0 } }, { 170, 4, { XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charLetter_d, XalanUnicode::charLetter_f, 0 } }, { 171, 5, { XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_q, XalanUnicode::charLetter_u, XalanUnicode::charLetter_o, 0 } }, { 172, 3, { XalanUnicode::charLetter_n, XalanUnicode::charLetter_o, XalanUnicode::charLetter_t, 0 } }, { 173, 3, { XalanUnicode::charLetter_s, XalanUnicode::charLetter_h, XalanUnicode::charLetter_y, 0 } }, { 174, 3, { XalanUnicode::charLetter_r, XalanUnicode::charLetter_e, XalanUnicode::charLetter_g, 0 } }, { 175, 4, { XalanUnicode::charLetter_m, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_r, 0 } }, { 176, 3, { XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, XalanUnicode::charLetter_g, 0 } }, { 177, 6, { XalanUnicode::charLetter_p, XalanUnicode::charLetter_l, XalanUnicode::charLetter_u, XalanUnicode::charLetter_s, XalanUnicode::charLetter_m, XalanUnicode::charLetter_n, 0 } }, { 178, 4, { XalanUnicode::charLetter_s, XalanUnicode::charLetter_u, XalanUnicode::charLetter_p, XalanUnicode::charDigit_2, 0 } }, { 179, 4, { XalanUnicode::charLetter_s, XalanUnicode::charLetter_u, XalanUnicode::charLetter_p, XalanUnicode::charDigit_3, 0 } }, { 180, 5, { XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, 0 } }, { 181, 5, { XalanUnicode::charLetter_m, XalanUnicode::charLetter_i, XalanUnicode::charLetter_c, XalanUnicode::charLetter_r, XalanUnicode::charLetter_o, 0 } }, { 182, 4, { XalanUnicode::charLetter_p, XalanUnicode::charLetter_a, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, 0 } }, { 183, 6, { XalanUnicode::charLetter_m, XalanUnicode::charLetter_i, XalanUnicode::charLetter_d, XalanUnicode::charLetter_d, XalanUnicode::charLetter_o, XalanUnicode::charLetter_t, 0 } }, { 184, 5, { XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_d, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, 0 } }, { 185, 4, { XalanUnicode::charLetter_s, XalanUnicode::charLetter_u, XalanUnicode::charLetter_p, XalanUnicode::charDigit_1, 0 } }, { 186, 4, { XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charLetter_d, XalanUnicode::charLetter_m, 0 } }, { 187, 5, { XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_q, XalanUnicode::charLetter_u, XalanUnicode::charLetter_o, 0 } }, { 188, 6, { XalanUnicode::charLetter_f, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charDigit_1, XalanUnicode::charDigit_4, 0 } }, { 189, 6, { XalanUnicode::charLetter_f, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charDigit_1, XalanUnicode::charDigit_2, 0 } }, { 190, 6, { XalanUnicode::charLetter_f, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charDigit_3, XalanUnicode::charDigit_4, 0 } }, { 191, 6, { XalanUnicode::charLetter_i, XalanUnicode::charLetter_q, XalanUnicode::charLetter_u, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, 0 } }, { 192, 6, { XalanUnicode::charLetter_A, XalanUnicode::charLetter_g, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_v, XalanUnicode::charLetter_e, 0 } }, { 193, 6, { XalanUnicode::charLetter_A, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, 0 } }, { 194, 5, { XalanUnicode::charLetter_A, XalanUnicode::charLetter_c, XalanUnicode::charLetter_i, XalanUnicode::charLetter_r, XalanUnicode::charLetter_c, 0 } }, { 195, 6, { XalanUnicode::charLetter_A, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, 0 } }, { 196, 4, { XalanUnicode::charLetter_A, XalanUnicode::charLetter_u, XalanUnicode::charLetter_m, XalanUnicode::charLetter_l, 0 } }, { 197, 5, { XalanUnicode::charLetter_A, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, 0 } }, { 198, 5, { XalanUnicode::charLetter_A, XalanUnicode::charLetter_E, XalanUnicode::charLetter_l, XalanUnicode::charLetter_i, XalanUnicode::charLetter_g, 0 } }, { 199, 6, { XalanUnicode::charLetter_C, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_d, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, 0 } }, { 200, 6, { XalanUnicode::charLetter_E, XalanUnicode::charLetter_g, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_v, XalanUnicode::charLetter_e, 0 } }, { 201, 6, { XalanUnicode::charLetter_E, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, 0 } }, { 202, 5, { XalanUnicode::charLetter_E, XalanUnicode::charLetter_c, XalanUnicode::charLetter_i, XalanUnicode::charLetter_r, XalanUnicode::charLetter_c, 0 } }, { 203, 4, { XalanUnicode::charLetter_E, XalanUnicode::charLetter_u, XalanUnicode::charLetter_m, XalanUnicode::charLetter_l, 0 } }, { 204, 6, { XalanUnicode::charLetter_I, XalanUnicode::charLetter_g, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_v, XalanUnicode::charLetter_e, 0 } }, { 205, 6, { XalanUnicode::charLetter_I, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, 0 } }, { 206, 5, { XalanUnicode::charLetter_I, XalanUnicode::charLetter_c, XalanUnicode::charLetter_i, XalanUnicode::charLetter_r, XalanUnicode::charLetter_c, 0 } }, { 207, 4, { XalanUnicode::charLetter_I, XalanUnicode::charLetter_u, XalanUnicode::charLetter_m, XalanUnicode::charLetter_l, 0 } }, { 208, 3, { XalanUnicode::charLetter_E, XalanUnicode::charLetter_T, XalanUnicode::charLetter_H, 0 } }, { 209, 6, { XalanUnicode::charLetter_N, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, 0 } }, { 210, 6, { XalanUnicode::charLetter_O, XalanUnicode::charLetter_g, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_v, XalanUnicode::charLetter_e, 0 } }, { 211, 6, { XalanUnicode::charLetter_O, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, 0 } }, { 212, 5, { XalanUnicode::charLetter_O, XalanUnicode::charLetter_c, XalanUnicode::charLetter_i, XalanUnicode::charLetter_r, XalanUnicode::charLetter_c, 0 } }, { 213, 6, { XalanUnicode::charLetter_O, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, 0 } }, { 214, 4, { XalanUnicode::charLetter_O, XalanUnicode::charLetter_u, XalanUnicode::charLetter_m, XalanUnicode::charLetter_l, 0 } }, { 215, 5, { XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, 0 } }, { 216, 6, { XalanUnicode::charLetter_O, XalanUnicode::charLetter_s, XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_s, XalanUnicode::charLetter_h, 0 } }, { 217, 6, { XalanUnicode::charLetter_U, XalanUnicode::charLetter_g, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_v, XalanUnicode::charLetter_e, 0 } }, { 218, 6, { XalanUnicode::charLetter_U, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, 0 } }, { 219, 5, { XalanUnicode::charLetter_U, XalanUnicode::charLetter_c, XalanUnicode::charLetter_i, XalanUnicode::charLetter_r, XalanUnicode::charLetter_c, 0 } }, { 220, 4, { XalanUnicode::charLetter_U, XalanUnicode::charLetter_u, XalanUnicode::charLetter_m, XalanUnicode::charLetter_l, 0 } }, { 221, 6, { XalanUnicode::charLetter_Y, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, 0 } }, { 222, 5, { XalanUnicode::charLetter_T, XalanUnicode::charLetter_H, XalanUnicode::charLetter_O, XalanUnicode::charLetter_R, XalanUnicode::charLetter_N, 0 } }, { 223, 5, { XalanUnicode::charLetter_s, XalanUnicode::charLetter_z, XalanUnicode::charLetter_l, XalanUnicode::charLetter_i, XalanUnicode::charLetter_g, 0 } }, { 224, 6, { XalanUnicode::charLetter_a, XalanUnicode::charLetter_g, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_v, XalanUnicode::charLetter_e, 0 } }, { 225, 6, { XalanUnicode::charLetter_a, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, 0 } }, { 226, 5, { XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_i, XalanUnicode::charLetter_r, XalanUnicode::charLetter_c, 0 } }, { 227, 6, { XalanUnicode::charLetter_a, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, 0 } }, { 228, 4, { XalanUnicode::charLetter_a, XalanUnicode::charLetter_u, XalanUnicode::charLetter_m, XalanUnicode::charLetter_l, 0 } }, { 229, 5, { XalanUnicode::charLetter_a, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, 0 } }, { 230, 5, { XalanUnicode::charLetter_a, XalanUnicode::charLetter_e, XalanUnicode::charLetter_l, XalanUnicode::charLetter_i, XalanUnicode::charLetter_g, 0 } }, { 231, 6, { XalanUnicode::charLetter_c, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_d, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, 0 } }, { 232, 6, { XalanUnicode::charLetter_e, XalanUnicode::charLetter_g, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_v, XalanUnicode::charLetter_e, 0 } }, { 233, 6, { XalanUnicode::charLetter_e, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, 0 } }, { 234, 5, { XalanUnicode::charLetter_e, XalanUnicode::charLetter_c, XalanUnicode::charLetter_i, XalanUnicode::charLetter_r, XalanUnicode::charLetter_c, 0 } }, { 235, 4, { XalanUnicode::charLetter_e, XalanUnicode::charLetter_u, XalanUnicode::charLetter_m, XalanUnicode::charLetter_l, 0 } }, { 236, 6, { XalanUnicode::charLetter_i, XalanUnicode::charLetter_g, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_v, XalanUnicode::charLetter_e, 0 } }, { 237, 6, { XalanUnicode::charLetter_i, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, 0 } }, { 238, 5, { XalanUnicode::charLetter_i, XalanUnicode::charLetter_c, XalanUnicode::charLetter_i, XalanUnicode::charLetter_r, XalanUnicode::charLetter_c, 0 } }, { 239, 4, { XalanUnicode::charLetter_i, XalanUnicode::charLetter_u, XalanUnicode::charLetter_m, XalanUnicode::charLetter_l, 0 } }, { 240, 3, { XalanUnicode::charLetter_e, XalanUnicode::charLetter_t, XalanUnicode::charLetter_h, 0 } }, { 241, 6, { XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, 0 } }, { 242, 6, { XalanUnicode::charLetter_o, XalanUnicode::charLetter_g, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_v, XalanUnicode::charLetter_e, 0 } }, { 243, 6, { XalanUnicode::charLetter_o, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, 0 } }, { 244, 5, { XalanUnicode::charLetter_o, XalanUnicode::charLetter_c, XalanUnicode::charLetter_i, XalanUnicode::charLetter_r, XalanUnicode::charLetter_c, 0 } }, { 245, 6, { XalanUnicode::charLetter_o, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, 0 } }, { 246, 4, { XalanUnicode::charLetter_o, XalanUnicode::charLetter_u, XalanUnicode::charLetter_m, XalanUnicode::charLetter_l, 0 } }, { 247, 6, { XalanUnicode::charLetter_d, XalanUnicode::charLetter_i, XalanUnicode::charLetter_v, XalanUnicode::charLetter_i, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, 0 } }, { 248, 6, { XalanUnicode::charLetter_o, XalanUnicode::charLetter_s, XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_s, XalanUnicode::charLetter_h, 0 } }, { 249, 6, { XalanUnicode::charLetter_u, XalanUnicode::charLetter_g, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_v, XalanUnicode::charLetter_e, 0 } }, { 250, 6, { XalanUnicode::charLetter_u, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, 0 } }, { 251, 5, { XalanUnicode::charLetter_u, XalanUnicode::charLetter_c, XalanUnicode::charLetter_i, XalanUnicode::charLetter_r, XalanUnicode::charLetter_c, 0 } }, { 252, 4, { XalanUnicode::charLetter_u, XalanUnicode::charLetter_u, XalanUnicode::charLetter_m, XalanUnicode::charLetter_l, 0 } }, { 253, 6, { XalanUnicode::charLetter_y, XalanUnicode::charLetter_a, XalanUnicode::charLetter_c, XalanUnicode::charLetter_u, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, 0 } }, { 254, 5, { XalanUnicode::charLetter_t, XalanUnicode::charLetter_h, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charLetter_n, 0 } }, { 255, 4, { XalanUnicode::charLetter_y, XalanUnicode::charLetter_u, XalanUnicode::charLetter_m, XalanUnicode::charLetter_l, 0 } }, { 338, 5, { XalanUnicode::charLetter_O, XalanUnicode::charLetter_E, XalanUnicode::charLetter_l, XalanUnicode::charLetter_i, XalanUnicode::charLetter_g, 0 } }, { 339, 5, { XalanUnicode::charLetter_o, XalanUnicode::charLetter_e, XalanUnicode::charLetter_l, XalanUnicode::charLetter_i, XalanUnicode::charLetter_g, 0 } }, { 352, 6, { XalanUnicode::charLetter_S, XalanUnicode::charLetter_c, XalanUnicode::charLetter_a, XalanUnicode::charLetter_r, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 } }, { 353, 6, { XalanUnicode::charLetter_s, XalanUnicode::charLetter_c, XalanUnicode::charLetter_a, XalanUnicode::charLetter_r, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 } }, { 376, 4, { XalanUnicode::charLetter_Y, XalanUnicode::charLetter_u, XalanUnicode::charLetter_m, XalanUnicode::charLetter_l, 0 } }, #if 0 { 402, 4, { XalanUnicode::charLetter_f, XalanUnicode::charLetter_n, XalanUnicode::charLetter_o, XalanUnicode::charLetter_f, 0 } }, #endif { 710, 4, { XalanUnicode::charLetter_c, XalanUnicode::charLetter_i, XalanUnicode::charLetter_r, XalanUnicode::charLetter_c, 0 } }, { 732, 5, { XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, 0 } }, #if 0 { 913, 5, { XalanUnicode::charLetter_A, XalanUnicode::charLetter_l, XalanUnicode::charLetter_p, XalanUnicode::charLetter_h, XalanUnicode::charLetter_a, 0 } }, { 914, 4, { XalanUnicode::charLetter_B, XalanUnicode::charLetter_e, XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, 0 } }, { 915, 5, { XalanUnicode::charLetter_G, XalanUnicode::charLetter_a, XalanUnicode::charLetter_m, XalanUnicode::charLetter_m, XalanUnicode::charLetter_a, 0 } }, { 916, 5, { XalanUnicode::charLetter_D, XalanUnicode::charLetter_e, XalanUnicode::charLetter_l, XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, 0 } }, { 917, 7, { XalanUnicode::charLetter_E, XalanUnicode::charLetter_p, XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 } }, { 918, 4, { XalanUnicode::charLetter_Z, XalanUnicode::charLetter_e, XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, 0 } }, { 919, 3, { XalanUnicode::charLetter_E, XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, 0 } }, { 920, 5, { XalanUnicode::charLetter_T, XalanUnicode::charLetter_h, XalanUnicode::charLetter_e, XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, 0 } }, { 921, 4, { XalanUnicode::charLetter_I, XalanUnicode::charLetter_o, XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, 0 } }, { 922, 5, { XalanUnicode::charLetter_K, XalanUnicode::charLetter_a, XalanUnicode::charLetter_p, XalanUnicode::charLetter_p, XalanUnicode::charLetter_a, 0 } }, { 923, 6, { XalanUnicode::charLetter_L, XalanUnicode::charLetter_a, XalanUnicode::charLetter_m, XalanUnicode::charLetter_b, XalanUnicode::charLetter_d, XalanUnicode::charLetter_a, 0 } }, { 924, 2, { XalanUnicode::charLetter_M, XalanUnicode::charLetter_u, 0 } }, { 925, 2, { XalanUnicode::charLetter_N, XalanUnicode::charLetter_u, 0 } }, { 926, 2, { XalanUnicode::charLetter_X, XalanUnicode::charLetter_i, 0 } }, { 927, 7, { XalanUnicode::charLetter_O, XalanUnicode::charLetter_m, XalanUnicode::charLetter_i, XalanUnicode::charLetter_c, XalanUnicode::charLetter_r, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 } }, { 928, 2, { XalanUnicode::charLetter_P, XalanUnicode::charLetter_i, 0 } }, { 929, 3, { XalanUnicode::charLetter_R, XalanUnicode::charLetter_h, XalanUnicode::charLetter_o, 0 } }, { 931, 5, { XalanUnicode::charLetter_S, XalanUnicode::charLetter_i, XalanUnicode::charLetter_g, XalanUnicode::charLetter_m, XalanUnicode::charLetter_a, 0 } }, { 932, 3, { XalanUnicode::charLetter_T, XalanUnicode::charLetter_a, XalanUnicode::charLetter_u, 0 } }, { 933, 7, { XalanUnicode::charLetter_U, XalanUnicode::charLetter_p, XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 } }, { 934, 3, { XalanUnicode::charLetter_P, XalanUnicode::charLetter_h, XalanUnicode::charLetter_i, 0 } }, { 935, 3, { XalanUnicode::charLetter_C, XalanUnicode::charLetter_h, XalanUnicode::charLetter_i, 0 } }, { 936, 3, { XalanUnicode::charLetter_P, XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, 0 } }, { 937, 5, { XalanUnicode::charLetter_O, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, XalanUnicode::charLetter_g, XalanUnicode::charLetter_a, 0 } }, { 945, 5, { XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_p, XalanUnicode::charLetter_h, XalanUnicode::charLetter_a, 0 } }, { 946, 4, { XalanUnicode::charLetter_b, XalanUnicode::charLetter_e, XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, 0 } }, { 947, 5, { XalanUnicode::charLetter_g, XalanUnicode::charLetter_a, XalanUnicode::charLetter_m, XalanUnicode::charLetter_m, XalanUnicode::charLetter_a, 0 } }, { 948, 5, { XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, XalanUnicode::charLetter_l, XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, 0 } }, { 949, 7, { XalanUnicode::charLetter_e, XalanUnicode::charLetter_p, XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 } }, { 950, 4, { XalanUnicode::charLetter_z, XalanUnicode::charLetter_e, XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, 0 } }, { 951, 3, { XalanUnicode::charLetter_e, XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, 0 } }, { 952, 5, { XalanUnicode::charLetter_t, XalanUnicode::charLetter_h, XalanUnicode::charLetter_e, XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, 0 } }, { 953, 4, { XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, 0 } }, { 954, 5, { XalanUnicode::charLetter_k, XalanUnicode::charLetter_a, XalanUnicode::charLetter_p, XalanUnicode::charLetter_p, XalanUnicode::charLetter_a, 0 } }, { 955, 6, { XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_m, XalanUnicode::charLetter_b, XalanUnicode::charLetter_d, XalanUnicode::charLetter_a, 0 } }, { 956, 2, { XalanUnicode::charLetter_m, XalanUnicode::charLetter_u, 0 } }, { 957, 2, { XalanUnicode::charLetter_n, XalanUnicode::charLetter_u, 0 } }, { 958, 2, { XalanUnicode::charLetter_x, XalanUnicode::charLetter_i, 0 } }, { 959, 7, { XalanUnicode::charLetter_o, XalanUnicode::charLetter_m, XalanUnicode::charLetter_i, XalanUnicode::charLetter_c, XalanUnicode::charLetter_r, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 } }, { 960, 2, { XalanUnicode::charLetter_p, XalanUnicode::charLetter_i, 0 } }, { 961, 3, { XalanUnicode::charLetter_r, XalanUnicode::charLetter_h, XalanUnicode::charLetter_o, 0 } }, { 962, 6, { XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, XalanUnicode::charLetter_g, XalanUnicode::charLetter_m, XalanUnicode::charLetter_a, XalanUnicode::charLetter_f, 0 } }, { 963, 5, { XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, XalanUnicode::charLetter_g, XalanUnicode::charLetter_m, XalanUnicode::charLetter_a, 0 } }, { 964, 3, { XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, XalanUnicode::charLetter_u, 0 } }, { 965, 7, { XalanUnicode::charLetter_u, XalanUnicode::charLetter_p, XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 } }, { 966, 3, { XalanUnicode::charLetter_p, XalanUnicode::charLetter_h, XalanUnicode::charLetter_i, 0 } }, { 967, 3, { XalanUnicode::charLetter_c, XalanUnicode::charLetter_h, XalanUnicode::charLetter_i, 0 } }, { 968, 3, { XalanUnicode::charLetter_p, XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, 0 } }, { 969, 5, { XalanUnicode::charLetter_o, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, XalanUnicode::charLetter_g, XalanUnicode::charLetter_a, 0 } }, { 977, 8, { XalanUnicode::charLetter_t, XalanUnicode::charLetter_h, XalanUnicode::charLetter_e, XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, XalanUnicode::charLetter_s, XalanUnicode::charLetter_y, XalanUnicode::charLetter_m, 0 } }, { 978, 5, { XalanUnicode::charLetter_u, XalanUnicode::charLetter_p, XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, XalanUnicode::charLetter_h, 0 } }, { 982, 3, { XalanUnicode::charLetter_p, XalanUnicode::charLetter_i, XalanUnicode::charLetter_v, 0 } }, #endif { 8194, 4, { XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_s, XalanUnicode::charLetter_p, 0 } }, { 8195, 4, { XalanUnicode::charLetter_e, XalanUnicode::charLetter_m, XalanUnicode::charLetter_s, XalanUnicode::charLetter_p, 0 } }, { 8201, 6, { XalanUnicode::charLetter_t, XalanUnicode::charLetter_h, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_s, XalanUnicode::charLetter_p, 0 } }, { 8204, 4, { XalanUnicode::charLetter_z, XalanUnicode::charLetter_w, XalanUnicode::charLetter_n, XalanUnicode::charLetter_j, 0 } }, { 8205, 3, { XalanUnicode::charLetter_z, XalanUnicode::charLetter_w, XalanUnicode::charLetter_j, 0 } }, { 8206, 3, { XalanUnicode::charLetter_l, XalanUnicode::charLetter_r, XalanUnicode::charLetter_m, 0 } }, { 8207, 3, { XalanUnicode::charLetter_r, XalanUnicode::charLetter_l, XalanUnicode::charLetter_m, 0 } }, { 8211, 5, { XalanUnicode::charLetter_n, XalanUnicode::charLetter_d, XalanUnicode::charLetter_a, XalanUnicode::charLetter_s, XalanUnicode::charLetter_h, 0 } }, { 8212, 5, { XalanUnicode::charLetter_m, XalanUnicode::charLetter_d, XalanUnicode::charLetter_a, XalanUnicode::charLetter_s, XalanUnicode::charLetter_h, 0 } }, { 8216, 5, { XalanUnicode::charLetter_l, XalanUnicode::charLetter_s, XalanUnicode::charLetter_q, XalanUnicode::charLetter_u, XalanUnicode::charLetter_o, 0 } }, { 8217, 5, { XalanUnicode::charLetter_r, XalanUnicode::charLetter_s, XalanUnicode::charLetter_q, XalanUnicode::charLetter_u, XalanUnicode::charLetter_o, 0 } }, { 8218, 5, { XalanUnicode::charLetter_s, XalanUnicode::charLetter_b, XalanUnicode::charLetter_q, XalanUnicode::charLetter_u, XalanUnicode::charLetter_o, 0 } }, { 8220, 5, { XalanUnicode::charLetter_l, XalanUnicode::charLetter_d, XalanUnicode::charLetter_q, XalanUnicode::charLetter_u, XalanUnicode::charLetter_o, 0 } }, { 8221, 5, { XalanUnicode::charLetter_r, XalanUnicode::charLetter_d, XalanUnicode::charLetter_q, XalanUnicode::charLetter_u, XalanUnicode::charLetter_o, 0 } }, { 8222, 5, { XalanUnicode::charLetter_b, XalanUnicode::charLetter_d, XalanUnicode::charLetter_q, XalanUnicode::charLetter_u, XalanUnicode::charLetter_o, 0 } }, { 8224, 6, { XalanUnicode::charLetter_d, XalanUnicode::charLetter_a, XalanUnicode::charLetter_g, XalanUnicode::charLetter_g, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, 0 } }, { 8225, 6, { XalanUnicode::charLetter_D, XalanUnicode::charLetter_a, XalanUnicode::charLetter_g, XalanUnicode::charLetter_g, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, 0 } }, { 8226, 4, { XalanUnicode::charLetter_b, XalanUnicode::charLetter_u, XalanUnicode::charLetter_l, XalanUnicode::charLetter_l, 0 } }, { 8230, 6, { XalanUnicode::charLetter_h, XalanUnicode::charLetter_e, XalanUnicode::charLetter_l, XalanUnicode::charLetter_l, XalanUnicode::charLetter_i, XalanUnicode::charLetter_p, 0 } }, { 8240, 6, { XalanUnicode::charLetter_p, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, XalanUnicode::charLetter_m, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, 0 } }, { 8242, 5, { XalanUnicode::charLetter_p, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, 0 } }, { 8243, 5, { XalanUnicode::charLetter_P, XalanUnicode::charLetter_r, XalanUnicode::charLetter_i, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, 0 } }, { 8249, 6, { XalanUnicode::charLetter_l, XalanUnicode::charLetter_s, XalanUnicode::charLetter_a, XalanUnicode::charLetter_q, XalanUnicode::charLetter_u, XalanUnicode::charLetter_o, 0 } }, { 8250, 6, { XalanUnicode::charLetter_r, XalanUnicode::charLetter_s, XalanUnicode::charLetter_a, XalanUnicode::charLetter_q, XalanUnicode::charLetter_u, XalanUnicode::charLetter_o, 0 } }, { 8254, 5, { XalanUnicode::charLetter_o, XalanUnicode::charLetter_l, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_e, 0 } }, { 8260, 5, { XalanUnicode::charLetter_f, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_s, XalanUnicode::charLetter_l, 0 } }, { 8364, 4, { XalanUnicode::charLetter_e, XalanUnicode::charLetter_u, XalanUnicode::charLetter_r, XalanUnicode::charLetter_o, 0 } }, { 8465, 5, { XalanUnicode::charLetter_i, XalanUnicode::charLetter_m, XalanUnicode::charLetter_a, XalanUnicode::charLetter_g, XalanUnicode::charLetter_e, 0 } }, { 8472, 6, { XalanUnicode::charLetter_w, XalanUnicode::charLetter_e, XalanUnicode::charLetter_i, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, XalanUnicode::charLetter_p, 0 } }, { 8476, 4, { XalanUnicode::charLetter_r, XalanUnicode::charLetter_e, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, 0 } }, { 8482, 5, { XalanUnicode::charLetter_t, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, 0 } }, { 8501, 7, { XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_e, XalanUnicode::charLetter_f, XalanUnicode::charLetter_s, XalanUnicode::charLetter_y, XalanUnicode::charLetter_m, 0 } }, { 8592, 4, { XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_r, XalanUnicode::charLetter_r, 0 } }, { 8593, 4, { XalanUnicode::charLetter_u, XalanUnicode::charLetter_a, XalanUnicode::charLetter_r, XalanUnicode::charLetter_r, 0 } }, { 8594, 4, { XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_r, XalanUnicode::charLetter_r, 0 } }, { 8595, 4, { XalanUnicode::charLetter_d, XalanUnicode::charLetter_a, XalanUnicode::charLetter_r, XalanUnicode::charLetter_r, 0 } }, { 8596, 4, { XalanUnicode::charLetter_h, XalanUnicode::charLetter_a, XalanUnicode::charLetter_r, XalanUnicode::charLetter_r, 0 } }, { 8629, 5, { XalanUnicode::charLetter_c, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_r, XalanUnicode::charLetter_r, 0 } }, { 8656, 4, { XalanUnicode::charLetter_l, XalanUnicode::charLetter_A, XalanUnicode::charLetter_r, XalanUnicode::charLetter_r, 0 } }, { 8657, 4, { XalanUnicode::charLetter_u, XalanUnicode::charLetter_A, XalanUnicode::charLetter_r, XalanUnicode::charLetter_r, 0 } }, { 8658, 4, { XalanUnicode::charLetter_r, XalanUnicode::charLetter_A, XalanUnicode::charLetter_r, XalanUnicode::charLetter_r, 0 } }, { 8659, 4, { XalanUnicode::charLetter_d, XalanUnicode::charLetter_A, XalanUnicode::charLetter_r, XalanUnicode::charLetter_r, 0 } }, { 8660, 4, { XalanUnicode::charLetter_h, XalanUnicode::charLetter_A, XalanUnicode::charLetter_r, XalanUnicode::charLetter_r, 0 } }, { 8704, 6, { XalanUnicode::charLetter_f, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_l, 0 } }, { 8706, 4, { XalanUnicode::charLetter_p, XalanUnicode::charLetter_a, XalanUnicode::charLetter_r, XalanUnicode::charLetter_t, 0 } }, { 8707, 5, { XalanUnicode::charLetter_e, XalanUnicode::charLetter_x, XalanUnicode::charLetter_i, XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, 0 } }, { 8709, 5, { XalanUnicode::charLetter_e, XalanUnicode::charLetter_m, XalanUnicode::charLetter_p, XalanUnicode::charLetter_t, XalanUnicode::charLetter_y, 0 } }, { 8711, 5, { XalanUnicode::charLetter_n, XalanUnicode::charLetter_a, XalanUnicode::charLetter_b, XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, 0 } }, { 8712, 4, { XalanUnicode::charLetter_i, XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, 0 } }, { 8713, 5, { XalanUnicode::charLetter_n, XalanUnicode::charLetter_o, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, 0 } }, { 8715, 2, { XalanUnicode::charLetter_n, XalanUnicode::charLetter_i, 0 } }, { 8719, 4, { XalanUnicode::charLetter_p, XalanUnicode::charLetter_r, XalanUnicode::charLetter_o, XalanUnicode::charLetter_d, 0 } }, { 8721, 3, { XalanUnicode::charLetter_s, XalanUnicode::charLetter_u, XalanUnicode::charLetter_m, 0 } }, { 8722, 5, { XalanUnicode::charLetter_m, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_u, XalanUnicode::charLetter_s, 0 } }, { 8727, 6, { XalanUnicode::charLetter_l, XalanUnicode::charLetter_o, XalanUnicode::charLetter_w, XalanUnicode::charLetter_a, XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, 0 } }, { 8730, 5, { XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_d, XalanUnicode::charLetter_i, XalanUnicode::charLetter_c, 0 } }, { 8733, 4, { XalanUnicode::charLetter_p, XalanUnicode::charLetter_r, XalanUnicode::charLetter_o, XalanUnicode::charLetter_p, 0 } }, { 8734, 5, { XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_f, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, 0 } }, { 8736, 3, { XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, 0 } }, { 8743, 3, { XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_d, 0 } }, { 8744, 2, { XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, 0 } }, { 8745, 3, { XalanUnicode::charLetter_c, XalanUnicode::charLetter_a, XalanUnicode::charLetter_p, 0 } }, { 8746, 3, { XalanUnicode::charLetter_c, XalanUnicode::charLetter_u, XalanUnicode::charLetter_p, 0 } }, { 8747, 3, { XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, 0 } }, { 8756, 6, { XalanUnicode::charLetter_t, XalanUnicode::charLetter_h, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, XalanUnicode::charLetter_e, XalanUnicode::charDigit_4, 0 } }, { 8764, 3, { XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, XalanUnicode::charLetter_m, 0 } }, { 8773, 4, { XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, 0 } }, { 8776, 5, { XalanUnicode::charLetter_a, XalanUnicode::charLetter_s, XalanUnicode::charLetter_y, XalanUnicode::charLetter_m, XalanUnicode::charLetter_p, 0 } }, { 8800, 2, { XalanUnicode::charLetter_n, XalanUnicode::charLetter_e, 0 } }, { 8801, 5, { XalanUnicode::charLetter_e, XalanUnicode::charLetter_q, XalanUnicode::charLetter_u, XalanUnicode::charLetter_i, XalanUnicode::charLetter_v, 0 } }, { 8804, 2, { XalanUnicode::charLetter_l, XalanUnicode::charLetter_e, 0 } }, { 8805, 2, { XalanUnicode::charLetter_g, XalanUnicode::charLetter_e, 0 } }, { 8834, 3, { XalanUnicode::charLetter_s, XalanUnicode::charLetter_u, XalanUnicode::charLetter_b, 0 } }, { 8835, 3, { XalanUnicode::charLetter_s, XalanUnicode::charLetter_u, XalanUnicode::charLetter_p, 0 } }, { 8836, 4, { XalanUnicode::charLetter_n, XalanUnicode::charLetter_s, XalanUnicode::charLetter_u, XalanUnicode::charLetter_b, 0 } }, { 8838, 4, { XalanUnicode::charLetter_s, XalanUnicode::charLetter_u, XalanUnicode::charLetter_b, XalanUnicode::charLetter_e, 0 } }, { 8839, 4, { XalanUnicode::charLetter_s, XalanUnicode::charLetter_u, XalanUnicode::charLetter_p, XalanUnicode::charLetter_e, 0 } }, { 8853, 5, { XalanUnicode::charLetter_o, XalanUnicode::charLetter_p, XalanUnicode::charLetter_l, XalanUnicode::charLetter_u, XalanUnicode::charLetter_s, 0 } }, { 8855, 6, { XalanUnicode::charLetter_o, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, 0 } }, { 8869, 4, { XalanUnicode::charLetter_p, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, XalanUnicode::charLetter_p, 0 } }, { 8901, 4, { XalanUnicode::charLetter_s, XalanUnicode::charLetter_d, XalanUnicode::charLetter_o, XalanUnicode::charLetter_t, 0 } }, { 8968, 5, { XalanUnicode::charLetter_l, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, 0 } }, { 8969, 5, { XalanUnicode::charLetter_r, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_i, XalanUnicode::charLetter_l, 0 } }, { 8970, 6, { XalanUnicode::charLetter_l, XalanUnicode::charLetter_f, XalanUnicode::charLetter_l, XalanUnicode::charLetter_o, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, 0 } }, { 8971, 6, { XalanUnicode::charLetter_r, XalanUnicode::charLetter_f, XalanUnicode::charLetter_l, XalanUnicode::charLetter_o, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, 0 } }, { 9001, 4, { XalanUnicode::charLetter_l, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, 0 } }, { 9002, 4, { XalanUnicode::charLetter_r, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, 0 } }, { 9674, 3, { XalanUnicode::charLetter_l, XalanUnicode::charLetter_o, XalanUnicode::charLetter_z, 0 } }, { 9824, 6, { XalanUnicode::charLetter_s, XalanUnicode::charLetter_p, XalanUnicode::charLetter_a, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, 0 } }, { 9827, 5, { XalanUnicode::charLetter_c, XalanUnicode::charLetter_l, XalanUnicode::charLetter_u, XalanUnicode::charLetter_b, XalanUnicode::charLetter_s, 0 } }, { 9829, 6, { XalanUnicode::charLetter_h, XalanUnicode::charLetter_e, XalanUnicode::charLetter_a, XalanUnicode::charLetter_r, XalanUnicode::charLetter_t, XalanUnicode::charLetter_s, 0 } }, { 9830, 5, { XalanUnicode::charLetter_d, XalanUnicode::charLetter_i, XalanUnicode::charLetter_a, XalanUnicode::charLetter_m, XalanUnicode::charLetter_s, 0 } } }; const FormatterToHTML::Entity* const FormatterToHTML::s_lastEntity = FormatterToHTML::s_entities + (sizeof(s_entities) / sizeof (s_entities[0])) - 1; #define FHTML_SIZE(str) ((sizeof(str) / sizeof(str[0]) - 1)) const XalanDOMChar FormatterToHTML::s_doctypeHeaderStartString[] = { XalanUnicode::charLessThanSign, XalanUnicode::charExclamationMark, XalanUnicode::charLetter_D, XalanUnicode::charLetter_O, XalanUnicode::charLetter_C, XalanUnicode::charLetter_T, XalanUnicode::charLetter_Y, XalanUnicode::charLetter_P, XalanUnicode::charLetter_E, XalanUnicode::charSpace, XalanUnicode::charLetter_H, XalanUnicode::charLetter_T, XalanUnicode::charLetter_M, XalanUnicode::charLetter_L, 0 }; const FormatterToHTML::size_type FormatterToHTML::s_doctypeHeaderStartStringLength = FHTML_SIZE(s_doctypeHeaderStartString); const XalanDOMChar FormatterToHTML::s_doctypeHeaderPublicString[] = { XalanUnicode::charSpace, XalanUnicode::charLetter_P, XalanUnicode::charLetter_U, XalanUnicode::charLetter_B, XalanUnicode::charLetter_L, XalanUnicode::charLetter_I, XalanUnicode::charLetter_C, XalanUnicode::charSpace, XalanUnicode::charQuoteMark, 0 }; const FormatterToHTML::size_type FormatterToHTML::s_doctypeHeaderPublicStringLength = FHTML_SIZE(s_doctypeHeaderPublicString); const XalanDOMChar FormatterToHTML::s_doctypeHeaderSystemString[] = { XalanUnicode::charSpace, XalanUnicode::charLetter_S, XalanUnicode::charLetter_Y, XalanUnicode::charLetter_S, XalanUnicode::charLetter_T, XalanUnicode::charLetter_E, XalanUnicode::charLetter_M, 0 }; const FormatterToHTML::size_type FormatterToHTML::s_doctypeHeaderSystemStringLength = FHTML_SIZE(s_doctypeHeaderSystemString); const XalanDOMChar FormatterToHTML::s_metaString[] = { XalanUnicode::charLessThanSign, XalanUnicode::charLetter_M, XalanUnicode::charLetter_E, XalanUnicode::charLetter_T, XalanUnicode::charLetter_A, XalanUnicode::charSpace, XalanUnicode::charLetter_h, XalanUnicode::charLetter_t, XalanUnicode::charLetter_t, XalanUnicode::charLetter_p, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_e, XalanUnicode::charLetter_q, XalanUnicode::charLetter_u, XalanUnicode::charLetter_i, XalanUnicode::charLetter_v, XalanUnicode::charEqualsSign, XalanUnicode::charQuoteMark, XalanUnicode::charLetter_C, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, XalanUnicode::charHyphenMinus, XalanUnicode::charLetter_T, XalanUnicode::charLetter_y, XalanUnicode::charLetter_p, XalanUnicode::charLetter_e, XalanUnicode::charQuoteMark, XalanUnicode::charSpace, XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, XalanUnicode::charEqualsSign, XalanUnicode::charQuoteMark, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_x, XalanUnicode::charLetter_t, XalanUnicode::charSolidus, XalanUnicode::charLetter_h, XalanUnicode::charLetter_t, XalanUnicode::charLetter_m, XalanUnicode::charLetter_l, XalanUnicode::charSemicolon, XalanUnicode::charSpace, XalanUnicode::charLetter_c, XalanUnicode::charLetter_h, XalanUnicode::charLetter_a, XalanUnicode::charLetter_r, XalanUnicode::charLetter_s, XalanUnicode::charLetter_e, XalanUnicode::charLetter_t, XalanUnicode::charEqualsSign, 0 }; const FormatterToHTML::size_type FormatterToHTML::s_metaStringLength = FHTML_SIZE(s_metaString); XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XMLSupport/FormatterTreeWalker.hpp0000664000175000000640000000377711731656103022750 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FORMATTERTREEWALKER_HEADER_GUARD_1357924680) #define FORMATTERTREEWALKER_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include XALAN_CPP_NAMESPACE_BEGIN class FormatterListener; class XALAN_XMLSUPPORT_EXPORT FormatterTreeWalker : public TreeWalker { public: /** * Construct a FormatterTreeWalker instance. * * @param formatterListener implemention of the FormatterListener operation * (toXMLString, digest, ...) */ FormatterTreeWalker(FormatterListener& formatterListener, MemoryManager& theManager XALAN_DEFAULT_MEMMGR); virtual ~FormatterTreeWalker(); protected: virtual bool startNode(const XalanNode* node); virtual bool startNode(XalanNode* node); virtual bool endNode(const XalanNode* node); virtual bool endNode(XalanNode* node); private: FormatterListener& m_formatterListener; MemoryManager& m_memoryManager; }; XALAN_CPP_NAMESPACE_END #endif // FORMATTERTREEWALKER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XMLSupport/FormatterToHTML.hpp0000664000175000000640000002210111731656103021730 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FORMATTERTOHTML_HEADER_GUARD_1357924680) #define FORMATTERTOHTML_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include // Base class header file. #include #include #include XALAN_CPP_NAMESPACE_BEGIN /** * FormatterToHTML formats SAX-style events into HTML. */ class XALAN_XMLSUPPORT_EXPORT FormatterToHTML : public FormatterToXML { public: typedef XalanVector ElementPropertiesStackType; enum { eDefaultIndentAmount = 0 }; /** * Constructor for customized encoding and doctype. * @param writer The character output stream to use. * @param encoding The character encoding in use by writer. * @param doctypeSystem The system ID for the DOCTYPE. * @param doctypePublic The public ID for the DOCTYPE. * @param doIndent true if indenting should be enabled * @param indent Number of spaces to indent at each nesting level. * @param escapeURLs Whether or not to escape URLs according to the recommendation. The default is true. * @param omitMetaTag Whether or not to output a META TAG according to the recommendation. The default is false. */ FormatterToHTML( Writer& writer, const XalanDOMString& encoding = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), const XalanDOMString& mediaType = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), const XalanDOMString& doctypeSystem = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), const XalanDOMString& doctypePublic = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), bool doIndent = true, int indent = eDefaultIndentAmount, bool escapeURLs = true, bool omitMetaTag = false, MemoryManager& theManager XALAN_DEFAULT_MEMMGR); static FormatterToHTML* create( MemoryManager& theManager, Writer& writer, const XalanDOMString& encoding, const XalanDOMString& mediaType, const XalanDOMString& doctypeSystem, const XalanDOMString& doctypePublic, bool doIndent, int indent, bool escapeURLs, bool omitMetaTag); virtual ~FormatterToHTML(); // These methods are inherited from DocumentHandler ... virtual void startDocument(); virtual void endDocument(); virtual void startElement( const XMLCh* const name, AttributeListType& attrs); virtual void endElement(const XMLCh* const name); virtual void characters( const XMLCh* const chars, const size_type length); // These methods are inherited from FormatterToXML... virtual bool accumDefaultEntity( XalanDOMChar ch, bool escLF); // These methods are inherited from FormatterListener ... virtual void entityReference(const XMLCh* const name); virtual void cdata( const XMLCh* const ch, const size_type length); virtual void processingInstruction( const XMLCh* const target, const XMLCh* const data); bool getEscapeURLs() const { return m_escapeURLs; } void setEscapeURLs(bool flag) { m_escapeURLs = flag; } struct Entity { enum { eMaxLength = 8 }; XalanDOMChar m_char; size_type m_length; XalanDOMChar m_string[eMaxLength + 1]; }; protected: virtual void writeAttrString( const XalanDOMChar* theString, size_type theStringLength); virtual void accumCommentData(const XalanDOMChar* data); void writeCharacters(const XalanDOMString& theString); void writeCharacters( const XalanDOMChar* theString, size_type theLength); private: /** * The string " #include XALAN_CPP_NAMESPACE_BEGIN XalanHTMLElementsProperties::XalanHTMLElementsProperties() { } XalanHTMLElementsProperties::ElementProperties XalanHTMLElementsProperties::find(const XalanDOMChar* theElementName) { const InternalElementProperties& theProperties = findProperties(theElementName); return ElementProperties(&theProperties); } bool XalanHTMLElementsProperties::InternalElementProperties::isAttribute( const XalanDOMChar* theAttributeName, AttributeFlagsType theFlags) const { const InternalAttributeProperties& theProperties = findProperties(theAttributeName); return theProperties.is(theFlags); } const XalanHTMLElementsProperties::InternalAttributeProperties& XalanHTMLElementsProperties::InternalElementProperties::findProperties(const XalanDOMChar* theAttributeName) const { const InternalAttributeProperties* theCurrent = m_attributes; for(;;) { if (theCurrent->m_name[0] == 0) { return s_dummyProperties; } const int theResult = compareIgnoreCaseASCII(theAttributeName, theCurrent->m_name); if (theResult == 0) { break; } else if (theResult < 0) { return s_dummyProperties; } else { ++theCurrent; } } assert(theCurrent != 0); return *theCurrent; } const XalanHTMLElementsProperties::InternalAttributeProperties XalanHTMLElementsProperties::InternalElementProperties::s_dummyProperties = { { 0 }, 0 }; const XalanHTMLElementsProperties::InternalElementProperties& XalanHTMLElementsProperties::findProperties(const XalanDOMChar* theElementName) { assert(theElementName != 0); // Find the InternalElementProperties instance, if any... const InternalElementProperties* theFirst = s_elementProperties; const InternalElementProperties* theLast = s_lastProperties; while(theFirst <= theLast) { const InternalElementProperties* theCurrent = theFirst + (theLast - theFirst) / 2; assert(theCurrent->m_name[0] != 0); const int theResult = compareIgnoreCaseASCII(theElementName, theCurrent->m_name); if (theResult < 0) { theLast = theCurrent - 1; } else if (theResult > 0) { theFirst = theCurrent + 1; } else { return *theCurrent; } } return *s_dummyProperties; } typedef XalanHTMLElementsProperties ElemDesc; const XalanHTMLElementsProperties::InternalElementProperties XalanHTMLElementsProperties::s_elementProperties[] = { // Note that these are in a particular order, which is not a collation order. It is // the ordering that is imposed by the function compareIgnoreCaseASCII(). Basically, // strings are first collated by length, and the by their characters. Additions // must obey the same rules, or the code will not work correctly. // Also, should new entries be added, you must make sure that all static sizes are // still adequate to hold the additions. You must consider the length of the // name of the element or attribute, and the number of attributes. There are enums // defined in the header file which indicate the maximum size of each. { { XalanUnicode::charLetter_A, 0 }, ElemDesc::SPECIAL, { { { XalanUnicode::charLetter_H, XalanUnicode::charLetter_R, XalanUnicode::charLetter_E, XalanUnicode::charLetter_F, 0 }, ElemDesc::ATTRURL, }, { { XalanUnicode::charLetter_N, XalanUnicode::charLetter_A, XalanUnicode::charLetter_M, XalanUnicode::charLetter_E, 0 }, ElemDesc::ATTRURL, }, // This is a dummy entry and it must be the last one!!! Each array of // InternalAttributesProperties must be terminated by a dummy entry. { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_B, 0 }, ElemDesc::FONTSTYLE, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_I, 0 }, ElemDesc::FONTSTYLE, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_P, 0 }, ElemDesc::BLOCK | ElemDesc::BLOCKFORM | ElemDesc::BLOCKFORMFIELDSET, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_Q, 0 }, ElemDesc::SPECIAL | ElemDesc::ASPECIAL, { { { XalanUnicode::charLetter_C, XalanUnicode::charLetter_I, XalanUnicode::charLetter_T, XalanUnicode::charLetter_E, 0 }, ElemDesc::ATTRURL, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_S, 0 }, ElemDesc::FONTSTYLE, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_U, 0 }, ElemDesc::FONTSTYLE, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_B, XalanUnicode::charLetter_R, 0 }, ElemDesc::EMPTY | ElemDesc::BLOCK | ElemDesc::SPECIAL | ElemDesc::ASPECIAL, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_D, XalanUnicode::charLetter_D, 0 }, ElemDesc::BLOCK, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_D, XalanUnicode::charLetter_L, 0 }, ElemDesc::BLOCK | ElemDesc::BLOCKFORM | ElemDesc::BLOCKFORMFIELDSET, { { { XalanUnicode::charLetter_C, XalanUnicode::charLetter_O, XalanUnicode::charLetter_M, XalanUnicode::charLetter_P, XalanUnicode::charLetter_A, XalanUnicode::charLetter_C, XalanUnicode::charLetter_T, 0 }, ElemDesc::ATTREMPTY, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_D, XalanUnicode::charLetter_T, 0 }, ElemDesc::BLOCK, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_E, XalanUnicode::charLetter_M, 0 }, ElemDesc::PHRASE, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_H, XalanUnicode::charDigit_1, 0 }, ElemDesc::BLOCK | ElemDesc::HEAD, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_H, XalanUnicode::charDigit_2, 0 }, ElemDesc::BLOCK | ElemDesc::HEAD, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_H, XalanUnicode::charDigit_3, 0 }, ElemDesc::BLOCK | ElemDesc::HEAD, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_H, XalanUnicode::charDigit_4, 0 }, ElemDesc::BLOCK | ElemDesc::HEAD, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_H, XalanUnicode::charDigit_5, 0 }, ElemDesc::BLOCK | ElemDesc::HEAD, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_H, XalanUnicode::charDigit_6, 0 }, ElemDesc::BLOCK | ElemDesc::HEAD, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_H, XalanUnicode::charLetter_R, 0 }, ElemDesc::EMPTY | ElemDesc::BLOCK | ElemDesc::BLOCKFORM | ElemDesc::BLOCKFORMFIELDSET, { { { XalanUnicode::charLetter_N, XalanUnicode::charLetter_O, XalanUnicode::charLetter_S, XalanUnicode::charLetter_H, XalanUnicode::charLetter_A, XalanUnicode::charLetter_D, XalanUnicode::charLetter_E, 0 }, ElemDesc::ATTREMPTY, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_L, XalanUnicode::charLetter_I, 0 }, ElemDesc::BLOCK, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_O, XalanUnicode::charLetter_L, 0 }, ElemDesc::BLOCK | ElemDesc::LIST, { { { XalanUnicode::charLetter_C, XalanUnicode::charLetter_O, XalanUnicode::charLetter_M, XalanUnicode::charLetter_P, XalanUnicode::charLetter_A, XalanUnicode::charLetter_C, XalanUnicode::charLetter_T, 0 }, ElemDesc::ATTREMPTY, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_T, XalanUnicode::charLetter_D, 0 }, 0, { { { XalanUnicode::charLetter_N, XalanUnicode::charLetter_O, XalanUnicode::charLetter_W, XalanUnicode::charLetter_R, XalanUnicode::charLetter_A, XalanUnicode::charLetter_P, 0 }, ElemDesc::ATTREMPTY, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_T, XalanUnicode::charLetter_H, 0 }, 0, { { { XalanUnicode::charLetter_N, XalanUnicode::charLetter_O, XalanUnicode::charLetter_W, XalanUnicode::charLetter_R, XalanUnicode::charLetter_A, XalanUnicode::charLetter_P, 0 }, ElemDesc::ATTREMPTY, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_T, XalanUnicode::charLetter_R, 0 }, ElemDesc::BLOCK, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_T, XalanUnicode::charLetter_T, 0 }, ElemDesc::FONTSTYLE, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_U, XalanUnicode::charLetter_L, 0 }, ElemDesc::BLOCK | ElemDesc::LIST, { { { XalanUnicode::charLetter_C, XalanUnicode::charLetter_O, XalanUnicode::charLetter_M, XalanUnicode::charLetter_P, XalanUnicode::charLetter_A, XalanUnicode::charLetter_C, XalanUnicode::charLetter_T, 0 }, ElemDesc::ATTREMPTY, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_B, XalanUnicode::charLetter_D, XalanUnicode::charLetter_O, 0 }, ElemDesc::SPECIAL | ElemDesc::ASPECIAL, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_B, XalanUnicode::charLetter_I, XalanUnicode::charLetter_G, 0 }, ElemDesc::FONTSTYLE, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_C, XalanUnicode::charLetter_O, XalanUnicode::charLetter_L, 0 }, ElemDesc::EMPTY | ElemDesc::BLOCK, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_D, XalanUnicode::charLetter_E, XalanUnicode::charLetter_L, 0 }, 0, { { { XalanUnicode::charLetter_C, XalanUnicode::charLetter_I, XalanUnicode::charLetter_T, XalanUnicode::charLetter_E, 0 }, ElemDesc::ATTRURL, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_D, XalanUnicode::charLetter_F, XalanUnicode::charLetter_N, 0 }, ElemDesc::PHRASE, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_D, XalanUnicode::charLetter_I, XalanUnicode::charLetter_R, 0 }, ElemDesc::BLOCK, { { { XalanUnicode::charLetter_C, XalanUnicode::charLetter_O, XalanUnicode::charLetter_M, XalanUnicode::charLetter_P, XalanUnicode::charLetter_A, XalanUnicode::charLetter_C, XalanUnicode::charLetter_T, 0 }, ElemDesc::ATTREMPTY, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_D, XalanUnicode::charLetter_I, XalanUnicode::charLetter_V, 0 }, ElemDesc::BLOCK | ElemDesc::BLOCKFORM | ElemDesc::BLOCKFORMFIELDSET, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_I, XalanUnicode::charLetter_M, XalanUnicode::charLetter_G, 0 }, ElemDesc::EMPTY | ElemDesc::SPECIAL | ElemDesc::ASPECIAL | ElemDesc::WHITESPACESENSITIVE, { { { XalanUnicode::charLetter_S, XalanUnicode::charLetter_R, XalanUnicode::charLetter_C, 0 }, ElemDesc::ATTRURL, }, { { XalanUnicode::charLetter_I, XalanUnicode::charLetter_S, XalanUnicode::charLetter_M, XalanUnicode::charLetter_A, XalanUnicode::charLetter_P, 0 }, ElemDesc::ATTREMPTY, }, { { XalanUnicode::charLetter_U, XalanUnicode::charLetter_S, XalanUnicode::charLetter_E, XalanUnicode::charLetter_M, XalanUnicode::charLetter_A, XalanUnicode::charLetter_P, 0 }, ElemDesc::ATTRURL, }, { { XalanUnicode::charLetter_L, XalanUnicode::charLetter_O, XalanUnicode::charLetter_N, XalanUnicode::charLetter_G, XalanUnicode::charLetter_D, XalanUnicode::charLetter_E, XalanUnicode::charLetter_S, XalanUnicode::charLetter_C, 0 }, ElemDesc::ATTRURL, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_I, XalanUnicode::charLetter_N, XalanUnicode::charLetter_S, 0 }, 0, { { { XalanUnicode::charLetter_C, XalanUnicode::charLetter_I, XalanUnicode::charLetter_T, XalanUnicode::charLetter_E, 0 }, ElemDesc::ATTRURL, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_K, XalanUnicode::charLetter_B, XalanUnicode::charLetter_D, 0 }, ElemDesc::PHRASE, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_M, XalanUnicode::charLetter_A, XalanUnicode::charLetter_P, 0 }, ElemDesc::BLOCK | ElemDesc::SPECIAL | ElemDesc::ASPECIAL, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_P, XalanUnicode::charLetter_R, XalanUnicode::charLetter_E, 0 }, ElemDesc::BLOCK | ElemDesc::PREFORMATTED, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_S, XalanUnicode::charLetter_U, XalanUnicode::charLetter_B, 0 }, ElemDesc::SPECIAL | ElemDesc::ASPECIAL, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_S, XalanUnicode::charLetter_U, XalanUnicode::charLetter_P, 0 }, ElemDesc::SPECIAL | ElemDesc::ASPECIAL, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_V, XalanUnicode::charLetter_A, XalanUnicode::charLetter_R, 0 }, ElemDesc::PHRASE, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_A, XalanUnicode::charLetter_B, XalanUnicode::charLetter_B, XalanUnicode::charLetter_R, 0 }, ElemDesc::PHRASE, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_A, XalanUnicode::charLetter_R, XalanUnicode::charLetter_E, XalanUnicode::charLetter_A, 0 }, ElemDesc::EMPTY | ElemDesc::BLOCK, { { { XalanUnicode::charLetter_H, XalanUnicode::charLetter_R, XalanUnicode::charLetter_E, XalanUnicode::charLetter_F, 0 }, ElemDesc::ATTRURL, }, { { XalanUnicode::charLetter_N, XalanUnicode::charLetter_O, XalanUnicode::charLetter_H, XalanUnicode::charLetter_R, XalanUnicode::charLetter_E, XalanUnicode::charLetter_F, 0 }, ElemDesc::ATTREMPTY, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_B, XalanUnicode::charLetter_A, XalanUnicode::charLetter_S, XalanUnicode::charLetter_E, 0 }, ElemDesc::EMPTY | ElemDesc::BLOCK, { { { XalanUnicode::charLetter_H, XalanUnicode::charLetter_R, XalanUnicode::charLetter_E, XalanUnicode::charLetter_F, 0 }, ElemDesc::ATTRURL, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_B, XalanUnicode::charLetter_O, XalanUnicode::charLetter_D, XalanUnicode::charLetter_Y, 0 }, ElemDesc::BLOCK, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_C, XalanUnicode::charLetter_I, XalanUnicode::charLetter_T, XalanUnicode::charLetter_E, 0 }, ElemDesc::PHRASE, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_C, XalanUnicode::charLetter_O, XalanUnicode::charLetter_D, XalanUnicode::charLetter_E, 0 }, ElemDesc::PHRASE, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_F, XalanUnicode::charLetter_O, XalanUnicode::charLetter_N, XalanUnicode::charLetter_T, 0 }, ElemDesc::FONTSTYLE, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_F, XalanUnicode::charLetter_O, XalanUnicode::charLetter_R, XalanUnicode::charLetter_M, 0 }, ElemDesc::BLOCK, { { { XalanUnicode::charLetter_A, XalanUnicode::charLetter_C, XalanUnicode::charLetter_T, XalanUnicode::charLetter_I, XalanUnicode::charLetter_O, XalanUnicode::charLetter_N, 0 }, ElemDesc::ATTRURL, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_H, XalanUnicode::charLetter_E, XalanUnicode::charLetter_A, XalanUnicode::charLetter_D, 0 }, ElemDesc::BLOCK | ElemDesc::HEADELEM, { { { XalanUnicode::charLetter_P, XalanUnicode::charLetter_R, XalanUnicode::charLetter_O, XalanUnicode::charLetter_F, XalanUnicode::charLetter_I, XalanUnicode::charLetter_L, XalanUnicode::charLetter_E, 0 }, ElemDesc::ATTRURL, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_H, XalanUnicode::charLetter_T, XalanUnicode::charLetter_M, XalanUnicode::charLetter_L, 0 }, ElemDesc::BLOCK, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_L, XalanUnicode::charLetter_I, XalanUnicode::charLetter_N, XalanUnicode::charLetter_K, 0 }, ElemDesc::EMPTY | ElemDesc::BLOCK | ElemDesc::HEADMISC, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_M, XalanUnicode::charLetter_E, XalanUnicode::charLetter_N, XalanUnicode::charLetter_U, 0 }, ElemDesc::BLOCK, { { { XalanUnicode::charLetter_C, XalanUnicode::charLetter_O, XalanUnicode::charLetter_M, XalanUnicode::charLetter_P, XalanUnicode::charLetter_A, XalanUnicode::charLetter_C, XalanUnicode::charLetter_T, 0 }, ElemDesc::ATTREMPTY, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_M, XalanUnicode::charLetter_E, XalanUnicode::charLetter_T, XalanUnicode::charLetter_A, 0 }, ElemDesc::EMPTY | ElemDesc::BLOCK | ElemDesc::HEADMISC, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_N, XalanUnicode::charLetter_O, XalanUnicode::charLetter_B, XalanUnicode::charLetter_R, 0 }, ElemDesc::FONTSTYLE, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_S, XalanUnicode::charLetter_A, XalanUnicode::charLetter_M, XalanUnicode::charLetter_P, 0 }, ElemDesc::PHRASE, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_S, XalanUnicode::charLetter_P, XalanUnicode::charLetter_A, XalanUnicode::charLetter_N, 0 }, ElemDesc::SPECIAL | ElemDesc::ASPECIAL, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_F, XalanUnicode::charLetter_R, XalanUnicode::charLetter_A, XalanUnicode::charLetter_M, XalanUnicode::charLetter_E, 0 }, ElemDesc::EMPTY | ElemDesc::BLOCK, { { { XalanUnicode::charLetter_S, XalanUnicode::charLetter_R, XalanUnicode::charLetter_C, 0 }, ElemDesc::ATTRURL, }, { { XalanUnicode::charLetter_N, XalanUnicode::charLetter_O, XalanUnicode::charLetter_R, XalanUnicode::charLetter_E, XalanUnicode::charLetter_S, XalanUnicode::charLetter_I, XalanUnicode::charLetter_Z, XalanUnicode::charLetter_E, 0 }, ElemDesc::ATTREMPTY, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_I, XalanUnicode::charLetter_N, XalanUnicode::charLetter_P, XalanUnicode::charLetter_U, XalanUnicode::charLetter_T, 0 }, ElemDesc::EMPTY | ElemDesc::INLINELABEL | ElemDesc::FORMCTRL, { { { XalanUnicode::charLetter_S, XalanUnicode::charLetter_R, XalanUnicode::charLetter_C, 0 }, ElemDesc::ATTRURL, }, { { XalanUnicode::charLetter_I, XalanUnicode::charLetter_S, XalanUnicode::charLetter_M, XalanUnicode::charLetter_A, XalanUnicode::charLetter_P, 0 }, ElemDesc::ATTREMPTY, }, { { XalanUnicode::charLetter_U, XalanUnicode::charLetter_S, XalanUnicode::charLetter_E, XalanUnicode::charLetter_M, XalanUnicode::charLetter_A, XalanUnicode::charLetter_P, 0 }, ElemDesc::ATTRURL, }, { { XalanUnicode::charLetter_C, XalanUnicode::charLetter_H, XalanUnicode::charLetter_E, XalanUnicode::charLetter_C, XalanUnicode::charLetter_K, XalanUnicode::charLetter_E, XalanUnicode::charLetter_D, 0 }, ElemDesc::ATTREMPTY, }, { { XalanUnicode::charLetter_D, XalanUnicode::charLetter_I, XalanUnicode::charLetter_S, XalanUnicode::charLetter_A, XalanUnicode::charLetter_B, XalanUnicode::charLetter_L, XalanUnicode::charLetter_E, XalanUnicode::charLetter_D, 0 }, ElemDesc::ATTREMPTY, }, { { XalanUnicode::charLetter_R, XalanUnicode::charLetter_E, XalanUnicode::charLetter_A, XalanUnicode::charLetter_D, XalanUnicode::charLetter_O, XalanUnicode::charLetter_N, XalanUnicode::charLetter_L, XalanUnicode::charLetter_Y, 0 }, ElemDesc::ATTREMPTY, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_L, XalanUnicode::charLetter_A, XalanUnicode::charLetter_B, XalanUnicode::charLetter_E, XalanUnicode::charLetter_L, 0 }, ElemDesc::FORMCTRL, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_P, XalanUnicode::charLetter_A, XalanUnicode::charLetter_R, XalanUnicode::charLetter_A, XalanUnicode::charLetter_M, 0 }, ElemDesc::EMPTY, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_S, XalanUnicode::charLetter_M, XalanUnicode::charLetter_A, XalanUnicode::charLetter_L, XalanUnicode::charLetter_L, 0 }, ElemDesc::FONTSTYLE, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_S, XalanUnicode::charLetter_T, XalanUnicode::charLetter_Y, XalanUnicode::charLetter_L, XalanUnicode::charLetter_E, 0 }, ElemDesc::BLOCK | ElemDesc::RAW | ElemDesc::HEADMISC | ElemDesc::STYLEELEM, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_T, XalanUnicode::charLetter_A, XalanUnicode::charLetter_B, XalanUnicode::charLetter_L, XalanUnicode::charLetter_E, 0 }, ElemDesc::BLOCK | ElemDesc::BLOCKFORM | ElemDesc::BLOCKFORMFIELDSET, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_T, XalanUnicode::charLetter_B, XalanUnicode::charLetter_O, XalanUnicode::charLetter_D, XalanUnicode::charLetter_Y, 0 }, ElemDesc::BLOCK, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_T, XalanUnicode::charLetter_F, XalanUnicode::charLetter_O, XalanUnicode::charLetter_O, XalanUnicode::charLetter_T, 0 }, ElemDesc::BLOCK, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_T, XalanUnicode::charLetter_H, XalanUnicode::charLetter_E, XalanUnicode::charLetter_A, XalanUnicode::charLetter_D, 0 }, ElemDesc::BLOCK, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_T, XalanUnicode::charLetter_I, XalanUnicode::charLetter_T, XalanUnicode::charLetter_L, XalanUnicode::charLetter_E, 0 }, ElemDesc::BLOCK, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_A, XalanUnicode::charLetter_P, XalanUnicode::charLetter_P, XalanUnicode::charLetter_L, XalanUnicode::charLetter_E, XalanUnicode::charLetter_T, 0 }, ElemDesc::WHITESPACESENSITIVE, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_B, XalanUnicode::charLetter_U, XalanUnicode::charLetter_T, XalanUnicode::charLetter_T, XalanUnicode::charLetter_O, XalanUnicode::charLetter_N, 0 }, ElemDesc::INLINELABEL | ElemDesc::FORMCTRL, { { { XalanUnicode::charLetter_D, XalanUnicode::charLetter_I, XalanUnicode::charLetter_S, XalanUnicode::charLetter_A, XalanUnicode::charLetter_B, XalanUnicode::charLetter_L, XalanUnicode::charLetter_E, XalanUnicode::charLetter_D, 0 }, ElemDesc::ATTREMPTY, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_C, XalanUnicode::charLetter_E, XalanUnicode::charLetter_N, XalanUnicode::charLetter_T, XalanUnicode::charLetter_E, XalanUnicode::charLetter_R, 0 }, ElemDesc::BLOCK, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_L, XalanUnicode::charLetter_E, XalanUnicode::charLetter_G, XalanUnicode::charLetter_E, XalanUnicode::charLetter_N, XalanUnicode::charLetter_D, 0 }, 0, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_O, XalanUnicode::charLetter_B, XalanUnicode::charLetter_J, XalanUnicode::charLetter_E, XalanUnicode::charLetter_C, XalanUnicode::charLetter_T, 0 }, ElemDesc::SPECIAL | ElemDesc::ASPECIAL | ElemDesc::HEADMISC | ElemDesc::WHITESPACESENSITIVE, { { { XalanUnicode::charLetter_D, XalanUnicode::charLetter_A, XalanUnicode::charLetter_T, XalanUnicode::charLetter_A, 0 }, ElemDesc::ATTRURL, }, { { XalanUnicode::charLetter_U, XalanUnicode::charLetter_S, XalanUnicode::charLetter_E, XalanUnicode::charLetter_M, XalanUnicode::charLetter_A, XalanUnicode::charLetter_P, 0 }, ElemDesc::ATTRURL, }, { { XalanUnicode::charLetter_A, XalanUnicode::charLetter_R, XalanUnicode::charLetter_C, XalanUnicode::charLetter_H, XalanUnicode::charLetter_I, XalanUnicode::charLetter_V, XalanUnicode::charLetter_E, 0 }, ElemDesc::ATTRURL, }, { { XalanUnicode::charLetter_C, XalanUnicode::charLetter_L, XalanUnicode::charLetter_A, XalanUnicode::charLetter_S, XalanUnicode::charLetter_S, XalanUnicode::charLetter_I, XalanUnicode::charLetter_D, 0 }, ElemDesc::ATTRURL, }, { { XalanUnicode::charLetter_D, XalanUnicode::charLetter_E, XalanUnicode::charLetter_C, XalanUnicode::charLetter_L, XalanUnicode::charLetter_A, XalanUnicode::charLetter_R, XalanUnicode::charLetter_E, 0 }, ElemDesc::ATTREMPTY, }, { { XalanUnicode::charLetter_C, XalanUnicode::charLetter_O, XalanUnicode::charLetter_D, XalanUnicode::charLetter_E, XalanUnicode::charLetter_B, XalanUnicode::charLetter_A, XalanUnicode::charLetter_S, XalanUnicode::charLetter_E, 0 }, ElemDesc::ATTRURL, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_O, XalanUnicode::charLetter_P, XalanUnicode::charLetter_T, XalanUnicode::charLetter_I, XalanUnicode::charLetter_O, XalanUnicode::charLetter_N, 0 }, 0, { { { XalanUnicode::charLetter_D, XalanUnicode::charLetter_I, XalanUnicode::charLetter_S, XalanUnicode::charLetter_A, XalanUnicode::charLetter_B, XalanUnicode::charLetter_L, XalanUnicode::charLetter_E, XalanUnicode::charLetter_D, 0 }, ElemDesc::ATTREMPTY, }, { { XalanUnicode::charLetter_S, XalanUnicode::charLetter_E, XalanUnicode::charLetter_L, XalanUnicode::charLetter_E, XalanUnicode::charLetter_C, XalanUnicode::charLetter_T, XalanUnicode::charLetter_E, XalanUnicode::charLetter_D, 0 }, ElemDesc::ATTREMPTY, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_S, XalanUnicode::charLetter_C, XalanUnicode::charLetter_R, XalanUnicode::charLetter_I, XalanUnicode::charLetter_P, XalanUnicode::charLetter_T, 0 }, ElemDesc::RAW | ElemDesc::SPECIAL | ElemDesc::ASPECIAL | ElemDesc::HEADMISC | ElemDesc::SCRIPTELEM, { { { XalanUnicode::charLetter_F, XalanUnicode::charLetter_O, XalanUnicode::charLetter_R, 0 }, ElemDesc::ATTRURL, }, { { XalanUnicode::charLetter_S, XalanUnicode::charLetter_R, XalanUnicode::charLetter_C, 0 }, ElemDesc::ATTRURL, }, { { XalanUnicode::charLetter_D, XalanUnicode::charLetter_E, XalanUnicode::charLetter_F, XalanUnicode::charLetter_E, XalanUnicode::charLetter_R, 0 }, ElemDesc::ATTREMPTY, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_S, XalanUnicode::charLetter_E, XalanUnicode::charLetter_L, XalanUnicode::charLetter_E, XalanUnicode::charLetter_C, XalanUnicode::charLetter_T, 0 }, ElemDesc::INLINELABEL | ElemDesc::FORMCTRL, { { { XalanUnicode::charLetter_D, XalanUnicode::charLetter_I, XalanUnicode::charLetter_S, XalanUnicode::charLetter_A, XalanUnicode::charLetter_B, XalanUnicode::charLetter_L, XalanUnicode::charLetter_E, XalanUnicode::charLetter_D, 0 }, ElemDesc::ATTREMPTY, }, { { XalanUnicode::charLetter_M, XalanUnicode::charLetter_U, XalanUnicode::charLetter_L, XalanUnicode::charLetter_T, XalanUnicode::charLetter_I, XalanUnicode::charLetter_P, XalanUnicode::charLetter_L, XalanUnicode::charLetter_E, 0 }, ElemDesc::ATTREMPTY, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_S, XalanUnicode::charLetter_T, XalanUnicode::charLetter_R, XalanUnicode::charLetter_I, XalanUnicode::charLetter_K, XalanUnicode::charLetter_E, 0 }, ElemDesc::FONTSTYLE, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_S, XalanUnicode::charLetter_T, XalanUnicode::charLetter_R, XalanUnicode::charLetter_O, XalanUnicode::charLetter_N, XalanUnicode::charLetter_G, 0 }, ElemDesc::PHRASE, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_A, XalanUnicode::charLetter_C, XalanUnicode::charLetter_R, XalanUnicode::charLetter_O, XalanUnicode::charLetter_N, XalanUnicode::charLetter_Y, XalanUnicode::charLetter_M, 0 }, ElemDesc::PHRASE, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_A, XalanUnicode::charLetter_D, XalanUnicode::charLetter_D, XalanUnicode::charLetter_R, XalanUnicode::charLetter_E, XalanUnicode::charLetter_S, XalanUnicode::charLetter_S, 0 }, ElemDesc::BLOCK | ElemDesc::BLOCKFORM | ElemDesc::BLOCKFORMFIELDSET, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_C, XalanUnicode::charLetter_A, XalanUnicode::charLetter_P, XalanUnicode::charLetter_T, XalanUnicode::charLetter_I, XalanUnicode::charLetter_O, XalanUnicode::charLetter_N, 0 }, ElemDesc::BLOCK, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_I, XalanUnicode::charLetter_S, XalanUnicode::charLetter_I, XalanUnicode::charLetter_N, XalanUnicode::charLetter_D, XalanUnicode::charLetter_E, XalanUnicode::charLetter_X, 0 }, ElemDesc::EMPTY | ElemDesc::BLOCK, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_B, XalanUnicode::charLetter_A, XalanUnicode::charLetter_S, XalanUnicode::charLetter_E, XalanUnicode::charLetter_F, XalanUnicode::charLetter_O, XalanUnicode::charLetter_N, XalanUnicode::charLetter_T, 0 }, ElemDesc::EMPTY, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_C, XalanUnicode::charLetter_O, XalanUnicode::charLetter_L, XalanUnicode::charLetter_G, XalanUnicode::charLetter_R, XalanUnicode::charLetter_O, XalanUnicode::charLetter_U, XalanUnicode::charLetter_P, 0 }, ElemDesc::BLOCK, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_F, XalanUnicode::charLetter_I, XalanUnicode::charLetter_E, XalanUnicode::charLetter_L, XalanUnicode::charLetter_D, XalanUnicode::charLetter_S, XalanUnicode::charLetter_E, XalanUnicode::charLetter_T, 0 }, ElemDesc::BLOCK | ElemDesc::BLOCKFORM, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_F, XalanUnicode::charLetter_R, XalanUnicode::charLetter_A, XalanUnicode::charLetter_M, XalanUnicode::charLetter_E, XalanUnicode::charLetter_S, XalanUnicode::charLetter_E, XalanUnicode::charLetter_T, 0 }, ElemDesc::BLOCK, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_N, XalanUnicode::charLetter_O, XalanUnicode::charLetter_F, XalanUnicode::charLetter_R, XalanUnicode::charLetter_A, XalanUnicode::charLetter_M, XalanUnicode::charLetter_E, XalanUnicode::charLetter_S, 0 }, ElemDesc::BLOCK, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_N, XalanUnicode::charLetter_O, XalanUnicode::charLetter_S, XalanUnicode::charLetter_C, XalanUnicode::charLetter_R, XalanUnicode::charLetter_I, XalanUnicode::charLetter_P, XalanUnicode::charLetter_T, 0 }, ElemDesc::BLOCK | ElemDesc::BLOCKFORM | ElemDesc::BLOCKFORMFIELDSET, { { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_O, XalanUnicode::charLetter_P, XalanUnicode::charLetter_T, XalanUnicode::charLetter_G, XalanUnicode::charLetter_R, XalanUnicode::charLetter_O, XalanUnicode::charLetter_U, XalanUnicode::charLetter_P, 0 }, 0, { { { XalanUnicode::charLetter_D, XalanUnicode::charLetter_I, XalanUnicode::charLetter_S, XalanUnicode::charLetter_A, XalanUnicode::charLetter_B, XalanUnicode::charLetter_L, XalanUnicode::charLetter_E, XalanUnicode::charLetter_D, 0 }, ElemDesc::ATTREMPTY, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_T, XalanUnicode::charLetter_E, XalanUnicode::charLetter_X, XalanUnicode::charLetter_T, XalanUnicode::charLetter_A, XalanUnicode::charLetter_R, XalanUnicode::charLetter_E, XalanUnicode::charLetter_A, 0 }, ElemDesc::INLINELABEL | ElemDesc::FORMCTRL, { { { XalanUnicode::charLetter_D, XalanUnicode::charLetter_I, XalanUnicode::charLetter_S, XalanUnicode::charLetter_A, XalanUnicode::charLetter_B, XalanUnicode::charLetter_L, XalanUnicode::charLetter_E, XalanUnicode::charLetter_D, 0 }, ElemDesc::ATTREMPTY, }, { { XalanUnicode::charLetter_R, XalanUnicode::charLetter_E, XalanUnicode::charLetter_A, XalanUnicode::charLetter_D, XalanUnicode::charLetter_O, XalanUnicode::charLetter_N, XalanUnicode::charLetter_L, XalanUnicode::charLetter_Y, 0 }, ElemDesc::ATTREMPTY, }, { { 0 }, 0, }, }, }, { { XalanUnicode::charLetter_B, XalanUnicode::charLetter_L, XalanUnicode::charLetter_O, XalanUnicode::charLetter_C, XalanUnicode::charLetter_K, XalanUnicode::charLetter_Q, XalanUnicode::charLetter_U, XalanUnicode::charLetter_O, XalanUnicode::charLetter_T, XalanUnicode::charLetter_E, 0 }, ElemDesc::BLOCK | ElemDesc::BLOCKFORM | ElemDesc::BLOCKFORMFIELDSET, { { { XalanUnicode::charLetter_C, XalanUnicode::charLetter_I, XalanUnicode::charLetter_T, XalanUnicode::charLetter_E, 0 }, ElemDesc::ATTRURL, }, { { 0 }, 0, }, }, }, // This is a dummy entry and it must be the last one!!! { { 0 }, ElemDesc::BLOCK, { { { 0 }, 0, }, }, }, }; const XalanHTMLElementsProperties::InternalElementProperties* const XalanHTMLElementsProperties::s_lastProperties = s_elementProperties + (sizeof(s_elementProperties) / sizeof(s_elementProperties[0]) - 2); const XalanHTMLElementsProperties::InternalElementProperties* const XalanHTMLElementsProperties::s_dummyProperties = s_lastProperties + 1; XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XMLSupport/FormatterToXMLUnicode.hpp0000664000175000000640000005704011731656103023145 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FORMATTERTOXML_UNICODE_HEADER_GUARD_1357924680) #define FORMATTERTOXML_UNICODE_HEADER_GUARD_1357924680 // Base include file. Must be first. #include "xalanc/XMLSupport/XMLSupportDefinitions.hpp" #include "xalanc/XMLSupport/XalanXMLSerializerBase.hpp" #include "xercesc/sax/AttributeList.hpp" #include "xalanc/PlatformSupport/DoubleSupport.hpp" #include "xalanc/PlatformSupport/XalanOutputStream.hpp" #include "xalanc/PlatformSupport/XalanUnicode.hpp" #include XALAN_CPP_NAMESPACE_BEGIN /** * FormatterToXMLUnicode formats SAX-style events into XML. */ template< class UnicodeWriter, class ConstantsType, class CharPredicate, class IndentHandler, FormatterListener::eXMLVersion XMLVersion> class XALAN_XMLSUPPORT_EXPORT FormatterToXMLUnicode : public XalanXMLSerializerBase { public: typedef typename UnicodeWriter::value_type value_type; enum { eDefaultIndentAmount = 0 }; /** * Constructor * * @param theManager The MemoryManager instance to use for all memory allocations * @param writer the writer. * @param version the string to write for the XML version number. * @param doctypeSystem system identifier to be used in the document * type declaration * @param doctypePublic public identifier to be used in the document * type declaration * @param xmlDecl true if the XSLT processor should output an XML * declaration * @param standalone The string the XSLT processor should output for * the standalone document declaration * */ FormatterToXMLUnicode( MemoryManager& theManager, Writer& writer, const XalanDOMString& encoding, const XalanDOMString& doctypeSystem = s_emptyString, const XalanDOMString& doctypePublic = s_emptyString, bool xmlDecl = true, const XalanDOMString& standalone = s_emptyString, size_type indent = eDefaultIndentAmount) : XalanXMLSerializerBase( theManager, XMLVersion, encoding, doctypeSystem, doctypePublic, xmlDecl, standalone), m_stringBuffer(theManager), m_writer(writer, theManager), m_constants(), m_charPredicate(), m_indentHandler(m_writer , indent) { } static FormatterToXMLUnicode* create( MemoryManager& theManager, Writer& writer, const XalanDOMString& encoding, const XalanDOMString& doctypeSystem = s_emptyString, const XalanDOMString& doctypePublic = s_emptyString, bool xmlDecl = true, const XalanDOMString& standalone = s_emptyString, size_type indent = eDefaultIndentAmount) { typedef FormatterToXMLUnicode ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( theManager, writer, encoding, doctypeSystem, doctypePublic, xmlDecl, standalone, indent); theGuard.release(); return theResult; } virtual ~FormatterToXMLUnicode() { } Writer* getWriter() const { return m_writer.getWriter(); } // These are inherited from XalanXMLSerializerBase... virtual void endDocument() { m_indentHandler.setStartNewLine(true); m_indentHandler.indent(); flushBuffer(); flushWriter(); } virtual void startElement( const XMLCh* const name, AttributeList& attrs) { generateDoctypeDecl(name); writeParentTagEnd(); m_indentHandler.setPreserve(false); m_indentHandler.indent(); m_indentHandler.setStartNewLine(true); m_writer.write(value_type(XalanUnicode::charLessThanSign)); writeName(name); const XalanSize_t nAttrs = attrs.getLength(); for (XalanSize_t i = 0; i < nAttrs ; i++) { processAttribute(attrs.getName(i), attrs.getValue(i)); } // Flag the current element as not yet having any children. openElementForChildren(); m_indentHandler.increaseIndent(); m_indentHandler.setPrevText(false); } virtual void endElement(const XMLCh* const name) { m_indentHandler.decreaseIndent(); const bool hasChildNodes = childNodesWereAdded(); if (hasChildNodes == true) { m_indentHandler.indent(); m_writer.write(value_type(XalanUnicode::charLessThanSign)); m_writer.write(value_type(XalanUnicode::charSolidus)); writeName(name); } else { if(m_spaceBeforeClose == true) { m_writer.write(value_type(XalanUnicode::charSpace)); } m_writer.write(value_type(XalanUnicode::charSolidus)); } m_writer.write(value_type(XalanUnicode::charGreaterThanSign)); if (hasChildNodes == true) { m_indentHandler.pop_preserve(); } m_indentHandler.setPrevText(false); } virtual void charactersRaw( const XMLCh* const chars, const size_type length) { writeParentTagEnd(); m_indentHandler.setPreserve(true); m_writer.write(chars, length); } virtual void entityReference(const XMLCh* const name) { writeParentTagEnd(); m_indentHandler.indent(); m_writer.write(value_type(XalanUnicode::charAmpersand)); writeName(name); m_writer.write(value_type(XalanUnicode::charSemicolon)); } virtual void comment(const XMLCh* const data) { writeParentTagEnd(); m_indentHandler.indent(); m_writer.write(value_type(XalanUnicode::charLessThanSign)); m_writer.write(value_type(XalanUnicode::charExclamationMark)); m_writer.write(value_type(XalanUnicode::charHyphenMinus)); m_writer.write(value_type(XalanUnicode::charHyphenMinus)); writeNormalizedData(data, XalanDOMString::length(data)); m_writer.write(value_type(XalanUnicode::charHyphenMinus)); m_writer.write(value_type(XalanUnicode::charHyphenMinus)); m_writer.write(value_type(XalanUnicode::charGreaterThanSign)); m_indentHandler.setStartNewLine(true); } protected: virtual void flushBuffer() { m_writer.flushBuffer(); } virtual void flushWriter() { m_writer.flushWriter(); } virtual void writeXMLHeader() { // " 0 && !isXMLWhitespace(data[0])) { m_writer.write(value_type(XalanUnicode::charSpace)); } writeNormalizedData(data, len); m_writer.write(value_type(XalanUnicode::charQuestionMark)); m_writer.write(value_type(XalanUnicode::charGreaterThanSign)); } void writeCharacters( const XMLCh* chars, size_type length) { assert(length != 0); writeParentTagEnd(); m_indentHandler.setPreserve(true); size_type i = 0; size_type firstIndex = 0; while(i < length) { const XalanDOMChar ch = chars[i]; if(m_charPredicate.range(ch) == true) { safeWriteContent(chars + firstIndex, i - firstIndex); i = writeNormalizedCharBig(chars, i, length); ++i; firstIndex = i; } else if(m_charPredicate.content(ch) == false) { ++i; } else { safeWriteContent(chars + firstIndex, i - firstIndex); writeDefaultEscape(ch); ++i; firstIndex = i; } } safeWriteContent(chars + firstIndex, i - firstIndex); m_indentHandler.setPrevText(true); } void writeCDATA( const XMLCh* chars, size_type length) { assert(length != 0); writeParentTagEnd(); m_indentHandler.setPreserve(true); m_indentHandler.indent(); m_writer.write( m_constants.s_cdataOpenString, m_constants.s_cdataOpenStringLength); bool outsideCDATA = false; writeCDATAChars(chars, length, outsideCDATA); if (outsideCDATA == false) { m_writer.write( m_constants.s_cdataCloseString, m_constants.s_cdataCloseStringLength); } } /** * Output a line break. */ void outputNewline() { m_writer.outputNewline(); } /** * Escape and write a character. */ void writeDefaultEscape(XalanDOMChar ch) { assert(m_charPredicate.content(ch) == true); if(!writeDefaultEntity(ch)) { if (XalanUnicode::charLF == ch) { outputNewline(); } else { if(m_charPredicate.isForbidden(ch) == true) { throwInvalidXMLCharacterException( ch, m_version, getMemoryManager()); } else { writeNumericCharacterReference(ch); } } } } /** * Escape and write a character in an attribute. */ void writeDefaultAttributeEscape(XalanDOMChar ch) { assert(m_charPredicate.attribute(ch) == true); if(writeDefaultAttributeEntity(ch) == false) { if(m_charPredicate.isForbidden(ch) == true) { throwInvalidXMLCharacterException( ch, m_version, getMemoryManager()); } else { writeNumericCharacterReference(ch); } } } /** * Handle one of the default entities, return false if it * is not a default entity. */ bool writeDefaultEntity(XalanDOMChar ch) { if (XalanUnicode::charLessThanSign == ch) { m_writer.write( m_constants.s_lessThanEntityString, m_constants.s_lessThanEntityStringLength); } else if (XalanUnicode::charGreaterThanSign == ch) { m_writer.write( m_constants.s_greaterThanEntityString, m_constants.s_greaterThanEntityStringLength); } else if (XalanUnicode::charAmpersand == ch) { m_writer.write( m_constants.s_ampersandEntityString, m_constants.s_ampersandEntityStringLength); } else { return false; } return true; } /** * Handle one of the default entities, return false if it * is not a default entity. */ bool writeDefaultAttributeEntity(XalanDOMChar ch) { if (writeDefaultEntity(ch) == true) { return true; } else if (XalanUnicode::charQuoteMark == ch) { m_writer.write( m_constants.s_quoteEntityString, m_constants.s_quoteEntityStringLength); } else { return false; } return true; } /** * Check to see if a parent's ">" has been written, and, if * it has not, write it. */ void writeParentTagEnd() { if(markParentForChildren() == true) { m_writer.write(value_type(XalanUnicode::charGreaterThanSign)); m_indentHandler.setPrevText(false); m_indentHandler.push_preserve(); } } /** * Write a normalized character to the stream. * @param ch the string to write. * @param start the start offset into the string. * @param length the length of the string. */ size_type writeNormalizedChar( XalanDOMChar ch, const XalanDOMChar chars[], size_type start, size_type length) { if (XalanUnicode::charLF == ch) { outputNewline(); } else { if(m_charPredicate.isCharRefForbidden(ch)) { throwInvalidXMLCharacterException( ch, m_version, getMemoryManager()); } else { start = m_writer.write( chars, start, length); } } return start; } void writeNumericCharacterReference(unsigned long theNumber) { m_writer.write(value_type(XalanUnicode::charAmpersand)); m_writer.write(value_type(XalanUnicode::charNumberSign)); m_writer.write(NumberToDOMString(theNumber, m_stringBuffer)); m_stringBuffer.clear(); m_writer.write(value_type(XalanUnicode::charSemicolon)); } size_type writeNormalizedCharBig( const XalanDOMChar chars[], size_type start, size_type length) { assert(start < length); const XalanDOMChar ch = chars[start]; assert(m_charPredicate.range(ch) == true); if (XMLVersion == XML_VERSION_1_1 && XalanUnicode::charLSEP == ch) { writeNumericCharacterReference(ch); } else { start = m_writer.write(chars, start, length); } return start; } /** * Write characters for a CDATA section * * @param ch the string to write. * @param length the length of the string. */ void writeCDATAChars( const XalanDOMChar chars[], size_type length, bool& outsideCDATA) { size_type i = 0; while(i < length) { // If "]]>", which would close the CDATA appears in // the content, we have to put the first two characters // in the CDATA section, close the CDATA section, then // open a new one and add the last character. const XalanDOMChar theChar = chars[i]; if (theChar == XalanUnicode::charRightSquareBracket && i - length > 2 && XalanUnicode::charRightSquareBracket == chars[i + 1] && XalanUnicode::charGreaterThanSign == chars[i + 2]) { if (outsideCDATA == true) { m_writer.write( m_constants.s_cdataCloseString, m_constants.s_cdataCloseStringLength); } m_writer.write(value_type(XalanUnicode::charRightSquareBracket)); m_writer.write(value_type(XalanUnicode::charRightSquareBracket)); m_writer.write( m_constants.s_cdataCloseString, m_constants.s_cdataCloseStringLength); m_writer.write( m_constants.s_cdataOpenString, m_constants.s_cdataOpenStringLength); m_writer.write(value_type(XalanUnicode::charGreaterThanSign)); outsideCDATA = false; i += 2; } else { if (XalanUnicode::charLF == theChar) { outputNewline(); } else if(m_charPredicate.isCharRefForbidden(theChar)) { throwInvalidXMLCharacterException( theChar, m_version, getMemoryManager()); } else { i = m_writer.writeCDATAChar(chars, i, length, outsideCDATA); } } ++i; } if(outsideCDATA == true) { m_writer.write( m_constants.s_cdataOpenString, m_constants.s_cdataOpenStringLength); } } /** * Write an attribute string. * * @param theString The string to write. * @param theStringLength The length of the string. */ void writeAttrString( const XalanDOMChar* theString, size_type theStringLength) { assert(theString != 0); size_type i = 0; size_type firstIndex = 0; while(i < theStringLength) { const XalanDOMChar ch = theString[i]; if(m_charPredicate.range(ch) == true) { safeWriteContent(theString + firstIndex, i - firstIndex); i = writeNormalizedCharBig(theString, i, theStringLength); ++i; firstIndex = i; } else if (m_charPredicate.attribute(ch) == false) { ++i; } else { safeWriteContent(theString + firstIndex, i - firstIndex); writeDefaultAttributeEscape(ch); ++i; firstIndex = i; } } safeWriteContent(theString + firstIndex, i - firstIndex); } private: /** * Process an attribute. * @param name The name of the attribute. * @param value The value of the attribute. */ void processAttribute( const XalanDOMChar* name, const XalanDOMChar* value) { m_writer.write(value_type(XalanUnicode::charSpace)); writeName(name); m_writer.write(value_type(XalanUnicode::charEqualsSign)); m_writer.write(value_type(XalanUnicode::charQuoteMark)); writeAttrString(value, length(value)); m_writer.write(value_type(XalanUnicode::charQuoteMark)); } /** * Write normalized data. * @param theData the data to write. * @param theLength the data to write. */ void writeNormalizedData( const XalanDOMChar* theData, size_type theLength) { for (size_type i = 0; i < theLength; ++i) { const XalanDOMChar theChar = theData[i]; i = writeNormalizedChar(theChar, theData, i, theLength); } } void safeWriteContent( const XalanDOMChar* theChars, size_type theLength) { for(size_type i = 0; i < theLength; ++i) { m_writer.write(value_type(theChars[i])); } } void writeName(const XalanDOMChar* theChars) { assert( theChars != 0); m_writer.writeNameChar(theChars, length(theChars)); } private: // These are not implemented. FormatterToXMLUnicode(const FormatterToXMLUnicode&); FormatterToXMLUnicode& operator=(const FormatterToXMLUnicode&); bool operator==(const FormatterToXMLUnicode&) const; // Data members... XalanDOMString m_stringBuffer; UnicodeWriter m_writer; ConstantsType m_constants; CharPredicate m_charPredicate; IndentHandler m_indentHandler; }; XALAN_CPP_NAMESPACE_END #endif // FORMATTERTOXML_UNICODE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XMLSupport/FormatterToNull.hpp0000664000175000000640000000566011731656103022111 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FORMATTERTONULL_HEADER_GUARD_1357924680) #define FORMATTERTONULL_HEADER_GUARD_1357924680 // Base include file. Must be first. #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN /** * This class takes SAX events (in addition to some extra events * that SAX doesn't handle yet) and produces absolutely nothing. * This is useful for profiling situations where serialization * obscures things. */ class XALAN_XMLSUPPORT_EXPORT FormatterToNull : public FormatterListener { public: /** * FormatterToNull instance constructor. */ explicit FormatterToNull(); virtual ~FormatterToNull(); // These methods are inherited from FormatterListener ... virtual void setDocumentLocator(const Locator* const locator); virtual void startDocument(); virtual void endDocument(); virtual void startElement( const XMLCh* const name, AttributeListType& attrs); virtual void endElement(const XMLCh* const name); virtual void characters( const XMLCh* const chars, const size_type length); virtual void charactersRaw( const XMLCh* const chars, const size_type length); virtual void entityReference(const XMLCh* const name); virtual void ignorableWhitespace( const XMLCh* const chars, const size_type length); virtual void processingInstruction( const XMLCh* const target, const XMLCh* const data); virtual void resetDocument(); virtual void comment(const XMLCh* const data); virtual void cdata( const XMLCh* const ch, const size_type length); private: // These are not implemented. FormatterToNull(const FormatterToNull&); FormatterToNull& operator=(const FormatterToNull&); bool operator==(const FormatterToNull&) const; }; XALAN_CPP_NAMESPACE_END #endif // FORMATTERTONULL_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XMLSupport/XalanXMLSerializerFactory.cpp0000664000175000000640000003543611731656103024015 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanXMLSerializerFactory.hpp" #include "xalanc/PlatformSupport/XalanTranscodingServices.hpp" #include "xalanc/XMLSupport/FormatterToXML.hpp" #include "xalanc/XMLSupport/FormatterToXMLUnicode.hpp" #include "xalanc/XMLSupport/XalanDummyIndentWriter.hpp" #include "xalanc/XMLSupport/XalanIndentWriter.hpp" #include "xalanc/XMLSupport/XalanOtherEncodingWriter.hpp" #include "xalanc/XMLSupport/XalanUTF8Writer.hpp" #include "xalanc/XMLSupport/XalanUTF16Writer.hpp" XALAN_CPP_NAMESPACE_BEGIN FormatterListener* XalanXMLSerializerFactory::create( MemoryManager& theManager, Writer& theWriter, const XalanDOMString& theVersion, bool doIndent, int theIndentAmount, const XalanDOMString& theEncoding, const XalanDOMString& /*theMediaType*/, const XalanDOMString& theDoctypeSystem, const XalanDOMString& theDoctypePublic, bool generateXMLDeclaration, const XalanDOMString& theStandaloneString) { bool isVersion1_1 = false; if (theVersion == XalanXMLSerializerBase::s_1_1String) { isVersion1_1 = true; } XalanDOMString fixedEncoding(theEncoding, theManager); setEncoding(theManager, theWriter, fixedEncoding); FormatterListener* theFormatter = 0; if (XalanTranscodingServices::encodingIsUTF8(fixedEncoding)) { if (isVersion1_1 == true) { if(doIndent == true) { typedef XalanFormatterWriter::NewLineWriterFunctor NewLineWriter; typedef XalanFormatterWriter::WhiteSpaceWriterFunctor WhiteSpaceWriter; typedef XalanIndentWriter IndentWriter; typedef FormatterToXMLUnicode< XalanUTF8Writer, XalanXMLSerializerBase::UTF8, XalanXMLSerializerBase::CharFunctor1_1, IndentWriter, FormatterListener::XML_VERSION_1_1> Type; theFormatter = Type::create( theManager, theWriter, fixedEncoding, theDoctypeSystem, theDoctypePublic, generateXMLDeclaration, theStandaloneString, theIndentAmount); } else // doIndent == false { typedef XalanDummyIndentWriter IndentWriter; typedef FormatterToXMLUnicode< XalanUTF8Writer, XalanXMLSerializerBase::UTF8, XalanXMLSerializerBase::CharFunctor1_1, IndentWriter, FormatterListener::XML_VERSION_1_1> Type; theFormatter = Type::create( theManager, theWriter, fixedEncoding, theDoctypeSystem, theDoctypePublic, generateXMLDeclaration, theStandaloneString, theIndentAmount); } } else // XML 1.0 section { if(doIndent == true) { typedef XalanFormatterWriter::NewLineWriterFunctor NewLineWriter; typedef XalanFormatterWriter::WhiteSpaceWriterFunctor WhiteSpaceWriter; typedef XalanIndentWriter IndentWriter; typedef FormatterToXMLUnicode< XalanUTF8Writer, XalanXMLSerializerBase::UTF8, XalanXMLSerializerBase::CharFunctor1_0, IndentWriter, FormatterListener::XML_VERSION_1_0> Type; theFormatter = Type::create( theManager, theWriter, fixedEncoding, theDoctypeSystem, theDoctypePublic, generateXMLDeclaration, theStandaloneString, theIndentAmount); } else // doIndent == false { typedef XalanDummyIndentWriter IndentWriter; typedef FormatterToXMLUnicode< XalanUTF8Writer, XalanXMLSerializerBase::UTF8, XalanXMLSerializerBase::CharFunctor1_0, IndentWriter, FormatterListener::XML_VERSION_1_0> Type; theFormatter = Type::create( theManager, theWriter, fixedEncoding, theDoctypeSystem, theDoctypePublic, generateXMLDeclaration, theStandaloneString, theIndentAmount); } } } else if (XalanTranscodingServices::encodingIsUTF16(fixedEncoding)) { if (isVersion1_1 == true) { if(doIndent == true) { typedef XalanFormatterWriter::NewLineWriterFunctor NewLineWriter; typedef XalanFormatterWriter::WhiteSpaceWriterFunctor WhiteSpaceWriter; typedef XalanIndentWriter IndentWriter; typedef FormatterToXMLUnicode< XalanUTF16Writer, XalanXMLSerializerBase::UTF16, XalanXMLSerializerBase::CharFunctor1_1, IndentWriter, FormatterListener::XML_VERSION_1_1> Type; theFormatter = Type::create( theManager, theWriter, fixedEncoding, theDoctypeSystem, theDoctypePublic, generateXMLDeclaration, theStandaloneString, theIndentAmount); } else //doIndent == false { typedef XalanDummyIndentWriter IndentWriter; typedef FormatterToXMLUnicode< XalanUTF16Writer, XalanXMLSerializerBase::UTF16, XalanXMLSerializerBase::CharFunctor1_1, IndentWriter, FormatterListener::XML_VERSION_1_1> Type; theFormatter = Type::create( theManager, theWriter, fixedEncoding, theDoctypeSystem, theDoctypePublic, generateXMLDeclaration, theStandaloneString, theIndentAmount); } } else // XML 1.0 section { if(doIndent == true) { typedef XalanFormatterWriter::NewLineWriterFunctor NewLineWriter; typedef XalanFormatterWriter::WhiteSpaceWriterFunctor WhiteSpaceWriter; typedef XalanIndentWriter IndentWriter; typedef FormatterToXMLUnicode< XalanUTF16Writer, XalanXMLSerializerBase::UTF16, XalanXMLSerializerBase::CharFunctor1_0, IndentWriter, FormatterListener::XML_VERSION_1_0> Type; theFormatter = Type::create( theManager, theWriter, fixedEncoding, theDoctypeSystem, theDoctypePublic, generateXMLDeclaration, theStandaloneString, theIndentAmount); } else // doIndent == false { typedef XalanDummyIndentWriter IndentWriter; typedef FormatterToXMLUnicode< XalanUTF16Writer, XalanXMLSerializerBase::UTF16, XalanXMLSerializerBase::CharFunctor1_0, IndentWriter, FormatterListener::XML_VERSION_1_0> Type; theFormatter = Type::create( theManager, theWriter, fixedEncoding, theDoctypeSystem, theDoctypePublic, generateXMLDeclaration, theStandaloneString, theIndentAmount); } } } else // all other encodings { typedef XalanOtherEncodingWriter< XalanFormatterWriter::CommonRepresentableCharFunctor, XalanXMLSerializerBase::UTF16> WriterType ; if( isVersion1_1 == true) { if (doIndent == true) { typedef XalanFormatterWriter::NewLineWriterFunctor NewLineWriter; typedef XalanFormatterWriter::WhiteSpaceWriterFunctor WhiteSpaceWriter; typedef XalanIndentWriter IndentWriter; typedef FormatterToXMLUnicode< WriterType, XalanXMLSerializerBase::UTF16, XalanXMLSerializerBase::CharFunctor1_1, IndentWriter, FormatterListener::XML_VERSION_1_1> Type; theFormatter = Type::create( theManager, theWriter, fixedEncoding, theDoctypeSystem, theDoctypePublic, generateXMLDeclaration, theStandaloneString, theIndentAmount); } else { typedef XalanDummyIndentWriter IndentWriter; typedef FormatterToXMLUnicode< WriterType, XalanXMLSerializerBase::UTF16, XalanXMLSerializerBase::CharFunctor1_1, IndentWriter, FormatterListener::XML_VERSION_1_1> Type; theFormatter = Type::create( theManager, theWriter, fixedEncoding, theDoctypeSystem, theDoctypePublic, generateXMLDeclaration, theStandaloneString, theIndentAmount); } } else // XML 1.0 section { if(doIndent == true) { typedef XalanFormatterWriter::NewLineWriterFunctor NewLineWriter; typedef XalanFormatterWriter::WhiteSpaceWriterFunctor WhiteSpaceWriter; typedef XalanIndentWriter IndentWriter; typedef FormatterToXMLUnicode< WriterType, XalanXMLSerializerBase::UTF16, XalanXMLSerializerBase::CharFunctor1_0, IndentWriter, FormatterListener::XML_VERSION_1_0> Type; theFormatter = Type::create( theManager, theWriter, fixedEncoding, theDoctypeSystem, theDoctypePublic, generateXMLDeclaration, theStandaloneString, theIndentAmount); } else //doIndent == false { typedef XalanDummyIndentWriter IndentWriter; typedef FormatterToXMLUnicode< WriterType, XalanXMLSerializerBase::UTF16, XalanXMLSerializerBase::CharFunctor1_0, IndentWriter, FormatterListener::XML_VERSION_1_0> Type; theFormatter = Type::create( theManager, theWriter, fixedEncoding, theDoctypeSystem, theDoctypePublic, generateXMLDeclaration, theStandaloneString, theIndentAmount); } } } assert (theFormatter != 0); return theFormatter; } void XalanXMLSerializerFactory::setEncoding( MemoryManager& theManager, Writer& theWriter, XalanDOMString& theEncoding) { XalanOutputStream* const stream = theWriter.getStream(); if(stream != 0) { if(theEncoding.empty()) { // Default to UTF-8 if the requested encoding is not supported... stream->setOutputEncoding(XalanDOMString(XalanTranscodingServices::s_utf8String, theManager)); theEncoding = XalanTranscodingServices::s_utf8String; } else { try { stream->setOutputEncoding(theEncoding); } catch(const XalanOutputStream::UnsupportedEncodingException&) { // Default to UTF-8 if the requested encoding is not supported... stream->setOutputEncoding(XalanDOMString(XalanTranscodingServices::s_utf8String, theManager)); theEncoding = XalanTranscodingServices::s_utf8String; } } } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XMLSupport/XalanHTMLElementsProperties.hpp0000664000175000000640000002012711731656103024305 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANHTMLELEMENTSPROPERTIES_HEADER_GUARD_1357924680) #define XALANHTMLELEMENTSPROPERTIES_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XMLSUPPORT_EXPORT XalanHTMLElementsProperties { public: enum { eMaxAttributes = 6, eMaxAttributeName = 8, eMaxElementName = 10 }; enum eFlags { EMPTY = (1 << 1), FLOW = (1 << 2), BLOCK = (1 << 3), BLOCKFORM = (1 << 4), BLOCKFORMFIELDSET = (1 << 5), CDATA = (1 << 6), PCDATA = (1 << 7), RAW = (1 << 8), INLINE = (1 << 9), INLINEA = (1 << 10), INLINELABEL = (1 << 11), FONTSTYLE = (1 << 12), PHRASE = (1 << 13), FORMCTRL = (1 << 14), SPECIAL = (1 << 15), ASPECIAL = (1 << 16), HEADMISC = (1 << 17), HEAD = (1 << 18), LIST = (1 << 19), PREFORMATTED = (1 << 20), WHITESPACESENSITIVE = (1 << 21), HEADELEM = (1 << 22), STYLEELEM = (1 << 23), SCRIPTELEM = (1 << 24), ATTRURL = (1 << 1), ATTREMPTY = (1 << 2) }; struct XALAN_XMLSUPPORT_EXPORT InternalAttributeProperties { typedef unsigned char FlagsType; XalanDOMChar m_name[eMaxAttributeName + 1]; FlagsType m_flags; /** * Check if particular properties are set for this * instance. See the eFlag enum for the valid * properties. * * @param theFlags The properties to check. * @return true if the property is set, false if not */ bool is(FlagsType theFlags) const { return m_flags & theFlags ? true : false; } }; struct XALAN_XMLSUPPORT_EXPORT InternalElementProperties { typedef InternalAttributeProperties::FlagsType AttributeFlagsType; typedef unsigned int FlagsType; /** * Check if particular attribute properties are set * for this instance. See the eFlag enum for the valid * properties. * * @param theAttributeName The attribute name. * @param theFlags The properties to check. * @return true if the property is set, false if not */ bool isAttribute( const XalanDOMChar* theAttributeName, AttributeFlagsType theFlags) const; /** * Check if particular properties are set for this * instance. See the eFlag enum for the valid * properties. * * @param theFlags The properties to check. * @return true if the property is set, false if not */ bool is(FlagsType theFlags) const { return m_flags & theFlags ? true : false; } // Data members... XalanDOMChar m_name[eMaxElementName + 1]; FlagsType m_flags; InternalAttributeProperties m_attributes[eMaxAttributes + 1]; /** * Find an instance with the given attribute name. * * @param theAttributeName The attribute name. * @return A reference to an instance. */ const InternalAttributeProperties& findProperties(const XalanDOMChar* theAttributeName) const; static const InternalAttributeProperties s_dummyProperties; }; /** * This class acts as a proxy for an InternalElementProperties * instance. */ class XALAN_XMLSUPPORT_EXPORT ElementProperties { public: typedef InternalElementProperties::AttributeFlagsType AttributeFlagsType; typedef InternalElementProperties::FlagsType FlagsType; /** * Constructor * @param theProperties The instance for which this one is a proxy. */ ElementProperties(const InternalElementProperties* theProperties = 0) : m_properties(theProperties) { } /** * Copy constructor * @param theSource The source instance for the copy. */ ElementProperties(const ElementProperties& theSource) : m_properties(theSource.m_properties) { } /** * Determine if this is a non-null instance. You * must call this before calling any member functions, * if you think the instance may be null. * * @return true if the instance is null, false if not */ bool null() const { return m_properties == 0 ? true : false; } /** * Check if particular properties are set for this * instance. See the eFlag enum for the valid * properties. * * @param theFlags The properties to check. * @return true if the property is set, false if not */ bool is(FlagsType theFlags) const { return m_properties->is(theFlags); } /** * Check if particular attribute properties are set * for this instance. See the eFlag enum for the valid * properties. * * @param theAttributeName The attribute name. * @param theFlags The properties to check. * @return true if the property is set, false if not */ bool isAttribute( const XalanDOMChar* theAttributeName, AttributeFlagsType theFlags) const { return m_properties->isAttribute(theAttributeName, theFlags); } /** * Get the name of the element. * * @return The name of the element. */ const XalanDOMChar* getName() const { return m_properties->m_name; } private: const InternalElementProperties* m_properties; }; /** * Find an instance with the given name. * * @param theElementName The element name. * @return A reference to an instance. */ static ElementProperties find(const XalanDOMChar* theElementName); private: /** * Find an instance with the given name. * * @param theElementName The element name. * @return A reference to an instance. */ static const InternalElementProperties& findProperties(const XalanDOMChar* theElementName); // The order of these is significant!!! // The array of properties... static const InternalElementProperties s_elementProperties[]; // This point to the last of the real propeties in the array. static const InternalElementProperties* const s_lastProperties; // This point to the last of the properties in the array, which is // a dummy instance we return when an instance that matches the // element name cannot be found. static const InternalElementProperties* const s_dummyProperties; // These are undefined... XalanHTMLElementsProperties(); ~XalanHTMLElementsProperties(); XalanHTMLElementsProperties& operator=(const XalanHTMLElementsProperties&); }; XALAN_CPP_NAMESPACE_END #endif // XALANHTMLELEMENTSPROPERTIES_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XMLSupport/XalanXMLSerializerBase.cpp0000664000175000000640000007141211731656103023252 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanXMLSerializerBase.hpp" #include "xercesc/sax/SAXException.hpp" #include "xalanc/PlatformSupport/DOMStringHelper.hpp" #include "xalanc/PlatformSupport/XalanMessageLoader.hpp" #include "xalanc/PlatformSupport/XalanTranscodingServices.hpp" #include "xalanc/PlatformSupport/Writer.hpp" XALAN_CPP_NAMESPACE_BEGIN const size_t XalanXMLSerializerBase::CharFunctor1_0::s_lastSpecial = 0x7fu; const char XalanXMLSerializerBase::CharFunctor1_0::s_specialChars[s_lastSpecial + 1] = { /* 00-07 */ eForb, eForb, eForb, eForb, eForb, eForb, eForb, eForb, /* 08-0F */ eForb, eAttr, eBoth, eForb, eForb, eBoth, eForb, eForb, /* 10-17 */ eForb, eForb, eForb, eForb, eForb, eForb, eForb, eForb, /* 18-1F */ eForb, eForb, eForb, eForb, eForb, eForb, eForb, eForb, /* 20-27 */ eNone, eNone, eAttr, eNone, eNone, eNone, eBoth, eNone, /* 28-2F */ eNone, eNone, eNone, eNone, eNone, eNone, eNone, eNone, /* 30-37 */ eNone, eNone, eNone, eNone, eNone, eNone, eNone, eNone, /* 38-3F */ eNone, eNone, eNone, eNone, eBoth, eNone, eBoth, eNone, /* 40-47 */ eNone, eNone, eNone, eNone, eNone, eNone, eNone, eNone, /* 48-4F */ eNone, eNone, eNone, eNone, eNone, eNone, eNone, eNone, /* 50-57 */ eNone, eNone, eNone, eNone, eNone, eNone, eNone, eNone, /* 58-5F */ eNone, eNone, eNone, eNone, eNone, eNone, eNone, eNone, /* 60-67 */ eNone, eNone, eNone, eNone, eNone, eNone, eNone, eNone, /* 68-6F */ eNone, eNone, eNone, eNone, eNone, eNone, eNone, eNone, /* 70-77 */ eNone, eNone, eNone, eNone, eNone, eNone, eNone, eNone, /* 78-7F */ eNone, eNone, eNone, eNone, eNone, eNone, eNone }; const size_t XalanXMLSerializerBase::CharFunctor1_1::s_lastSpecial = 0x9fu; const char XalanXMLSerializerBase::CharFunctor1_1::s_specialChars[s_lastSpecial + 1] = { /* 00-07 */ eNone, eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, /* 08-0F */ eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, /* 10-17 */ eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, /* 18-1F */ eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, /* 20-27 */ eNone, eNone, eAttr, eNone, eNone, eNone, eBoth, eNone, /* 28-2F */ eNone, eNone, eNone, eNone, eNone, eNone, eNone, eNone, /* 30-37 */ eNone, eNone, eNone, eNone, eNone, eNone, eNone, eNone, /* 38-3F */ eNone, eNone, eNone, eNone, eBoth, eNone, eBoth, eNone, /* 40-47 */ eNone, eNone, eNone, eNone, eNone, eNone, eNone, eNone, /* 48-4F */ eNone, eNone, eNone, eNone, eNone, eNone, eNone, eNone, /* 50-57 */ eNone, eNone, eNone, eNone, eNone, eNone, eNone, eNone, /* 58-5F */ eNone, eNone, eNone, eNone, eNone, eNone, eNone, eNone, /* 60-67 */ eNone, eNone, eNone, eNone, eNone, eNone, eNone, eNone, /* 68-6F */ eNone, eNone, eNone, eNone, eNone, eNone, eNone, eNone, /* 70-77 */ eNone, eNone, eNone, eNone, eNone, eNone, eNone, eNone, /* 78-7F */ eNone, eNone, eNone, eNone, eNone, eNone, eNone, eCRFb, /* 80-87 */ eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, eBoth, eCRFb, eCRFb, /* 88-8F */ eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, /* 90-97 */ eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, /* 98-9F */ eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, eCRFb, eCRFb }; XalanXMLSerializerBase::XalanXMLSerializerBase( MemoryManager& theManager, eXMLVersion theXMLVersion, const XalanDOMString& theEncoding, const XalanDOMString& theDoctypeSystem, const XalanDOMString& theDoctypePublic, bool xmlDecl, const XalanDOMString& theStandalone) : FormatterListener(OUTPUT_METHOD_XML), m_nextIsRaw(false), m_spaceBeforeClose(false), m_doctypeSystem(theDoctypeSystem, theManager), m_doctypePublic(theDoctypePublic, theManager), m_version( theXMLVersion == XML_VERSION_1_0 ? s_1_0String : s_1_1String), m_standalone(theStandalone, theManager), m_encoding(theEncoding, theManager), m_needToOutputDoctypeDecl(false), // We must write the XML declaration if standalone is specified m_shouldWriteXMLHeader(xmlDecl == true ? true : theStandalone.length() != 0), m_elemStack(theManager) { setXMLVersion(theXMLVersion); if(m_doctypePublic.empty() == false) { if(startsWith( m_doctypePublic, s_xhtmlDocTypeString) == true) { m_spaceBeforeClose = true; } } } XalanXMLSerializerBase::~XalanXMLSerializerBase() { } XalanUnicodeChar XalanXMLSerializerBase::decodeUTF16SurrogatePair( XalanDOMChar theHighSurrogate, XalanDOMChar theLowSurrogate, MemoryManager& theManager) { assert(isUTF16HighSurrogate(theHighSurrogate) == true); if (isUTF16LowSurrogate(theLowSurrogate) == false) { throwInvalidUTF16SurrogateException( theHighSurrogate, theLowSurrogate, theManager); } return ((theHighSurrogate - 0xD800u) << 10) + theLowSurrogate - 0xDC00u + 0x00010000u; } XALAN_USING_XERCES(SAXException) void XalanXMLSerializerBase::throwInvalidUTF16SurrogateException( XalanDOMChar ch, MemoryManager& theManager) { XalanDOMString theMessage(theManager); XalanDOMString theBuffer(theManager); XalanMessageLoader::getMessage( theMessage, XalanMessages::InvalidHighSurrogate_1Param, NumberToHexDOMString(ch, theBuffer)); throw SAXException(theMessage.c_str(), &theManager); } void XalanXMLSerializerBase::throwInvalidUTF16SurrogateException( XalanDOMChar ch, XalanDOMChar next, MemoryManager& theManager) { XalanDOMString theMessage(theManager); XalanDOMString theBuffer1(theManager); XalanDOMString theBuffer2(theManager); XalanMessageLoader::getMessage( theMessage, XalanMessages::InvalidSurrogatePair_2Param, NumberToHexDOMString(ch, theBuffer1), NumberToHexDOMString(next, theBuffer2)); throw SAXException(theMessage.c_str(), &theManager); } void XalanXMLSerializerBase::throwInvalidCharacterException( XalanUnicodeChar ch, MemoryManager& theManager) { XalanDOMString theMessage(theManager); XalanDOMString theBuffer(theManager); XalanMessageLoader::getMessage( theMessage, XalanMessages::InvalidScalar_1Param, NumberToHexDOMString(ch, theBuffer)); throw SAXException(theMessage.c_str(), &theManager); } void XalanXMLSerializerBase::throwInvalidXMLCharacterException( XalanUnicodeChar ch, const XalanDOMString& theXMLversion, MemoryManager& theManager) { XalanDOMString theMessage(theManager); XalanDOMString theBuffer(theManager); XalanMessageLoader::getMessage( theMessage, XalanMessages::ForbiddenXMLCharacter_2Param, NumberToHexDOMString(ch, theBuffer), theXMLversion); throw SAXException(theMessage.c_str(), &theManager); } void XalanXMLSerializerBase::setDocumentLocator(const Locator* const /* locator */) { } void XalanXMLSerializerBase::startDocument() { if (m_doctypeSystem.empty() == false) { m_needToOutputDoctypeDecl = true; } if(m_shouldWriteXMLHeader == true) { writeXMLHeader(); // Write a newline here, so the DOCTYPE comes out on a separate line if (m_needToOutputDoctypeDecl == true) { outputNewline(); } } } void XalanXMLSerializerBase::characters( const XMLCh* const chars, const size_type length) { if(length != 0) { if(m_nextIsRaw) { m_nextIsRaw = false; charactersRaw(chars, length); } else { writeCharacters(chars, length); } } } void XalanXMLSerializerBase::cdata( const XMLCh* const ch, const size_type length) { if (length != 0) { if(m_nextIsRaw == true) { m_nextIsRaw = false; charactersRaw(ch, length); } else { writeCDATA(ch, length); } } } void XalanXMLSerializerBase::processingInstruction( const XMLCh* const target, const XMLCh* const data) { // Use a fairly nasty hack to tell if the next node is supposed to be // unescaped text. if(equals(target, length(target), s_piTarget, s_piTargetLength) == true && equals(data, length(data), s_piData, s_piDataLength) == true) { m_nextIsRaw = true; } else { writeProcessingInstruction(target, data); } } void XalanXMLSerializerBase::ignorableWhitespace( const XMLCh* const chars, const size_type length) { if (length > 0) { characters(chars, length); } } const XalanDOMString& XalanXMLSerializerBase::getDoctypeSystem() const { return m_doctypeSystem; } const XalanDOMString& XalanXMLSerializerBase::getDoctypePublic() const { return m_doctypePublic; } const XalanDOMString& XalanXMLSerializerBase::getEncoding() const { return m_encoding; } void XalanXMLSerializerBase::resetDocument() { // I don't do anything with this yet. } #define FXML_SIZE(str) ((sizeof(str) / sizeof(str[0]) - 1)) const XalanDOMChar XalanXMLSerializerBase::s_xhtmlDocTypeString[] = { XalanUnicode::charHyphenMinus, XalanUnicode::charSolidus, XalanUnicode::charSolidus, XalanUnicode::charLetter_W, XalanUnicode::charDigit_3, XalanUnicode::charLetter_C, XalanUnicode::charSolidus, XalanUnicode::charSolidus, XalanUnicode::charLetter_D, XalanUnicode::charLetter_T, XalanUnicode::charLetter_D, XalanUnicode::charSpace, XalanUnicode::charLetter_X, XalanUnicode::charLetter_H, XalanUnicode::charLetter_T, XalanUnicode::charLetter_M, XalanUnicode::charLetter_L, XalanDOMChar(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::s_xhtmlDocTypeStringLength = FXML_SIZE(s_xhtmlDocTypeString); static XalanDOMString s_localUTF8String(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_localUTF16String(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_local1_0String(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_local1_1String(XalanMemMgrs::getDummyMemMgr()); static const XalanDOMChar s_1_1VersionString[] = { XalanUnicode::charDigit_1, XalanUnicode::charFullStop, XalanUnicode::charDigit_1, XalanDOMChar(0) }; void XalanXMLSerializerBase::initialize(MemoryManager& theManager) { { XalanDOMString theTmp(XalanTranscodingServices::s_utf8String, theManager); s_localUTF8String.swap(theTmp); } { XalanDOMString theTmp(XalanTranscodingServices::s_utf16String, theManager); s_localUTF16String.swap(theTmp); } { XalanDOMString theTmp(UTF16::s_defaultVersionString, theManager); s_local1_0String.swap(theTmp); } { XalanDOMString theTmp(s_1_1VersionString, theManager); s_local1_1String.swap(theTmp); } } void XalanXMLSerializerBase::terminate() { { XalanDOMString temp(XalanMemMgrs::getDummyMemMgr()); temp.swap(s_localUTF8String); } { XalanDOMString temp(XalanMemMgrs::getDummyMemMgr()); temp.swap(s_localUTF16String); } { XalanDOMString temp(XalanMemMgrs::getDummyMemMgr()); temp.swap(s_local1_0String); } { XalanDOMString temp(XalanMemMgrs::getDummyMemMgr()); temp.swap(s_local1_1String); } } const XalanDOMString& XalanXMLSerializerBase::UTF8::s_encodingString = s_localUTF8String; const XalanDOMString& XalanXMLSerializerBase::UTF16::s_encodingString = s_localUTF16String; const XalanDOMString& XalanXMLSerializerBase::s_1_0String = s_local1_0String; const XalanDOMString& XalanXMLSerializerBase::s_1_1String = s_local1_1String; const char XalanXMLSerializerBase::UTF8::s_doctypeHeaderStartString[] = { char(XalanUnicode::charLessThanSign), char(XalanUnicode::charExclamationMark), char(XalanUnicode::charLetter_D), char(XalanUnicode::charLetter_O), char(XalanUnicode::charLetter_C), char(XalanUnicode::charLetter_T), char(XalanUnicode::charLetter_Y), char(XalanUnicode::charLetter_P), char(XalanUnicode::charLetter_E), char(XalanUnicode::charSpace), char(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF8::s_doctypeHeaderStartStringLength = FXML_SIZE(s_doctypeHeaderStartString); const char XalanXMLSerializerBase::UTF8::s_doctypeHeaderPublicString[] = { char(XalanUnicode::charSpace), char(XalanUnicode::charLetter_P), char(XalanUnicode::charLetter_U), char(XalanUnicode::charLetter_B), char(XalanUnicode::charLetter_L), char(XalanUnicode::charLetter_I), char(XalanUnicode::charLetter_C), char(XalanUnicode::charSpace), char(XalanUnicode::charQuoteMark), char(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF8::s_doctypeHeaderPublicStringLength = FXML_SIZE(s_doctypeHeaderPublicString); const char XalanXMLSerializerBase::UTF8::s_doctypeHeaderSystemString[] = { char(XalanUnicode::charSpace), char(XalanUnicode::charLetter_S), char(XalanUnicode::charLetter_Y), char(XalanUnicode::charLetter_S), char(XalanUnicode::charLetter_T), char(XalanUnicode::charLetter_E), char(XalanUnicode::charLetter_M), char(XalanUnicode::charSpace), char(XalanUnicode::charQuoteMark), char(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF8::s_doctypeHeaderSystemStringLength = FXML_SIZE(s_doctypeHeaderSystemString); const char XalanXMLSerializerBase::UTF8::s_xmlHeaderStartString[] = { char(XalanUnicode::charLessThanSign), char(XalanUnicode::charQuestionMark), char(XalanUnicode::charLetter_x), char(XalanUnicode::charLetter_m), char(XalanUnicode::charLetter_l), char(XalanUnicode::charSpace), char(XalanUnicode::charLetter_v), char(XalanUnicode::charLetter_e), char(XalanUnicode::charLetter_r), char(XalanUnicode::charLetter_s), char(XalanUnicode::charLetter_i), char(XalanUnicode::charLetter_o), char(XalanUnicode::charLetter_n), char(XalanUnicode::charEqualsSign), char(XalanUnicode::charQuoteMark), char(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF8::s_xmlHeaderStartStringLength = FXML_SIZE(s_xmlHeaderStartString); const char XalanXMLSerializerBase::UTF8::s_xmlHeaderEncodingString[] = { char(XalanUnicode::charQuoteMark), char(XalanUnicode::charSpace), char(XalanUnicode::charLetter_e), char(XalanUnicode::charLetter_n), char(XalanUnicode::charLetter_c), char(XalanUnicode::charLetter_o), char(XalanUnicode::charLetter_d), char(XalanUnicode::charLetter_i), char(XalanUnicode::charLetter_n), char(XalanUnicode::charLetter_g), char(XalanUnicode::charEqualsSign), char(XalanUnicode::charQuoteMark), char(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF8::s_xmlHeaderEncodingStringLength = FXML_SIZE(s_xmlHeaderEncodingString); const char XalanXMLSerializerBase::UTF8::s_xmlHeaderStandaloneString[] = { char(XalanUnicode::charQuoteMark), char(XalanUnicode::charSpace), char(XalanUnicode::charLetter_s), char(XalanUnicode::charLetter_t), char(XalanUnicode::charLetter_a), char(XalanUnicode::charLetter_n), char(XalanUnicode::charLetter_d), char(XalanUnicode::charLetter_a), char(XalanUnicode::charLetter_l), char(XalanUnicode::charLetter_o), char(XalanUnicode::charLetter_n), char(XalanUnicode::charLetter_e), char(XalanUnicode::charEqualsSign), char(XalanUnicode::charQuoteMark), char(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF8::s_xmlHeaderStandaloneStringLength = FXML_SIZE(s_xmlHeaderStandaloneString); const char XalanXMLSerializerBase::UTF8::s_xmlHeaderEndString[] = { char(XalanUnicode::charQuoteMark), char(XalanUnicode::charQuestionMark), char(XalanUnicode::charGreaterThanSign), char(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF8::s_xmlHeaderEndStringLength = FXML_SIZE(s_xmlHeaderEndString); const char XalanXMLSerializerBase::UTF8::s_defaultVersionString[] = { char(XalanUnicode::charDigit_1), char(XalanUnicode::charFullStop), char(XalanUnicode::charDigit_0), char(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF8::s_defaultVersionStringLength = FXML_SIZE(s_defaultVersionString); const char XalanXMLSerializerBase::UTF8::s_cdataOpenString[] = { char(XalanUnicode::charLessThanSign), char(XalanUnicode::charExclamationMark), char(XalanUnicode::charLeftSquareBracket), char(XalanUnicode::charLetter_C), char(XalanUnicode::charLetter_D), char(XalanUnicode::charLetter_A), char(XalanUnicode::charLetter_T), char(XalanUnicode::charLetter_A), char(XalanUnicode::charLeftSquareBracket), char(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF8::s_cdataOpenStringLength = FXML_SIZE(s_cdataOpenString); const char XalanXMLSerializerBase::UTF8::s_cdataCloseString[] = { char(XalanUnicode::charRightSquareBracket), char(XalanUnicode::charRightSquareBracket), char(XalanUnicode::charGreaterThanSign), char(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF8::s_cdataCloseStringLength = FXML_SIZE(s_cdataCloseString); const XalanDOMChar XalanXMLSerializerBase::UTF8::s_xhtmlDocTypeString[] = { XalanUnicode::charHyphenMinus, XalanUnicode::charSolidus, XalanUnicode::charSolidus, XalanUnicode::charLetter_W, XalanUnicode::charDigit_3, XalanUnicode::charLetter_C, XalanUnicode::charSolidus, XalanUnicode::charSolidus, XalanUnicode::charLetter_D, XalanUnicode::charLetter_T, XalanUnicode::charLetter_D, XalanUnicode::charSpace, XalanUnicode::charLetter_X, XalanUnicode::charLetter_H, XalanUnicode::charLetter_T, XalanUnicode::charLetter_M, XalanUnicode::charLetter_L, XalanDOMChar(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF8::s_xhtmlDocTypeStringLength = FXML_SIZE(s_xhtmlDocTypeString); const char XalanXMLSerializerBase::UTF8::s_lessThanEntityString[] = { char(XalanUnicode::charAmpersand), char(XalanUnicode::charLetter_l), char(XalanUnicode::charLetter_t), char(XalanUnicode::charSemicolon), char(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF8::s_lessThanEntityStringLength = FXML_SIZE(s_lessThanEntityString); const char XalanXMLSerializerBase::UTF8::s_greaterThanEntityString[] = { char(XalanUnicode::charAmpersand), char(XalanUnicode::charLetter_g), char(XalanUnicode::charLetter_t), char(XalanUnicode::charSemicolon), char(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF8::s_greaterThanEntityStringLength = FXML_SIZE(s_greaterThanEntityString); const char XalanXMLSerializerBase::UTF8::s_ampersandEntityString[] = { char(XalanUnicode::charAmpersand), char(XalanUnicode::charLetter_a), char(XalanUnicode::charLetter_m), char(XalanUnicode::charLetter_p), char(XalanUnicode::charSemicolon), char(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF8::s_ampersandEntityStringLength = FXML_SIZE(s_ampersandEntityString); const char XalanXMLSerializerBase::UTF8::s_quoteEntityString[] = { char(XalanUnicode::charAmpersand), char(XalanUnicode::charLetter_q), char(XalanUnicode::charLetter_u), char(XalanUnicode::charLetter_o), char(XalanUnicode::charLetter_t), char(XalanUnicode::charSemicolon), char(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF8::s_quoteEntityStringLength = FXML_SIZE(s_quoteEntityString); const XalanDOMChar XalanXMLSerializerBase::UTF16::s_doctypeHeaderStartString[] = { XalanUnicode::charLessThanSign, XalanUnicode::charExclamationMark, XalanUnicode::charLetter_D, XalanUnicode::charLetter_O, XalanUnicode::charLetter_C, XalanUnicode::charLetter_T, XalanUnicode::charLetter_Y, XalanUnicode::charLetter_P, XalanUnicode::charLetter_E, XalanUnicode::charSpace, XalanDOMChar(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF16::s_doctypeHeaderStartStringLength = FXML_SIZE(s_doctypeHeaderStartString); const XalanDOMChar XalanXMLSerializerBase::UTF16::s_doctypeHeaderPublicString[] = { XalanUnicode::charSpace, XalanUnicode::charLetter_P, XalanUnicode::charLetter_U, XalanUnicode::charLetter_B, XalanUnicode::charLetter_L, XalanUnicode::charLetter_I, XalanUnicode::charLetter_C, XalanUnicode::charSpace, XalanUnicode::charQuoteMark, XalanDOMChar(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF16::s_doctypeHeaderPublicStringLength = FXML_SIZE(s_doctypeHeaderPublicString); const XalanDOMChar XalanXMLSerializerBase::UTF16::s_doctypeHeaderSystemString[] = { XalanUnicode::charSpace, XalanUnicode::charLetter_S, XalanUnicode::charLetter_Y, XalanUnicode::charLetter_S, XalanUnicode::charLetter_T, XalanUnicode::charLetter_E, XalanUnicode::charLetter_M, XalanUnicode::charSpace, XalanUnicode::charQuoteMark, XalanDOMChar(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF16::s_doctypeHeaderSystemStringLength = FXML_SIZE(s_doctypeHeaderSystemString); const XalanDOMChar XalanXMLSerializerBase::UTF16::s_xmlHeaderStartString[] = { XalanUnicode::charLessThanSign, XalanUnicode::charQuestionMark, XalanUnicode::charLetter_x, XalanUnicode::charLetter_m, XalanUnicode::charLetter_l, XalanUnicode::charSpace, XalanUnicode::charLetter_v, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, XalanUnicode::charEqualsSign, XalanUnicode::charQuoteMark, XalanDOMChar(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF16::s_xmlHeaderStartStringLength = FXML_SIZE(s_xmlHeaderStartString); const XalanDOMChar XalanXMLSerializerBase::UTF16::s_xmlHeaderEncodingString[] = { XalanUnicode::charQuoteMark, XalanUnicode::charSpace, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_d, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, XalanUnicode::charEqualsSign, XalanUnicode::charQuoteMark, XalanDOMChar(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF16::s_xmlHeaderEncodingStringLength = FXML_SIZE(s_xmlHeaderEncodingString); const XalanDOMChar XalanXMLSerializerBase::UTF16::s_xmlHeaderStandaloneString[] = { XalanUnicode::charQuoteMark, XalanUnicode::charSpace, XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_d, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, XalanUnicode::charLetter_e, XalanUnicode::charEqualsSign, XalanUnicode::charQuoteMark, XalanDOMChar(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF16::s_xmlHeaderStandaloneStringLength = FXML_SIZE(s_xmlHeaderStandaloneString); const XalanDOMChar XalanXMLSerializerBase::UTF16::s_xmlHeaderEndString[] = { XalanUnicode::charQuoteMark, XalanUnicode::charQuestionMark, XalanUnicode::charGreaterThanSign, XalanDOMChar(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF16::s_xmlHeaderEndStringLength = FXML_SIZE(s_xmlHeaderEndString); const XalanDOMChar XalanXMLSerializerBase::UTF16::s_defaultVersionString[] = { XalanUnicode::charDigit_1, XalanUnicode::charFullStop, XalanUnicode::charDigit_0, XalanDOMChar(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF16::s_defaultVersionStringLength = FXML_SIZE(s_defaultVersionString); const XalanDOMChar XalanXMLSerializerBase::UTF16::s_cdataOpenString[] = { XalanUnicode::charLessThanSign, XalanUnicode::charExclamationMark, XalanUnicode::charLeftSquareBracket, XalanUnicode::charLetter_C, XalanUnicode::charLetter_D, XalanUnicode::charLetter_A, XalanUnicode::charLetter_T, XalanUnicode::charLetter_A, XalanUnicode::charLeftSquareBracket, XalanDOMChar(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF16::s_cdataOpenStringLength = FXML_SIZE(s_cdataOpenString); const XalanDOMChar XalanXMLSerializerBase::UTF16::s_cdataCloseString[] = { XalanUnicode::charRightSquareBracket, XalanUnicode::charRightSquareBracket, XalanUnicode::charGreaterThanSign, XalanDOMChar(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF16::s_cdataCloseStringLength = FXML_SIZE(s_cdataCloseString); const XalanDOMChar XalanXMLSerializerBase::UTF16::s_xhtmlDocTypeString[] = { XalanUnicode::charHyphenMinus, XalanUnicode::charSolidus, XalanUnicode::charSolidus, XalanUnicode::charLetter_W, XalanUnicode::charDigit_3, XalanUnicode::charLetter_C, XalanUnicode::charSolidus, XalanUnicode::charSolidus, XalanUnicode::charLetter_D, XalanUnicode::charLetter_T, XalanUnicode::charLetter_D, XalanUnicode::charSpace, XalanUnicode::charLetter_X, XalanUnicode::charLetter_H, XalanUnicode::charLetter_T, XalanUnicode::charLetter_M, XalanUnicode::charLetter_L, XalanDOMChar(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF16::s_xhtmlDocTypeStringLength = FXML_SIZE(s_xhtmlDocTypeString); const XalanDOMChar XalanXMLSerializerBase::UTF16::s_lessThanEntityString[] = { XalanUnicode::charAmpersand, XalanUnicode::charLetter_l, XalanUnicode::charLetter_t, XalanUnicode::charSemicolon, XalanDOMChar(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF16::s_lessThanEntityStringLength = FXML_SIZE(s_lessThanEntityString); const XalanDOMChar XalanXMLSerializerBase::UTF16::s_greaterThanEntityString[] = { XalanUnicode::charAmpersand, XalanUnicode::charLetter_g, XalanUnicode::charLetter_t, XalanUnicode::charSemicolon, XalanDOMChar(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF16::s_greaterThanEntityStringLength = FXML_SIZE(s_greaterThanEntityString); const XalanDOMChar XalanXMLSerializerBase::UTF16::s_ampersandEntityString[] = { XalanUnicode::charAmpersand, XalanUnicode::charLetter_a, XalanUnicode::charLetter_m, XalanUnicode::charLetter_p, XalanUnicode::charSemicolon, XalanDOMChar(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF16::s_ampersandEntityStringLength = FXML_SIZE(s_ampersandEntityString); const XalanDOMChar XalanXMLSerializerBase::UTF16::s_quoteEntityString[] = { XalanUnicode::charAmpersand, XalanUnicode::charLetter_q, XalanUnicode::charLetter_u, XalanUnicode::charLetter_o, XalanUnicode::charLetter_t, XalanUnicode::charSemicolon, XalanDOMChar(0) }; const XalanXMLSerializerBase::size_type XalanXMLSerializerBase::UTF16::s_quoteEntityStringLength = FXML_SIZE(s_quoteEntityString); XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XMLSupport/FormatterToText.cpp0000664000175000000640000002023111731656103022105 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file #include "FormatterToText.hpp" #include #include #include #include #if defined(XALAN_NEWLINE_IS_CRLF) #include #endif XALAN_CPP_NAMESPACE_BEGIN FormatterToText::FormatterToText(MemoryManager& theManager) : FormatterListener(OUTPUT_METHOD_TEXT), m_writer(0), m_maxCharacter(XalanDOMChar(~0)), m_encoding(theManager), m_haveEncoding(false), m_normalize(true), m_handleIgnorableWhitespace(true), m_newlineString(0), m_newlineStringLength(0) { } FormatterToText::FormatterToText( Writer& writer, bool normalizeLinefeed, bool handleIgnorableWhitespace, MemoryManager& theManager) : FormatterListener(OUTPUT_METHOD_TEXT), m_writer(&writer), m_maxCharacter(XalanDOMChar(~0)), m_encoding(theManager), m_haveEncoding(false), m_normalize(normalizeLinefeed), m_handleIgnorableWhitespace(handleIgnorableWhitespace), m_newlineString(0), m_newlineStringLength(0) { update(true); } FormatterToText::FormatterToText( Writer& writer, const XalanDOMString& encoding, bool normalizeLinefeed, bool handleIgnorableWhitespace, MemoryManager& theManager) : FormatterListener(OUTPUT_METHOD_TEXT), m_writer(&writer), m_maxCharacter(0), m_encoding(theManager), m_haveEncoding(true), m_normalize(normalizeLinefeed), m_handleIgnorableWhitespace(handleIgnorableWhitespace), m_newlineString(0), m_newlineStringLength(0) { if(encoding.empty() == false) { m_encoding = encoding; } else { m_encoding = XalanDOMString(XalanTranscodingServices::s_utf8String, theManager); } update(false); } FormatterToText* FormatterToText::create( MemoryManager& theManager, Writer& writer, const XalanDOMString& encoding, bool normalizeLinefeed, bool handleIgnorableWhitespace) { typedef FormatterToText ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( writer, encoding, normalizeLinefeed, handleIgnorableWhitespace, theManager); theGuard.release(); return theResult; } FormatterToText::~FormatterToText() { } void FormatterToText::clearEncoding() { m_encoding.clear(); m_maxCharacter = XalanDOMChar(~0); m_haveEncoding = false; } void FormatterToText::setDocumentLocator(const Locator* const /* locator */) { // No action for the moment. } void FormatterToText::startDocument() { // No action for the moment. } void FormatterToText::endDocument() { assert(m_writer != 0); m_writer->flush(); } void FormatterToText::startElement( const XMLCh* const /* name */, AttributeListType& /* attrs */) { // No action for the moment. } void FormatterToText::endElement( const XMLCh* const /* name */) { // No action for the moment. } void FormatterToText::characters( const XMLCh* const chars, const size_type length) { assert(m_writer != 0); if (m_normalize == false && m_haveEncoding == false) { m_writer->write(chars, 0, length); } else { size_type i = 0; while (i < length) { if (chars[i] > m_maxCharacter) { //$$$ ToDo: Figure out what we're going to do here... } #if defined(XALAN_NEWLINE_IS_CRLF) if (m_normalize == false) { m_writer->write(chars[i]); } else { // Normalize LF and CR/LF to the appropriate line ending sequence. if (chars[i] == XalanUnicode::charLF) { m_writer->write(m_newlineString, 0, m_newlineStringLength); } else if (chars[i] == XalanUnicode::charCR && (i + 1 < length && chars[i + 1] == XalanUnicode::charLF)) { m_writer->write(m_newlineString, 0, m_newlineStringLength); ++i; } else { m_writer->write(chars[i]); } } #else m_writer->write(chars[i]); #endif ++i; } } } void FormatterToText::charactersRaw( const XMLCh* const chars, const size_type length) { characters(chars, length); } void FormatterToText::entityReference(const XMLCh* const /* name */) { // No action for the moment. } void FormatterToText::ignorableWhitespace( const XMLCh* const chars, const size_type length) { if (m_handleIgnorableWhitespace == true) { characters(chars, length); } } void FormatterToText::processingInstruction( const XMLCh* const /* target */, const XMLCh* const /* data */) { // No action for the moment. } void FormatterToText::resetDocument() { // No action for the moment. } void FormatterToText::comment(const XMLCh* const /* data */) { // No action for the moment. } void FormatterToText::cdata( const XMLCh* const ch, const size_type length) { characters(ch, length); } void FormatterToText::update(bool fNormalizationOnly) { assert(m_writer != 0); XalanOutputStream* const theStream = m_writer->getStream(); if (theStream == 0) { m_newlineString = XalanOutputStream::defaultNewlineString(); m_newlineStringLength = length(m_newlineString); if (fNormalizationOnly == false) { // We're pretty much screwed here, since we can't transcode, so get the // maximum character for the local code page. m_maxCharacter = XalanTranscodingServices::getMaximumCharacterValue(); } } else { m_newlineString = theStream->getNewlineString(); assert(m_newlineString != 0); m_newlineStringLength = length(m_newlineString); if (fNormalizationOnly == false) { try { theStream->setOutputEncoding(m_encoding); } catch(const XalanOutputStream::UnsupportedEncodingException&) { const XalanDOMString theUTF8String(XalanTranscodingServices::s_utf8String, getMemoryManager()); // Default to UTF-8 if the requested encoding is not supported... theStream->setOutputEncoding(theUTF8String); m_encoding = theUTF8String; m_haveEncoding = true; } m_maxCharacter = XalanTranscodingServices::getMaximumCharacterValue(theStream->getOutputEncoding()); } } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XMLSupport/XalanXMLSerializerFactory.hpp0000664000175000000640000000475211731656103024017 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANXMLSERIALIZERFACTORY_HEADER_GUARD_1357924680) #define XALANXMLSERIALIZERFACTORY_HEADER_GUARD_1357924680 // Base include file. Must be first. #include "xalanc/XMLSupport/XMLSupportDefinitions.hpp" #include XALAN_CPP_NAMESPACE_BEGIN class FormatterListener; class Writer; class XalanDOMString; XALAN_USING_XERCES(MemoryManager) /** * A factory class for creating XML serializers. */ class XALAN_XMLSUPPORT_EXPORT XalanXMLSerializerFactory { public: /** * Create a FormatterListener for generating XML markup. */ static FormatterListener* create( MemoryManager& theManager, Writer& theWriter, const XalanDOMString& theVersion, bool doIndent, int theIndentAmount, const XalanDOMString& theEncoding, const XalanDOMString& theMediaType, const XalanDOMString& theDoctypeSystem, const XalanDOMString& theDoctypePublic, bool generateXMLDeclaration, const XalanDOMString& theStandaloneString); private: static void setEncoding( MemoryManager& theManager, Writer& theWriter, XalanDOMString& theEncoding); // These are not implemented. XalanXMLSerializerFactory(const XalanXMLSerializerFactory&); XalanXMLSerializerFactory& operator=(const XalanXMLSerializerFactory&); bool operator==(const XalanXMLSerializerFactory&) const; }; XALAN_CPP_NAMESPACE_END #endif // XALANXMLSERIALIZERFACTORY_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XMLSupport/XMLSupportException.cpp0000664000175000000640000000251211731656103022710 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XMLSupportException.hpp" XALAN_CPP_NAMESPACE_BEGIN XMLSupportException::XMLSupportException( const XalanDOMString& theMessage, MemoryManager& theManager, const Locator* theLocator) : XSLException( theMessage, theManager, theLocator) { } XMLSupportException::XMLSupportException(const XMLSupportException& other) : XSLException(other) { } XMLSupportException::~XMLSupportException() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XMLSupport/XalanXMLSerializerBase.hpp0000664000175000000640000004671211731656103023264 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANXMLSERIALIZERBASE_HEADER_GUARD_1357924680) #define XALANXMLSERIALIZERBASE_HEADER_GUARD_1357924680 // Base include file. Must be first. #include "xalanc/XMLSupport/XMLSupportDefinitions.hpp" #include "xalanc/Include/XalanVector.hpp" #include "xalanc/XalanDOM/XalanDOMString.hpp" // Base class header file. #include "xalanc/PlatformSupport/FormatterListener.hpp" XALAN_CPP_NAMESPACE_BEGIN class XalanOutputStream; XALAN_USING_XERCES(MemoryManager) /** * XalanXMLSerializerBase serves as a base class for XML serializers based on * FormatterListener events. */ class XALAN_XMLSUPPORT_EXPORT XalanXMLSerializerBase : public FormatterListener { public: /** * Perform static initialization. See class XMLSupportInit. */ static void initialize(MemoryManager& theManager); /** * Perform static shut down. See class XMLSupportInit. */ static void terminate(); /** * Constructor * * @param theManager The MemoryManager instance to use for any memory * allocations * @param doctypeSystem system identifier to be used in the document * type declaration * @param doctypePublic public identifier to be used in the document * type declaration * @param xmlDecl true if the XSLT processor should output an XML * declaration * @param theStandalone The string the XSLT processor should output for * the standalone document declaration */ XalanXMLSerializerBase( MemoryManager& theManager, eXMLVersion theXMLVersion, const XalanDOMString& theEncoding, const XalanDOMString& theDoctypeSystem, const XalanDOMString& theDoctypePublic, bool xmlDecl, const XalanDOMString& theStandalone); virtual ~XalanXMLSerializerBase(); MemoryManager& getMemoryManager() { return m_elemStack.getMemoryManager(); } // These methods are inherited from FormatterListener ... virtual void setDocumentLocator(const Locator* const locator); virtual void startDocument(); virtual void startElement( const XMLCh* const name, AttributeList& attrs) = 0; virtual void endElement(const XMLCh* const name) = 0; virtual void characters( const XMLCh* const chars, const size_type length); virtual void charactersRaw( const XMLCh* const chars, const size_type length) = 0; virtual void entityReference(const XMLCh* const name) = 0; virtual void ignorableWhitespace( const XMLCh* const chars, const size_type length); virtual void processingInstruction( const XMLCh* const target, const XMLCh* const data); virtual void resetDocument(); virtual void comment(const XMLCh* const data) = 0; virtual void cdata( const XMLCh* const ch, const size_type length); virtual const XalanDOMString& getDoctypeSystem() const; virtual const XalanDOMString& getDoctypePublic() const; virtual const XalanDOMString& getEncoding() const; const XalanDOMString& getVersion() const { return m_version; } const XalanDOMString& getStandalone() const { return m_standalone; } bool getShouldWriteXMLHeader() const { return m_shouldWriteXMLHeader; } void setShouldWriteXMLHeader(bool b) { m_shouldWriteXMLHeader = b; } typedef XalanVector BoolStackType; static const XalanDOMString& s_1_0String; static const XalanDOMString& s_1_1String; class XALAN_XMLSUPPORT_EXPORT UTF8 { public: // Static data members... /** * The string "UTF-8". */ static const XalanDOMString& s_encodingString; /** * The string "". */ static const char s_xmlHeaderEndString[]; static const size_type s_xmlHeaderEndStringLength; /** * The string "1.0". */ static const char s_defaultVersionString[]; static const size_type s_defaultVersionStringLength; /** * The string "-//W3C//DTD XHTML". */ static const XalanDOMChar s_xhtmlDocTypeString[]; static const size_type s_xhtmlDocTypeStringLength; /** * The string "". */ static const char s_cdataCloseString[]; static const size_type s_cdataCloseStringLength; /** * The string "<". */ static const char s_lessThanEntityString[]; static const size_type s_lessThanEntityStringLength; /** * The string ">". */ static const char s_greaterThanEntityString[]; static const size_type s_greaterThanEntityStringLength; /** * The string "&". */ static const char s_ampersandEntityString[]; static const size_type s_ampersandEntityStringLength; /** * The string """. */ static const char s_quoteEntityString[]; static const size_type s_quoteEntityStringLength; }; class XALAN_XMLSUPPORT_EXPORT UTF16 { public: /** * The string "UTF-16". */ static const XalanDOMString& s_encodingString; /** * The string "". */ static const XalanDOMChar s_xmlHeaderEndString[]; static const size_type s_xmlHeaderEndStringLength; /** * The string "1.0". */ static const XalanDOMChar s_defaultVersionString[]; static const size_type s_defaultVersionStringLength; /** * The string "-//W3C//DTD XHTML". */ static const XalanDOMChar s_xhtmlDocTypeString[]; static const size_type s_xhtmlDocTypeStringLength; /** * The string "". */ static const XalanDOMChar s_cdataCloseString[]; static const size_type s_cdataCloseStringLength; /** * The string "<". */ static const XalanDOMChar s_lessThanEntityString[]; static const size_type s_lessThanEntityStringLength; /** * The string ">". */ static const XalanDOMChar s_greaterThanEntityString[]; static const size_type s_greaterThanEntityStringLength; /** * The string "&". */ static const XalanDOMChar s_ampersandEntityString[]; static const size_type s_ampersandEntityStringLength; /** * The string """. */ static const XalanDOMChar s_quoteEntityString[]; static const size_type s_quoteEntityStringLength; }; enum { eBufferSize = 512 // The size of the buffer }; class XALAN_XMLSUPPORT_EXPORT CharFunctor1_0 { public: bool attribute(XalanDOMChar theChar) const { return theChar > s_lastSpecial ? false : s_specialChars[theChar] > eNone; } bool content(XalanDOMChar theChar) const { return theChar > s_lastSpecial ? false : s_specialChars[theChar] > eAttr; } bool range(XalanDOMChar theChar) const { assert(theChar > 0); return theChar > s_lastSpecial; } bool isForbidden(XalanDOMChar theChar) const { return theChar > s_lastSpecial ? false : s_specialChars[theChar] == eForb; } bool isCharRefForbidden(XalanDOMChar theChar) const { return theChar > s_lastSpecial ? false : s_specialChars[theChar] == eForb; } private: static const size_t s_lastSpecial; static const char s_specialChars[]; }; class XALAN_XMLSUPPORT_EXPORT CharFunctor1_1 { public: bool attribute(XalanDOMChar theChar) const { return theChar > s_lastSpecial ? false : s_specialChars[theChar] > eNone; } bool content(XalanDOMChar theChar) const { return theChar > s_lastSpecial ? false : s_specialChars[theChar] > eAttr; } bool range(XalanDOMChar theChar) const { assert(theChar > 0); return theChar > s_lastSpecial; } bool isForbidden(XalanDOMChar theChar) const { return theChar > s_lastSpecial ? false : s_specialChars[theChar] == eForb; } bool isCharRefForbidden(XalanDOMChar theChar) const { return theChar > s_lastSpecial ? false : s_specialChars[theChar] == eCRFb; } private: static const size_t s_lastSpecial; static const char s_specialChars[]; }; enum { eNone = 0u, eAttr = 1u, // A flag to indicate a value in s_specialChars applies to attributes eBoth = 2u, // A flag to indicate a value in s_specialChars applies to both content and attributes eForb = 4u, // A flag to indicate a forbidden value in s_specialChars // XML1.1 put a requirement to output chars #x1...#x1F and #x7F...#x9F as charRefs only // In the comments , PI and CDATA usage of charRefs is forbidden, so we will report an error in eCRFb = 5u // that case. For the elemets and attributes is should work the same as eBoth }; protected: virtual void writeXMLHeader() = 0; virtual void flushBuffer() = 0; virtual void writeDoctypeDecl(const XalanDOMChar* name) = 0; virtual void writeProcessingInstruction( const XMLCh* target, const XMLCh* data) = 0; virtual void writeCharacters( const XMLCh* chars, size_type length) = 0; virtual void writeCDATA( const XMLCh* chars, size_type length) = 0; virtual void outputNewline() = 0; /** * Mark the parent element as having a child. If this * is the first child, return true, otherwise, return * false. This allows the child element to determine * if the parent tag has already been closed. * * @return true if the parent element has not been previously marked for children. */ bool markParentForChildren() { if(!m_elemStack.empty()) { // See if the parent element has already been flagged as having children. if(false == m_elemStack.back()) { m_elemStack.back() = true; return true; } } return false; } /** * Determine if it a DOCTYPE declaration needs to * be written. */ bool getNeedToOutputDoctypeDecl() const { return m_needToOutputDoctypeDecl; } /** * Open an element for possibile children */ void openElementForChildren() { m_elemStack.push_back(false); } bool outsideDocumentElement() const { return m_elemStack.empty(); } /** * Determine if an element ever had any children added. * * @return true if the children were added, false if not. */ bool childNodesWereAdded() { bool fResult = false; if (m_elemStack.empty() == false) { fResult = m_elemStack.back(); m_elemStack.pop_back(); } return fResult; } void generateDoctypeDecl(const XalanDOMChar* name) { if(true == m_needToOutputDoctypeDecl) { assert(m_doctypeSystem.empty() == false); writeDoctypeDecl(name); m_needToOutputDoctypeDecl = false; } } /** * Tell if the next text should be raw. */ bool m_nextIsRaw; /** * Add space before '/>' for XHTML. */ bool m_spaceBeforeClose; /** * The System ID for the doc type. */ const XalanDOMString m_doctypeSystem; /** * The public ID for the doc type. */ const XalanDOMString m_doctypePublic; /** * Tells the XML version, for writing out to the XML decl. */ const XalanDOMString& m_version; /** * Text for standalone part of header. */ const XalanDOMString m_standalone; const XalanDOMString m_encoding; static bool isUTF16HighSurrogate(XalanDOMChar theChar) { return 0xD800u <= theChar && theChar <= 0xDBFFu ? true : false; } static bool isUTF16LowSurrogate(XalanDOMChar theChar) { return 0xDC00u <= theChar && theChar <= 0xDFFFu ? true : false; } static XalanUnicodeChar decodeUTF16SurrogatePair( XalanDOMChar theHighSurrogate, XalanDOMChar theLowSurrogate, MemoryManager& theManager); /** * Throw an exception when an invalid * surrogate is encountered. * @param ch The first character in the surrogate */ static void throwInvalidUTF16SurrogateException( XalanDOMChar ch, MemoryManager& theManager); /** * Throw an exception when an invalid * surrogate is encountered. * @param ch The first character in the surrogate * @param next The next character in the surrogate */ static void throwInvalidUTF16SurrogateException( XalanDOMChar ch, XalanDOMChar next, MemoryManager& theManager); /** * Throw an exception when an invalid * character is encountered. * @param ch The first character in the surrogate * @param next The next character in the surrogate */ static void throwInvalidCharacterException( XalanUnicodeChar ch, MemoryManager& theManager); /** * Throw an exception when an invalid * character for the specific XML version is encountered. * @param ch The first character in the surrogate * @param next The next character in the surrogate */ static void throwInvalidXMLCharacterException( XalanUnicodeChar ch, const XalanDOMString& theXMLversion, MemoryManager& theManager); private: // These are not implemented. XalanXMLSerializerBase(const XalanXMLSerializerBase&); XalanXMLSerializerBase& operator=(const XalanXMLSerializerBase&); bool operator==(const XalanXMLSerializerBase&) const; // Data members... /** * Flag to tell that we need to add the doctype decl, * which we can't do until the first element is * encountered. */ bool m_needToOutputDoctypeDecl; /** * If true, XML header should be written to output. */ bool m_shouldWriteXMLHeader; /** * A stack of Boolean objects that tell if the given element * has children. */ BoolStackType m_elemStack; /** * The string "-//W3C//DTD XHTML". */ static const XalanDOMChar s_xhtmlDocTypeString[]; static const size_type s_xhtmlDocTypeStringLength; }; XALAN_CPP_NAMESPACE_END #endif // XALANXMLSERIALIZERBASE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XMLSupport/FormatterToText.hpp0000664000175000000640000001376411731656103022127 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FORMATTERTOTEXT_HEADER_GUARD_1357924680) #define FORMATTERTOTEXT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN class Writer; /** * This class takes SAX events (in addition to some extra events * that SAX doesn't handle yet) and produces simple text only. */ class XALAN_XMLSUPPORT_EXPORT FormatterToText : public FormatterListener { public: /** * FormatterToText instance constructor. */ FormatterToText(MemoryManager& theManager XALAN_DEFAULT_CONSTRUCTOR_MEMMGR); /** * FormatterToText instance constructor. * * @param writer writer for output * @param normalizeLindefeed Normalize \n or \r\n (on certain platforms). * @param handleIgnorableWhitespace If true ignorableWhitespace() will write data to the Writer */ FormatterToText( Writer& writer, bool normalizeLinefeed = true, bool handleIgnorableWhitespace = true, MemoryManager& theManager XALAN_DEFAULT_MEMMGR); /** * FormatterToText instance constructor. * * @param writer writer for output * @param encoding character encoding for the writer * @param normalizeLindefeed Normalize \n or \r\n on certain platforms. * @param handleIgnorableWhitespace If true ignorableWhitespace() will write data to the Writer */ FormatterToText( Writer& writer, const XalanDOMString& encoding, bool normalizeLinefeed = true, bool handleIgnorableWhitespace = true, MemoryManager& theManager XALAN_DEFAULT_MEMMGR); static FormatterToText* create( MemoryManager& theManager, Writer& writer, const XalanDOMString& encoding, bool normalizeLinefeed = true, bool handleIgnorableWhitespace = true); virtual ~FormatterToText(); MemoryManager& getMemoryManager() { return m_encoding.getMemoryManager(); } Writer* getWriter() const { return m_writer; } void setWriter(Writer* theWriter) { m_writer = theWriter; update(false); } void clearEncoding(); const XalanDOMString& getEncoding() const { return m_encoding; } void setEncoding(const XalanDOMString& theEncoding) { m_encoding = theEncoding; update(false); } XalanDOMChar getMaxCharacter() const { return m_maxCharacter; } void setMaxCharacter(XalanDOMChar theMaxChar) { m_maxCharacter = theMaxChar; } bool getNormalizeLinefeed() const { return m_normalize; } void setNormalizeLinefeed(bool fNormalize) { m_normalize = fNormalize; } bool getHandleIgnorableWhitespace() const { return m_handleIgnorableWhitespace; } void setHandleIgnorableWhitespace(bool fHandle) { m_handleIgnorableWhitespace = fHandle; } // These methods are inherited from FormatterListener ... virtual void setDocumentLocator(const Locator* const locator); virtual void startDocument(); virtual void endDocument(); virtual void startElement( const XMLCh* const name, AttributeListType& attrs); virtual void endElement(const XMLCh* const name); virtual void characters( const XMLCh* const chars, const size_type length); virtual void charactersRaw( const XMLCh* const chars, const size_type length); virtual void entityReference(const XMLCh* const name); virtual void ignorableWhitespace( const XMLCh* const chars, const size_type length); virtual void processingInstruction( const XMLCh* const target, const XMLCh* const data); virtual void resetDocument(); virtual void comment(const XMLCh* const data); virtual void cdata( const XMLCh* const ch, const size_type length); private: // These are not implemented. FormatterToText(const FormatterToText&); FormatterToText& operator=(const FormatterToText&); bool operator==(const FormatterToText&) const; // Utility function to update various member variables // when data changes. void update(bool fNormalizationOnly); // Data members... Writer* m_writer; XalanDOMChar m_maxCharacter; XalanDOMString m_encoding; bool m_haveEncoding; bool m_normalize; bool m_handleIgnorableWhitespace; const XalanDOMChar* m_newlineString; XalanDOMString::size_type m_newlineStringLength; }; XALAN_CPP_NAMESPACE_END #endif // FORMATTERTOTEXT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XMLSupport/XMLSupportException.hpp0000664000175000000640000000331011731656103022712 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XMLSUPPORTEXCEPTION_HEADER_GUARD_1357924680) #define XMLSUPPORTEXCEPTION_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN class XalanDOMString; class XALAN_XMLSUPPORT_EXPORT XMLSupportException : public XSLException { public: /** * Construct an XML Support exception object * * @param theMessage message to print when exception thrown */ XMLSupportException( const XalanDOMString& theMessage, MemoryManager& theManager, const Locator* theLocator); XMLSupportException(const XMLSupportException& other); virtual ~XMLSupportException(); private: }; XALAN_CPP_NAMESPACE_END #endif // XMLSUPPORTEXCEPTION_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XMLSupport/XalanUTF16Writer.cpp0000664000175000000640000000222511731656103021763 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanUTF16Writer.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanUTF16Writer::XalanUTF16Writer( Writer& writer, MemoryManager& theMemoryManager) : XalanFormatterWriter( writer, theMemoryManager), m_buffer(), m_bufferPosition(m_buffer), m_bufferRemaining(kBufferSize) { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XMLSupport/FormatterToXML.cpp0000664000175000000640000013571011731656103021632 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "FormatterToXML.hpp" #include #include #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN static const XalanDOMChar theDefaultAttrSpecialChars[] = { XalanUnicode::charLessThanSign, XalanUnicode::charGreaterThanSign, XalanUnicode::charAmpersand, XalanUnicode::charQuoteMark, XalanUnicode::charCR, XalanUnicode::charLF, 0 }; FormatterToXML::FormatterToXML( Writer& writer, const XalanDOMString& version, bool doIndent, int indent, const XalanDOMString& encoding, const XalanDOMString& mediaType, const XalanDOMString& doctypeSystem, const XalanDOMString& doctypePublic, bool xmlDecl, const XalanDOMString& standalone, eFormat format, bool fBufferData, MemoryManager& theManager) : FormatterListener(format), m_writer(&writer), m_stream(m_writer->getStream()), m_maxCharacter(0), #if !defined(XALAN_NO_DEFAULT_BUILTIN_ARRAY_INITIALIZATION) m_attrCharsMap(), m_charsMap(), #endif m_shouldWriteXMLHeader(xmlDecl), m_ispreserve(false), m_doIndent(doIndent), m_startNewLine(false), m_needToOutputDocTypeDecl(true), m_isprevtext(false), m_stripCData(false), m_nextIsRaw(false), m_inCData(false), m_encodingIsUTF(false), m_doctypeSystem(doctypeSystem, theManager), m_doctypePublic(doctypePublic, theManager), m_encoding(theManager), m_currentIndent(0), m_indent(indent), m_preserves(theManager), m_stringBuffer(theManager), m_bytesEqualChars(false), m_shouldFlush(fBufferData), m_spaceBeforeClose(false), m_escapeCData(false), m_version(version, theManager), m_standalone(standalone, theManager), m_mediaType(mediaType, theManager), m_attrSpecialChars(theDefaultAttrSpecialChars, theManager), m_charBuf(theManager), m_pos(0), m_byteBuf(theManager), m_elemStack(theManager), m_accumNameCharFunction(0), m_accumNameStringFunction(0), m_accumNameDOMStringFunction(0), m_accumNameArrayFunction(0), m_accumContentCharFunction(0), m_accumContentStringFunction(0), m_accumContentDOMStringFunction(0), m_accumContentArrayFunction(0), m_flushFunction(0), m_newlineString(0), m_newlineStringLength(0), m_isXML1_1(false) { if (encoding.empty() == false) { m_encoding = encoding; } else { m_encoding = XalanDOMString(XalanTranscodingServices::s_utf8String, theManager); } assert(m_encoding.empty() == false); if(m_doctypePublic.empty() == false) { if(startsWith( m_doctypePublic, s_xhtmlDocTypeString) == true) { m_spaceBeforeClose = true; } } if (m_stream == 0) { m_newlineString = XalanOutputStream::defaultNewlineString(); } else { try { m_stream->setOutputEncoding(m_encoding); } catch(const XalanOutputStream::UnsupportedEncodingException&) { // Default to UTF-8 if the requested encoding is not supported... m_stream->setOutputEncoding(XalanDOMString(XalanTranscodingServices::s_utf8String, theManager)); m_encoding = XalanTranscodingServices::s_utf8String; } m_newlineString = m_stream->getNewlineString(); } assert(m_newlineString != 0); m_newlineStringLength = length(m_newlineString); m_maxCharacter = XalanTranscodingServices::getMaximumCharacterValue(m_encoding); // We cannot omit the XML declaration if the encoding is not UTF-8 or // UTF-16, or if there is a standalone declaration const bool canOmitXMLDeclaration = (XalanTranscodingServices::encodingIsUTF8(m_encoding) || XalanTranscodingServices::encodingIsUTF16(m_encoding)) && m_standalone.length() == 0; if (canOmitXMLDeclaration == false && m_shouldWriteXMLHeader == false) { m_shouldWriteXMLHeader = true; } //OK, now we can determine if the encoding is UTF* m_encodingIsUTF = canOmitXMLDeclaration || XalanTranscodingServices::encodingIsUTF32(m_encoding); if (m_version.empty() != true && DoubleSupport::equal(DOMStringToDouble(m_version, theManager), 1.1) == true) { m_isXML1_1 = true; } #if 1 if (m_encodingIsUTF == true) { if (fBufferData == false) { m_accumNameCharFunction = &FormatterToXML::accumCharUTFDirect; m_accumContentCharFunction = &FormatterToXML::accumCharUTFDirect; m_accumNameStringFunction = &FormatterToXML::accumStringUTFDirect; m_accumContentStringFunction = &FormatterToXML::accumStringUTFDirect; m_accumNameDOMStringFunction = &FormatterToXML::accumDOMStringUTFDirect; m_accumContentDOMStringFunction = &FormatterToXML::accumDOMStringUTFDirect; m_accumNameArrayFunction = &FormatterToXML::accumArrayUTFDirect; m_accumContentArrayFunction = &FormatterToXML::accumArrayUTFDirect; } else { m_charBuf.resize(s_maxBufferSize); m_accumNameCharFunction = &FormatterToXML::accumCharUTF; m_accumContentCharFunction = &FormatterToXML::accumCharUTF; m_accumNameStringFunction = &FormatterToXML::accumStringUTF; m_accumContentStringFunction = &FormatterToXML::accumStringUTF; m_accumNameDOMStringFunction = &FormatterToXML::accumDOMStringUTF; m_accumContentDOMStringFunction = &FormatterToXML::accumDOMStringUTF; m_accumNameArrayFunction = &FormatterToXML::accumArrayUTF; m_accumContentArrayFunction = &FormatterToXML::accumArrayUTF; } } else { if (fBufferData == false) { m_accumNameCharFunction = &FormatterToXML::accumNameAsCharDirect; m_accumContentCharFunction = &FormatterToXML::accumContentAsCharDirect; } else { m_charBuf.resize(s_maxBufferSize); m_accumNameCharFunction = &FormatterToXML::accumNameAsChar; m_accumContentCharFunction = &FormatterToXML::accumContentAsChar; } m_accumNameStringFunction = &FormatterToXML::accumNameString; m_accumContentStringFunction = &FormatterToXML::accumContentString; m_accumNameDOMStringFunction = &FormatterToXML::accumNameDOMString; m_accumContentDOMStringFunction = &FormatterToXML::accumContentDOMString; m_accumNameArrayFunction = &FormatterToXML::accumNameArray; m_accumContentArrayFunction = &FormatterToXML::accumContentArray; } m_flushFunction = &FormatterToXML::flushChars; #else if (XalanTranscodingServices::getBytesEqualChars(m_encoding) == true) { m_bytesEqualChars = true; if (fBufferData == false) { m_accumNameCharFunction = &FormatterToXML::accumNameAsByteDirect; m_accumContentCharFunction = &FormatterToXML::accumContentAsByteDirect; } else { m_byteBuf.resize(s_maxBufferSize); m_accumNameCharFunction = &FormatterToXML::accumNameAsByte; m_accumContentCharFunction = &FormatterToXML::accumContentAsByte; } m_accumNameStringFunction = &FormatterToXML::accumNameString; m_accumContentStringFunction = &FormatterToXML::accumContentString; m_accumNameDOMStringFunction = &FormatterToXML::accumNameDOMString; m_accumContentDOMStringFunction = &FormatterToXML::accumContentDOMString; m_accumNameArrayFunction = &FormatterToXML::accumNameArray; m_accumContentArrayFunction = &FormatterToXML::accumContentArray; m_flushFunction = &FormatterToXML::flushBytes; } else { if (fBufferData == false) { m_accumNameCharFunction = &FormatterToXML::accumNameAsCharDirect; m_accumContentCharFunction = &FormatterToXML::accumContentAsCharDirect; } else { m_charBuf.resize(s_maxBufferSize); m_accumNameCharFunction = &FormatterToXML::accumNameAsChar; m_accumContentCharFunction = &FormatterToXML::accumContentAsChar; } m_flushFunction = &FormatterToXML::flushChars; } #endif // Do this last so we initialize the map according to the value of // m_maxCharacter for the encoding. initCharsMap(); } FormatterToXML* FormatterToXML::create( MemoryManager& theManager, Writer& writer, const XalanDOMString& version, bool doIndent, int indent, const XalanDOMString& encoding, const XalanDOMString& mediaType, const XalanDOMString& doctypeSystem, const XalanDOMString& doctypePublic, bool xmlDecl, const XalanDOMString& standalone, eFormat format, bool fBufferData) { typedef FormatterToXML ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( writer, version, doIndent, indent, encoding, mediaType, doctypeSystem, doctypePublic, xmlDecl, standalone, format, fBufferData, theManager); theGuard.release(); return theResult; } FormatterToXML::~FormatterToXML() { } void FormatterToXML::initAttrCharsMap() { #if defined(XALAN_STRICT_ANSI_HEADERS) std::memset(m_attrCharsMap, 0, sizeof(m_attrCharsMap)); #else memset(m_attrCharsMap, 0, sizeof(m_attrCharsMap)); #endif const XalanDOMString::size_type nSpecials = m_attrSpecialChars.length(); { for(XalanDOMString::size_type i = 0; i < nSpecials; ++i) { m_attrCharsMap[m_attrSpecialChars[i]] = 'S'; } } m_attrCharsMap[XalanUnicode::charHTab] = 'S'; m_attrCharsMap[XalanUnicode::charLF] = 'S'; m_attrCharsMap[XalanUnicode::charCR] = 'S'; for(size_t i = 1; i < 0x20; i++) { m_attrCharsMap[i] = 'S'; } for(size_t j = 0x7F; j < 0x9F; j++) { m_attrCharsMap[j] = 'S'; } } void FormatterToXML::initCharsMap() { initAttrCharsMap(); #if defined(XALAN_STRICT_ANSI_HEADERS) std::memset(m_charsMap, 0, sizeof(m_charsMap)); #else memset(m_charsMap, 0, sizeof(m_charsMap)); #endif m_charsMap[XalanUnicode::charLessThanSign] = 'S'; m_charsMap[XalanUnicode::charGreaterThanSign] = 'S'; m_charsMap[XalanUnicode::charAmpersand] = 'S'; for(size_t i = 1; i < 0x20; i++) { m_charsMap[i] = 'S'; } for(size_t j = 0x7F; j < 0x9F; j++) { m_charsMap[j] = 'S'; } m_charsMap[9] = '\0'; assert(m_maxCharacter != 0); for(XalanDOMChar k = m_maxCharacter; k < SPECIALSSIZE; ++k) { m_charsMap[k] = 'S'; } } void FormatterToXML::outputDocTypeDecl(const XalanDOMChar* name) { // " m_maxCharacter) { m_byteBuf[m_pos++] = char(XalanUnicode::charQuestionMark); } else { m_byteBuf[m_pos++] = char(ch); } if(m_pos == s_maxBufferSize) { flushBytes(); } } void FormatterToXML::accumNameAsByteDirect(XalanDOMChar ch) { assert(m_stream != 0); if (ch > m_maxCharacter) { m_stream->write(char(XalanUnicode::charQuestionMark)); } else { m_stream->write(char(ch)); } } void FormatterToXML::accumContentAsByte(XalanDOMChar ch) { if (ch > m_maxCharacter) { writeNumberedEntityReference(ch); } else { m_byteBuf[m_pos++] = char(ch); } if(m_pos == s_maxBufferSize) { flushBytes(); } } void FormatterToXML::accumContentAsByteDirect(XalanDOMChar ch) { assert(m_stream != 0); if (ch > m_maxCharacter) { writeNumberedEntityReference(ch); } else { m_stream->write(char(ch)); } } void FormatterToXML::accumNameAsChar(XalanDOMChar ch) { if (ch > m_maxCharacter) { m_charBuf[m_pos++] = XalanUnicode::charQuestionMark; } else { m_charBuf[m_pos++] = ch; } if(m_pos == s_maxBufferSize) { flushChars(); } } void FormatterToXML::accumNameAsCharDirect(XalanDOMChar ch) { assert(m_stream != 0); if (ch > m_maxCharacter) { m_stream->write(XalanDOMChar(XalanUnicode::charQuestionMark)); } else { m_stream->write(ch); } } void FormatterToXML::accumContentAsChar(XalanDOMChar ch) { if (ch > m_maxCharacter) { writeNumberedEntityReference(ch); } else { m_charBuf[m_pos++] = ch; } if(m_pos == s_maxBufferSize) { flushChars(); } } void FormatterToXML::accumContentAsCharDirect(XalanDOMChar ch) { assert(m_stream != 0); if (ch > m_maxCharacter) { writeNumberedEntityReference(ch); } else { m_stream->write(ch); } } void FormatterToXML::accumCharUTF(XalanDOMChar ch) { assert(m_maxCharacter >= 65535); m_charBuf[m_pos++] = ch; if(m_pos == s_maxBufferSize) { flushChars(); } } void FormatterToXML::accumCharUTFDirect(XalanDOMChar ch) { assert(m_maxCharacter >= 65535); assert(m_stream != 0); m_stream->write(ch); } void FormatterToXML::accumNameString(const XalanDOMChar* chars) { for(; *chars!= 0; ++chars) { accumName(*chars); } } void FormatterToXML::accumStringUTF(const XalanDOMChar* chars) { for(; *chars!= 0; ++chars) { accumCharUTF(*chars); } } void FormatterToXML::accumStringUTFDirect(const XalanDOMChar* chars) { assert(m_maxCharacter >= 65535); assert(m_stream != 0); m_stream->write(chars); } void FormatterToXML::accumContentString(const XalanDOMChar* chars) { for(; *chars!= 0; ++chars) { accumContent(*chars); } } void FormatterToXML::accumNameArray( const XalanDOMChar chars[], size_type start, size_type length) { const size_type n = start + length; for(size_type i = start; i < n; ++i) { accumName(chars[i]); } } void FormatterToXML::accumContentArray( const XalanDOMChar chars[], size_type start, size_type length) { const size_type n = start + length; for(size_type i = start; i < n; ++i) { accumContent(chars[i]); } } void FormatterToXML::accumArrayUTF( const XalanDOMChar chars[], size_type start, size_type length) { const size_type n = start + length; for(size_type i = start; i < n; ++i) { accumCharUTF(chars[i]); } } void FormatterToXML::accumArrayUTFDirect( const XalanDOMChar chars[], size_type start, size_type length) { assert(m_maxCharacter >= 65535); assert(m_stream != 0); m_stream->write(chars + start, length); } void FormatterToXML::accumNameDOMString(const XalanDOMString& str) { accumName(str.c_str(), 0, str.length()); } void FormatterToXML::accumContentDOMString(const XalanDOMString& str) { accumContent(str.c_str(), 0, str.length()); } void FormatterToXML::accumDOMStringUTF(const XalanDOMString& str) { accumArrayUTF(str.c_str(), 0, str.length()); } void FormatterToXML::accumDOMStringUTFDirect(const XalanDOMString& str) { assert(m_maxCharacter >= 65535); assert(m_stream != 0); m_stream->write(str.c_str(), str.length()); } XALAN_USING_XERCES(SAXException) void FormatterToXML::throwInvalidUTF16SurrogateException( XalanDOMChar ch, MemoryManager& theManager) { XalanDOMString chStr(theManager); NumberToHexDOMString(ch, chStr); XalanDOMString theMessage(theManager); XalanMessageLoader::getMessage( theMessage, XalanMessages::InvalidHighSurrogate_1Param, chStr); throw SAXException(theMessage.c_str(), &theManager); } void FormatterToXML::throwInvalidCharacterException( XalanUnicodeChar ch, MemoryManager& theManager) { XalanDOMString theMessage(theManager); XalanDOMString theBuffer(theManager); XalanMessageLoader::getMessage( theMessage, XalanMessages::InvalidScalar_1Param, NumberToHexDOMString(ch, theBuffer)); XALAN_USING_XERCES(SAXException) throw SAXException(theMessage.c_str(), &theManager); } void FormatterToXML::throwInvalidUTF16SurrogateException( XalanDOMChar ch, XalanDOMChar next, MemoryManager& theManager) { XalanDOMString chStr1(theManager); XalanDOMString chStr2(theManager); NumberToHexDOMString(ch, chStr1); NumberToHexDOMString(next, chStr2); XalanDOMString theMessage(theManager); XalanMessageLoader::getMessage( theMessage, XalanMessages::InvalidSurrogatePair_2Param, chStr1, chStr2); throw SAXException(theMessage.c_str(), &theManager); } FormatterToXML::size_type FormatterToXML::accumDefaultEscape( XalanDOMChar ch, size_type i, const XalanDOMChar chars[], size_type len, bool escLF) { if(!accumDefaultEntity(ch, escLF)) { if (0xd800 <= ch && ch < 0xdc00) { // UTF-16 surrogate unsigned long next = 0; if (i + 1 >= len) { throwInvalidUTF16SurrogateException(ch, getMemoryManager()); } else { next = chars[++i]; if (!(0xdc00u <= next && next < 0xe000u)) { throwInvalidUTF16SurrogateException(ch, XalanDOMChar(next), getMemoryManager()); } next = ((ch - 0xd800u) << 10) + next - 0xdc00u + 0x00010000u; } writeNumberedEntityReference(next); } else { if(ch > m_maxCharacter) { if( !m_isXML1_1 && XalanUnicode::charLSEP == ch ) { throwInvalidCharacterException(ch, getMemoryManager()); } else { writeNumberedEntityReference(ch); } } else if(ch < SPECIALSSIZE && m_attrCharsMap[ch] == 'S') { if(ch < 0x20 ) { if(m_isXML1_1) { writeNumberedEntityReference(ch); } else { throwInvalidCharacterException(ch, getMemoryManager()); } } else if( XalanUnicode::charNEL == ch ) { if(m_isXML1_1) { writeNumberedEntityReference(ch); } else { throwInvalidCharacterException(ch, getMemoryManager()); } } else { writeNumberedEntityReference(ch); } } else { accumContent(ch); } } } return i; } bool FormatterToXML::accumDefaultEntity( XalanDOMChar ch, bool escLF) { if (escLF == false && XalanUnicode::charLF == ch) { outputLineSep(); } else if (XalanUnicode::charLessThanSign == ch) { accumContent(XalanUnicode::charAmpersand); accumContent(XalanUnicode::charLetter_l); accumContent(XalanUnicode::charLetter_t); accumContent(XalanUnicode::charSemicolon); } else if (XalanUnicode::charGreaterThanSign == ch) { accumContent(XalanUnicode::charAmpersand); accumContent(XalanUnicode::charLetter_g); accumContent(XalanUnicode::charLetter_t); accumContent(XalanUnicode::charSemicolon); } else if (XalanUnicode::charAmpersand == ch) { accumContent(XalanUnicode::charAmpersand); accumContent(XalanUnicode::charLetter_a); accumContent(XalanUnicode::charLetter_m); accumContent(XalanUnicode::charLetter_p); accumContent(XalanUnicode::charSemicolon); } else if (XalanUnicode::charQuoteMark == ch) { accumContent(XalanUnicode::charAmpersand); accumContent(XalanUnicode::charLetter_q); accumContent(XalanUnicode::charLetter_u); accumContent(XalanUnicode::charLetter_o); accumContent(XalanUnicode::charLetter_t); accumContent(XalanUnicode::charSemicolon); } else if (XalanUnicode::charApostrophe == ch) { accumContent(XalanUnicode::charAmpersand); accumContent(XalanUnicode::charLetter_a); accumContent(XalanUnicode::charLetter_p); accumContent(XalanUnicode::charLetter_o); accumContent(XalanUnicode::charLetter_s); accumContent(XalanUnicode::charSemicolon); } else { return false; } return true; } void FormatterToXML::flushChars() { assert(m_charBuf.empty() == false && m_charBuf.size() >= m_pos); m_writer->write(&m_charBuf[0], 0, m_pos); m_pos = 0; } void FormatterToXML::flushBytes() { assert(m_byteBuf.empty() == false && m_byteBuf.size() >= m_pos); m_writer->write(&m_byteBuf[0], 0, m_pos); m_pos = 0; } void FormatterToXML::flushWriter() { assert(m_writer != 0); m_writer->flush(); } void FormatterToXML::setDocumentLocator(const Locator* const /* locator */) { // I don't do anything with this yet. } void FormatterToXML::startDocument() { // Clear the buffer, just in case... m_stringBuffer.clear(); m_needToOutputDocTypeDecl = true; m_startNewLine = false; if(m_shouldWriteXMLHeader == true) { // "*m_flushFunction)(); } flushWriter(); } void FormatterToXML::startElement( const XMLCh* const name, AttributeListType& attrs) { if(true == m_needToOutputDocTypeDecl && m_doctypeSystem.empty() == false) { outputDocTypeDecl(name); m_needToOutputDocTypeDecl = false; } writeParentTagEnd(); m_ispreserve = false; if (shouldIndent() == true && m_startNewLine == true) { indent(m_currentIndent); } m_startNewLine = true; accumName(XalanUnicode::charLessThanSign); accumName(name); const XalanSize_t nAttrs = attrs.getLength(); for (XalanSize_t i = 0; i < nAttrs ; i++) { processAttribute(attrs.getName(i), attrs.getValue(i)); } // Flag the current element as not yet having any children. openElementForChildren(); m_currentIndent += m_indent; m_isprevtext = false; } void FormatterToXML::endElement(const XMLCh* const name) { m_currentIndent -= m_indent; const bool hasChildNodes = childNodesWereAdded(); if (hasChildNodes == true) { if (shouldIndent() == true) { indent(m_currentIndent); } accumName(XalanUnicode::charLessThanSign); accumName(XalanUnicode::charSolidus); accumName(name); } else { if(m_spaceBeforeClose == true) { accumName(XalanUnicode::charSpace); } accumName(XalanUnicode::charSolidus); } accumName(XalanUnicode::charGreaterThanSign); if (hasChildNodes == true) { if (m_preserves.empty() == true) { m_ispreserve = false; } else { m_ispreserve = m_preserves.back(); m_preserves.pop_back(); } } m_isprevtext = false; } void FormatterToXML::processingInstruction( const XMLCh* const target, const XMLCh* const data) { // Use a fairly nasty hack to tell if the next node is supposed to be // unescaped text. if(equals(target, length(target), s_piTarget, s_piTargetLength) == true && equals(data, length(data), s_piData, s_piDataLength) == true) { m_nextIsRaw = true; } else { writeParentTagEnd(); if (shouldIndent() == true) { indent(m_currentIndent); } accumName(XalanUnicode::charLessThanSign); accumName(XalanUnicode::charQuestionMark); accumName(target); const XalanDOMString::size_type len = length(data); if ( len > 0 && !isXMLWhitespace(data[0])) { accumName(XalanUnicode::charSpace); } accumNormalizedPIData(data, len); accumName(XalanUnicode::charQuestionMark); accumName(XalanUnicode::charGreaterThanSign); m_startNewLine = true; } } void FormatterToXML::characters( const XMLCh* const chars, const size_type length) { if(length != 0) { if(m_inCData == true) { cdata(chars, length); } else if(m_nextIsRaw) { m_nextIsRaw = false; charactersRaw(chars, length); } else { writeParentTagEnd(); m_ispreserve = true; size_type i = 0; size_type firstIndex = 0; while(i < length) { const XalanDOMChar ch = chars[i]; if((ch < SPECIALSSIZE && m_charsMap[ch] == 'S') || ch > m_maxCharacter) { accumContent(chars, firstIndex, i - firstIndex); i = accumDefaultEscape(ch, i, chars, length, false); ++i; firstIndex = i; } else { ++i; } } accumContent(chars, firstIndex, i - firstIndex); if (m_isprevtext == false) { m_isprevtext = true; } } } } void FormatterToXML::charactersRaw( const XMLCh* const chars, const size_type length) { writeParentTagEnd(); m_ispreserve = true; accumContent(chars, 0, length); } Writer* FormatterToXML::getWriter() const { return m_writer; } const XalanDOMString& FormatterToXML::getDoctypeSystem() const { return m_doctypeSystem; } const XalanDOMString& FormatterToXML::getDoctypePublic() const { return m_doctypePublic; } const XalanDOMString& FormatterToXML::getEncoding() const { return m_encoding; } const XalanDOMString& FormatterToXML::getMediaType() const { return m_mediaType; } int FormatterToXML::getIndent() const { return m_indent; } void FormatterToXML::writeAttrString( const XalanDOMChar* theString, size_type theStringLength) { assert(theString != 0); size_type i = 0; size_type firstIndex = 0; while(i < theStringLength) { const XalanDOMChar ch = theString[i]; if((ch < SPECIALSSIZE && m_attrCharsMap[ch] == 'S') || ch > m_maxCharacter) { accumContent(theString, firstIndex, i - firstIndex); i = accumDefaultEscape(ch, i, theString, theStringLength, true); ++i; firstIndex = i; } else { ++i; } } accumContent(theString, firstIndex, i - firstIndex); } void FormatterToXML::accumCommentData(const XalanDOMChar* data) { accumContent(data); } void FormatterToXML::writeNormalizedChars( const XalanDOMChar ch[], size_type start, size_type length, bool isCData) { size_type end = start + length; for(size_type i = start; i < end; ++i) { const XalanDOMChar c = ch[i]; if (XalanUnicode::charCR == c && i + 1 < end && XalanUnicode::charLF == ch[i + 1]) { outputLineSep(); i++; } else if(XalanUnicode::charLF == c) { outputLineSep(); } else if(isCData == true && c > m_maxCharacter) { if(i != 0) { accumContent(s_dtdCDATACloseString, 0, s_dtdCDATACloseStringLength); } // This needs to go into a function... if (0xd800u <= unsigned(c) && unsigned(c) < 0xdc00) { // UTF-16 surrogate XalanDOMChar next = 0; if (i + 1 >= end) { throwInvalidUTF16SurrogateException(c,getMemoryManager()); } else { next = ch[++i]; if (!(0xdc00 <= next && next < 0xe000)) { throwInvalidUTF16SurrogateException(c, next, getMemoryManager()); } next = XalanDOMChar(((c - 0xd800) << 10) + next - 0xdc00 + 0x00010000); } writeNumberedEntityReference(next); } else { writeNumberedEntityReference(c); } if(i != 0 && i < end - 1) { // "" accumContent(XalanUnicode::charRightSquareBracket); accumContent(XalanUnicode::charRightSquareBracket); accumContent(XalanUnicode::charRightSquareBracket); accumContent(XalanUnicode::charRightSquareBracket); accumContent(XalanUnicode::charGreaterThanSign); accumContent(XalanUnicode::charLessThanSign); accumContent(XalanUnicode::charExclamationMark); accumContent(XalanUnicode::charLeftSquareBracket); accumContent(XalanUnicode::charLetter_C); accumContent(XalanUnicode::charLetter_D); accumContent(XalanUnicode::charLetter_A); accumContent(XalanUnicode::charLetter_T); accumContent(XalanUnicode::charLetter_A); accumContent(XalanUnicode::charLeftSquareBracket); accumContent(XalanUnicode::charGreaterThanSign); i += 2; } else { if(c <= m_maxCharacter) { accumContent(c); } // This needs to go into a function... else if (0xd800 <= c && c < 0xdc00) { // UTF-16 surrogate if (i + 1 >= end) { throwInvalidUTF16SurrogateException(c, getMemoryManager()); } else { XalanUnicodeChar next = ch[++i]; if (!(0xdc00 <= next && next < 0xe000)) { throwInvalidUTF16SurrogateException(c, static_cast(next), getMemoryManager()); } next = ((c - 0xd800) << 10) + next - 0xdc00 + 0x00010000; writeNumberedEntityReference(next); } } else { writeNumberedEntityReference(c); } } } } void FormatterToXML::writeNumberedEntityReference(XalanUnicodeChar theNumber) { accumContent(XalanUnicode::charAmpersand); accumContent(XalanUnicode::charNumberSign); accumContent(NumberToDOMString(theNumber, m_stringBuffer)); m_stringBuffer.clear(); accumContent(XalanUnicode::charSemicolon); } void FormatterToXML::entityReference(const XMLCh* const name) { writeParentTagEnd(); if (shouldIndent() == true) { indent(m_currentIndent); } accumName(XalanUnicode::charAmpersand); accumName(name); accumName(XalanUnicode::charSemicolon); } void FormatterToXML::ignorableWhitespace( const XMLCh* const chars, const size_type length) { #if 1 // We need to do normalization, which is slower, // but there you have it... if (length > 0) { characters(chars, length); } #else // We'ed like to be able to do this... if(length != 0) { assert(isXMLWhitespace(chars, 0, length)); if(m_inCData == true) { cdata(chars, length); } else if(m_nextIsRaw) { m_nextIsRaw = false; charactersRaw(chars, length); } else { writeParentTagEnd(); m_ispreserve = true; accumContent(chars, 0, length); if (m_isprevtext == false) { m_isprevtext = true; } } } #endif } void FormatterToXML::resetDocument() { // I don't do anything with this yet. } void FormatterToXML::comment(const XMLCh* const data) { writeParentTagEnd(); if (shouldIndent() == true) { indent(m_currentIndent); } accumName(XalanUnicode::charLessThanSign); accumName(XalanUnicode::charExclamationMark); accumName(XalanUnicode::charHyphenMinus); accumName(XalanUnicode::charHyphenMinus); accumCommentData(data); accumName(XalanUnicode::charHyphenMinus); accumName(XalanUnicode::charHyphenMinus); accumName(XalanUnicode::charGreaterThanSign); m_startNewLine = true; } void FormatterToXML::cdata( const XMLCh* const ch, const size_type length) { if(m_nextIsRaw == true) { m_nextIsRaw = false; charactersRaw(ch, length); } else { if(m_escapeCData) // Should normally always be false. { characters(ch, length); } else { writeParentTagEnd(); m_ispreserve = true; if (shouldIndent() == true) { indent(m_currentIndent); } if(m_stripCData == false) { if(length >= 1 && ch[0] <= m_maxCharacter) { // "= 1 && ch[length - 1] <= m_maxCharacter) { accumContent(XalanUnicode::charRightSquareBracket); accumContent(XalanUnicode::charRightSquareBracket); accumContent(XalanUnicode::charGreaterThanSign); } } } } } void FormatterToXML::writeParentTagEnd() { if(!m_elemStack.empty()) { // See if the parent element has already been flagged as having children. if(false == m_elemStack.back()) { accumContent(XalanUnicode::charGreaterThanSign); m_isprevtext = false; m_elemStack.back() = true; m_preserves.push_back(m_ispreserve); } } } void FormatterToXML::openElementForChildren() { m_elemStack.push_back(false); } bool FormatterToXML::childNodesWereAdded() { bool fResult = false; if (m_elemStack.empty() == false) { fResult = m_elemStack.back(); m_elemStack.pop_back(); } return fResult; } void FormatterToXML::processAttribute( const XalanDOMChar* name, const XalanDOMChar* value) { accumContent(XalanUnicode::charSpace); accumName(name); accumContent(XalanUnicode::charEqualsSign); accumContent(XalanUnicode::charQuoteMark); writeAttrString(value, length(value)); accumContent(XalanUnicode::charQuoteMark); } void FormatterToXML::outputLineSep() { assert(m_newlineString != 0 && length(m_newlineString) == m_newlineStringLength); accumContent(m_newlineString, 0, m_newlineStringLength); } void FormatterToXML::printSpace(int n) { for (int i = 0; i < n; i ++) { accumContent(XalanUnicode::charSpace); } } void FormatterToXML::indent(int n) { if(m_startNewLine == true) { outputLineSep(); } if(m_doIndent == true) { printSpace(n); } } void FormatterToXML::accumNormalizedPIData( const XalanDOMChar* theData, size_type theLength) { for (size_type i = 0; i < theLength; ++i) { accumContent(theData[i]); } } #define FXML_SIZE(str) ((sizeof(str) / sizeof(str[0]) - 1)) const XalanDOMChar FormatterToXML::s_doctypeHeaderStartString[] = { XalanUnicode::charLessThanSign, XalanUnicode::charExclamationMark, XalanUnicode::charLetter_D, XalanUnicode::charLetter_O, XalanUnicode::charLetter_C, XalanUnicode::charLetter_T, XalanUnicode::charLetter_Y, XalanUnicode::charLetter_P, XalanUnicode::charLetter_E, XalanUnicode::charSpace, 0 }; const FormatterToXML::size_type FormatterToXML::s_doctypeHeaderStartStringLength = FXML_SIZE(s_doctypeHeaderStartString); const XalanDOMChar FormatterToXML::s_doctypeHeaderPublicString[] = { XalanUnicode::charSpace, XalanUnicode::charLetter_P, XalanUnicode::charLetter_U, XalanUnicode::charLetter_B, XalanUnicode::charLetter_L, XalanUnicode::charLetter_I, XalanUnicode::charLetter_C, XalanUnicode::charSpace, XalanUnicode::charQuoteMark, 0 }; const FormatterToXML::size_type FormatterToXML::s_doctypeHeaderPublicStringLength = FXML_SIZE(s_doctypeHeaderPublicString); const XalanDOMChar FormatterToXML::s_doctypeHeaderSystemString[] = { XalanUnicode::charSpace, XalanUnicode::charLetter_S, XalanUnicode::charLetter_Y, XalanUnicode::charLetter_S, XalanUnicode::charLetter_T, XalanUnicode::charLetter_E, XalanUnicode::charLetter_M, XalanUnicode::charSpace, XalanUnicode::charQuoteMark, 0 }; const FormatterToXML::size_type FormatterToXML::s_doctypeHeaderSystemStringLength = FXML_SIZE(s_doctypeHeaderSystemString); const XalanDOMChar FormatterToXML::s_xmlHeaderStartString[] = { XalanUnicode::charLessThanSign, XalanUnicode::charQuestionMark, XalanUnicode::charLetter_x, XalanUnicode::charLetter_m, XalanUnicode::charLetter_l, XalanUnicode::charSpace, XalanUnicode::charLetter_v, XalanUnicode::charLetter_e, XalanUnicode::charLetter_r, XalanUnicode::charLetter_s, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, XalanUnicode::charEqualsSign, XalanUnicode::charQuoteMark, 0 }; const FormatterToXML::size_type FormatterToXML::s_xmlHeaderStartStringLength = FXML_SIZE(s_xmlHeaderStartString); const XalanDOMChar FormatterToXML::s_xmlHeaderEncodingString[] = { XalanUnicode::charQuoteMark, XalanUnicode::charSpace, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_d, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_g, XalanUnicode::charEqualsSign, XalanUnicode::charQuoteMark, 0 }; const FormatterToXML::size_type FormatterToXML::s_xmlHeaderEncodingStringLength = FXML_SIZE(s_xmlHeaderEncodingString); const XalanDOMChar FormatterToXML::s_xmlHeaderStandaloneString[] = { XalanUnicode::charQuoteMark, XalanUnicode::charSpace, XalanUnicode::charLetter_s, XalanUnicode::charLetter_t, XalanUnicode::charLetter_a, XalanUnicode::charLetter_n, XalanUnicode::charLetter_d, XalanUnicode::charLetter_a, XalanUnicode::charLetter_l, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, XalanUnicode::charLetter_e, XalanUnicode::charEqualsSign, XalanUnicode::charQuoteMark, 0 }; const FormatterToXML::size_type FormatterToXML::s_xmlHeaderStandaloneStringLength = FXML_SIZE(s_xmlHeaderStandaloneString); const XalanDOMChar FormatterToXML::s_xmlHeaderEndString[] = { XalanUnicode::charQuoteMark, XalanUnicode::charQuestionMark, XalanUnicode::charGreaterThanSign, 0 }; const FormatterToXML::size_type FormatterToXML::s_xmlHeaderEndStringLength = FXML_SIZE(s_xmlHeaderEndString); const XalanDOMChar FormatterToXML::s_defaultVersionString[] = { XalanUnicode::charDigit_1, XalanUnicode::charFullStop, XalanUnicode::charDigit_0, 0 }; const FormatterToXML::size_type FormatterToXML::s_defaultVersionStringLength = FXML_SIZE(s_defaultVersionString); const XalanDOMChar FormatterToXML::s_dtdCDATACloseString[] = { XalanUnicode::charRightSquareBracket, XalanUnicode::charRightSquareBracket, XalanUnicode::charGreaterThanSign, 0 }; const FormatterToXML::size_type FormatterToXML::s_dtdCDATACloseStringLength = FXML_SIZE(s_dtdCDATACloseString); const XalanDOMChar FormatterToXML::s_xhtmlDocTypeString[] = { XalanUnicode::charHyphenMinus, XalanUnicode::charSolidus, XalanUnicode::charSolidus, XalanUnicode::charLetter_W, XalanUnicode::charDigit_3, XalanUnicode::charLetter_C, XalanUnicode::charSolidus, XalanUnicode::charSolidus, XalanUnicode::charLetter_D, XalanUnicode::charLetter_T, XalanUnicode::charLetter_D, XalanUnicode::charSpace, XalanUnicode::charLetter_X, XalanUnicode::charLetter_H, XalanUnicode::charLetter_T, XalanUnicode::charLetter_M, XalanUnicode::charLetter_L, 0 }; const FormatterToXML::size_type FormatterToXML::s_xhtmlDocTypeStringLength = FXML_SIZE(s_xhtmlDocTypeString); const XalanDOMString::size_type FormatterToXML::s_maxBufferSize = 512; XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XMLSupport/XalanUTF16Writer.hpp0000664000175000000640000001126611731656103021775 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANUTF16WRITER_HEADER_GUARD_1357924680) #define XALANUTF16WRITER_HEADER_GUARD_1357924680 #include XALAN_CPP_NAMESPACE_BEGIN class XalanUTF16Writer : public XalanFormatterWriter { public: typedef XalanDOMChar value_type; XalanUTF16Writer( Writer& writer, MemoryManager& theMemoryManager); virtual ~XalanUTF16Writer() { } /** * Output a line break. */ void outputNewline() { assert(m_newlineString != 0); assert(length(m_newlineString) == m_newlineStringLength); write( m_newlineString, m_newlineStringLength); } size_type writeCDATAChar( const XalanDOMChar chars[], size_type start, size_type /*length*/, bool& /* outsideCDATA */) { assert( chars != 0 ); write(chars[start]); return start; } /** * Writes name chars, if not representable, throws */ void writeNameChar( const XalanDOMChar* data, size_type theLength) { write(data, theLength); } /** * Writes name chars, if not representable, throws */ void writePIChars( const XalanDOMChar* data, size_type theLength) { write(data, theLength); } /** * Writes name chars, if not representable, throws */ void writeCommentChars( const XalanDOMChar* data, size_type theLength) { write(data, theLength); } void safeWriteContent( const XalanDOMChar* theChars, size_type theLength) { write(theChars, theLength); } void write( const value_type* theChars, size_type theLength) { if (theLength > kBufferSize) { flushBuffer(); m_writer.write(theChars, 0, theLength); } else { if (m_bufferRemaining < theLength) { flushBuffer(); } for(size_type i = 0; i < theLength; ++i) { *m_bufferPosition = theChars[i]; ++m_bufferPosition; } m_bufferRemaining -= theLength; } } void write(const XalanDOMString& theChars) { write(theChars.c_str(), theChars.length()); } void write(value_type theChar) { if (m_bufferRemaining == 0) { flushBuffer(); } *m_bufferPosition = theChar; ++m_bufferPosition; --m_bufferRemaining; } size_type write( const value_type chars[], size_type start, size_type /*length*/) { write(chars[start]); return start; } void writeSafe( const XalanDOMChar* theChars, size_type theLength) { write(theChars, theLength); } void write(const value_type* theChars) { write(theChars, XalanDOMString::length(theChars)); } void flushBuffer() { m_writer.write( m_buffer, 0, m_bufferPosition - m_buffer); m_bufferPosition = m_buffer; m_bufferRemaining = kBufferSize; } private: enum { kBufferSize = 512 // The size of the buffer }; // Data members... value_type m_buffer[kBufferSize]; value_type* m_bufferPosition; size_type m_bufferRemaining; }; XALAN_CPP_NAMESPACE_END #endif // XALANUTF16WRITER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XMLSupport/XMLParserLiaison.cpp0000664000175000000640000000175311731656103022136 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XMLParserLiaison.hpp" XALAN_CPP_NAMESPACE_BEGIN XMLParserLiaison::XMLParserLiaison() { } XMLParserLiaison::~XMLParserLiaison() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XMLSupport/FormatterToXML.hpp0000664000175000000640000007157111731656103021643 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FORMATTERTOXML_HEADER_GUARD_1357924680) #define FORMATTERTOXML_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN class Writer; class XalanOutputStream; /** * FormatterToXML formats SAX-style events into XML. */ class XALAN_XMLSUPPORT_EXPORT FormatterToXML : public FormatterListener { public: enum eDummy { eDefaultIndentAmount = 0 }; /** * Constructor for customized encoding and doctype. * * @param writer character output stream to use * @param version version of the output method * @param doIndent true if output is to be indented * @param indent number of spaces to indent at each nesting level * @param encoding character encoding in use by writer * @param mediaType media type (MIME content type) of the data * @param doctypeSystem system identifier to be used in the document * type declaration * @param doctypePublic public identifier to be used in the document * type declaration * @param xmlDecl true if the XSLT processor should output an XML * declaration * @param standalone true if the XSLT processor should output a * standalone document declaration * * @param format should be used only by derived classes. * @param fBufferData If true, data will be buffered in the formatter */ FormatterToXML( Writer& writer, const XalanDOMString& version = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), bool doIndent = false, int indent = eDefaultIndentAmount, const XalanDOMString& encoding = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), const XalanDOMString& mediaType = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), const XalanDOMString& doctypeSystem = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), const XalanDOMString& doctypePublic = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), bool xmlDecl = true, const XalanDOMString& standalone = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), eFormat format = OUTPUT_METHOD_XML, bool fBufferData = true, MemoryManager& theManager XALAN_DEFAULT_MEMMGR); static FormatterToXML* create( MemoryManager& theManager, Writer& writer, const XalanDOMString& version = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), bool doIndent = false, int indent = eDefaultIndentAmount, const XalanDOMString& encoding = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), const XalanDOMString& mediaType = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), const XalanDOMString& doctypeSystem = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), const XalanDOMString& doctypePublic = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), bool xmlDecl = true, const XalanDOMString& standalone = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), eFormat format = OUTPUT_METHOD_XML, bool fBufferData = true); virtual ~FormatterToXML(); MemoryManager& getMemoryManager() { return m_stringBuffer.getMemoryManager(); } // These methods are inherited from FormatterListener ... virtual void setDocumentLocator(const Locator* const locator); virtual void startDocument(); virtual void endDocument(); virtual void startElement( const XMLCh* const name, AttributeListType& attrs); virtual void endElement(const XMLCh* const name); virtual void characters( const XMLCh* const chars, const size_type length); virtual void charactersRaw( const XMLCh* const chars, const size_type length); virtual void entityReference(const XMLCh* const name); virtual void ignorableWhitespace( const XMLCh* const chars, const size_type length); virtual void processingInstruction( const XMLCh* const target, const XMLCh* const data); virtual void resetDocument(); virtual void comment(const XMLCh* const data); virtual void cdata( const XMLCh* const ch, const size_type length); virtual Writer* getWriter() const; virtual const XalanDOMString& getDoctypeSystem() const; virtual const XalanDOMString& getDoctypePublic() const; virtual const XalanDOMString& getEncoding() const; virtual const XalanDOMString& getMediaType() const; virtual int getIndent() const; const XalanDOMString& getVersion() const { return m_version; } const XalanDOMString& getStandalone() const { return m_standalone; } bool getShouldWriteXMLHeader() const { return m_shouldWriteXMLHeader; } void setShouldWriteXMLHeader(bool b) { m_shouldWriteXMLHeader = b; } bool getStripCData() const { return m_stripCData; } void setStripCData(bool b) { m_stripCData = b; } bool getEscapeCData() const { return m_escapeCData; } void setEscapeCData(bool b) { m_escapeCData = b; } bool getDoIndent() const { return m_doIndent; } void setDoIndent(bool value) { m_doIndent = value; } void setIndent(int value) { m_indent = value; } typedef XalanVector BoolStackType; typedef XalanVector DOMCharBufferType; typedef XalanVector ByteBufferType; protected: /** * The writer where the XML will be written. */ Writer* const m_writer; /** * The stream where the XML will be written. */ XalanOutputStream* const m_stream; /** * Output a line break. */ void outputLineSep(); typedef void (FormatterToXML::*AccumCharFunctionType)(XalanDOMChar); typedef void (FormatterToXML::*AccumStringFunctionType)(const XalanDOMChar*); typedef void (FormatterToXML::*AccumDOMStringFunctionType)(const XalanDOMString&); typedef void (FormatterToXML::*AccumArrayFunctionType)( const XalanDOMChar[], size_type, size_type); typedef void (FormatterToXML::*FlushFunctionType)(); /** * Append a wide character to the buffer. * * Characters that are not representable * in the encoding are not written as * entities. * * @ch the character to append. */ void accumName(XalanDOMChar ch) { assert(m_accumNameCharFunction != 0); (this->*m_accumNameCharFunction)(ch); } /** * Append a wide character to the buffer. * * @ch the character to append. */ void accumContent(XalanDOMChar ch) { assert(m_accumContentCharFunction != 0); (this->*m_accumContentCharFunction)(ch); } /** * Append a null-terminated array of wide characters to * the buffer. * * Characters that are not representable * in the encoding are not written as * entities. * * @chars the array to append */ void accumName(const XalanDOMChar* chars) { assert(m_accumNameStringFunction != 0); (this->*m_accumNameStringFunction)(chars); } /** * Append a null-terminated array of wide characters to * the buffer. * * @chars the array to append */ void accumContent(const XalanDOMChar* chars) { assert(m_accumContentStringFunction != 0); (this->*m_accumContentStringFunction)(chars); } /** * Append an array of wide character to the buffer. * * Characters that are not representable * in the encoding are not written as * entities. * * @chars the array to append * @start the offset into the array to start from * @length the number of characters to append */ void accumName( const XalanDOMChar chars[], size_type start, size_type length) { assert(m_accumNameArrayFunction != 0); (this->*m_accumNameArrayFunction)(chars, start, length); } /** * Append an array of wide character to the buffer. * * @chars the array to append * @start the offset into the array to start from * @length the number of characters to append */ void accumContent( const XalanDOMChar chars[], size_type start, size_type length) { assert(m_accumContentArrayFunction != 0); (this->*m_accumContentArrayFunction)(chars, start, length); } /** * Append a string to the buffer. * * Characters that are not representable * in the encoding are not written as * entities. * * @param str the string to append */ void accumName(const XalanDOMString& str) { assert(m_accumNameDOMStringFunction != 0); (this->*m_accumNameDOMStringFunction)(str); } /** * Append a string to the buffer. * * @param str the string to append */ void accumContent(const XalanDOMString& str) { assert(m_accumContentDOMStringFunction != 0); (this->*m_accumContentDOMStringFunction)(str); } /** * Escape and accum a character. */ size_type accumDefaultEscape( XalanDOMChar ch, size_type i, const XalanDOMChar chars[], size_type len, bool escLF); /** * Handle one of the default entities, return false if it * is not a default entity. */ virtual bool accumDefaultEntity( XalanDOMChar ch, bool escLF); /** * Set the attribute characters what will require special mapping. */ void initAttrCharsMap(); /** * Set the output characters what will require special mapping. */ void initCharsMap(); /** * Flush the char buffer. */ void flushChars(); /** * Flush the byte buffer. */ void flushBytes(); void flushWriter(); void openElementForChildren(); bool childNodesWereAdded(); bool shouldIndent() const { return m_doIndent && (!m_ispreserve && !m_isprevtext); } /** * Check to see if a parent's ">" has been written, and, if * it has not, write it. */ void writeParentTagEnd(); /** * Prints a newline character and n spaces. * @param n Number of spaces to print. */ void indent(int n); /** * Write normalized characters to the writer. * @param ch the string to write. * @param start the start offset into the string. * @param length the length of the string. * @param isCData true if writing CDATA. */ virtual void writeNormalizedChars( const XalanDOMChar ch[], size_type start, size_type length, bool isCData); /** * Write a number into the buffer as an entity * reference. * @param theNumber the number to write. */ void writeNumberedEntityReference(XalanUnicodeChar theNumber); /** * Write an attribute string. * * @param theString The string to write. * @param theStringLength The length of the string. */ virtual void writeAttrString( const XalanDOMChar* theString, size_type theStringLength); /** * Write the data for a comment * @param data The comment's data. */ virtual void accumCommentData(const XalanDOMChar* data); /** * Throw an exception when an invalid * surrogate is encountered. * @param ch The first character in the surrogate * @param theManager The MemoryManager instance to use */ static void throwInvalidUTF16SurrogateException( XalanDOMChar ch, MemoryManager& theManager); /** * Throw an exception when an invalid * surrogate is encountered. * @param ch The first character in the surrogate * @param next The next character in the surrogate * @param theManager The MemoryManager instance to use */ static void throwInvalidUTF16SurrogateException( XalanDOMChar ch, XalanDOMChar next, MemoryManager& theManager); /** * Throw an exception when an invalid * XML character is encountered. * @param ch The first character in the surrogate * @param next The next character in the surrogate */ static void throwInvalidCharacterException( XalanUnicodeChar ch, MemoryManager& theManager); static bool isUTF16Surrogate(XalanDOMChar ch) { return (ch & 0xFC00) == 0xD800 ? true : false; } enum eDummyTwo { SPECIALSSIZE = 256}; /** * The maximum character size before we have to resort * to escaping. */ XalanDOMChar m_maxCharacter; XalanDOMChar m_attrCharsMap[SPECIALSSIZE]; XalanDOMChar m_charsMap[SPECIALSSIZE]; /** * If true, XML header should be written to output. */ bool m_shouldWriteXMLHeader; /** * State flag to tell if preservation of whitespace * is important. */ bool m_ispreserve; /** * Flag to tell if indenting (pretty-printing) is on. */ bool m_doIndent; /** * Flag to signal that a newline should be added. */ bool m_startNewLine; /** * Flag to tell that we need to add the doctype decl, * which we can't do until the first element is * encountered. */ bool m_needToOutputDocTypeDecl; /** * State flag that tells if the previous node processed * was text, so we can tell if we should preserve whitespace. */ bool m_isprevtext; /** * If true, cdata sections are simply stripped of their * CDATA brackets, without escaping. */ bool m_stripCData; /** * Tell if the next text should be raw. */ bool m_nextIsRaw; /** * Tells if we're in CData section. */ bool m_inCData; /** * Flag to quickly tell if the encoding is capable of full * Unicode support. */ bool m_encodingIsUTF; /** * The System ID for the doc type. */ const XalanDOMString m_doctypeSystem; /** * The public ID for the doc type. */ const XalanDOMString m_doctypePublic; /** * The character encoding. */ XalanDOMString m_encoding; /** * Flag to keep track of the indent amount. */ int m_currentIndent; /** * Amount to indent. */ int m_indent; /** * Stack to keep track of whether or not we need to * preserve whitespace. */ BoolStackType m_preserves; // A text buffer. We use it mostly for converting // to string values. See uses of UnsignedLongToString() // and UnsignedLongToHexString(). XalanDOMString m_stringBuffer; private: // These are not implemented. FormatterToXML(const FormatterToXML&); FormatterToXML& operator=(const FormatterToXML&); bool operator==(const FormatterToXML&) const; /** * Append a wide character to the buffer. * Characters that are not representable * in the encoding are not written as * entities. * * @ch the character to append. */ void accumNameAsByte(XalanDOMChar ch); /** * Append a wide character to the buffer. * Characters that are not representable * in the encoding are not written as * entities. * * @ch the character to append. */ void accumNameAsByteDirect(XalanDOMChar ch); /** * Append a wide character to the buffer. * Characters that are not representable * in the encoding are written as entities. * * @ch the character to append. */ void accumContentAsByte(XalanDOMChar ch); /** * Append a wide character to the output. * Characters that are not representable * in the encoding are written as entities. * * @ch the character to append. */ void accumContentAsByteDirect(XalanDOMChar ch); /** * Append a wide character to the buffer. * Characters that are not representable * in the encoding are not written as * entities. * * @ch the character to append. */ void accumNameAsChar(XalanDOMChar ch); /** * Append a wide character to the buffer. * Characters that are not representable * in the encoding are not written as * entities. * * @ch the character to append. */ void accumNameAsCharDirect(XalanDOMChar ch); /** * Append a wide character to the buffer. * * @ch the character to append. */ void accumContentAsChar(XalanDOMChar ch); /** * Append a wide character to the stream without buffering. * * @ch the character to append. */ void accumContentAsCharDirect(XalanDOMChar ch); /** * Append a wide character to the buffer. * All characters are representable, * so no checks or escapes are needed. * * @ch the character to append. */ void accumCharUTF(XalanDOMChar ch); /** * Append a wide character to the output. * All characters are representable, * so no checks or escapes are needed. * * @ch the character to append. */ void accumCharUTFDirect(XalanDOMChar ch); /** * Append a string to the buffer. * Characters that are not representable * in the encoding are not written as * entities. * * @chars the string to append. */ void accumNameString(const XalanDOMChar* chars); /** * Append a wide character to the buffer. * All characters are representable, * so no checks or escapes are needed. * * @chars the string to append. */ void accumStringUTF(const XalanDOMChar* chars); /** * Append a wide character to the output. * All characters are representable, * so no checks or escapes are needed. * * @chars the string to append. */ void accumStringUTFDirect(const XalanDOMChar* chars); /** * Append a string to the buffer. * Characters that are not representable * in the encoding are written as entities. * * @chars the string to append. */ void accumContentString(const XalanDOMChar* chars); /** * Append an array of wide character to the buffer. * Characters that are not representable in the * encoding are not written as entities. * * @chars the array to append * @start the offset into the array to start from * @length the number of characters to append */ void accumNameArray( const XalanDOMChar chars[], size_type start, size_type length); /** * Append an array of wide character to the buffer. * Characters that are not representable in the * encoding are written as entities. * * @chars the array to append * @start the offset into the array to start from * @length the number of characters to append */ void accumContentArray( const XalanDOMChar chars[], size_type start, size_type length); /** * Append an array of wide character to the buffer. * All characters are representable, * so no checks or escapes are needed. * * @chars the array to append * @start the offset into the array to start from * @length the number of characters to append */ void accumArrayUTF( const XalanDOMChar chars[], size_type start, size_type length); /** * Append an array of wide character to the output. * All characters are representable, * so no checks or escapes are needed. * * @chars the array to append * @start the offset into the array to start from * @length the number of characters to append */ void accumArrayUTFDirect( const XalanDOMChar chars[], size_type start, size_type length); /** * Append a string to the buffer. * Characters that are not representable in the * encoding are not written as entities. * * @str the string to append */ void accumNameDOMString(const XalanDOMString& str); /** * Append a string to the buffer. * Characters that are not representable in the * encoding are written as entities. * * @str the string to append */ void accumContentDOMString(const XalanDOMString& str); /** * Append a string to the buffer. * All characters are representable, * so no checks or escapes are needed. * * @str the string to append */ void accumDOMStringUTF(const XalanDOMString& str); /** * Append a string to the output. * All characters are representable, * so no checks or escapes are needed. * * @str the string to append */ void accumDOMStringUTFDirect(const XalanDOMString& str); /** * Output the doc type declaration. * * @param name the name of the doctype. */ void outputDocTypeDecl(const XalanDOMChar* name); /** * Process an attribute. * @param name The name of the attribute. * @param value The value of the attribute. */ void processAttribute( const XalanDOMChar* name, const XalanDOMChar* value); /** * Prints n spaces. * @param n Number of spaces to print. */ void printSpace(int n); /** * Normalize the data in a PI, to replace any * "?>" pairs with "? >" * @param theData the data to normalize. */ void accumNormalizedPIData( const XalanDOMChar* theData, size_type theLength); // Data members... /** * True if an encoding is only has only values from 0 - 255 */ bool m_bytesEqualChars; bool m_shouldFlush; /** * Add space before '/>' for XHTML. */ bool m_spaceBeforeClose; /** * If true, characters in cdata sections are * escaped, instead of being writted out as * cdata sections. */ bool m_escapeCData; /** * Tells the XML version, for writing out to the XML decl. */ const XalanDOMString m_version; /** * Text for standalone part of header. */ const XalanDOMString m_standalone; /** * The media type. Not used right now. */ const XalanDOMString m_mediaType; /** * These are characters that will be escaped in the output. */ const XalanDOMString m_attrSpecialChars; //typedef XalanDOMString::size_type size_type; /** * The string "". */ static const XalanDOMChar s_xmlHeaderEndString[]; static const size_type s_xmlHeaderEndStringLength; /** * The string "1.0". */ static const XalanDOMChar s_defaultVersionString[]; static const size_type s_defaultVersionStringLength; /** * The string "-//W3C//DTD XHTML". */ static const XalanDOMChar s_xhtmlDocTypeString[]; static const size_type s_xhtmlDocTypeStringLength; /** * The string "]]>". */ static const XalanDOMChar s_dtdCDATACloseString[]; static const size_type s_dtdCDATACloseStringLength; DOMCharBufferType m_charBuf; XalanDOMString::size_type m_pos; ByteBufferType m_byteBuf; static const XalanDOMString::size_type s_maxBufferSize; /** * A stack of Boolean objects that tell if the given element * has children. */ BoolStackType m_elemStack; /** * A pointer to a member function that will do accumulating * for names. */ AccumCharFunctionType m_accumNameCharFunction; /** * A pointer to a member function that will do accumulating * for names. */ AccumStringFunctionType m_accumNameStringFunction; /** * A pointer to a member function that will do accumulating * for names. */ AccumDOMStringFunctionType m_accumNameDOMStringFunction; /** * A pointer to a member function that will do accumulating * for names. */ AccumArrayFunctionType m_accumNameArrayFunction; /** * A pointer to a member function that will do accumulating * for content. */ AccumCharFunctionType m_accumContentCharFunction; /** * A pointer to a member function that will do accumulating * for content. */ AccumStringFunctionType m_accumContentStringFunction; /** * A pointer to a member function that will do accumulating * for content. */ AccumDOMStringFunctionType m_accumContentDOMStringFunction; /** * A pointer to a member function that will do accumulating * for names. */ AccumArrayFunctionType m_accumContentArrayFunction; /** * A pointer to the member function that will flush the buffer. */ FlushFunctionType m_flushFunction; /** * The string of characters that represents the newline */ const XalanDOMChar* m_newlineString; /** * The length of the the string of characters that represents the newline */ XalanDOMString::size_type m_newlineStringLength; bool m_isXML1_1; }; XALAN_CPP_NAMESPACE_END #endif // FORMATTERTOXML_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/Utils/0002775000175000000640000000000012037700125015327 5ustar stevesambaxalan-c-1.11/c/src/xalanc/Utils/XalanMsgLib/0002775000175000000640000000000012037700125017470 5ustar stevesambaxalan-c-1.11/c/src/xalanc/Utils/XalanMsgLib/Makefile.in0000664000175000000640000000513011731656103021540 0ustar stevesamba# # Copyright 1999-2004 The Apache Software Foundation. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Output directory OUTDIR := ../../../.. INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ include $(XALANCROOT)/version.incl include ../../../../Makefile.incl XALANMSGLIB_SRC=$(XALANCROOT)/src/xalanc/Utils/XalanMsgLib .PHONY: doClean install $(MESSAGELIB) : ${XSL_OBJ_DIR}/XalanMsgLib.o $(MAKE_SHARED_LOC) $(EXTRA_LOC_LINK_OPTIONS) $^ -o $@ ifneq ($(PLATFORM), OS390) rm -f $(XSL_LIB_DIR)/$(LOC_LIBNAME)$(SHLIBSUFFIX) && \ $(LN) -fs $(LOC_LIB) $(XSL_LIB_DIR)/$(LOC_LIBNAME)$(SHLIBSUFFIX) ifeq ($(PLATFORM), AIX) $(LN) -fs $(LOC_LIB) $(XSL_LIB_DIR)/$(LOC_LIBNAME)$(LIB_MAJOR_VER)$(SHLIBSUFFIX) else rm -f $(XSL_LIB_DIR)/$(LOC_LIBNAME)$(SHLIBSUFFIX).$(LIB_MAJOR_VER) && \ $(LN) -fs $(LOC_LIB) \ $(XSL_LIB_DIR)/$(LOC_LIBNAME)$(SHLIBSUFFIX).$(LIB_MAJOR_VER) endif ## AIX endif ## ! OS390 ${XSL_OBJ_DIR}/XalanMsgLib.o : $(XALANMSGLIB_SRC)/XalanMsgLib.cpp $(XALANMSGLIB_SRC)/XalanMsgLib.hpp ${XSL_NLS_DIR}/include/LocalMsgData.hpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $(XALANMSGLIB_SRC)/XalanMsgLib.cpp prepare: install: $(MKINSTALLDIRS) $(DESTDIR)/$(libdir) $(INSTALL_PROGRAM) $(XSL_LIB_DIR)/$(LOC_LIB) $(DESTDIR)/$(libdir) ifneq ($(PLATFORM), OS390) rm -f $(DESTDIR)/$(libdir)/$(LOC_LIBNAME)$(SHLIBSUFFIX) && \ $(LN) -fs $(LOC_LIB) \ $(DESTDIR)/$(libdir)/$(LOC_LIBNAME)$(SHLIBSUFFIX) ifeq ($(PLATFORM), AIX) $(LN) -fs $(LOC_LIB) $(DESTDIR)/$(libdir)/$(LOC_LIBNAME)$(LIB_MAJOR_VER)$(SHLIBSUFFIX) else rm -f $(DESTDIR)/$(libdir)/$(LOC_LIBNAME)$(SHLIBSUFFIX).$(LIB_MAJOR_VER) && \ $(LN) -fs $(LOC_LIB) \ $(DESTDIR)/$(libdir)/$(LOC_LIBNAME)$(SHLIBSUFFIX).$(LIB_MAJOR_VER) endif ## AIX endif ## ! OS390 doClean: rm -f $(MESSAGELIB) rm -f ${XSL_OBJ_DIR}/XalanMsgLib.o rm -f $(XSL_LIB_DIR)/$(LOC_LIBNAME)$(SHLIBSUFFIX) ifeq ($(PLATFORM), AIX) rm -f $(XSL_LIB_DIR)/$(LOC_LIBNAME)$(LIB_MAJOR_VER)$(SHLIBSUFFIX) else rm -f $(XSL_LIB_DIR)/$(LOC_LIBNAME)$(SHLIBSUFFIX).$(LIB_MAJOR_VER) endif ## AIX xalan-c-1.11/c/src/xalanc/Utils/XalanMsgLib/XalanMsgLib.cpp0000664000175000000640000000363711731656103022352 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include XALAN_CPP_NAMESPACE_BEGIN static const XalanDOMChar s_errString[] = { XalanUnicode::charLetter_M, XalanUnicode::charLetter_e, XalanUnicode::charLetter_s, XalanUnicode::charLetter_s, XalanUnicode::charLetter_a, XalanUnicode::charLetter_g, XalanUnicode::charLetter_e, XalanUnicode::charSpace, XalanUnicode::charLetter_n, XalanUnicode::charLetter_o, XalanUnicode::charLetter_t, XalanUnicode::charSpace, XalanUnicode::charLetter_d, XalanUnicode::charLetter_e, XalanUnicode::charLetter_f, XalanUnicode::charLetter_i, XalanUnicode::charLetter_n, XalanUnicode::charLetter_e, XalanUnicode::charLetter_d, 0 }; XalanSize_t XalanMsgContainer::getMessageCount() { return gXalanMsgArraySize; } const XalanDOMChar* XalanMsgContainer::getMessage(XalanSize_t msgID) { if (msgID < gXalanMsgArraySize) { return msgArray[msgID]; } else { return s_errString; } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/Utils/XalanMsgLib/XalanMsgLibDefinitions.hpp0000664000175000000640000000252511731656103024546 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANMSGLIBDEFINITIONS_HEADER_GUARD_1357924680) #define XALANMSGLIBDEFINITIONS_HEADER_GUARD_1357924680 #include #if defined(XALAN_XALANMSGLIB_BUILD_DLL) #define XALAN_XALANMSGLIB_EXPORT XALAN_PLATFORM_EXPORT #define XALAN_XALANMSGLIB_EXPORT_FUNCTION(T) XALAN_PLATFORM_EXPORT_FUNCTION(T) #else #define XALAN_XALANMSGLIB_EXPORT XALAN_PLATFORM_IMPORT #define XALAN_XALANMSGLIB_EXPORT_FUNCTION(T) XALAN_PLATFORM_IMPORT_FUNCTION(T) #endif #endif // XALANMSGLIBDEFINITIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/Utils/XalanMsgLib/XalanMsgLib.hpp0000664000175000000640000000227311731656103022352 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_MSG_CONTAINER_1357924680) #define XALAN_MSG_CONTAINER_1357924680 #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XALANMSGLIB_EXPORT XalanMsgContainer{ public: static XalanSize_t getMessageCount(); static const XalanDOMChar* getMessage(XalanSize_t msgID); private: }; XALAN_CPP_NAMESPACE_END #endif xalan-c-1.11/c/src/xalanc/Utils/MsgCreator/0002775000175000000640000000000012037700125017375 5ustar stevesambaxalan-c-1.11/c/src/xalanc/Utils/MsgCreator/NLSHandler.hpp0000664000175000000640000000376011731656103022052 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(NLSHANDLER_MSGCREATOR_1357924680) #define NLSHANDLER_MSGCREATOR_1357924680 #include "xalanc/Include/PlatformDefinitions.hpp" #include "ICUResHandler.hpp" XALAN_CPP_NAMESPACE_BEGIN XERCES_CPP_NAMESPACE_USE class NLSHandler : public ICUResHandler { public: NLSHandler( const char* fileName, const char* indexFileName, bool createUnicode = false); virtual ~NLSHandler(){} virtual void createHeaderForDataFile(); virtual void createBottomForDataFile(); virtual void printBeginOfDataLine(); virtual void printEndOfDataLine(); void characters( const XMLCh* const chars, const XalanSize_t length); void startDocument(); protected: // ASCII version of print void printToDataFileAsASCII(const char* sArrayOfStrings[]); private: int m_runningNumber; const bool m_createUnicode; // Not implemented... NLSHandler& operator=(const NLSHandler&); NLSHandler(const NLSHandler&); bool operator==(const NLSHandler&) const; }; XALAN_CPP_NAMESPACE_END #endif //NLSHANDLER_MSGCREATOR_1357924680 xalan-c-1.11/c/src/xalanc/Utils/MsgCreator/Makefile.in0000664000175000000640000000307211731656140021451 0ustar stevesamba# # Copyright 1999-2004 The Apache Software Foundation. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Output directory OUTDIR := ../../../.. include $(XALANCROOT)/version.incl include ../../../../Makefile.incl .PHONY: doClean prepare install MSG_CREATOR_OBJECTS= $(XSL_OBJ_DIR)/MsgFileOutputStream.o $(XSL_OBJ_DIR)/ICUResHandler.o $(XSL_OBJ_DIR)/InMemHandler.o $(XSL_OBJ_DIR)/MsgCreator.o $(XSL_OBJ_DIR)/NLSHandler.o $(XSL_OBJ_DIR)/SAX2Handler.o MSG_CREATOR_SRC=$(XALANCROOT)/src/xalanc/Utils/MsgCreator $(XSL_BIN_DIR)/MsgCreator : $(MSG_CREATOR_OBJECTS) ${LINK} $(XSL_BUILD_OPTIONS) ${PLATFORM_LIB_LINK_OPTIONS} ${LIBRARY_SEARCH_PATHS} \ ${EXTRA_LINK_OPTIONS} $(LIBS) $^ -o $@ $(XERCES_LIB) $(LOC_OTHER_LINK_PARAMETERS) $(XSL_OBJ_DIR)/%.o : $(MSG_CREATOR_SRC)/%.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< $(XSL_OBJ_DIR)/%.o : $(MSG_CREATOR_SRC)/%.hpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< prepare: install: doClean: rm -f $(XSL_BIN_DIR)/MsgCreator$(EXT) rm -f $(MSG_CREATOR_OBJECTS) xalan-c-1.11/c/src/xalanc/Utils/MsgCreator/InMemHandler.cpp0000664000175000000640000001223511731656103022413 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include "InMemHandler.hpp" #include #include #include #include #include "MsgCreator.hpp" #include "InMemData.hpp" XALAN_CPP_NAMESPACE_BEGIN #if defined(XALAN_STRICT_ANSI_HEADERS) using std::sprintf; #endif // ----------------------------------------------------------------------- // Constructors // ----------------------------------------------------------------------- InMemHandler::InMemHandler( const char* fileName, const char* indexFileName) : SAX2Handler(indexFileName), m_stream(fileName), m_isTheFirstLineInArray(true) { } InMemHandler::~InMemHandler() { } void InMemHandler::printToDataFile(const char* sArrayOfStrings[]) { if (sArrayOfStrings != 0) { for (XalanSize_t i = 0; sArrayOfStrings[i] != 0; ++i) { m_stream.writeAsASCII( sArrayOfStrings[i], XMLString::stringLen(sArrayOfStrings[i])); } } } void InMemHandler::endDocument() { createBottomForDataFile(); SAX2Handler::endDocument(); } void InMemHandler::characters( const XMLCh* const chars, const XalanSize_t length) { if (m_startCollectingCharacters == true) { char buffer[20]; for (XalanSize_t i = 0; i < length ; ++i) { sprintf( buffer, " %#4x, ", chars[i]); m_stream.writeAsASCII( buffer, XMLString::stringLen(buffer)); } } } void InMemHandler::startDocument() { createHeaderForDataFile(); SAX2Handler::startDocument(); } void InMemHandler::endElement( const XMLCh* const /* uri */, const XMLCh* const /* localname */, const XMLCh* const qname) { if (m_startCollectingCharacters == true) { if(!XMLString::compareString(qname, s_targetXMLCh)) { m_startCollectingCharacters = false; printEndOfDataLine(); } } } void InMemHandler::startElement( const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attributes) { if(!XMLString::compareString(qname, s_transUnitXMLCh)) { // This is an element, SAX2Handler class is responsible to handle: // creating Index file, commom for all localization styles SAX2Handler::startElement(uri, localname, qname, attributes); } else if(!XMLString::compareString(qname, s_targetXMLCh)) { m_startCollectingCharacters = true; printBeginOfDataLine(); } } void InMemHandler::createHeaderForDataFile() { printToDataFile(szApacheLicense); printToDataFile(szStartDataFile); } void InMemHandler::printBeginOfDataLine() { char buff[500]; assert(XMLString::stringLen(s_szVariableName) < 400); sprintf( buff, "%.400s%d[] = {", s_szVariableName, m_numberOfRecords); m_stream.writeAsASCII( buff, XMLString::stringLen(buff)); } void InMemHandler::printEndOfDataLine() { printToDataFile(szEndOfLineInDataFile); } void InMemHandler::createBottomForDataFile() { printToDataFile(szArraySizeVar); char buff[100]; sprintf( buff, " %d ;", m_numberOfRecords); m_stream.writeAsASCII( buff, XMLString::stringLen(buff)); const char* const theString = "\nstatic const XalanDOMChar* msgArray[]={"; m_stream.writeAsASCII( theString, XMLString::stringLen(theString)); for(int i = 0; i < m_numberOfRecords; ++i) { sprintf( buff, "%s%d ", s_szSimpleVariableName, i + 1); m_stream.writeAsASCII( buff, XMLString::stringLen(buff)); if(i != m_numberOfRecords - 1) { m_stream.writeAsASCII( ",", 1); } else { m_stream.writeAsASCII( "};", 2); } } printToDataFile(szEndDataFile); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/Utils/MsgCreator/InMemData.hpp0000664000175000000640000000331411731656103021712 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(MSG_CREATOR_DATA1357924680) #define MSG_CREATOR_DATA1357924680 #include extern const char* szApacheLicense[]; static const char* szStartDataFile[]= { "\n", "\n", "#if !defined(XALAN_MSG_LOADER_GUARD_1357924680) \n", "#define XALAN_MSG_LOADER_GUARD_1357924680 \n", "\n", "\n", "XALAN_CPP_NAMESPACE_BEGIN\n", "\n", "\n", 0 }; static const char* szEndDataFile[]= { "\n", "\n", "XALAN_CPP_NAMESPACE_END \n", "\n", "\n", "#endif //XALAN_MSG_LOADER_GUARD_1357924680 \n", "\n", "\n", 0 }; static const char* szEndOfLineInDataFile[]= { "0x00 };\n", 0 }; static const char* szArraySizeVar[]= { "\n", "\n", "static const XalanSize_t gXalanMsgArraySize = ", 0 }; const char* s_szVariableName = "static const XalanDOMChar szString"; const char* s_szSimpleVariableName = "szString"; //------------------------------------------------------------------ #endif // MSG_CREATOR_DATA1357924680 xalan-c-1.11/c/src/xalanc/Utils/MsgCreator/IndexFileData.hpp0000664000175000000640000000501611731656103022555 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(INDEX_FILE_DATA_1357924680) #define INDEX_FILE_DATA_1357924680 #include const char* szApacheLicense[]={ "/*\n", "* Copyright 1999-2004 The Apache Software Foundation.\n", "*\n", "* Licensed under the Apache License, Version 2.0 (the \"License\");\n", "* you may not use this file except in compliance with the License.\n", "* You may obtain a copy of the License at\n", "*\n", "* http://www.apache.org/licenses/LICENSE-2.0\n", "*\n", "* Unless required by applicable law or agreed to in writing, software\n", "* distributed under the License is distributed on an \"AS IS\" BASIS,\n", "* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", "* See the License for the specific language governing permissions and\n", "* limitations under the License.\n", "*/\n", "\n", "\n", "// ----------------------------------------------------------------\n", "// This file was generated from the XalanC error message source.\n", "// so do not edit this file directly!!\n", "// ----------------------------------------------------------------\n", 0}; static const char* szStartIndexFile[]= { "\n", "\n", "\n", "\n", "#if !defined(XALAN_MSG_LOADER_INDEX_GUARD_1357924680) \n", "#define XALAN_MSG_LOADER_INDEX_GUARD_1357924680 \n", "\n", "\n", "\n", "XALAN_CPP_NAMESPACE_BEGIN\n", "\n", "\n", "class XalanMessages", "{ \n", "public : \n", " enum Codes \n", " { \n", " ", 0 }; static const char* szEndIndexFile[]= { " };\n", "\n", "\n", "};\n", "\n", "\n", "XALAN_CPP_NAMESPACE_END \n", "\n", "\n", "#endif //XALAN_MSG_LOADER_INDEX_GUARD_1357924680 \n", "\n", "\n", 0 }; static const char* szBeginIndexLine[]= { " ,", 0 }; #endif //INDEX_FILE_DATA_1357924680 xalan-c-1.11/c/src/xalanc/Utils/MsgCreator/MsgCreator.cpp0000664000175000000640000003276411731656103022167 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "xalanc/Include/PlatformDefinitions.hpp" #include "ICUResHandler.hpp" #include "InMemHandler.hpp" #include "MsgCreator.hpp" #include "NLSHandler.hpp" #include #include #include #include #include #if defined(_DEBUG) && defined(_MSC_VER) #include #endif XALAN_USING_STD(cerr) XALAN_USING_STD(cout) XALAN_USING_STD(endl) static const char* s_pathSeparator = #if defined(XALAN_WINDOWS) "\\"; #else "/"; #endif static const char* s_xalanMsgFileName ="XalanMsg_"; static const char* s_txtExten = ".txt"; static const char* s_msgExten = ".msg"; static const char* s_en = "en_US"; static const char* DATA_FILE_NAME="LocalMsgData.hpp"; static const char* INDEX_FILE_NAME="LocalMsgIndex.hpp"; static const unsigned int s_max_path = 2000; // --------------------------------------------------------------------------- // Local helper methods // --------------------------------------------------------------------------- static void usage() { cout << "\nUsage:\n" " MsgCreator [options] \n\n" "This program reads XML message file, and then creates C++ " << endl << " source / data files for message localization (for .dll/.so/.cat build) \n" "Options:\n" " XLIFF file with messages. Required. \n" " -TYPE xxx Type of localization [icu | nls | inmem*]\n" " -LOCALE Example: [ fr | fr_FR ]; The default value is 'en_US' \n" " -OUTDIR The directory for the output files. \n" " * = Default if not provided explicitly.\n\n" " -? Show this help.\n\n" "\n" << endl; } class CmdLineParams { public: typedef enum{ ICU_LOCALMSG = 0, INMEM_LOCALMSG, NLS_LOCALMSG }TypeOfLocaleMsg; const char* inXMLFileName; TypeOfLocaleMsg enTypeOfLocaleMsg; const char* encodingName; const char* outDir; char localeName[6]; CmdLineParams(): inXMLFileName(0), enTypeOfLocaleMsg(INMEM_LOCALMSG), encodingName("LATIN1"), outDir("") { localeName[0] = 0; strcpy( localeName, s_en); } ~CmdLineParams() {} }; bool getArgs( int argc, char* argv[], CmdLineParams& p, const char** pErrorMsg) { bool fSuccess = true; const char* errorMessage = 0; if ( argc > 8) { fSuccess = false; errorMessage = "Too many parameters\n"; } for (int i = 1; i < argc && fSuccess == true; ++i) { if (!strcmp("-h", argv[i]) || !strcmp("-?", argv[i])) { fSuccess = false; } else if (!strcmp("-LOCALE", argv[i]) ) { ++i; if( i < argc && argv[i][0] != '-' ) { #if defined(XALAN_STRICT_ANSI_HEADERS) using std::size_t; #endif const size_t localeLen = strlen(argv[i]); if ( localeLen != 2 && localeLen !=5) { fSuccess = false; errorMessage = "Unrecognized locale\n"; } if ( fSuccess && localeLen == 5 && argv[i][2] != '_') { fSuccess = false; errorMessage = "Unrecognized form of locale\n"; } if ( fSuccess ) { strcpy(p.localeName,argv[i]); p.localeName[5]='\0'; // just in case } } } else if (!strcmp("-TYPE", argv[i]) ) { ++i; if( i < argc && argv[i][0] != '-' ) { if( !strcmp("icu",argv[i] )) { p.enTypeOfLocaleMsg = CmdLineParams::ICU_LOCALMSG; }else if( !strcmp("nls",argv[i] )) { p.enTypeOfLocaleMsg = CmdLineParams::NLS_LOCALMSG; } else if( !strcmp("inmem",argv[i] )) { p.enTypeOfLocaleMsg = CmdLineParams::INMEM_LOCALMSG; }else { fSuccess = false; errorMessage = "Unknown TYPE of localization\n"; } } else { fSuccess = false; } } else if (!strcmp("-OUTDIR", argv[i]) ) { ++i; if( i < argc && argv[i][0] != '-' ) { p.outDir = argv[i]; } else { fSuccess = false; } } else if ( argv[i][0] != '-' ) { p.inXMLFileName = argv[i]; } } if ( fSuccess && p.inXMLFileName == 0) { fSuccess = false; *pErrorMsg = "Please provide XLIFF file.\n"; } if ( fSuccess ) { *pErrorMsg = 0; } else { *pErrorMsg = errorMessage; } return fSuccess; } static void appendDirectory( const CmdLineParams& p, char FileName[]) { #if defined(XALAN_STRICT_ANSI_HEADERS) using std::strlen; using std::size_t; #endif const size_t dirLength = strlen(p.outDir); if (dirLength == 0) { strcpy(FileName, ""); } else { strcpy(FileName, p.outDir); if (FileName[dirLength - 1] != *s_pathSeparator) { strcat(FileName, s_pathSeparator); } } } static void buildOutputFileName( const CmdLineParams& p, char OutputFileName[]) { appendDirectory(p, OutputFileName); switch(p.enTypeOfLocaleMsg) { case CmdLineParams::ICU_LOCALMSG: { strcat(OutputFileName, p.localeName); strcat(OutputFileName, s_txtExten); break; } case CmdLineParams::INMEM_LOCALMSG: { strcat(OutputFileName, DATA_FILE_NAME); break; } case CmdLineParams::NLS_LOCALMSG: { strcat(OutputFileName,s_xalanMsgFileName); strncat(OutputFileName, p.localeName,6); strcat(OutputFileName, s_msgExten); break; } default: { // in that stage the local should be defined assert ( 0 ); } } } static void buildIndexFileName( const CmdLineParams& p, char IndexFileName[]) { appendDirectory(p, IndexFileName); strcat( IndexFileName, INDEX_FILE_NAME); } // --------------------------------------------------------------------------- // Program entry point // --------------------------------------------------------------------------- int main(int argC, char* argV[]) { #if defined(_DEBUG) && defined(_MSC_VER) _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); #endif XALAN_CPP_NAMESPACE_USE CmdLineParams theParams; int iReturnValue = 0; const char* errorMessage = 0; if (getArgs(argC, argV, theParams, &errorMessage) == false) { if ( errorMessage != 0) { cerr << errorMessage; } usage(); iReturnValue = 1; } else { try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { cerr << "Error during initialization! : " << StrX(toCatch.getMessage()) << endl; iReturnValue = 2; } if (iReturnValue == 0) { { // Create a SAX parser object. SAX2XMLReader* const parser = XMLReaderFactory::createXMLReader(); parser->setFeature(XMLUni::fgSAX2CoreValidation, false); parser->setFeature(XMLUni::fgXercesDynamic, true); parser->setFeature(XMLUni::fgSAX2CoreNameSpaces, false); parser->setFeature(XMLUni::fgXercesSchema, true); parser->setFeature(XMLUni::fgXercesSchemaFullChecking, false); parser->setFeature(XMLUni::fgSAX2CoreNameSpacePrefixes, false); // Create the handler object and install it as the document and error // handler for the parser. Then parse the file and catch any exceptions // that propogate out // XalanSize_t errorCount = 0; const char* const fileName = theParams.inXMLFileName; char OutputFileName[s_max_path]; char IndexFileName[s_max_path]; buildOutputFileName(theParams, OutputFileName); buildIndexFileName(theParams, IndexFileName); SAX2Handler* handler = 0; try { switch(theParams.enTypeOfLocaleMsg){ case CmdLineParams::ICU_LOCALMSG: { handler = new ICUResHandler(OutputFileName, IndexFileName); break; } case CmdLineParams::INMEM_LOCALMSG: { handler = new InMemHandler(OutputFileName, IndexFileName); break; } case CmdLineParams::NLS_LOCALMSG: { handler = new NLSHandler(OutputFileName, IndexFileName); break; } default: { assert (0); } } } catch(const MsgFileOutputStream::OpenException& e) { cerr << "\nAn error occurred\n Error: "; if (e.m_message != 0) { cerr << e.m_message << endl; } else { cerr << "unknown (XalanFileOutputStreamOpenException) " << endl; } iReturnValue = 4; } catch(const MsgFileOutputStream::WriteException& e) { cerr << "\nAn error occurred\n Error: "; if (e.m_message != 0) { cerr << e.m_message << endl; } else { cerr << "unknown (MsgFileOutputStream::WriteException) " << endl; } iReturnValue = 5; } catch (...) { cerr << "Unknown error occured." << endl; iReturnValue = 6; } // run the parser if (iReturnValue == 0) { try { handler->setLocale(theParams.localeName); parser->setContentHandler(handler); parser->setErrorHandler(handler); parser->parse(fileName); errorCount = parser->getErrorCount(); } catch (const XMLException& toCatch) { cerr << "\nAn error occurred\n Error: " << StrX(toCatch.getMessage()) << endl; iReturnValue = 7; } catch (...) { cerr << endl << "General error occured." << endl; iReturnValue = 8; } } delete handler; // // Delete the parser itself. Must be done prior to calling Terminate, below. // delete parser; if (errorCount != 0) iReturnValue = 9; } // And call the termination method XMLPlatformUtils::Terminate(); } } return iReturnValue; } xalan-c-1.11/c/src/xalanc/Utils/MsgCreator/InMemHandler.hpp0000664000175000000640000000554311731656103022424 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(INMEMHANDLER_1357924680) #define INMEMHANDLER_1357924680 #include "xalanc/Include/PlatformDefinitions.hpp" #include "SAX2Handler.hpp" XALAN_CPP_NAMESPACE_BEGIN class InMemHandler : public SAX2Handler { public: // ----------------------------------------------------------------------- // Constructors // ----------------------------------------------------------------------- InMemHandler( const char* fileName, const char* indexFileName); virtual ~InMemHandler(); // ----------------------------------------------------------------------- // Implementations of the SAX DocumentHandler interface // ----------------------------------------------------------------------- virtual void endDocument(); virtual void endElement( const XMLCh* const, const XMLCh* const localname, const XMLCh* const); virtual void startDocument(); virtual void startElement( const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attributes); virtual void characters( const XMLCh* const chars, const XalanSize_t length); protected: MsgFileOutputStream m_stream; // ----------------------------------------------------------------------- // functions for formatting the output file // ----------------------------------------------------------------------- virtual void createHeaderForDataFile(); virtual void createBottomForDataFile(); virtual void printBeginOfDataLine(); virtual void printEndOfDataLine(); void printToDataFile(const char* sArrayOfStrings[]); private: bool m_isTheFirstLineInArray; // Not implemented... InMemHandler& operator=(const InMemHandler&); InMemHandler(const InMemHandler&); bool operator==(const InMemHandler&) const; }; XALAN_CPP_NAMESPACE_END #endif /// INMEMHANDLER_1357924680 xalan-c-1.11/c/src/xalanc/Utils/MsgCreator/MsgCreator.hpp0000664000175000000640000000540211731656103022161 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(MSG_CREATOR_1357924680) #define MSG_CREATOR_1357924680 #include "xalanc/Include/PlatformDefinitions.hpp" #include #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif XERCES_CPP_NAMESPACE_USE // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode) { XALAN_USING_XERCES(XMLString) // Call the private transcoding method fLocalForm = XMLString::transcode(toTranscode); } ~StrX() { XALAN_USING_XERCES(XMLString) XMLString::release(&fLocalForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } private : // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // ----------------------------------------------------------------------- char* fLocalForm; }; #if defined(XALAN_CLASSIC_IOSTREAMS) inline ostream& operator<<(ostream& target, const StrX& toDump) #else inline XALAN_STD_QUALIFIER ostream& operator<<(XALAN_STD_QUALIFIER ostream& target, const StrX& toDump) #endif { target << toDump.localForm(); return target; } #endif //MSG_CREATOR_1357924680 xalan-c-1.11/c/src/xalanc/Utils/MsgCreator/SAX2Handler.cpp0000664000175000000640000001242011731656103022117 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include "SAX2Handler.hpp" #include #include #include #include #include "IndexFileData.hpp" #include "MsgCreator.hpp" XALAN_CPP_NAMESPACE_BEGIN #if defined(XALAN_STRICT_ANSI_HEADERS) using std::sprintf; #endif XALAN_USING_XERCES(Attributes) XALAN_USING_XERCES(SAXParseException) XALAN_USING_XERCES(XMLString) // --------------------------------------------------------------------------- // SAX2Handler: Constructors and Destructor // --------------------------------------------------------------------------- SAX2Handler::SAX2Handler(const char* indexFileName) : m_numberOfRecords(0), m_locale(0), m_startCollectingCharacters(false), m_indexOutputStream(indexFileName) { } SAX2Handler::~SAX2Handler() { if (m_locale != 0) { XMLString::release(&m_locale); } } void SAX2Handler::createHeaderForIndexFile() { printToIndexFile(szApacheLicense); printToIndexFile(szStartIndexFile); } void SAX2Handler::printBeginOfIndexLine() { printToIndexFile(szBeginIndexLine); } void SAX2Handler::printEndOfIndexLine() { } void SAX2Handler::createBottomForIndexFile() { printToIndexFile(szEndIndexFile); } void SAX2Handler::printToIndexFile(const char* sArrayOfStrings[]) { if (sArrayOfStrings != 0) { for (XalanSize_t i = 0; sArrayOfStrings[i] != 0; ++i) { m_indexOutputStream.writeAsASCII( sArrayOfStrings[i], XMLString::stringLen(sArrayOfStrings[i])); } } } void SAX2Handler::startElement( const XMLCh* const /* uri */, const XMLCh* const /* localname */, const XMLCh* const qname, const Attributes& attributes) { if(!XMLString::compareString(qname, s_transUnitXMLCh)) { const XalanSize_t len = attributes.getLength(); ++m_numberOfRecords; for (XalanSize_t index = 0; index < len; index++) { const XMLCh* const name = attributes.getQName(index); assert(name != 0); if (!XMLString::compareString(name, s_idXMLCh)) { const XMLCh* const val = attributes.getValue(index); assert(val != 0); if (m_numberOfRecords != 1) { printBeginOfIndexLine(); } m_indexOutputStream.writeAsASCII( val, XMLString::stringLen(val)); char buff[100]; sprintf( buff, "\t\t = %d \n", m_numberOfRecords - 1); m_indexOutputStream.writeAsASCII( buff, XMLString::stringLen(buff)); printEndOfIndexLine(); } } } } XALAN_USING_STD(cerr) XALAN_USING_STD(endl) // --------------------------------------------------------------------------- // // --------------------------------------------------------------------------- void SAX2Handler::error(const SAXParseException& e) { cerr << "\nError at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << endl; throw e; } void SAX2Handler::fatalError(const SAXParseException& e) { cerr << "\nFatal Error at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << endl; throw e; } void SAX2Handler::warning(const SAXParseException& e) { cerr << "\nWarning at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << endl; } void SAX2Handler::setLocale(const char* localName) { assert(localName != 0); if (m_locale != 0) { XMLString::release(&m_locale); } m_locale = XMLString::transcode(localName); } void SAX2Handler::startDocument() { createHeaderForIndexFile(); } void SAX2Handler::endDocument() { createBottomForIndexFile(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/Utils/MsgCreator/SAX2Handler.hpp0000664000175000000640000001107011731656103022124 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(SAX2HANDLER_1357924680) #define SAX2HANDLER_1357924680 #include "MsgFileOutputStream.hpp" #include #include XALAN_CPP_NAMESPACE_BEGIN XERCES_CPP_NAMESPACE_USE static const XMLCh s_transUnitXMLCh[] = { chLatin_t, chLatin_r, chLatin_a, chLatin_n, chLatin_s, chDash, chLatin_u, chLatin_n, chLatin_i, chLatin_t, chNull }; static const XMLCh s_sourceXMLCh[] = { chLatin_s, chLatin_o, chLatin_u, chLatin_r, chLatin_c, chLatin_e, chNull }; static const XMLCh s_targetXMLCh[] = { chLatin_t, chLatin_a, chLatin_r, chLatin_g, chLatin_e, chLatin_t, chNull }; static const XMLCh s_xmlLangXMLCh[] = { chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_l, chLatin_a, chLatin_n, chLatin_g, chNull }; static const XMLCh s_idXMLCh[] = { chLatin_i, chLatin_d, chNull }; static const XMLCh s_textXMLCh[] = { chLatin_T, chLatin_e, chLatin_x, chLatin_t, chNull }; // Common class for the all system: creates index file ( common for all localization systems) // For creation data file responsible subclasses class SAX2Handler : public XERCES_CPP_NAMESPACE_QUALIFIER DefaultHandler { public: // ----------------------------------------------------------------------- // Constructors // ----------------------------------------------------------------------- SAX2Handler(const char* indexFileName); virtual ~SAX2Handler(); public: virtual void startElement( const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attributes); virtual void startDocument(); virtual void endDocument(); // ----------------------------------------------------------------------- // Implementations of the SAX ErrorHandler interface // ----------------------------------------------------------------------- virtual void error(const SAXParseException& e); virtual void fatalError(const SAXParseException& e); virtual void warning(const SAXParseException& e); void setLocale(const char* localeName); const XMLCh* getLocale () const { return m_locale; } protected: bool translateCharToXMLByteArray( XMLByte* buffer, int iBufLen, const char* szSource) const; virtual void createHeaderForDataFile() = 0; virtual void createBottomForDataFile() = 0; virtual void printBeginOfDataLine() = 0; virtual void printEndOfDataLine() = 0; virtual void printToDataFile(const char* sArrayOfStrings[]) = 0; void printToIndexFile(const char* sArrayOfStrings[]); void printNumbOfRecords(); private: void createHeaderForIndexFile(); void createBottomForIndexFile(); void printBeginOfIndexLine(); void printEndOfIndexLine(); protected: int m_numberOfRecords; XMLCh* m_locale; bool m_startCollectingCharacters; // ----------------------------------------------------------------------- // SAX2 Handler is responsible for creating index file, so keep // index file FormatTarget as private data member // ----------------------------------------------------------------------- private: MsgFileOutputStream m_indexOutputStream; // Not implemented... SAX2Handler& operator=(const SAX2Handler&); SAX2Handler(const SAX2Handler&); bool operator==(const SAX2Handler&) const; }; XALAN_CPP_NAMESPACE_END #endif //SAX2HANDLER_1357924680 xalan-c-1.11/c/src/xalanc/Utils/MsgCreator/MsgFileOutputStream.cpp0000664000175000000640000001140111731656103024025 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "MsgFileOutputStream.hpp" #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN XALAN_USING_XERCES(XMLString) static MsgFileOutputStream::HandleType openFile(const char* theFileName) { assert(theFileName != 0); #if defined(XALAN_STRICT_ANSI_HEADERS) using std::fopen; #endif return fopen(theFileName, "wb"); } MsgFileOutputStream::MsgFileOutputStream(const char* theFileName) : m_fileName(theFileName), m_handle(openFile(theFileName)) { if (m_handle == 0) { throw OpenException( theFileName, errno); } } MsgFileOutputStream::~MsgFileOutputStream() { #if defined(XALAN_STRICT_ANSI_HEADERS) using std::fclose; #endif if (m_handle != 0) { fclose(m_handle); } } void MsgFileOutputStream::doFlush() { #if defined(XALAN_STRICT_ANSI_HEADERS) using std::fflush; #endif if (fflush(m_handle) != 0) { throw WriteException( m_fileName, errno); } } void MsgFileOutputStream::writeData( const char* theBuffer, XalanSize_t theBufferLength) { #if defined(XALAN_STRICT_ANSI_HEADERS) using std::fwrite; #endif const size_t theBytesWritten = fwrite(theBuffer, 1, theBufferLength, m_handle); if (theBytesWritten != theBufferLength) { throw WriteException( m_fileName, errno); } } void FormatMessageLocal( const char* theMessage, const char* theFileName, int theErrorCode, char* theResult) { assert(theMessage != 0); assert(theFileName != 0); assert(theResult != 0); #if defined(XALAN_STRICT_ANSI_HEADERS) using std::sprintf; #endif sprintf( theResult, "%.100s %.1000s. The C++ run-time error code (errno) is %d.", theMessage, theFileName, theErrorCode); } MsgFileOutputStream::OpenException::OpenException( const char* theFileName, int theErrorCode) : m_message() { FormatMessageLocal( "Error opening file: ", theFileName, theErrorCode, m_message); } MsgFileOutputStream::OpenException::~OpenException() { } MsgFileOutputStream::WriteException::WriteException( const char* theFileName, int theErrorCode) : m_message() { FormatMessageLocal( "Error writing file: ", theFileName, theErrorCode, m_message); } MsgFileOutputStream::WriteException::~WriteException() { } void MsgFileOutputStream::write( const XMLCh* theString, XalanSize_t theLength) { assert(theString != 0); writeData( (const char*)theString, theLength * sizeof(XMLCh)); } void MsgFileOutputStream::write( const char* theString, XalanSize_t theLength) { assert (theString != 0); XMLCh* theUTFString = XMLString::transcode(theString); write( theUTFString, theLength); XMLString::release(&theUTFString); } void MsgFileOutputStream::writeAsASCII( const XMLCh* theString, XalanSize_t theLength) { char* szString = XMLString::transcode(theString); writeData( szString, theLength); XMLString::release(&szString); } void MsgFileOutputStream::writeAsASCII( const char* theString, XalanSize_t theLength) { writeData( theString, theLength); } static const XMLCh s_UTF16ByteOrderMark[] = { XMLCh(0xFEFF) }; void MsgFileOutputStream::writeUTFPrefix() { write( s_UTF16ByteOrderMark, 1); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/Utils/MsgCreator/ICUResHandler.cpp0000664000175000000640000001144111731656103022476 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include "ICUResData.hpp" #include "ICUResHandler.hpp" #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN // ----------------------------------------------------------------------- // Constructors // ----------------------------------------------------------------------- ICUResHandler::ICUResHandler( const char* fileName, const char* indexFileName) : SAX2Handler(indexFileName), m_stream(fileName) { } ICUResHandler::~ICUResHandler() { } void ICUResHandler::endDocument() { createBottomForDataFile(); SAX2Handler::endDocument(); } void ICUResHandler::characters( const XMLCh* const chars, const XalanSize_t length) { if (m_startCollectingCharacters == true) { // We limit lines to 512 characters. Since // we need to acount for the terminating null, // and the possibility of escaping each character, // 1025 is the maximum buffer size. const XalanSize_t theMaxChars = 512; assert(length <= theMaxChars); XMLCh buffer[(theMaxChars * 2) + 1]; XalanSize_t j = 0; // ICU genrb doesn't like " and {} chars // change tham with \", \{ and \}. for (XalanSize_t i = 0 ; i < length ; ++i , ++j) { if (chars[i] == chDoubleQuote || chars[i] == chOpenCurly || chars[i] == chCloseCurly) { buffer[j] = chBackSlash; ++j; buffer[j] = chars[i]; } else { buffer[j] = chars[i]; } } buffer[j] = chNull; m_stream.write(buffer, j); } } void ICUResHandler::startDocument() { m_stream.writeUTFPrefix(); createHeaderForDataFile(); SAX2Handler::startDocument(); } void ICUResHandler::endElement( const XMLCh* const /* uri */, const XMLCh* const /* localname */, const XMLCh* const qname) { if (m_startCollectingCharacters == true) { if(!XMLString::compareString(qname, s_targetXMLCh)) { m_startCollectingCharacters = false; printEndOfDataLine(); } } } void ICUResHandler::startElement( const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attributes) { if(!XMLString::compareString(qname, s_transUnitXMLCh)) { // this is an elemente, SAX2Handler class is responsible to handle: // creating Index file, commom for all localization styles SAX2Handler::startElement(uri, localname, qname, attributes); } else if(!XMLString::compareString(qname, s_targetXMLCh)) { if (m_locale != 0) { m_startCollectingCharacters = true; printBeginOfDataLine(); } } } void ICUResHandler::createHeaderForDataFile() { printToDataFile(szApacheLicense); if (m_locale != 0) { m_stream.write( m_locale, XMLString::stringLen(m_locale)); } printToDataFile(szStartDataFile); } void ICUResHandler::printBeginOfDataLine() { printToDataFile(szBeginOfLineInDataFile); } void ICUResHandler::createBottomForDataFile() { printToDataFile(szEndDataFile); } void ICUResHandler::printEndOfDataLine() { printToDataFile(szEndOfLineInDataFile); } void ICUResHandler::printToDataFile(const char* sArrayOfStrings[]) { if ( sArrayOfStrings != 0) { for (int i = 0; sArrayOfStrings[i] != 0; ++i) { m_stream.write( sArrayOfStrings[i], XMLString::stringLen(sArrayOfStrings[i])); } } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/Utils/MsgCreator/MsgFileOutputStream.hpp0000664000175000000640000000676411731656103024052 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // This file is simplified version of XalanFileOutputStream.hpp / .cpp #if !defined(MSGFILEOUTPUTSTREAM_1357924680) #define MSGFILEOUTPUTSTREAM_1357924680 #include "xalanc/Include/PlatformDefinitions.hpp" #include XALAN_CPP_NAMESPACE_BEGIN XERCES_CPP_NAMESPACE_USE // Class responsible for printing into file with UTF16 class MsgFileOutputStream { public : #if defined(XALAN_STRICT_ANSI_HEADERS) typedef std::FILE* HandleType; #else typedef FILE* HandleType; #endif /** * Construct an MsgFileOutputStream object. * * @param theFileName name of file * @param theBufferSize The size of the transcoding buffer */ MsgFileOutputStream(const char* theFileName); virtual ~MsgFileOutputStream(); class OpenException { public: /** * Construct an OpenException exception object for an exception * that occurred when opening a file. * * @param theFileName The name of file. * @param theErrorCode The errno for the error encountered */ OpenException( const char* theFileName, int theErrorCode); ~OpenException(); char m_message[1200]; }; class WriteException { public: /** * Construct an WriteException exception object for an exception * that occurred while writing to a file. * * @param theFileName The name of file. * @param theErrorCode The errno for the error encountered */ WriteException( const char* theFileName, int theErrorCode); ~WriteException(); char m_message[1200]; }; void write( const XMLCh* theString, XalanSize_t theLength); void write( const char* theString, XalanSize_t theLength); void writeAsASCII( const char* theString, XalanSize_t theLength); void writeAsASCII( const XMLCh* theString, XalanSize_t theLength); void writeUTFPrefix(); protected: void writeData( const char* theBuffer, XalanSize_t theBufferLength); void doFlush(); private: // These are not implemented... MsgFileOutputStream(const MsgFileOutputStream&); MsgFileOutputStream& operator=(const MsgFileOutputStream&); bool operator==(const MsgFileOutputStream&) const; // Data members... const char* const m_fileName; const HandleType m_handle; }; XALAN_CPP_NAMESPACE_END #endif // MSGFILEOUTPUTSTREAM_1357924680 xalan-c-1.11/c/src/xalanc/Utils/MsgCreator/ICUResData.hpp0000664000175000000640000000463111731656103022002 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(ICUMSG_DATA1357924680) #define ICUMSG_DATA1357924680 #include "xalanc/Include/PlatformDefinitions.hpp" #include #define MAKE_STRING(a) #a #define INVK_MAKE_STRING(a) MAKE_STRING(a) static const char* szApacheLicense[]= { "///*\n", "//* Copyright 1999-2004 The Apache Software Foundation.\n", "//*\n", "//* Licensed under the Apache License, Version 2.0 (the \"License\");\n", "//* you may not use this file except in compliance with the License.\n", "//* You may obtain a copy of the License at\n", "//*\n", "//* http://www.apache.org/licenses/LICENSE-2.0\n", "//*\n", "//* Unless required by applicable law or agreed to in writing, software\n", "//* distributed under the License is distributed on an \"AS IS\" BASIS,\n", "//* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", "//* See the License for the specific language governing permissions and\n", "//* limitations under the License.\n", "//*/\n", "", "", "// ----------------------------------------------------------------\n", "// This file was generated from the XalanC error message source.\n", "// so do not edit this file directly!!\n", "// ----------------------------------------------------------------\n", 0}; static const char* szStartDataFile[]= { " {\n", INVK_MAKE_STRING(XALAN_PRODUCT), " {\n", " \"Dummy data\",\n", 0}; static const char* szEndDataFile[]= { " \n }" " \n}", 0}; static const char* szBeginOfLineInDataFile[]= { " \"", 0}; static const char* szEndOfLineInDataFile[]= { "\" , \n", 0}; #endif //ICUMSG_DATA1357924680 xalan-c-1.11/c/src/xalanc/Utils/MsgCreator/NLSHandler.cpp0000664000175000000640000000661711731656103022051 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include "NLSData.hpp" #include "NLSHandler.hpp" #include XALAN_CPP_NAMESPACE_BEGIN // ----------------------------------------------------------------------- // Constructors // ----------------------------------------------------------------------- NLSHandler::NLSHandler( const char* fileName, const char* indexFileName, bool createUnicode ): ICUResHandler(fileName, indexFileName), m_runningNumber(2), m_createUnicode(createUnicode) { } void NLSHandler::startDocument() { if (m_createUnicode) { ICUResHandler::startDocument(); } else { createHeaderForDataFile(); SAX2Handler::startDocument(); } } void NLSHandler::characters( const XMLCh* const chars, const XalanSize_t length) { if (m_startCollectingCharacters == true) { if (m_createUnicode) { m_stream.write(chars, length); } else { m_stream.writeAsASCII(chars, length); } } } void NLSHandler::createHeaderForDataFile() { if (m_createUnicode) { printToDataFile(szApacheLicense); printToDataFile(szStartDataFile); } else { printToDataFileAsASCII(szApacheLicense); printToDataFileAsASCII(szStartDataFile); } } void NLSHandler::printToDataFileAsASCII(const char* sArrayOfStrings[]) { if (sArrayOfStrings != 0) { for (XalanSize_t i = 0; sArrayOfStrings[i] != 0; ++i) { m_stream.writeAsASCII( sArrayOfStrings[i], XMLString::stringLen(sArrayOfStrings[i])); } } } void NLSHandler::printBeginOfDataLine() { char szNumb[20]; #if defined(XALAN_STRICT_ANSI_HEADERS) using std::sprintf; #endif sprintf( szNumb, "%d ^", m_runningNumber); ++m_runningNumber; if (m_createUnicode) { m_stream.write( szNumb, XMLString::stringLen(szNumb)); } else { m_stream.writeAsASCII( szNumb, XMLString::stringLen(szNumb)); } } void NLSHandler::createBottomForDataFile() { } void NLSHandler::printEndOfDataLine() { if (m_createUnicode) { m_stream.write( "^\n", 2); } else { m_stream.writeAsASCII( "^\n", 2); } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/Utils/MsgCreator/NLSData.hpp0000664000175000000640000000375611731656103021353 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(NLS_DATA1357924680) #define NLS_DATA1357924680 static const char* szApacheLicense[]= { "$ /*\n", "$ * Copyright 1999-2004 The Apache Software Foundation.\n", "$ *\n", "$ * Licensed under the Apache License, Version 2.0 (the \"License\");\n", "$ * you may not use this file except in compliance with the License.\n", "$ * You may obtain a copy of the License at\n", "$ *\n", "$ * http://www.apache.org/licenses/LICENSE-2.0\n", "$ *\n", "$ * Unless required by applicable law or agreed to in writing, software\n", "$ * distributed under the License is distributed on an \"AS IS\" BASIS,\n", "$ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", "$ * See the License for the specific language governing permissions and\n", "$ * limitations under the License.\n", "$ */\n", "$ ", "$ ", "$ ----------------------------------------------------------------\n", "$ This file was generated from the XalanC error message source.\n", "$ so do not edit this file directly!!\n", "$ ----------------------------------------------------------------\n", 0}; static const char* szStartDataFile[]= { "$quote ^ \n", "$set 1 \n", 0}; #endif //NLS_DATA1357924680 xalan-c-1.11/c/src/xalanc/Utils/MsgCreator/ICUResHandler.hpp0000664000175000000640000000516711731656103022513 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(ICURESHANDLER_1357924680) #define ICURESHANDLER_1357924680 #include "xalanc/Include/PlatformDefinitions.hpp" #include "SAX2Handler.hpp" XALAN_CPP_NAMESPACE_BEGIN class ICUResHandler : public SAX2Handler { public: // ----------------------------------------------------------------------- // Constructors // ----------------------------------------------------------------------- ICUResHandler( const char* fileName, const char* indexFileName); virtual ~ICUResHandler(); // ----------------------------------------------------------------------- // Implementations of the SAX DocumentHandler interface // ----------------------------------------------------------------------- virtual void endDocument(); virtual void endElement( const XMLCh* const, const XMLCh* const localname, const XMLCh* const); virtual void startDocument(); virtual void startElement( const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attributes); virtual void characters( const XMLCh* const chars, const XalanSize_t length); protected: virtual void createHeaderForDataFile(); virtual void createBottomForDataFile(); virtual void printBeginOfDataLine(); virtual void printEndOfDataLine(); void printToDataFile(const char* sArrayOfStrings[]); MsgFileOutputStream m_stream; private: // Not implemented... ICUResHandler& operator=(const ICUResHandler&); ICUResHandler(const ICUResHandler&); bool operator==(const ICUResHandler&) const; }; XALAN_CPP_NAMESPACE_END #endif // ICURESHANDLER_1357924680 xalan-c-1.11/c/src/xalanc/Utils/Makefile.in0000664000175000000640000001335511731656103017407 0ustar stevesamba# # Copyright 1999-2004 The Apache Software Foundation. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Output directory OUTDIR := ../../.. INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ include $(XALANCROOT)/version.incl include ../../../Makefile.incl ## ---------------------------------------------------------------------------- XSL_NLS_SRC_DIR=$(XALANCROOT)/src/xalanc/NLS MSGFILENAME=XalanMsg_ CATALOG_NAME=$(MSGFILENAME)$(LOCALE) ifeq ($(PLATFORM), CYGWIN) XLIFF_FILE_NAME=$(shell cygpath -u $(XSL_NLS_SRC_DIR)/$(LOCALE)/$(MSGFILENAME)$(LOCALE).xlf) else XLIFF_FILE_NAME=$(XSL_NLS_SRC_DIR)/$(LOCALE)/$(MSGFILENAME)$(LOCALE).xlf endif MOVE= mv COPY=cp INCLUDE_DIR = $(XALANCROOT)/src/xalanc/Include .PHONY: locale doClean prepare install doCommonInstall doCommonPrepare ##=================== End of Common for all localization systems area ===== ## ---------------------------------------------------------------------------- ifeq ($(MESSAGELOADER),inmem) locale: $(MESSAGELIB) $(MESSAGELIB): $(XSL_NLS_DIR)/include/LocalMsgData.hpp $(MAKE) -C XalanMsgLib ifeq ($(PLATFORM), OS390) ifneq (${OS390BATCH},1) @$(MOVE) XalanMsgLib/*.x ../../../lib endif endif $(XSL_NLS_DIR)/include/LocalMsgData.hpp : $(XSL_BIN_DIR)/MsgCreator $(XLIFF_FILE_NAME) $(XSL_BIN_DIR)/MsgCreator $(XLIFF_FILE_NAME) -TYPE $(MESSAGELOADER) -LOCALE $(LOCALE) @$(MOVE) LocalMsgIndex.hpp $(XSL_NLS_DIR)/include @$(MOVE) LocalMsgData.hpp $(XSL_NLS_DIR)/include install: doCommonInstall $(MAKE) -C XalanMsgLib $@ prepare: doCommonPrepare endif # end of ($(MESSAGELOADER),inmem)) ## ---------------------------------------------------------------------------- ifeq ($(MESSAGELOADER),icu) ##=============================== Specific for ICU variables ================================ GENRB = $(ICUROOT)/bin/genrb PKGDATA = $(ICUROOT)/bin/pkgdata ##=============================== End of Specific for ICU variables ================================ locale: $(XSL_NLS_DIR)/icu/$(LOCALE).txt $(MESSAGELIB) $(MESSAGELIB) : $(XSL_NLS_DIR)/icu/$(LOCALE).txt $(GENRB) -p $(LOC_PROJECT_NAME) -d $(XSL_NLS_DIR)/icu -i $(XSL_NLS_DIR)/icu $(XSL_NLS_DIR)/icu/$(LOCALE).txt echo $(XSL_NLS_DIR)/icu/$(LOC_PROJECT_NAME)_$(LOCALE).res > $(XSL_NLS_DIR)/icu/res-file-list.txt $(PKGDATA) --name $(LOC_PROJECT_NAME) -T $(XSL_NLS_DIR)/icu -v -O $(ICUROOT)/lib/icu/Makefile.inc --mode dll -d $(XSL_LIB_DIR) $(XSL_NLS_DIR)/icu/res-file-list.txt -M "prefix=$(ICUROOT) TARGET=$(LOC_LIB)" $(LN) -fs $(LOC_LIB) $(XSL_LIB_DIR)/$(LOC_LIBNAME)$(SHLIBSUFFIX) ifeq ($(PLATFORM), AIX) $(LN) -fs $(LOC_LIB) $(XSL_LIB_DIR)/$(LOC_LIBNAME)$(LIB_MAJOR_VER)$(SHLIBSUFFIX) else $(LN) -fs $(LOC_LIB) $(XSL_LIB_DIR)/$(LOC_LIBNAME)$(SHLIBSUFFIX).$(LIB_MAJOR_VER) endif ## AIX $(XSL_NLS_DIR)/icu/$(LOCALE).txt : $(XLIFF_FILE_NAME) $(XSL_BIN_DIR)/MsgCreator $(XSL_BIN_DIR)/MsgCreator $(XLIFF_FILE_NAME) -TYPE $(MESSAGELOADER) -LOCALE $(LOCALE) $(MOVE) LocalMsgIndex.hpp $(XSL_NLS_DIR)/include $(MOVE) $(LOCALE).txt $(XSL_NLS_DIR)/icu prepare: doCommonPrepare -${MKDIR} -p $(XSL_NLS_DIR)/icu install: doCommonInstall $(MKINSTALLDIRS) $(DESTDIR)/$(libdir) $(INSTALL_PROGRAM) $(XSL_LIB_DIR)/$(LOC_LIB) $(DESTDIR)/$(libdir) ifneq ($(PLATFORM), OS390) $(LN) -fs $(LOC_LIB) $(DESTDIR)/$(libdir)/$(LOC_LIBNAME)$(SHLIBSUFFIX) ifeq ($(PLATFORM), AIX) $(LN) -fs $(LOC_LIB) $(DESTDIR)/$(libdir)/$(LOC_LIBNAME)$(LIB_MAJOR_VER)$(SHLIBSUFFIX) else $(LN) -fs $(LOC_LIB) $(DESTDIR)/$(libdir)/$(LOC_LIBNAME)$(SHLIBSUFFIX).$(LIB_MAJOR_VER) endif ## AIX endif ## OS390 endif # end of ($(MESSAGELOADER),icu) ##=============================== NLS SYSTEM ===================================================== ifeq ($(MESSAGELOADER),nls) locale: $(XSL_NLS_DIR)/$(LOCALE)/$(CATALOG_NAME).cat $(XSL_NLS_DIR)/$(LOCALE)/$(CATALOG_NAME).cat : $(XLIFF_FILE_NAME) $(XSL_BIN_DIR)/MsgCreator $(XSL_BIN_DIR)/MsgCreator $(XLIFF_FILE_NAME) -TYPE $(MESSAGELOADER) -LOCALE $(LOCALE) $(MOVE) LocalMsgIndex.hpp $(XSL_NLS_DIR)/include $(MOVE) $(CATALOG_NAME).msg $(XSL_NLS_DIR)/nls -rm -f $(CATALOG_NAME).cat gencat $(CATALOG_NAME).cat $(XSL_NLS_DIR)/nls/$(CATALOG_NAME).msg $(MOVE) $(CATALOG_NAME).cat $(XSL_NLS_DIR)/nls install: doCommonInstall $(MKINSTALLDIRS) $(DESTDIR)/$(libdir) $(MKINSTALLDIRS) $(DESTDIR)/$(libdir)/nls $(MKINSTALLDIRS) $(DESTDIR)/$(libdir)/nls/msg $(MKINSTALLDIRS) $(DESTDIR)/$(libdir)/nls/msg/$(LOCALE) $(COPY) $(XSL_NLS_DIR)/nls/$(CATALOG_NAME).cat $(DESTDIR)/$(libdir)/nls/msg/$(LOCALE) prepare: doCommonPrepare -${MKDIR} -p $(XSL_NLS_DIR)/nls endif ##=============================== END OF NLS SYSTEM ================================================== ##=================== Common for all localization systems area ============ $(XSL_BIN_DIR)/MsgCreator: $(MAKE) -C MsgCreator doCommonPrepare: -${MKDIR} -p $(XSL_NLS_DIR) -${MKDIR} -p $(XSL_NLS_DIR)/include doCommonInstall: $(INSTALL_DATA) $(XSL_NLS_DIR)/include/LocalMsgIndex.hpp $(XALANCROOT)/src/xalanc/PlatformSupport doClean: $(MAKE) -C XalanMsgLib $@ $(MAKE) -C MsgCreator $@ rm -f $(XSL_NLS_DIR)/nls/* rm -f $(XSL_NLS_DIR)/icu/* rm -f $(XSL_LIB_DIR)/$(LOC_LIBNAME)* rm -f $(XSL_NLS_DIR)/include/LocalMsgData.hpp rm -f $(XSL_NLS_DIR)/include/LocalMsgIndex.hpp rm -f $(MESSAGELIB) xalan-c-1.11/c/src/xalanc/XalanDOM/0002775000175000000640000000000012037700125015632 5ustar stevesambaxalan-c-1.11/c/src/xalanc/XalanDOM/XalanDOMString.hpp0000664000175000000640000010104011731656103021135 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANDOMSTRING_HEADER_GUARD_1357924680) #define XALANDOMSTRING_HEADER_GUARD_1357924680 #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_DOM_EXPORT XalanDOMString { public: typedef XalanVector XalanDOMCharVectorType; typedef XalanVector CharVectorType; typedef XalanVector WideCharVectorType; typedef XalanDOMChar value_type; typedef XalanDOMChar& reference; typedef const XalanDOMChar& const_reference; typedef XalanSize_t size_type; typedef XalanDOMCharVectorType::iterator iterator; typedef XalanDOMCharVectorType::const_iterator const_iterator; typedef XalanDOMCharVectorType::reverse_iterator reverse_iterator; typedef XalanDOMCharVectorType::const_reverse_iterator const_reverse_iterator; #if defined(XALAN_INLINE_INITIALIZATION) static const size_type npos = ~0u; #else enum { npos = ~0u }; #endif XalanDOMString(MemoryManager& theManager XALAN_DEFAULT_CONSTRUCTOR_MEMMGR); explicit XalanDOMString( const char* theString, MemoryManager& theManager XALAN_DEFAULT_MEMMGR, size_type theCount = size_type(npos)); XalanDOMString( const XalanDOMString& theSource, MemoryManager& theManager XALAN_DEFAULT_CONSTRUCTOR_MEMMGR, size_type theStartPosition = 0, size_type theCount = size_type(npos)); explicit XalanDOMString( const XalanDOMChar* theString, MemoryManager& theManager XALAN_DEFAULT_MEMMGR, size_type theCount = size_type(npos)); XalanDOMString( size_type theCount, XalanDOMChar theChar, MemoryManager& theManager XALAN_DEFAULT_MEMMGR); XalanDOMString* clone(MemoryManager& theManager); ~XalanDOMString() { } XalanDOMString& operator=(const XalanDOMString& theRHS) { return assign(theRHS); } XalanDOMString& operator=(const XalanDOMChar* theRHS) { return assign(theRHS); } XalanDOMString& operator=(const char* theRHS) { return assign(theRHS); } XalanDOMString& operator=(XalanDOMChar theRHS) { return assign(1, theRHS); } iterator begin() { invariants(); return m_data.begin(); } const_iterator begin() const { invariants(); return m_data.begin(); } iterator end() { invariants(); return m_data.empty() == true ? m_data.end() : m_data.end() - 1; } const_iterator end() const { invariants(); return m_data.empty() == true ? m_data.end() : m_data.end() - 1; } reverse_iterator rbegin() { invariants(); reverse_iterator i = m_data.rbegin(); if (m_data.empty() == false) { ++i; } return i; } const_reverse_iterator rbegin() const { invariants(); const_reverse_iterator i = m_data.rbegin(); if (m_data.empty() == false) { ++i; } return i; } reverse_iterator rend() { invariants(); return m_data.rend(); } const_reverse_iterator rend() const { invariants(); return m_data.rend(); } size_type size() const { invariants(); return m_size; } size_type length() const { invariants(); return size(); } size_type max_size() const { invariants(); return ~size_type(0); } void resize( size_type theCount, XalanDOMChar theChar); void resize(size_type theCount) { invariants(); resize(theCount, XalanDOMChar(0)); } size_type capacity() const { invariants(); const XalanDOMCharVectorType::size_type theCapacity = m_data.capacity(); return theCapacity == 0 ? 0 : size_type(theCapacity - 1); } void reserve(size_type theCount = 0) { invariants(); m_data.reserve(theCount + 1); } void clear() { invariants(); m_data.erase(m_data.begin(), m_data.end()); m_size = 0; invariants(); } iterator erase(iterator thePosition) { invariants(); m_data.erase(thePosition); --m_size; invariants(); return thePosition; } iterator erase( iterator theFirst, iterator theLast) { invariants(); m_data.erase(theFirst, theLast); m_size = m_data.size() - 1; invariants(); return theFirst; } XalanDOMString& erase( size_type theStartPosition = 0, size_type theCount = size_type(npos)); bool empty() const { invariants(); return m_size == 0 ? true : false; } const_reference operator[](size_type theIndex) const { invariants(); return m_data[theIndex]; } reference operator[](size_type theIndex) { invariants(); return m_data[theIndex]; } const_reference at(size_type theIndex) const { invariants(); return m_data.at(theIndex); } reference at(size_type theIndex) { invariants(); return m_data.at(theIndex); } const XalanDOMChar* c_str() const { invariants(); return m_data.empty() == true ? &s_empty : &m_data[0]; } const XalanDOMChar* data() const { invariants(); return c_str(); } void swap(XalanDOMString& theOther) { invariants(); m_data.swap(theOther.m_data); #if defined(XALAN_NO_STD_NAMESPACE) ::swap(m_size, theOther.m_size); #else std::swap(m_size, theOther.m_size); #endif } XalanDOMString& operator+=(const XalanDOMString& theSource) { return append(theSource); } XalanDOMString& operator+=(const XalanDOMChar* theString) { return append(theString); } XalanDOMString& operator+=(XalanDOMChar theChar) { append(1, theChar); return *this; } XalanDOMString& assign(const XalanDOMChar* theSource) { invariants(); erase(); invariants(); return append(theSource); } XalanDOMString& assign( const XalanDOMChar* theSource, size_type theCount) { invariants(); erase(); invariants(); return append(theSource, theCount); } XalanDOMString& assign(const char* theSource) { invariants(); erase(); invariants(); return append(theSource); } XalanDOMString& assign( const char* theSource, size_type theCount) { invariants(); erase(); invariants(); return append(theSource, theCount); } XalanDOMString& assign( const XalanDOMString& theSource, size_type thePosition, size_type theCount); XalanDOMString& assign(const XalanDOMString& theSource) { invariants(); if (&theSource != this) { m_data = theSource.m_data; m_size = theSource.m_size; } invariants(); return *this; } XalanDOMString& assign( size_type theCount, XalanDOMChar theChar) { invariants(); erase(); invariants(); return append(theCount, theChar); } XalanDOMString& assign( iterator theFirstPosition, iterator theLastPosition); XalanDOMString& append(const XalanDOMString& theSource) { return append(theSource.c_str(), theSource.length()); } XalanDOMString& append( const XalanDOMString& theSource, size_type thePosition, size_type theCount) { assert(thePosition < theSource.length() && (theCount == size_type(npos) || thePosition + theCount <= theSource.length())); return append(theSource.c_str() + thePosition, theCount); } XalanDOMString& append( const XalanDOMChar* theString, size_type theCount); XalanDOMString& append(const XalanDOMChar* theString) { return append(theString, length(theString)); } XalanDOMString& append( const char* theString, size_type theCount); XalanDOMString& append(const char* theString) { return append(theString, length(theString)); } XalanDOMString& append( size_type theCount, XalanDOMChar theChar); void push_back(XalanDOMChar theChar) { invariants(); append(1, theChar); invariants(); } XalanDOMString& insert( size_type thePosition, const XalanDOMString& theString) { return insert(thePosition, theString.c_str(), theString.length()); } XalanDOMString& insert( size_type thePosition1, const XalanDOMString& theString, size_type thePosition2, size_type theCount) { return insert(thePosition1, theString.c_str() + thePosition2, theCount); } XalanDOMString& insert( size_type thePosition, const XalanDOMChar* theString, size_type theCount); XalanDOMString& insert( size_type thePosition, const XalanDOMChar* theString) { return insert(thePosition, theString, length(theString)); } XalanDOMString& insert( size_type thePosition, size_type theCount, XalanDOMChar theChar); iterator insert( iterator thePosition, XalanDOMChar theChar); void insert( iterator thePosition, size_type theCount, XalanDOMChar theChar); void insert( iterator theInsertPosition, iterator theFirstPosition, iterator theLastPosition); XalanDOMString& substr( XalanDOMString& theSubstring, size_type thePosition = 0, size_type theCount = size_type(npos)) const { assert((theCount == size_type(npos) && thePosition < length() ) || (thePosition + theCount <= length())); invariants(); return theSubstring.assign( *this, thePosition, theCount == npos ? length() : theCount); } int compare(const XalanDOMString& theString) const { invariants(); return compare(theString.c_str()); } int compare( size_type thePosition1, size_type theCount1, const XalanDOMString& theString) const { invariants(); return compare(thePosition1, theCount1, theString.c_str(), theString.length()); } int compare( size_type thePosition1, size_type theCount1, const XalanDOMString& theString, size_type thePosition2, size_type theCount2) const { invariants(); return compare(thePosition1, theCount1, theString.c_str() + thePosition2, theCount2); } int compare(const XalanDOMChar* theString) const; int compare( size_type thePosition1, size_type theCount1, const XalanDOMChar* theString, size_type theCount2 = size_type(npos)) const; void reset(MemoryManager& theManager, const char* theString); void reset(MemoryManager& theManager, const XalanDOMChar* theString); class TranscodingError : public XalanDOMException { public: TranscodingError() : XalanDOMException(TRANSCODING_ERR) { } virtual ~TranscodingError() { } }; /** * Transcode the string to the local code page. If the string * cannot be properly transcoded, and the transcoder can detect * the error a TranscodingError exception is thrown. * * @param theResult A CharVectorType instance for the transcoded string. The string is null-terminated. */ void transcode(CharVectorType& theResult) const; MemoryManager& getMemoryManager() { return m_data.getMemoryManager(); } size_t hash() const { return hash(c_str(), length()); } static size_t hash( const XalanDOMChar* theString, size_type theLength) { assert(theString != 0); return hash_non_terminated_array()(theString, theLength); } static bool equals( const XalanDOMChar* theLHS, size_type theLHSLength, const XalanDOMChar* theRHS, size_type theRHSLength); static bool equals( const XalanDOMChar* theLHS, const XalanDOMChar* theRHS) { return equals(theLHS, length(theLHS), theRHS, length(theRHS)); } static bool equals( const XalanDOMString& theLHS, const XalanDOMString& theRHS); static bool equals( const XalanDOMString& theLHS, const XalanDOMChar* theRHS) { return equals(theLHS.c_str(), theRHS); } static bool equals( const XalanDOMChar* theLHS, const XalanDOMString& theRHS) { return equals(theLHS, theRHS.c_str()); } /* * Helper function to determine the length of a null- * terminated string. * * @theString The string * @return the length */ static size_type length(const XalanDOMChar* theString); /* * Helper function to determine the length of a null- * terminated string. * * @theString The string * @return the length */ static size_type length(const char* theString); protected: /* * Function to assert invariant conditions for the class. * * @return the iterator */ void invariants() const { #if !defined(NDEBUG) assert((m_data.empty() == true && m_size == 0) || m_size == m_data.size() - 1); assert(m_data.empty() == true || m_data.back() == 0); #endif } /* * Get an iterator to the position of the terminating null. * * @return the iterator */ iterator getBackInsertIterator() { invariants(); return m_data.empty() == true ? m_data.end() : m_data.end() - 1; } const_iterator getBackInsertIterator() const { invariants(); return m_data.empty() == true ? m_data.end() : m_data.end() - 1; } iterator getIteratorForPosition(size_type thePosition) { invariants(); return m_data.begin() + thePosition; } const_iterator getIteratorForPosition(size_type thePosition) const { invariants(); return m_data.begin() + thePosition; } #if defined (XALAN_DEVELOPMENT) // not defined XalanDOMString(); XalanDOMString(const XalanDOMString&); #endif private: XalanDOMCharVectorType m_data; size_type m_size; static const XalanDOMChar s_empty; }; /** * Hash functor for DOMStrings * * @param theKey XalanDOMString to be hashed * @return hash value for XalanDOMString */ struct DOMStringHashFunction : public XALAN_STD_QUALIFIER unary_function { result_type operator() (argument_type theKey) const { return theKey.hash(); } }; /** * Hash functor for DOMStrings * * @param theKey XalanDOMString to be hashed * @return hash value for XalanDOMString */ struct DOMStringPointerHashFunction : public XALAN_STD_QUALIFIER unary_function { result_type operator() (argument_type theKey) const { assert (theKey != 0); return theKey->hash(); } }; template<> struct XalanMapKeyTraits { typedef DOMStringPointerHashFunction Hasher; typedef pointer_equal Comparator; }; template<> struct XalanMapKeyTraits { typedef DOMStringPointerHashFunction Hasher; typedef pointer_equal Comparator; }; /** * Equals functor for DOMStrings * * @param theLHS first string to compare * @param theRHS second string to compare * @return true if the contents of both strings are identical */ #if defined(XALAN_NO_STD_NAMESPACE) struct DOMStringEqualsFunction : public binary_function #else struct DOMStringEqualsFunction : public std::binary_function #endif { result_type operator() (first_argument_type theLHS, second_argument_type theRHS) const { return XalanDOMString::equals(theLHS, theRHS); } }; /** * Not equals functor for DOMStrings * * @param theLHS first string to compare * @param theRHS second string to compare * @return true if the contents of both strings are identical */ #if defined(XALAN_NO_STD_NAMESPACE) struct DOMStringNotEqualsFunction : public binary_function #else struct DOMStringNotEqualsFunction : public std::binary_function #endif { result_type operator() (first_argument_type theLHS, second_argument_type theRHS) const { return !XalanDOMString::equals(theLHS, theRHS); } }; /** * Less than functor for DOMStrings * * @param theLHS first string to compare * @param theRHS second string to compare * @return true if the theLHS is less than theRHSl */ #if defined(XALAN_NO_STD_NAMESPACE) struct DOMStringLessThanFunction : public binary_function #else struct DOMStringLessThanFunction : public std::binary_function #endif { result_type operator() (first_argument_type theLHS, second_argument_type theRHS) const { return theLHS.compare(theRHS) < 0 ? true : false; } }; /** * Equal to functor for DOMStrings * * @param theLHS first string to compare * @param theRHS second string to compare * @return true if the theLHS is equal to theRHS */ struct DOMStringPointerEqualToFunction : public XALAN_STD_QUALIFIER binary_function { result_type operator() (first_argument_type theLHS, second_argument_type theRHS) const { assert(theLHS != 0 && theRHS != 0); return XalanDOMString::equals(*theLHS, *theRHS); } }; /** * Less than functor for DOMStrings * * @param theLHS first string to compare * @param theRHS second string to compare * @return true if the theLHS is less than theRHSl */ #if defined(XALAN_NO_STD_NAMESPACE) struct DOMStringPointerLessThanFunction : public binary_function #else struct DOMStringPointerLessThanFunction : public std::binary_function #endif { result_type operator() (first_argument_type theLHS, second_argument_type theRHS) const { assert(theLHS != 0 && theRHS != 0); return theLHS->compare(*theRHS) < 0 ? true : false; } }; template<> struct XalanMapKeyTraits { typedef DOMStringHashFunction Hasher; typedef XALAN_STD_QUALIFIER equal_to Comparator; }; inline bool operator==( const XalanDOMString& theLHS, const XalanDOMString& theRHS) { return XalanDOMString::equals(theLHS, theRHS); } inline bool operator==( const XalanDOMString& theLHS, const XalanDOMChar* theRHS) { return XalanDOMString::equals(theLHS, theRHS); } inline bool operator==( const XalanDOMChar* theLHS, const XalanDOMString& theRHS) { // Note reversing of operands... return XalanDOMString::equals(theLHS, theRHS); } inline bool operator!=( const XalanDOMString& theLHS, const XalanDOMString& theRHS) { return !(theLHS == theRHS); } inline bool operator!=( const XalanDOMChar* theLHS, const XalanDOMString& theRHS) { return !(theLHS == theRHS); } inline bool operator!=( const XalanDOMString& theLHS, const XalanDOMChar* theRHS) { return !(theRHS == theLHS); } #if 0 inline XalanDOMString& add( const XalanDOMString& theLHS, const XalanDOMString& theRHS, XalanDOMString& result) { result.assign(theLHS); return result += theRHS; } inline XalanDOMString& add( const XalanDOMString& theLHS, const XalanDOMChar* theRHS, XalanDOMString& result) { result.assign(theLHS); return result += theRHS; } inline XalanDOMString& add( const XalanDOMChar* theLHS, const XalanDOMString& theRHS, XalanDOMString& result) { result.assign(theLHS); return result += theRHS; } inline const XalanDOMString& add( const char* theLHS, const XalanDOMString& theRHS, XalanDOMString& result) { result.assign(theLHS); result.append(theRHS); return result; } inline const XalanDOMString& add( const XalanDOMString& theLHS, const char* theRHS, XalanDOMString& result) { result.assign(theLHS); result.append(theRHS); return result; } #endif // Standard vector of XalanDOMChars and chars typedef XalanVector XalanDOMCharVectorType; typedef XalanVector CharVectorType; /** * Convert a XalanDOMChar string to C++ standard library * vector, transcoding to the default local code * page. * * @param sourceString The source string * @param sourceStringLength The source string length. * @param targetVector The target string * @param terminate If true, the transcoded string will be null-terminated * @return true if successful, false if not. */ XALAN_DOM_EXPORT_FUNCTION(bool) TranscodeToLocalCodePage( const XalanDOMChar* theSourceString, XalanDOMString::size_type theSourceStringLength, CharVectorType& targetVector, bool terminate = false); /** * Convert a XalanDOMChar string to C++ standard library * vector, transcoding to the default local code * page. If the source string contines code points, that can't be * represented in the local code page, the substitution character will be used * * @param sourceString The source string * @param sourceStringLength The source string length. * @param targetVector The target string * @param terminate If true, the transcoded string will be null-terminated * @param theSubstitutionChar The substitution character for code points that are not presentable * in the local page */ XALAN_DOM_EXPORT_FUNCTION(void) TranscodeToLocalCodePage( const XalanDOMChar* theSourceString, XalanDOMString::size_type theSourceStringLength, CharVectorType& targetVector, bool terminate, char theSubstitutionChar); /** * Convert a string to a XalanDOMString, transcoding from * the default local code page. * * @param theSourceString The source string * @param theSourceStringLength The source string length. * @return The new string. */ #if !defined(XALAN_DEVELOPMENT) inline const XalanDOMString TranscodeFromLocalCodePage( const char* theSourceString, XalanDOMString::size_type theSourceStringLength = XalanDOMString::npos) { return XalanDOMString(theSourceString,XalanMemMgrs::getDefaultXercesMemMgr(), theSourceStringLength); } #endif /** * Convert a XalanDOMChar string to C++ standard library * vector, transcoding to the default local code * page. The string _must_ be null-terminated. * * @param theSourceString The source string * @param targetVector The target string * @param terminate If true, the transcoded string will be null-terminated * @return true if successful, false if not. */ XALAN_DOM_EXPORT_FUNCTION(bool) TranscodeToLocalCodePage( const XalanDOMChar* theSourceString, CharVectorType& targetVector, bool terminate = false); /** * Convert a XalanDOMChar string to C++ standard library * vector, transcoding to the default local code * page. The string _must_ be null-terminated. * * @param theSourceString The source string * @param targetVector The target string * @param terminate If true, the transcoded string will be null-terminated */ XALAN_DOM_EXPORT_FUNCTION(void) TranscodeToLocalCodePage( const XalanDOMChar* theSourceString, CharVectorType& targetVector, bool terminate, char theSubstitutionChar); /** * Convert XalanDOMString to C++ standard library * vector, transcoding to the default local code * page. Null-terminate the sttring... * * @param theSourceString source string * @return The transcoded string. */ #if !defined(XALAN_DEVELOPMENT) inline const CharVectorType TranscodeToLocalCodePage(const XalanDOMChar* theSourceString) { CharVectorType theResult; TranscodeToLocalCodePage(theSourceString, theResult, true, '?'); return theResult; } #endif /** * Convert XalanDOMString to C++ standard library * vector, transcoding to the default local code * page. * * @param theSourceString The source string * @param theTargetVector The target string * @return true if successful, false if not. */ inline bool TranscodeToLocalCodePage( const XalanDOMString& theSourceString, CharVectorType& theTargetVector, bool terminate = false) { return TranscodeToLocalCodePage( theSourceString.c_str(), theTargetVector, terminate); } /** * Convert XalanDOMString to C++ standard library * vector, transcoding to the default local code * page. * * @param theSourceString The source string * @param targetVector The target string * @param terminate If true, the transcoded string will be null-terminated * @param theSubstitutionChar The substitution character for code points that are not presentable * in the local page */ XALAN_DOM_EXPORT_FUNCTION(void) TranscodeToLocalCodePage( const XalanDOMString& theSourceString, CharVectorType& theTargetVector, bool terminate, char theSubstitutionChar); /** * Convert XalanDOMString to C++ standard library * vector, transcoding to the default local code * page. * * @param thetheSourceString source string * @return The transcoded string. */ #if !defined(XALAN_DEVELOPMENT) inline const CharVectorType TranscodeToLocalCodePage(const XalanDOMString& theSourceString) { CharVectorType theResult; TranscodeToLocalCodePage(theSourceString.c_str(), theResult, true, '?'); return theResult; } #endif /** * Convert a string to a XalanDOMString, transcoding from * the default local code page. * * @param theSourceString The source string * @param theResult The result. * @param theSourceStringLength The source string length. * @return The new string. */ inline const XalanDOMString& TranscodeFromLocalCodePage( const char* theSourceString, XalanDOMString& theResult, XalanDOMString::size_type theSourceStringLength = XalanDOMString::npos) { theResult.assign(theSourceString, theSourceStringLength); return theResult; } /** * Convert a string to a C++ standard library * vector, transcoding from the default local code * page. * * @param theSourceString The source string * @param theSourceStringLength The source string length. * @param targetVector The target string * @param terminate If true, the transcoded string will be null-terminated * @return true if successful, false if not. */ XALAN_DOM_EXPORT_FUNCTION(bool) TranscodeFromLocalCodePage( const char* theSourceString, XalanDOMString::size_type theSourceStringLength, XalanDOMCharVectorType& theTargetVector, bool terminate = false); /** * Convert a string to a C++ standard library * vector, transcoding from the default local code * page. The string _must_ be null-terminated. * * @param sourceString The source string * @param targetVector The target string * @param terminate If true, the transcoded string will be null-terminated * @return true if successful, false if not. */ XALAN_DOM_EXPORT_FUNCTION(bool) TranscodeFromLocalCodePage( const char* theSourceString, XalanDOMCharVectorType& theTargetVector, bool terminate = false); /** * Convert a string to a C++ standard library * vector, transcoding from the default local code * page. * * @param theSourceString The source string * @param theSourceStringLength The source string length. * @param theSourceStringIsNullTerminated true if the source string is null-terminated, otherwise false. * @param targetVector The target string * @param terminate If true, the transcoded string will be null-terminated * @return true if successful, false if not. */ XALAN_DOM_EXPORT_FUNCTION(bool) TranscodeFromLocalCodePage( const char* theSourceString, XalanDOMString::size_type theSourceStringLength, bool theSourceStringIsNullTerminated, XalanDOMCharVectorType& theTargetVector, bool terminate = false); /** * Convert a vector of characters to a XalanDOMString, * transcoding from the default local code * * @param theSourceString The source vector. * @param theResult The result. * @return The transcoded string. */ XALAN_DOM_EXPORT_FUNCTION(const XalanDOMString&) TranscodeFromLocalCodePage( const CharVectorType& theSourceString, XalanDOMString& theResult); XALAN_USES_MEMORY_MANAGER(XalanDOMString) XALAN_CPP_NAMESPACE_END #endif // !defined(XALANDOMSTRING_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanDOM/XalanEntity.cpp0000664000175000000640000000241411731656103020603 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanEntity.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanEntity::XalanEntity() : XalanNode() { } XalanEntity::~XalanEntity() { } XalanEntity::XalanEntity(const XalanEntity& theSource) : XalanNode(theSource) { } XalanEntity& XalanEntity::operator=(const XalanEntity& theSource) { XalanNode::operator=(theSource); return *this; } bool XalanEntity::operator==(const XalanEntity& /* theRHS */) const { return false; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanDOM/XalanDocumentType.cpp0000664000175000000640000000253411731656103021752 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanDocumentType.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanDocumentType::XalanDocumentType() : XalanNode() { } XalanDocumentType::~XalanDocumentType() { } XalanDocumentType::XalanDocumentType(const XalanDocumentType& theSource) : XalanNode(theSource) { } XalanDocumentType& XalanDocumentType::operator=(const XalanDocumentType& theSource) { XalanNode::operator=(theSource); return *this; } bool XalanDocumentType::operator==(const XalanDocumentType& /* theRHS */) const { return false; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanDOM/XalanEntity.hpp0000664000175000000640000001560711731656103020620 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANENTITY_HEADER_GUARD_1357924680) #define XALANENTITY_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN /* * * * Base class for the DOM Entity interface. * * This class is deprecated and should not be used!! */ class XALAN_DOM_EXPORT XalanEntity : public XalanNode { public: XalanEntity(); virtual ~XalanEntity(); // These interfaces are inherited from XalanNode... virtual const XalanDOMString& getNodeName() const = 0; /** * Gets the value of this node, depending on its type. */ virtual const XalanDOMString& getNodeValue() const = 0; /** * An enum value representing the type of the underlying object. */ virtual NodeType getNodeType() const = 0; /** * Gets the parent of this node. * * All nodes, except Document, * DocumentFragment, and Attr may have a parent. * However, if a node has just been created and not yet added to the tree, * or if it has been removed from the tree, a null Node * is returned. */ virtual XalanNode* getParentNode() const = 0; /** * Gets a NodeList that contains all children of this node. * * If there * are no children, this is a NodeList containing no nodes. * The content of the returned NodeList is "live" in the sense * that, for instance, changes to the children of the node object that * it was created from are immediately reflected in the nodes returned by * the NodeList accessors; it is not a static snapshot of the * content of the node. This is true for every NodeList, * including the ones returned by the getElementsByTagName * method. */ virtual const XalanNodeList* getChildNodes() const = 0; /** * Gets the first child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getFirstChild() const = 0; /** * Gets the last child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getLastChild() const = 0; /** * Gets the node immediately preceding this node. * * If there is no such node, this returns null. */ virtual XalanNode* getPreviousSibling() const = 0; /** * Gets the node immediately following this node. * * If there is no such node, this returns null. */ virtual XalanNode* getNextSibling() const = 0; /** * Gets a NamedNodeMap containing the attributes of this node (if it * is an Element) or null otherwise. */ virtual const XalanNamedNodeMap* getAttributes() const = 0; /** * Gets the Document object associated with this node. * * This is also * the Document object used to create new nodes. When this * node is a Document or a DocumentType * which is not used with any Document yet, this is * null. */ virtual XalanDocument* getOwnerDocument() const = 0; /** * Get the namespace URI of * this node, or null if it is unspecified. *

    * This is not a computed value that is the result of a namespace lookup * based on an examination of the namespace declarations in scope. It is * merely the namespace URI given at creation time. *

    * For nodes of any type other than ELEMENT_NODE and * ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, * such as createElement from the Document * interface, this is always null. */ virtual const XalanDOMString& getNamespaceURI() const = 0; /** * Get the namespace prefix * of this node, or null if it is unspecified. */ virtual const XalanDOMString& getPrefix() const = 0; /** * Returns the local part of the qualified name of this node. *

    * For nodes created with a DOM Level 1 method, such as * createElement from the Document interface, * it is null. */ virtual const XalanDOMString& getLocalName() const = 0; /** * Determine if the document is node-order indexed. * * @return true if the document is indexed, otherwise false. */ virtual bool isIndexed() const = 0; /** * Get the node's index. Valid only if the owner document * reports that the document is node-order indexed. * * @return The index value, or 0 if the node is not indexed. */ virtual IndexType getIndex() const = 0; // These interfaces are new to XalanEntity... /** * Get the public identifier of this notation. * * If the public identifier was not * specified, this is null. * @return Returns the public identifier of the notation */ virtual const XalanDOMString& getPublicId() const = 0; /** * Get the system identifier of this notation. * * If the system identifier was not * specified, this is null. * @return Returns the system identifier of the notation */ virtual const XalanDOMString& getSystemId() const = 0; /** * For unparsed entities, the name of the notation for the entity. * * For parsed entities, this is null. */ virtual const XalanDOMString& getNotationName() const = 0; protected: XalanEntity(const XalanEntity& theSource); XalanEntity& operator=(const XalanEntity& theSource); bool operator==(const XalanEntity& theRHS) const; private: }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANENTITY_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanDOM/XalanText.cpp0000664000175000000640000000241711731656103020256 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanText.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanText::XalanText() : XalanCharacterData() { } XalanText::~XalanText() { } XalanText::XalanText(const XalanText& theSource) : XalanCharacterData(theSource) { } XalanText& XalanText::operator=(const XalanText& theSource) { XalanCharacterData::operator=(theSource); return *this; } bool XalanText::operator==(const XalanText& /* theRHS */) const { return false; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanDOM/XalanDocumentType.hpp0000664000175000000640000001605411731656103021761 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANDOCUMENTTYPE_HEADER_GUARD_1357924680) #define XALANDOCUMENTTYPE_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN /* * * * Base class for the DOM DocumentType interface. * * This class is deprecated and should not be used!! */ class XALAN_DOM_EXPORT XalanDocumentType : public XalanNode { public: XalanDocumentType(); virtual ~XalanDocumentType(); // These interfaces are inherited from XalanNode... /** * Gets the name of this node. */ virtual const XalanDOMString& getNodeName() const = 0; /** * Gets the value of this node, depending on its type. */ virtual const XalanDOMString& getNodeValue() const = 0; /** * An enum value representing the type of the underlying object. */ virtual NodeType getNodeType() const = 0; /** * Gets the parent of this node. * * All nodes, except Document, * DocumentFragment, and Attr may have a parent. * However, if a node has just been created and not yet added to the tree, * or if it has been removed from the tree, a null Node * is returned. */ virtual XalanNode* getParentNode() const = 0; /** * Gets a NodeList that contains all children of this node. * * If there are no children, this is a NodeList containing no nodes. */ virtual const XalanNodeList* getChildNodes() const = 0; /** * Gets the first child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getFirstChild() const = 0; /** * Gets the last child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getLastChild() const = 0; /** * Gets the node immediately preceding this node. * * If there is no such node, this returns null. */ virtual XalanNode* getPreviousSibling() const = 0; /** * Gets the node immediately following this node. * * If there is no such node, this returns null. */ virtual XalanNode* getNextSibling() const = 0; /** * Gets a NamedNodeMap containing the attributes of this node (if it * is an Element) or null otherwise. */ virtual const XalanNamedNodeMap* getAttributes() const = 0; /** * Gets the Document object associated with this node. * * This is also * the Document object used to create new nodes. When this * node is a Document or a DocumentType * which is not used with any Document yet, this is * null. */ virtual XalanDocument* getOwnerDocument() const = 0; /** * Get the namespace URI of * this node, or null if it is unspecified. *

    * This is not a computed value that is the result of a namespace lookup * based on an examination of the namespace declarations in scope. It is * merely the namespace URI given at creation time. *

    * For nodes of any type other than ELEMENT_NODE and * ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, * such as createElement from the Document * interface, this is always null. */ virtual const XalanDOMString& getNamespaceURI() const = 0; /** * Get the namespace prefix * of this node, or null if it is unspecified. */ virtual const XalanDOMString& getPrefix() const = 0; /** * Returns the local part of the qualified name of this node. *

    * For nodes created with a DOM Level 1 method, such as * createElement from the Document interface, * it is null. */ virtual const XalanDOMString& getLocalName() const = 0; /** * Determine if the document is node-order indexed. * * @return true if the document is indexed, otherwise false. */ virtual bool isIndexed() const = 0; /** * Get the node's index. Valid only if the owner document * reports that the document is node-order indexed. * * @return The index value, or 0 if the node is not indexed. */ virtual IndexType getIndex() const = 0; // These interfaces are new to XalanDocumentType... /** * The name of DTD; i.e., the name immediately following the * DOCTYPE keyword in an XML source document. */ virtual const XalanDOMString& getName() const = 0; /** * This function returns a NamedNodeMap containing the general entities, both * external and internal, declared in the DTD. Parameter entities are not contained. * Duplicates are discarded. */ virtual const XalanNamedNodeMap* getEntities() const = 0; /** * This function returns a named node map containing an entry for * each notation declared in a document's DTD. Duplicates are discarded. */ virtual const XalanNamedNodeMap* getNotations() const = 0; /** * Get the public identifier of the external subset. * @return The public identifier of the external subset. */ virtual const XalanDOMString& getPublicId() const = 0; /** * Get the system identifier of the external subset. * @return The system identifier of the external subset. */ virtual const XalanDOMString& getSystemId() const = 0; /** * Get the internal subset as a string. * @return The internal subset as a string. */ virtual const XalanDOMString& getInternalSubset() const = 0; protected: XalanDocumentType(const XalanDocumentType& theSource); XalanDocumentType& operator=(const XalanDocumentType& theSource); bool operator==(const XalanDocumentType& theRHS) const; private: }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANDOCUMENTTYPE_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanDOM/XalanElement.cpp0000664000175000000640000000243211731656103020720 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanElement.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanElement::XalanElement() : XalanNode() { } XalanElement::~XalanElement() { } XalanElement::XalanElement(const XalanElement& theSource) : XalanNode(theSource) { } XalanElement& XalanElement::operator=(const XalanElement& theSource) { XalanNode::operator=(theSource); return *this; } bool XalanElement::operator==(const XalanElement& /* theRHS */) const { return false; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanDOM/XalanText.hpp0000664000175000000640000001554611731656103020272 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANTEXT_HEADER_GUARD_1357924680) #define XALANTEXT_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN /* * * * Base class for the DOM Text interface. * * This class is experimental and subject to change!! */ class XALAN_DOM_EXPORT XalanText : public XalanCharacterData { public: XalanText(); virtual ~XalanText(); // These interfaces are inherited from XalanNode... virtual const XalanDOMString& getNodeName() const = 0; /** * Gets the value of this node, depending on its type. */ virtual const XalanDOMString& getNodeValue() const = 0; /** * An enum value representing the type of the underlying object. */ virtual NodeType getNodeType() const = 0; /** * Gets the parent of this node. * * All nodes, except Document, * DocumentFragment, and Attr may have a parent. * However, if a node has just been created and not yet added to the tree, * or if it has been removed from the tree, a null Node * is returned. */ virtual XalanNode* getParentNode() const = 0; /** * Gets a NodeList that contains all children of this node. * * If there * are no children, this is a NodeList containing no nodes. * The content of the returned NodeList is "live" in the sense * that, for instance, changes to the children of the node object that * it was created from are immediately reflected in the nodes returned by * the NodeList accessors; it is not a static snapshot of the * content of the node. This is true for every NodeList, * including the ones returned by the getElementsByTagName * method. */ virtual const XalanNodeList* getChildNodes() const = 0; /** * Gets the first child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getFirstChild() const = 0; /** * Gets the last child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getLastChild() const = 0; /** * Gets the node immediately preceding this node. * * If there is no such node, this returns null. */ virtual XalanNode* getPreviousSibling() const = 0; /** * Gets the node immediately following this node. * * If there is no such node, this returns null. */ virtual XalanNode* getNextSibling() const = 0; /** * Gets a NamedNodeMap containing the attributes of this node (if it * is an Element) or null otherwise. */ virtual const XalanNamedNodeMap* getAttributes() const = 0; /** * Gets the Document object associated with this node. * * This is also * the Document object used to create new nodes. When this * node is a Document or a DocumentType * which is not used with any Document yet, this is * null. */ virtual XalanDocument* getOwnerDocument() const = 0; /** * Get the namespace URI of * this node, or null if it is unspecified. *

    * This is not a computed value that is the result of a namespace lookup * based on an examination of the namespace declarations in scope. It is * merely the namespace URI given at creation time. *

    * For nodes of any type other than ELEMENT_NODE and * ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, * such as createElement from the Document * interface, this is always null. */ virtual const XalanDOMString& getNamespaceURI() const = 0; /** * Get the namespace prefix * of this node, or null if it is unspecified. */ virtual const XalanDOMString& getPrefix() const = 0; /** * Returns the local part of the qualified name of this node. *

    * For nodes created with a DOM Level 1 method, such as * createElement from the Document interface, * it is null. */ virtual const XalanDOMString& getLocalName() const = 0; /** * Determine if the document is node-order indexed. * * @return true if the document is indexed, otherwise false. */ virtual bool isIndexed() const = 0; /** * Get the node's index. Valid only if the owner document * reports that the document is node-order indexed. * * @return The index value, or 0 if the node is not indexed. */ virtual IndexType getIndex() const = 0; // These interfaces are inherited from XalanCharacterData... /** * Returns the character data of the node that implements this interface. * * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly. * @exception DOMException * DOMSTRING_SIZE_ERR: Raised when it would return more characters than * fit in a XalanDOMString variable on the implementation * platform. */ virtual const XalanDOMString& getData() const = 0; // These interfaces are new to XalanText... /** * Determine whether the text node instance is composed entirely of * XML whitespace. * * @return true if the node is all XML whitespace, false if not */ virtual bool isWhitespace() const = 0; protected: XalanText(const XalanText& theSource); XalanText& operator=(const XalanText& theSource); bool operator==(const XalanText& theRHS) const; private: }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANTEXT_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanDOM/XalanNotation.cpp0000664000175000000640000000244411731656103021125 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanNotation.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanNotation::XalanNotation() : XalanNode() { } XalanNotation::~XalanNotation() { } XalanNotation::XalanNotation(const XalanNotation& theSource) : XalanNode(theSource) { } XalanNotation& XalanNotation::operator=(const XalanNotation& theSource) { XalanNode::operator=(theSource); return *this; } bool XalanNotation::operator==(const XalanNotation& /* theRHS */) const { return false; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanDOM/XalanElement.hpp0000664000175000000640000001404511731656103020730 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANELEMENT_HEADER_GUARD_1357924680) #define XALANELEMENT_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanAttr; /* * * * Base class for the DOM Element interface. * * This class is experimental and subject to change!! */ class XALAN_DOM_EXPORT XalanElement : public XalanNode { public: XalanElement(); virtual ~XalanElement(); // These interfaces are inherited from XalanNode virtual const XalanDOMString& getNodeName() const = 0; /** * Gets the value of this node, depending on its type. */ virtual const XalanDOMString& getNodeValue() const = 0; /** * An enum value representing the type of the underlying object. */ virtual NodeType getNodeType() const = 0; /** * Gets the parent of this node. * * All nodes, except Document, * DocumentFragment, and Attr may have a parent. * However, if a node has just been created and not yet added to the tree, * or if it has been removed from the tree, a null Node * is returned. */ virtual XalanNode* getParentNode() const = 0; /** * Gets a NodeList that contains all children of this node. * * If there are no children, this is a NodeList containing no nodes. */ virtual const XalanNodeList* getChildNodes() const = 0; /** * Gets the first child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getFirstChild() const = 0; /** * Gets the last child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getLastChild() const = 0; /** * Gets the node immediately preceding this node. * * If there is no such node, this returns null. */ virtual XalanNode* getPreviousSibling() const = 0; /** * Gets the node immediately following this node. * * If there is no such node, this returns null. */ virtual XalanNode* getNextSibling() const = 0; /** * Gets a NamedNodeMap containing the attributes of this node (if it * is an Element) or null otherwise. */ virtual const XalanNamedNodeMap* getAttributes() const = 0; /** * Gets the Document object associated with this node. * * This is also * the Document object used to create new nodes. When this * node is a Document or a DocumentType * which is not used with any Document yet, this is * null. */ virtual XalanDocument* getOwnerDocument() const = 0; /** * Get the namespace URI of * this node, or null if it is unspecified. *

    * This is not a computed value that is the result of a namespace lookup * based on an examination of the namespace declarations in scope. It is * merely the namespace URI given at creation time. *

    * For nodes of any type other than ELEMENT_NODE and * ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, * such as createElement from the Document * interface, this is always null. */ virtual const XalanDOMString& getNamespaceURI() const = 0; /** * Get the namespace prefix * of this node, or null if it is unspecified. */ virtual const XalanDOMString& getPrefix() const = 0; /** * Returns the local part of the qualified name of this node. *

    * For nodes created with a DOM Level 1 method, such as * createElement from the Document interface, * it is null. */ virtual const XalanDOMString& getLocalName() const = 0; /** * Determine if the document is node-order indexed. * * @return true if the document is indexed, otherwise false. */ virtual bool isIndexed() const = 0; /** * Get the node's index. Valid only if the owner document * reports that the document is node-order indexed. * * @return The index value, or 0 if the node is not indexed. */ virtual IndexType getIndex() const = 0; // These interfaces are new to XalanElement... /** * The name of the element. * * For example, in: <elementExample * id="demo"> ... </elementExample> , tagName has * the value "elementExample". Note that this is * case-preserving in XML, as are all of the operations of the DOM. */ virtual const XalanDOMString& getTagName() const = 0; protected: XalanElement(const XalanElement& theSource); XalanElement& operator=(const XalanElement& theSource); bool operator==(const XalanElement& theRHS) const; private: }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANELEMENT_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanDOM/XalanDOMException.cpp0000664000175000000640000000233011731656103021622 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanDOMException.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanDOMException::XalanDOMException(ExceptionCode code) : m_code(code) { } XalanDOMException::XalanDOMException(const XalanDOMException& theSource) : m_code(theSource.m_code) { } XalanDOMException::~XalanDOMException() { } XalanDOMException::ExceptionCode XalanDOMException::getExceptionCode() const { return m_code; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanDOM/XalanNotation.hpp0000664000175000000640000001530511731656103021132 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANNOTATION_HEADER_GUARD_1357924680) #define XALANNOTATION_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN /* * * * Base class for the DOM Notation interface. * * This class is deprecated and should not be used!! */ class XALAN_DOM_EXPORT XalanNotation : public XalanNode { public: XalanNotation(); virtual ~XalanNotation(); // These interfaces are inherited from XalanNode... virtual const XalanDOMString& getNodeName() const = 0; /** * Gets the value of this node, depending on its type. */ virtual const XalanDOMString& getNodeValue() const = 0; /** * An enum value representing the type of the underlying object. */ virtual NodeType getNodeType() const = 0; /** * Gets the parent of this node. * * All nodes, except Document, * DocumentFragment, and Attr may have a parent. * However, if a node has just been created and not yet added to the tree, * or if it has been removed from the tree, a null Node * is returned. */ virtual XalanNode* getParentNode() const = 0; /** * Gets a NodeList that contains all children of this node. * * If there * are no children, this is a NodeList containing no nodes. * The content of the returned NodeList is "live" in the sense * that, for instance, changes to the children of the node object that * it was created from are immediately reflected in the nodes returned by * the NodeList accessors; it is not a static snapshot of the * content of the node. This is true for every NodeList, * including the ones returned by the getElementsByTagName * method. */ virtual const XalanNodeList* getChildNodes() const = 0; /** * Gets the first child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getFirstChild() const = 0; /** * Gets the last child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getLastChild() const = 0; /** * Gets the node immediately preceding this node. * * If there is no such node, this returns null. */ virtual XalanNode* getPreviousSibling() const = 0; /** * Gets the node immediately following this node. * * If there is no such node, this returns null. */ virtual XalanNode* getNextSibling() const = 0; /** * Gets a NamedNodeMap containing the attributes of this node (if it * is an Element) or null otherwise. */ virtual const XalanNamedNodeMap* getAttributes() const = 0; /** * Gets the Document object associated with this node. * * This is also * the Document object used to create new nodes. When this * node is a Document or a DocumentType * which is not used with any Document yet, this is * null. */ virtual XalanDocument* getOwnerDocument() const = 0; /** * Get the namespace URI of * this node, or null if it is unspecified. *

    * This is not a computed value that is the result of a namespace lookup * based on an examination of the namespace declarations in scope. It is * merely the namespace URI given at creation time. *

    * For nodes of any type other than ELEMENT_NODE and * ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, * such as createElement from the Document * interface, this is always null. */ virtual const XalanDOMString& getNamespaceURI() const = 0; /** * Get the namespace prefix * of this node, or null if it is unspecified. */ virtual const XalanDOMString& getPrefix() const = 0; /** * Returns the local part of the qualified name of this node. *

    * For nodes created with a DOM Level 1 method, such as * createElement from the Document interface, * it is null. */ virtual const XalanDOMString& getLocalName() const = 0; /** * Determine if the document is node-order indexed. * * @return true if the document is indexed, otherwise false. */ virtual bool isIndexed() const = 0; /** * Get the node's index. Valid only if the owner document * reports that the document is node-order indexed. * * @return The index value, or 0 if the node is not indexed. */ virtual IndexType getIndex() const = 0; // These interfaces are new to XalanNotation... /** * Get the public identifier of this notation. * * If the public identifier was not * specified, this is null. * @return Returns the public identifier of the notation */ virtual const XalanDOMString& getPublicId() const = 0; /** * Get the system identifier of this notation. * * If the system identifier was not * specified, this is null. * @return Returns the system identifier of the notation */ virtual const XalanDOMString& getSystemId() const = 0; protected: XalanNotation(const XalanNotation& theSource); XalanNotation& operator=(const XalanNotation& theSource); bool operator==(const XalanNotation& theRHS) const; private: }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANNOTATION_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanDOM/XalanCDataSection.cpp0000664000175000000640000000253411731656103021633 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanCDATASection.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanCDATASection::XalanCDATASection() : XalanText() { } XalanCDATASection::~XalanCDATASection() { } XalanCDATASection::XalanCDATASection(const XalanCDATASection& theSource) : XalanText(theSource) { } XalanCDATASection& XalanCDATASection::operator=(const XalanCDATASection& theSource) { XalanText::operator=(theSource); return *this; } bool XalanCDATASection::operator==(const XalanCDATASection& /* theRHS */) const { return false; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanDOM/XalanDocumentFragment.cpp0000664000175000000640000000261411731656103022573 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanDocumentFragment.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanDocumentFragment::XalanDocumentFragment() : XalanNode() { } XalanDocumentFragment::~XalanDocumentFragment() { } XalanDocumentFragment::XalanDocumentFragment(const XalanDocumentFragment& theSource) : XalanNode(theSource) { } XalanDocumentFragment& XalanDocumentFragment::operator=(const XalanDocumentFragment& theSource) { XalanNode::operator=(theSource); return *this; } bool XalanDocumentFragment::operator==(const XalanDocumentFragment& /* theRHS */) const { return false; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanDOM/XalanDOMException.hpp0000664000175000000640000000650511731656103021637 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANDOMEXCEPTION_HEADER_GUARD_1357924680) #define XALANDOMEXCEPTION_HEADER_GUARD_1357924680 #include XALAN_CPP_NAMESPACE_BEGIN /* * * * Base class for the DOM Exception interface. * * This class is experimental and subject to change!! */ class XALAN_DOM_EXPORT XalanDOMException { public: /** @name Enumerators for DOM Exceptions */ //@{ enum ExceptionCode { // These are the errors as defined in the W3C DOM recommendation. INDEX_SIZE_ERR = 1, DOMSTRING_SIZE_ERR = 2, HIERARCHY_REQUEST_ERR = 3, WRONG_DOCUMENT_ERR = 4, INVALID_CHARACTER_ERR = 5, NO_DATA_ALLOWED_ERR = 6, NO_MODIFICATION_ALLOWED_ERR = 7, NOT_FOUND_ERR = 8, NOT_SUPPORTED_ERR = 9, INUSE_ATTRIBUTE_ERR = 10, INVALID_STATE_ERR = 11, SYNTAX_ERR = 12, INVALID_MODIFICATION_ERR = 13, NAMESPACE_ERR = 14, INVALID_ACCESS_ERR = 15, // This is the first available number, // according to the spec. UNKNOWN_ERR = 201, // Indicates that an error occurred transcoding a // string. TRANSCODING_ERR = 202 }; //@} /** @name Constructors and assignment operator */ //@{ /** * Constructor which takes an error code and a message. * * @param code The error code which indicates the exception */ explicit XalanDOMException(ExceptionCode code = UNKNOWN_ERR); /** * Copy constructor. * * @param other The object to be copied. */ XalanDOMException(const XalanDOMException& theSource); //@} /** @name Destructor. */ //@{ /** * Destructor for XalanDOMException. */ virtual ~XalanDOMException(); //@} /** @name Get functions. */ //@{ /** * Returns a code value, from the set defined by the ExceptionCode enum, * indicating the type of error that occurred. * @return The exception code. */ virtual ExceptionCode getExceptionCode() const; private: // Not implemented... XalanDOMException& operator=(const XalanDOMException&); // Data members... const ExceptionCode m_code; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANDOMEXCEPTION_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanDOM/XalanDocumentFragment.hpp0000664000175000000640000000475611731656103022611 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANDOCUMENTFRAGMENT_HEADER_GUARD_1357924680) #define XALANDOCUMENTFRAGMENT_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_DOM_EXPORT XalanDocumentFragment : public XalanNode { public: XalanDocumentFragment(); virtual ~XalanDocumentFragment(); // These interfaces are inherited from XalanNode... virtual const XalanDOMString& getNodeName() const = 0; virtual const XalanDOMString& getNodeValue() const = 0; virtual NodeType getNodeType() const = 0; virtual XalanNode* getParentNode() const = 0; virtual const XalanNodeList* getChildNodes() const = 0; virtual XalanNode* getFirstChild() const = 0; virtual XalanNode* getLastChild() const = 0; virtual XalanNode* getPreviousSibling() const = 0; virtual XalanNode* getNextSibling() const = 0; virtual const XalanNamedNodeMap* getAttributes() const = 0; virtual XalanDocument* getOwnerDocument() const = 0; virtual const XalanDOMString& getNamespaceURI() const = 0; virtual const XalanDOMString& getPrefix() const = 0; virtual const XalanDOMString& getLocalName() const = 0; virtual bool isIndexed() const = 0; virtual IndexType getIndex() const = 0; protected: XalanDocumentFragment(const XalanDocumentFragment& theSource); XalanDocumentFragment& operator=(const XalanDocumentFragment& theSource); bool operator==(const XalanDocumentFragment& theRHS) const; private: }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANDOCUMENTFRAGMENT_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanDOM/XalanEmptyNamedNodeMap.cpp0000664000175000000640000000367311731656103022646 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanEmptyNamedNodeMap.hpp" #include XALAN_CPP_NAMESPACE_BEGIN XalanEmptyNamedNodeMap::XalanEmptyNamedNodeMap() : XalanNamedNodeMap() { } XalanEmptyNamedNodeMap::~XalanEmptyNamedNodeMap() { } XalanEmptyNamedNodeMap::XalanEmptyNamedNodeMap(const XalanEmptyNamedNodeMap& theSource) : XalanNamedNodeMap(theSource) { } XalanEmptyNamedNodeMap& XalanEmptyNamedNodeMap::operator=(const XalanEmptyNamedNodeMap& theSource) { XalanNamedNodeMap::operator=(theSource); return *this; } bool XalanEmptyNamedNodeMap::operator==(const XalanEmptyNamedNodeMap& /* theRHS */) const { return true; } XalanNode* XalanEmptyNamedNodeMap::item(XalanSize_t /* index */) const { return 0; } XalanNode* XalanEmptyNamedNodeMap::getNamedItem(const XalanDOMString& /* name */) const { return 0; } XalanSize_t XalanEmptyNamedNodeMap::getLength() const { return 0; } XalanNode* XalanEmptyNamedNodeMap::getNamedItemNS( const XalanDOMString& /* namespaceURI */, const XalanDOMString& /* localName */) const { return 0; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanDOM/XalanAttr.cpp0000664000175000000640000000236411731656103020245 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanAttr.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanAttr::XalanAttr() : XalanNode() { } XalanAttr::~XalanAttr() { } XalanAttr::XalanAttr(const XalanAttr& theSource) : XalanNode(theSource) { } XalanAttr& XalanAttr::operator=(const XalanAttr& theSource) { XalanNode::operator=(theSource); return *this; } bool XalanAttr::operator==(const XalanAttr& /* theRHS */) const { return false; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanDOM/XalanEmptyNamedNodeMap.hpp0000664000175000000640000000346411731656103022651 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANEMPTYNAMEDNODEMAP_HEADER_GUARD_1357924680) #define XALANEMPTYNAMEDNODEMAP_HEADER_GUARD_1357924680 #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_DOM_EXPORT XalanEmptyNamedNodeMap : public XalanNamedNodeMap { public: XalanEmptyNamedNodeMap(); virtual ~XalanEmptyNamedNodeMap(); XalanEmptyNamedNodeMap(const XalanEmptyNamedNodeMap& theSource); XalanEmptyNamedNodeMap& operator=(const XalanEmptyNamedNodeMap& theSource); bool operator==(const XalanEmptyNamedNodeMap& theRHS) const; virtual XalanNode* item(XalanSize_t index) const; virtual XalanNode* getNamedItem(const XalanDOMString& name) const; virtual XalanSize_t getLength() const; virtual XalanNode* getNamedItemNS( const XalanDOMString& namespaceURI, const XalanDOMString& localName) const; private: }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANEMPTYNAMEDNODEMAP_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanDOM/XalanNodeListSurrogate.cpp0000664000175000000640000000353011731656103022744 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanNodeListSurrogate.hpp" #include "XalanNode.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanNodeListSurrogate::XalanNodeListSurrogate(const XalanNode& theNode) : XalanNodeList(), m_node(&theNode) { } XalanNodeListSurrogate::XalanNodeListSurrogate(const XalanNodeListSurrogate& theSource) : XalanNodeList(theSource), m_node(theSource.m_node) { } XalanNodeListSurrogate::~XalanNodeListSurrogate() { } XalanNode* XalanNodeListSurrogate::item(XalanSize_t index) const { XalanNode* theCurrentChild = m_node->getFirstChild(); for(XalanSize_t i = 0; i < index && theCurrentChild != 0; ++i) { theCurrentChild = theCurrentChild->getNextSibling(); } return theCurrentChild; } XalanSize_t XalanNodeListSurrogate::getLength() const { XalanSize_t theLength = 0; XalanNode* theCurrentChild = m_node->getFirstChild(); while(theCurrentChild != 0) { ++theLength; theCurrentChild = theCurrentChild->getNextSibling(); } return theLength; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanDOM/XalanProcessingInstruction.cpp0000664000175000000640000000271611731656103023712 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanProcessingInstruction.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanProcessingInstruction::XalanProcessingInstruction() : XalanNode() { } XalanProcessingInstruction::~XalanProcessingInstruction() { } XalanProcessingInstruction::XalanProcessingInstruction(const XalanProcessingInstruction& theSource) : XalanNode(theSource) { } XalanProcessingInstruction& XalanProcessingInstruction::operator=(const XalanProcessingInstruction& theSource) { XalanNode::operator=(theSource); return *this; } bool XalanProcessingInstruction::operator==(const XalanProcessingInstruction& /* theRHS */) const { return false; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanDOM/XalanDocument.cpp0000664000175000000640000000244411731656103021110 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanDocument.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanDocument::XalanDocument() : XalanNode() { } XalanDocument::~XalanDocument() { } XalanDocument::XalanDocument(const XalanDocument& theSource) : XalanNode(theSource) { } XalanDocument& XalanDocument::operator=(const XalanDocument& theSource) { XalanNode::operator=(theSource); return *this; } bool XalanDocument::operator==(const XalanDocument& /* theRHS */) const { return false; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanDOM/XalanAttr.hpp0000664000175000000640000000573211731656103020254 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANATTR_HEADER_GUARD_1357924680) #define XALANATTR_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanElement; /* * Base class for the DOM Attr interface. */ class XALAN_DOM_EXPORT XalanAttr : public XalanNode { public: XalanAttr(); virtual ~XalanAttr(); // These interfaces are inherited from XalanNode... virtual const XalanDOMString& getNodeName() const = 0; virtual const XalanDOMString& getNodeValue() const = 0; virtual NodeType getNodeType() const = 0; virtual XalanNode* getParentNode() const = 0; virtual const XalanNodeList* getChildNodes() const = 0; virtual XalanNode* getFirstChild() const = 0; virtual XalanNode* getLastChild() const = 0; virtual XalanNode* getPreviousSibling() const = 0; virtual XalanNode* getNextSibling() const = 0; virtual const XalanNamedNodeMap* getAttributes() const = 0; virtual XalanDocument* getOwnerDocument() const = 0; virtual const XalanDOMString& getNamespaceURI() const = 0; virtual const XalanDOMString& getPrefix() const = 0; virtual const XalanDOMString& getLocalName() const = 0; virtual bool isIndexed() const = 0; virtual IndexType getIndex() const = 0; // These interfaces are new to XalanAttr... /** * Returns the name of this attribute. */ virtual const XalanDOMString& getName() const = 0; /** * Returns the value of the attribute. * * The value of the attribute is returned as a string. */ virtual const XalanDOMString& getValue() const = 0; /** * The XalanElement node this attribute is attached to. * If there is no such node, this returns a null pointer. */ virtual XalanElement* getOwnerElement() const = 0; protected: XalanAttr(const XalanAttr& theSource); XalanAttr& operator=(const XalanAttr& theSource); bool operator==(const XalanAttr& theRHS) const; private: }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANATTR_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanDOM/XalanDOMDefinitions.hpp0000664000175000000640000000233311731656103022147 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #if !defined(XALAN_DOM_DEFINITIONS) #define XALAN_DOM_DEFINITIONS #include #if defined(XALAN_BUILD_DLL) #define XALAN_DOM_EXPORT XALAN_PLATFORM_EXPORT #define XALAN_DOM_EXPORT_FUNCTION(T) XALAN_PLATFORM_EXPORT_FUNCTION(T) #else #define XALAN_DOM_EXPORT XALAN_PLATFORM_IMPORT #define XALAN_DOM_EXPORT_FUNCTION(T) XALAN_PLATFORM_IMPORT_FUNCTION(T) #endif #endif xalan-c-1.11/c/src/xalanc/XalanDOM/XalanNodeList.cpp0000664000175000000640000000233511731656103021052 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanNodeList.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanNodeList::XalanNodeList() { } XalanNodeList::~XalanNodeList() { } XalanNodeList::XalanNodeList(const XalanNodeList& /* theSource */) { } XalanNodeList& XalanNodeList::operator=(const XalanNodeList& /* theSource */) { return *this; } bool XalanNodeList::operator==(const XalanNodeList& /* theRHS */) const { return false; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanDOM/XalanNodeListSurrogate.hpp0000664000175000000640000000405711731656103022756 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANNODELISTSURROGATE_HEADER_GUARD_1357924680) #define XALANNODELISTSURROGATE_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanNode; /* * * * Helper class for implementing the DOM NodeList interface. * * This class is deprecated and should not be used!! */ class XALAN_DOM_EXPORT XalanNodeListSurrogate : public XalanNodeList { public: XalanNodeListSurrogate(const XalanNode& theNode); XalanNodeListSurrogate(const XalanNodeListSurrogate& theSource); virtual ~XalanNodeListSurrogate(); XalanNodeListSurrogate& operator=(const XalanNodeListSurrogate& theSource) { m_node = theSource.m_node; XalanNodeList::operator=(theSource); return *this; } bool operator==(const XalanNodeListSurrogate& theRHS) const { return m_node == theRHS.m_node ? true : false; } virtual XalanNode* item(XalanSize_t index) const; virtual XalanSize_t getLength() const; private: const XalanNode* m_node; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANNODELISTSURROGATE_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanDOM/XalanProcessingInstruction.hpp0000664000175000000640000001541011731656103023712 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANPROCESSINGINSTRUCTION_HEADER_GUARD_1357924680) #define XALANPROCESSINGINSTRUCTION_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_DOM_EXPORT XalanProcessingInstruction : public XalanNode { public: XalanProcessingInstruction(); virtual ~XalanProcessingInstruction(); // These interfaces are inherited from XalanNode... virtual const XalanDOMString& getNodeName() const = 0; /** * Gets the value of this node, depending on its type. */ virtual const XalanDOMString& getNodeValue() const = 0; /** * An enum value representing the type of the underlying object. */ virtual NodeType getNodeType() const = 0; /** * Gets the parent of this node. * * All nodes, except Document, * DocumentFragment, and Attr may have a parent. * However, if a node has just been created and not yet added to the tree, * or if it has been removed from the tree, a null Node * is returned. */ virtual XalanNode* getParentNode() const = 0; /** * Gets a NodeList that contains all children of this node. * * If there * are no children, this is a NodeList containing no nodes. * The content of the returned NodeList is "live" in the sense * that, for instance, changes to the children of the node object that * it was created from are immediately reflected in the nodes returned by * the NodeList accessors; it is not a static snapshot of the * content of the node. This is true for every NodeList, * including the ones returned by the getElementsByTagName * method. */ virtual const XalanNodeList* getChildNodes() const = 0; /** * Gets the first child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getFirstChild() const = 0; /** * Gets the last child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getLastChild() const = 0; /** * Gets the node immediately preceding this node. * * If there is no such node, this returns null. */ virtual XalanNode* getPreviousSibling() const = 0; /** * Gets the node immediately following this node. * * If there is no such node, this returns null. */ virtual XalanNode* getNextSibling() const = 0; /** * Gets a NamedNodeMap containing the attributes of this node (if it * is an Element) or null otherwise. */ virtual const XalanNamedNodeMap* getAttributes() const = 0; /** * Gets the Document object associated with this node. * * This is also * the Document object used to create new nodes. When this * node is a Document or a DocumentType * which is not used with any Document yet, this is * null. */ virtual XalanDocument* getOwnerDocument() const = 0; /** * Get the namespace URI of * this node, or null if it is unspecified. *

    * This is not a computed value that is the result of a namespace lookup * based on an examination of the namespace declarations in scope. It is * merely the namespace URI given at creation time. *

    * For nodes of any type other than ELEMENT_NODE and * ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, * such as createElement from the Document * interface, this is always null. */ virtual const XalanDOMString& getNamespaceURI() const = 0; /** * Get the namespace prefix * of this node, or null if it is unspecified. */ virtual const XalanDOMString& getPrefix() const = 0; /** * Returns the local part of the qualified name of this node. *

    * For nodes created with a DOM Level 1 method, such as * createElement from the Document interface, * it is null. */ virtual const XalanDOMString& getLocalName() const = 0; /** * Determine if the document is node-order indexed. * * @return true if the document is indexed, otherwise false. */ virtual bool isIndexed() const = 0; /** * Get the node's index. Valid only if the owner document * reports that the document is node-order indexed. * * @return The index value, or 0 if the node is not indexed. */ virtual IndexType getIndex() const = 0; // These interfaces are new to XalanProcessingInstruction... /** * The target of this processing instruction. * * XML defines this as being the * first token following the markup that begins the processing instruction. */ virtual const XalanDOMString& getTarget() const = 0; /** * The content of this processing instruction. * * This is from the first non * white space character after the target to the character immediately * preceding the ?>. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly. */ virtual const XalanDOMString& getData() const = 0; protected: XalanProcessingInstruction(const XalanProcessingInstruction& theSource); XalanProcessingInstruction& operator=(const XalanProcessingInstruction& theSource); bool operator==(const XalanProcessingInstruction& theRHS) const; private: }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANPROCESSINGINSTRUCTION_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanDOM/XalanDocument.hpp0000664000175000000640000001466311731656103021123 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANDOCUMENT_HEADER_GUARD_1357924680) #define XALANDOCUMENT_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanElement; class XALAN_DOM_EXPORT XalanDocument : public XalanNode { public: XalanDocument(); virtual ~XalanDocument(); // These interfaces are inherited from XalanNode... virtual const XalanDOMString& getNodeName() const = 0; /** * Gets the value of this node, depending on its type. */ virtual const XalanDOMString& getNodeValue() const = 0; /** * An enum value representing the type of the underlying object. */ virtual NodeType getNodeType() const = 0; /** * Gets the parent of this node. * * All nodes, except Document, * DocumentFragment, and Attr may have a parent. * However, if a node has just been created and not yet added to the tree, * or if it has been removed from the tree, a null Node * is returned. */ virtual XalanNode* getParentNode() const = 0; /** * Gets a NodeList that contains all children of this node. * * If there are no children, this is a NodeList containing no nodes. */ virtual const XalanNodeList* getChildNodes() const = 0; /** * Gets the first child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getFirstChild() const = 0; /** * Gets the last child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getLastChild() const = 0; /** * Gets the node immediately preceding this node. * * If there is no such node, this returns null. */ virtual XalanNode* getPreviousSibling() const = 0; /** * Gets the node immediately following this node. * * If there is no such node, this returns null. */ virtual XalanNode* getNextSibling() const = 0; /** * Gets a NamedNodeMap containing the attributes of this node (if it * is an Element) or null otherwise. */ virtual const XalanNamedNodeMap* getAttributes() const = 0; /** * Gets the Document object associated with this node. * * This is also * the Document object used to create new nodes. When this * node is a Document or a DocumentType * which is not used with any Document yet, this is * null. */ virtual XalanDocument* getOwnerDocument() const = 0; /** * Get the namespace URI of * this node, or null if it is unspecified. *

    * This is not a computed value that is the result of a namespace lookup * based on an examination of the namespace declarations in scope. It is * merely the namespace URI given at creation time. *

    * For nodes of any type other than ELEMENT_NODE and * ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, * such as createElement from the Document * interface, this is always null. */ virtual const XalanDOMString& getNamespaceURI() const = 0; /** * Get the namespace prefix * of this node, or null if it is unspecified. */ virtual const XalanDOMString& getPrefix() const = 0; /** * Returns the local part of the qualified name of this node. *

    * For nodes created with a DOM Level 1 method, such as * createElement from the Document interface, * it is null. */ virtual const XalanDOMString& getLocalName() const = 0; /** * Determine if the document is node-order indexed. * * @return true if the document is indexed, otherwise false. */ virtual bool isIndexed() const = 0; /** * Get the node's index. Valid only if isIndexed() * reports that the document is node-order indexed. * * @return The index value, or 0 if the node is not indexed. */ virtual IndexType getIndex() const = 0; // These interfaces are new to XalanDocument... /** * Return a reference to the root element of the document. */ virtual XalanElement* getDocumentElement() const = 0; /** * Returns the Element whose ID is given by elementId. * If no such element exists, returns null. * Behavior is not defined if more than one element has this ID. *

    Note: The DOM implementation must have information that says * which attributes are of type ID. Attributes with the name "ID" are not of * type ID unless so defined. Implementations that do not know whether * attributes are of type ID or not are expected to return * null.

    * * @param elementId The unique id value for an element. * @return The matching element. */ virtual XalanElement* getElementById(const XalanDOMString& elementId) const = 0; protected: XalanDocument(const XalanDocument& theSource); XalanDocument& operator=(const XalanDocument& theSource); bool operator==(const XalanDocument& theRHS) const; private: }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANDOCUMENT_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanDOM/XalanNode.cpp0000664000175000000640000000225111731656103020213 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanNode.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanNode::XalanNode() { } XalanNode::~XalanNode() { } XalanNode::XalanNode(const XalanNode& /* theSource */) { } XalanNode& XalanNode::operator=(const XalanNode& /* theSource */) { return *this; } bool XalanNode::operator==(const XalanNode& /* theRHS */) const { return false; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanDOM/XalanDOMImplementation.cpp0000664000175000000640000000252311731656103022655 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanDOMImplementation.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanDOMImplementation::XalanDOMImplementation() { } XalanDOMImplementation::~XalanDOMImplementation() { } XalanDOMImplementation::XalanDOMImplementation(const XalanDOMImplementation& /* theSource */) { } XalanDOMImplementation& XalanDOMImplementation::operator=(const XalanDOMImplementation& /* theSource */) { return *this; } bool XalanDOMImplementation::operator==(const XalanDOMImplementation& /* theRHS */) const { return false; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanDOM/XalanNodeList.hpp0000664000175000000640000000413311731656103021055 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANNODELIST_HEADER_GUARD_1357924680) #define XALANNODELIST_HEADER_GUARD_1357924680 #include "XalanDOMDefinitions.hpp" XALAN_CPP_NAMESPACE_BEGIN class XalanNode; class XALAN_DOM_EXPORT XalanNodeList { public: XalanNodeList(); virtual ~XalanNodeList(); /** @name Get functions. */ //@{ /** * Returns the indexth item in the collection. * * If index is greater than or equal to the number of nodes in * the list, this returns null. * * @param index Index into the collection. * @return The node at the indexth position in the * NodeList, or null if that is not a valid * index. */ virtual XalanNode* item(XalanSize_t index) const = 0; /** * Returns the number of nodes in the list. * * The range of valid child node indices is 0 to length-1 inclusive. */ virtual XalanSize_t getLength() const = 0; protected: XalanNodeList(const XalanNodeList& theSource); XalanNodeList& operator=(const XalanNodeList& theSource); bool operator==(const XalanNodeList& theRHS) const; private: }; XALAN_CPP_NAMESPACE_END #endif // XALANNODELIST_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanDOM/XalanCharacterData.cpp0000664000175000000640000000255211731656103022020 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanCharacterData.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanCharacterData::XalanCharacterData() : XalanNode() { } XalanCharacterData::~XalanCharacterData() { } XalanCharacterData::XalanCharacterData(const XalanCharacterData& theSource) : XalanNode(theSource) { } XalanCharacterData& XalanCharacterData::operator=(const XalanCharacterData& theSource) { XalanNode::operator=(theSource); return *this; } bool XalanCharacterData::operator==(const XalanCharacterData& /* theRHS */) const { return false; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanDOM/XalanNamedNodeMap.cpp0000664000175000000640000000242111731656103021615 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanNamedNodeMap.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanNamedNodeMap::XalanNamedNodeMap() { } XalanNamedNodeMap::~XalanNamedNodeMap() { } XalanNamedNodeMap::XalanNamedNodeMap(const XalanNamedNodeMap& /* theSource */) { } XalanNamedNodeMap& XalanNamedNodeMap::operator=(const XalanNamedNodeMap& /* theSource */) { return *this; } bool XalanNamedNodeMap::operator==(const XalanNamedNodeMap& /* theRHS */) const { return false; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanDOM/XalanDOMImplementation.hpp0000664000175000000640000001076211731656103022666 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANDOMIMPLEMENTATION_HEADER_GUARD_1357924680) #define XALANDOMIMPLEMENTATION_HEADER_GUARD_1357924680 #include XALAN_CPP_NAMESPACE_BEGIN class XalanDocument; class XalanDocumentType; class XalanDOMString; /* * * * Base class for the DOM DOMImplementation interface. * * This class is deprecated and should not be used!! */ class XALAN_DOM_EXPORT XalanDOMImplementation { public: XalanDOMImplementation(); virtual ~XalanDOMImplementation(); /** @name Getter functions */ //@{ /** * Test if the DOM implementation implements a specific feature. * * @param feature The string of the feature to test (case-insensitive). The legal * values are defined throughout this specification. The string must be * an XML name (see also Compliance). * @param version This is the version number of the package name to test. * In Level 1, this is the string "1.0". If the version is not specified, * supporting any version of the feature will cause the method to return * true. * @return true if the feature is implemented in the specified * version, false otherwise. */ virtual bool hasFeature( const XalanDOMString& feature, const XalanDOMString& version) = 0; //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * Creates an empty DocumentType node. * Entity declarations and notations are not made available. * Entity reference expansions and default attribute additions * do not occur. It is expected that a future version of the DOM * will provide a way for populating a DocumentType. * @param qualifiedName The qualified name * of the document type to be created. * @param publicId The external subset public identifier. * @param systemId The external subset system identifier. * @return A new DocumentType node with * Node.ownerDocument set to null. */ virtual XalanDocumentType* createDocumentType( const XalanDOMString& qualifiedName, const XalanDOMString& publicId, const XalanDOMString& systemId) = 0; /** * Creates an XML Document object of the specified type * with its document element. * @param namespaceURI The namespace URI of * the document element to create, or null. * @param qualifiedName The qualified name * of the document element to be created. * @param doctype The type of document to be created or null. *

    When doctype is not null, its * Node.ownerDocument attribute is set to the document * being created. * @return A new Document object. * @exception DOMException * WRONG_DOCUMENT_ERR: Raised if doctype has already * been used with a different document. */ virtual XalanDocument* createDocument( const XalanDOMString& namespaceURI, const XalanDOMString& qualifiedName, const XalanDocumentType& doctype) = 0; //@} protected: XalanDOMImplementation(const XalanDOMImplementation& theSource); XalanDOMImplementation& operator=(const XalanDOMImplementation& theSource); bool operator==(const XalanDOMImplementation& theRHS) const; private: }; XALAN_CPP_NAMESPACE_END #endif // !defined (XALANDOMIMPLEMENTATION_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanDOM/XalanNode.hpp0000664000175000000640000001150711731656103020224 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANNODE_HEADER_GUARD_1357924680) #define XALANNODE_HEADER_GUARD_1357924680 #include XALAN_CPP_NAMESPACE_BEGIN class XalanDOMString; class XalanDocument; class XalanNamedNodeMap; class XalanNodeList; class XALAN_DOM_EXPORT XalanNode { public: XalanNode(); virtual ~XalanNode(); enum NodeType { UNKNOWN_NODE = 0, ELEMENT_NODE = 1, ATTRIBUTE_NODE = 2, TEXT_NODE = 3, CDATA_SECTION_NODE = 4, ENTITY_REFERENCE_NODE = 5, ENTITY_NODE = 6, PROCESSING_INSTRUCTION_NODE = 7, COMMENT_NODE = 8, DOCUMENT_NODE = 9, DOCUMENT_TYPE_NODE = 10, DOCUMENT_FRAGMENT_NODE = 11, NOTATION_NODE = 12 }; typedef unsigned long IndexType; /** * Gets the name of this node, depending on its type. */ virtual const XalanDOMString& getNodeName() const = 0; /** * Gets the value of this node, depending on its type. */ virtual const XalanDOMString& getNodeValue() const = 0; /** * An enum value representing the type of the underlying object. */ virtual NodeType getNodeType() const = 0; /** * Gets the parent of this node. * * If there is no such node, this returns a null pointer. */ virtual XalanNode* getParentNode() const = 0; /** * Gets a XalanNodeList that contains all children of this node. * * If there are no children, this is a XalanNodeList containing no nodes. */ virtual const XalanNodeList* getChildNodes() const = 0; /** * Gets the first child of this node. * * If there is no such node, this returns a null pointer. */ virtual XalanNode* getFirstChild() const = 0; /** * Gets the last child of this node. * * If there is no such node, this returns a null pointer. */ virtual XalanNode* getLastChild() const = 0; /** * Gets the node immediately preceding this node. * * If there is no such node, this returns a null pointer. */ virtual XalanNode* getPreviousSibling() const = 0; /** * Gets the node immediately following this node. * * If there is no such node, this returns a null pointer. */ virtual XalanNode* getNextSibling() const = 0; /** * Gets a XalanNamedNodeMap containing the attributes of this node (if it * is an XalanElement) or a null pointer otherwise. */ virtual const XalanNamedNodeMap* getAttributes() const = 0; /** * Gets the XalanDocument object associated with this node. This may * be a null pointer. */ virtual XalanDocument* getOwnerDocument() const = 0; /** * Get the namespace URI of this node. */ virtual const XalanDOMString& getNamespaceURI() const = 0; /** * Get the namespace prefix of this node. */ virtual const XalanDOMString& getPrefix() const = 0; /** * Returns the local part of the qualified name of this node. */ virtual const XalanDOMString& getLocalName() const = 0; /** * Determine if the document is node-order indexed. * * @return true if the document is indexed, otherwise false. */ virtual bool isIndexed() const = 0; /** * Get the node's index. Valid only if the owner document * reports that the document is node-order indexed. * * @return The index value, or 0 if the node is not indexed. */ virtual IndexType getIndex() const = 0; protected: XalanNode(const XalanNode& theSource); XalanNode& operator=(const XalanNode& theSource); bool operator==(const XalanNode& theRHS) const; private: #if !defined(NDEBUG) static size_t s_instanceCount; #endif }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANNODE_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanDOM/XalanEntityReference.cpp0000664000175000000640000000260211731656103022421 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanEntityReference.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanEntityReference::XalanEntityReference() : XalanNode() { } XalanEntityReference::~XalanEntityReference() { } XalanEntityReference::XalanEntityReference(const XalanEntityReference& theSource) : XalanNode(theSource) { } XalanEntityReference& XalanEntityReference::operator=(const XalanEntityReference& theSource) { XalanNode::operator=(theSource); return *this; } bool XalanEntityReference::operator==(const XalanEntityReference& /* theRHS */) const { return false; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanDOM/XalanCharacterData.hpp0000664000175000000640000000525411731656103022027 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANCHARACTERDATA_HEADER_GUARD_1357924680) #define XALANCHARACTERDATA_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_DOM_EXPORT XalanCharacterData : public XalanNode { public: XalanCharacterData(); virtual ~XalanCharacterData(); // These interfaces are inherited from XalanNode... virtual const XalanDOMString& getNodeName() const = 0; virtual const XalanDOMString& getNodeValue() const = 0; virtual NodeType getNodeType() const = 0; virtual XalanNode* getParentNode() const = 0; virtual const XalanNodeList* getChildNodes() const = 0; virtual XalanNode* getFirstChild() const = 0; virtual XalanNode* getLastChild() const = 0; virtual XalanNode* getPreviousSibling() const = 0; virtual XalanNode* getNextSibling() const = 0; virtual const XalanNamedNodeMap* getAttributes() const = 0; virtual XalanDocument* getOwnerDocument() const = 0; virtual const XalanDOMString& getNamespaceURI() const = 0; virtual const XalanDOMString& getPrefix() const = 0; virtual const XalanDOMString& getLocalName() const = 0; virtual bool isIndexed() const = 0; virtual IndexType getIndex() const = 0; // These interfaces are new to XalanCharacterData... /** * Returns the character data of the node that implements this interface. * */ virtual const XalanDOMString& getData() const = 0; protected: XalanCharacterData(const XalanCharacterData& theSource); XalanCharacterData& operator=(const XalanCharacterData& theSource); bool operator==(const XalanCharacterData& theRHS) const; private: }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANCHARACTERDATA_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanDOM/XalanNamedNodeMap.hpp0000664000175000000640000000613311731656103021626 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANNAMEDNODEMAP_HEADER_GUARD_1357924680) #define XALANNAMEDNODEMAP_HEADER_GUARD_1357924680 #include XALAN_CPP_NAMESPACE_BEGIN class XalanDOMString; class XalanNode; class XALAN_DOM_EXPORT XalanNamedNodeMap { public: XalanNamedNodeMap(); virtual ~XalanNamedNodeMap(); /** * Returns the indexth item in the map. * * If index * is greater than or equal to the number of nodes in the map, this returns * null. * @param index Index into the map. * @return The node at the indexth position in the * NamedNodeMap, or null if that is not a valid * index. */ virtual XalanNode* item(XalanSize_t index) const = 0; /** * Retrieves a node specified by name. * * @param name The nodeName of a node to retrieve. * @return A Node (of any type) with the specified nodeName, or * null if it does not identify any node in * the map. */ virtual XalanNode* getNamedItem(const XalanDOMString& name) const = 0; /** * The number of nodes in the map. * * The range of valid child node indices is * 0 to length-1 inclusive. */ virtual XalanSize_t getLength() const = 0; /** * Retrieves a node specified by local name and namespace URI. * * @param namespaceURI The namespace URI of * the node to retrieve. * @param localName The local name of the node to retrieve. * @return A Node (of any type) with the specified * local name and namespace URI, or null if they do not * identify any node in the map. */ virtual XalanNode* getNamedItemNS( const XalanDOMString& namespaceURI, const XalanDOMString& localName) const = 0; protected: XalanNamedNodeMap(const XalanNamedNodeMap& theSource); XalanNamedNodeMap& operator=(const XalanNamedNodeMap& theSource); bool operator==(const XalanNamedNodeMap& theRHS) const; private: }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANNAMEDNODEMAP_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanDOM/XalanNodeListDummy.cpp0000664000175000000640000000222711731656103022066 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanNodeListDummy.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanNodeListDummy::XalanNodeListDummy() : XalanNodeList() { } XalanNodeListDummy::~XalanNodeListDummy() { } XalanNode* XalanNodeListDummy::item(XalanSize_t /* index */) const { return 0; } XalanSize_t XalanNodeListDummy::getLength() const { return 0; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanDOM/XalanEntityReference.hpp0000664000175000000640000001424511731656103022434 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANENTITYREFERENCE_HEADER_GUARD_1357924680) #define XALANENTITYREFERENCE_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN /* * * * Base class for the DOM EntityReference interface. * * This class is deprecated and should not be used!! */ class XALAN_DOM_EXPORT XalanEntityReference : public XalanNode { public: XalanEntityReference(); virtual ~XalanEntityReference(); // These interfaces are inherited from XalanNode... virtual const XalanDOMString& getNodeName() const = 0; /** * Gets the value of this node, depending on its type. */ virtual const XalanDOMString& getNodeValue() const = 0; /** * An enum value representing the type of the underlying object. */ virtual NodeType getNodeType() const = 0; /** * Gets the parent of this node. * * All nodes, except Document, * DocumentFragment, and Attr may have a parent. * However, if a node has just been created and not yet added to the tree, * or if it has been removed from the tree, a null Node * is returned. */ virtual XalanNode* getParentNode() const = 0; /** * Gets a NodeList that contains all children of this node. * * If there * are no children, this is a NodeList containing no nodes. * The content of the returned NodeList is "live" in the sense * that, for instance, changes to the children of the node object that * it was created from are immediately reflected in the nodes returned by * the NodeList accessors; it is not a static snapshot of the * content of the node. This is true for every NodeList, * including the ones returned by the getElementsByTagName * method. */ virtual const XalanNodeList* getChildNodes() const = 0; /** * Gets the first child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getFirstChild() const = 0; /** * Gets the last child of this node. * * If there is no such node, this returns null. */ virtual XalanNode* getLastChild() const = 0; /** * Gets the node immediately preceding this node. * * If there is no such node, this returns null. */ virtual XalanNode* getPreviousSibling() const = 0; /** * Gets the node immediately following this node. * * If there is no such node, this returns null. */ virtual XalanNode* getNextSibling() const = 0; /** * Gets a NamedNodeMap containing the attributes of this node (if it * is an Element) or null otherwise. */ virtual const XalanNamedNodeMap* getAttributes() const = 0; /** * Gets the Document object associated with this node. * * This is also * the Document object used to create new nodes. When this * node is a Document or a DocumentType * which is not used with any Document yet, this is * null. */ virtual XalanDocument* getOwnerDocument() const = 0; /** * Get the namespace URI of * this node, or null if it is unspecified. *

    * This is not a computed value that is the result of a namespace lookup * based on an examination of the namespace declarations in scope. It is * merely the namespace URI given at creation time. *

    * For nodes of any type other than ELEMENT_NODE and * ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, * such as createElement from the Document * interface, this is always null. */ virtual const XalanDOMString& getNamespaceURI() const = 0; /** * Get the namespace prefix * of this node, or null if it is unspecified. */ virtual const XalanDOMString& getPrefix() const = 0; /** * Returns the local part of the qualified name of this node. *

    * For nodes created with a DOM Level 1 method, such as * createElement from the Document interface, * it is null. */ virtual const XalanDOMString& getLocalName() const = 0; /** * Determine if the document is node-order indexed. * * @return true if the document is indexed, otherwise false. */ virtual bool isIndexed() const = 0; /** * Get the node's index. Valid only if the owner document * reports that the document is node-order indexed. * * @return The index value, or 0 if the node is not indexed. */ virtual IndexType getIndex() const = 0; protected: XalanEntityReference(const XalanEntityReference& theSource); XalanEntityReference& operator=(const XalanEntityReference& theSource); bool operator==(const XalanEntityReference& theRHS) const; private: }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANENTITYREFERENCE_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanDOM/XalanComment.cpp0000664000175000000640000000246511731656103020737 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanComment.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanComment::XalanComment() : XalanCharacterData() { } XalanComment::~XalanComment() { } XalanComment::XalanComment(const XalanComment& theSource) : XalanCharacterData(theSource) { } XalanComment& XalanComment::operator=(const XalanComment& theSource) { XalanCharacterData::operator=(theSource); return *this; } bool XalanComment::operator==(const XalanComment& /* theRHS */) const { return false; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanDOM/XalanNodeListDummy.hpp0000664000175000000640000000277111731656103022077 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANNODELISTDUMMY_HEADER_GUARD_1357924680) #define XALANNODELISTDUMMY_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_DOM_EXPORT XalanNodeListDummy : public XalanNodeList { public: XalanNodeListDummy(); virtual ~XalanNodeListDummy(); XalanNodeListDummy& operator=(const XalanNodeListDummy& /* theSource */) { return *this; } virtual XalanNode* item(XalanSize_t index) const; virtual XalanSize_t getLength() const; private: }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANNODELISTSURROGATE_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanDOM/XalanDOMInit.cpp0000664000175000000640000000246511731656103020600 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanDOMInit.hpp" XALAN_CPP_NAMESPACE_BEGIN unsigned long XalanDOMInit::s_initCounter = 0; XalanDOMInit::XalanDOMInit(MemoryManager& theManager) { ++s_initCounter; if (s_initCounter == 1) { initialize(theManager); } } XalanDOMInit::~XalanDOMInit() { --s_initCounter; if (s_initCounter == 0) { terminate(); } } void XalanDOMInit::initialize(MemoryManager& /* theManager */) { } void XalanDOMInit::terminate() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanDOM/XalanCDATASection.hpp0000664000175000000640000000525011731656103021476 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANCDATASECTION_HEADER_GUARD_1357924680) #define XALANCDATASECTION_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_DOM_EXPORT XalanCDATASection : public XalanText { public: XalanCDATASection(); virtual ~XalanCDATASection(); // These interfaces are inherited from XalanNode... virtual const XalanDOMString& getNodeName() const = 0; virtual const XalanDOMString& getNodeValue() const = 0; virtual NodeType getNodeType() const = 0; virtual XalanNode* getParentNode() const = 0; virtual const XalanNodeList* getChildNodes() const = 0; virtual XalanNode* getFirstChild() const = 0; virtual XalanNode* getLastChild() const = 0; virtual XalanNode* getPreviousSibling() const = 0; virtual XalanNode* getNextSibling() const = 0; virtual const XalanNamedNodeMap* getAttributes() const = 0; virtual XalanDocument* getOwnerDocument() const = 0; virtual const XalanDOMString& getNamespaceURI() const = 0; virtual const XalanDOMString& getPrefix() const = 0; virtual const XalanDOMString& getLocalName() const = 0; virtual bool isIndexed() const = 0; virtual IndexType getIndex() const = 0; // These interfaces are inherited from XalanCharacterData... virtual const XalanDOMString& getData() const = 0; // These interfaces are inherited from XalanText... virtual bool isWhitespace() const = 0; protected: XalanCDATASection(const XalanCDATASection& theSource); XalanCDATASection& operator=(const XalanCDATASection& theSource); bool operator==(const XalanCDATASection& theRHS) const; private: }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANCDATASECTION_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanDOM/XalanDOMString.cpp0000664000175000000640000007407711731656103021153 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanDOMString.hpp" #include #include #include XALAN_CPP_NAMESPACE_BEGIN const XalanDOMChar XalanDOMString::s_empty = 0; #if defined(XALAN_INLINE_INITIALIZATION) && !defined(XALAN_INLINE_INITIALIZATION_IS_DEFINITION_BUG) const XalanDOMString::size_type XalanDOMString::npos; #endif XalanDOMString::XalanDOMString(MemoryManager& theManager) : m_data(theManager), m_size(0) { } XalanDOMString::XalanDOMString( const XalanDOMString& theSource, MemoryManager& theManager, size_type theStartPosition, size_type theCount) : m_data(theManager), m_size(0) { if (theSource.length() != 0) { append(theSource, theStartPosition, theCount); } } XalanDOMString::XalanDOMString( const XalanDOMChar* theString, MemoryManager& theManager, size_type theCount) : m_data(theManager), m_size(0) { assert(theString != 0); if (*theString != 0) { append(theString, theCount); } } XalanDOMString::XalanDOMString( const char* theString, MemoryManager& theManager, size_type theCount) : m_data(theManager), m_size(0) { assert(theString != 0); if (*theString != 0) { append(theString, theCount); } invariants(); } XalanDOMString* XalanDOMString::clone(MemoryManager& theManager) { typedef XalanDOMString ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType(*this, theManager); theGuard.release(); return theResult; } XalanDOMString::XalanDOMString( size_type theCount, XalanDOMChar theChar, MemoryManager& theManager) : m_data(theManager), m_size(0) { if (theCount != 0) { XalanDOMCharVectorType(theCount + 1, theChar, theManager).swap(m_data); // Null-terminate it... m_data.back() = 0; m_size = theCount; } invariants(); } void XalanDOMString::resize( size_type theCount, XalanDOMChar theChar) { invariants(); const size_type theOldSize = size(); if (theCount != theOldSize) { if (theOldSize == 0) { // If the string is of 0 length, resize but add an // extra byte for the terminating byte. m_data.resize(theCount + 1, theChar); } else { // If the string is not of 0 length, resize but // put a copy of theChar where the terminating // byte used to be. m_data.resize(theCount + 1, theChar); } m_size = theCount; // Terminate... m_data.back() = 0; } invariants(); } XalanDOMString& XalanDOMString::erase( size_type theStartPosition, size_type theCount) { invariants(); const size_type theActualCount = theCount == size_type(npos) ? length() - theStartPosition : theCount; assert(theStartPosition + theActualCount <= length()); if (theStartPosition == 0 && theCount >= size()) { m_data.erase(m_data.begin(), m_data.end()); m_size = 0; } else { const iterator i = getIteratorForPosition(theStartPosition); m_data.erase(i, i + (theActualCount)); const size_type theNewSize = size_type(m_data.size()); assert(size_type(m_data.size()) == theNewSize); if (theNewSize < 2) { m_size = 0; } else { m_size = theNewSize - 1; } } invariants(); return *this; } XalanDOMString& XalanDOMString::assign( const XalanDOMString& theSource, size_type thePosition, size_type theCount) { invariants(); assert(thePosition < theSource.size() && thePosition + theCount <= theSource.size()); if (&theSource != this) { erase(); append(theSource, thePosition, theCount); } else { if (thePosition == 0) { // See if we're being asked to // assign everything to ourself, // which is a noop... if (theCount != m_size) { // We're being asked to truncate... resize(theCount); } } else { // Yuck. We have to move data... #if defined(XALAN_STRICT_ANSI_HEADERS) std::memmove(&*begin(), &*begin() + thePosition, theCount * sizeof(XalanDOMChar)); #else memmove(&*begin(), &*begin() + thePosition, theCount * sizeof(XalanDOMChar)); #endif resize(theCount); } } invariants(); return *this; } XalanDOMString& XalanDOMString::assign( iterator theFirstPosition, iterator theLastPosition) { invariants(); m_data.reserve(theLastPosition - theFirstPosition + 1); m_data.assign(theFirstPosition, theLastPosition); m_data.push_back(XalanDOMChar(0)); m_size = size_type(m_data.size()) - 1; assert(m_data.size() - 1 == m_size); invariants(); return *this; } XalanDOMString& XalanDOMString::append( const XalanDOMChar* theString, size_type theCount) { const size_type theLength = theCount == size_type(npos) ? length(theString) : theCount; if (theLength != 0) { if (m_data.empty() == true) { m_data.reserve(theLength + 1); m_data.insert(m_data.end(), theString, theString + theLength); m_data.push_back(0); m_size = theLength; assert(length() == theLength); } else { m_data.insert(getBackInsertIterator(), theString, theString + theLength); m_size += theCount; } } invariants(); return *this; } inline void doTranscode( const char* theString, XalanDOMString::size_type theCount, bool theSourceStringIsNullTerminated, XalanDOMCharVectorType& theVector, bool fTerminate) { assert(theString != 0); if (theCount == XalanDOMString::size_type(XalanDOMString::npos)) { if (TranscodeFromLocalCodePage( theString, theVector, fTerminate) == false) { throw XalanDOMString::TranscodingError(); } } else { if (TranscodeFromLocalCodePage( theString, theCount, theSourceStringIsNullTerminated, theVector, fTerminate) == false) { throw XalanDOMString::TranscodingError(); } } } XalanDOMString& XalanDOMString::append( const char* theString, size_type theCount) { invariants(); const size_type theLength = theCount == size_type(npos) ? length(theString) : theCount; if (theLength != 0) { if (empty() == true) { doTranscode(theString, theLength, theCount == size_type(npos), m_data, true); } else { XalanDOMCharVectorType theTempVector(getMemoryManager()); doTranscode(theString, theLength, theCount == size_type(npos), theTempVector, false); append(&*theTempVector.begin(), size_type(theTempVector.size())); } m_size = size_type(m_data.size()) - 1; assert(m_data.size() - 1 == m_size); } invariants(); return *this; } XalanDOMString& XalanDOMString::append( size_type theCount, XalanDOMChar theChar) { invariants(); if (m_data.empty() == true) { m_data.insert(m_data.end(), theCount + 1, theChar); m_data.back() = 0; m_size = theCount; assert(length() == theCount); } else { m_data.insert(getBackInsertIterator(), theCount, theChar); m_size += theCount; } invariants(); return *this; } XalanDOMString& XalanDOMString::insert( size_type thePosition, const XalanDOMChar* theString, size_type theCount) { invariants(); if (m_data.empty() == true) { assert(thePosition == 0); append(theString, theCount); assert(length() == theCount); } else { m_data.insert(getIteratorForPosition(thePosition), theString, theString + theCount); m_size += theCount; } invariants(); return *this; } XalanDOMString& XalanDOMString::insert( size_type thePosition, size_type theCount, XalanDOMChar theChar) { invariants(); if (m_data.empty() == true) { assert(thePosition == 0); assign(theCount, theChar); } else { m_data.insert(getIteratorForPosition(thePosition), theCount, theChar); m_size += theCount; } invariants(); return *this; } XalanDOMString::iterator XalanDOMString::insert( iterator thePosition, XalanDOMChar theChar) { invariants(); if (m_data.empty() == true) { assert(thePosition == m_data.end() || thePosition == m_data.begin()); assign(1, theChar); assert(length() == 1); thePosition = m_data.begin(); } else { thePosition = m_data.insert(thePosition, theChar); ++m_size; } assert(*thePosition == theChar); invariants(); return thePosition; } void XalanDOMString::insert( iterator thePosition, size_type theCount, XalanDOMChar theChar) { invariants(); if (m_data.empty() == true) { assert(thePosition == m_data.end() || thePosition == m_data.begin()); assign(theCount, theChar); assert(length() == theCount); } else { m_data.insert(thePosition, theCount, theChar); m_size += theCount; } invariants(); } void XalanDOMString::insert( iterator theInsertPosition, iterator theFirstPosition, iterator theLastPosition) { invariants(); if (m_data.empty() == true) { assert(theInsertPosition == m_data.end() || theInsertPosition == m_data.begin()); assign(theFirstPosition, theLastPosition); } else { m_data.insert(theInsertPosition, theFirstPosition, theLastPosition); m_size = size_type(m_data.size()) - 1; assert(m_size == m_data.size() - 1); } invariants(); } template inline int doCompare( const Type* theLHS, SizeType theLHSLength, const Type* theRHS, SizeType theRHSLength) { int theResult = 0; if (theLHSLength != 0 || theRHSLength != 0) { Type theLHSChar = Type(0); Type theRHSChar = Type(0); SizeType i = 0; for(; i < theLHSLength && i < theRHSLength; i++) { theLHSChar = theLHS[i]; theRHSChar = theRHS[i]; if (theLHSChar != theRHSChar) { break; } } if (i == theLHSLength) { // We reached the end of theLHS... if (i != theRHSLength) { // but not the end of theRHS. theResult = -1; } } else if (i == theRHSLength) { // We reached the end of theRHS string... if (i != theLHSLength) { // but not the end of theLHS string. theResult = 1; } } else { // We didn't reach the end of _either_ string, so // return the difference between the two characters // that caused the problem. theResult = theLHSChar - theRHSChar; } } return theResult; } int XalanDOMString::compare(const XalanDOMChar* theString) const { invariants(); return doCompare(c_str(), length(), theString, length(theString)); } int XalanDOMString::compare( size_type thePosition1, size_type theCount1, const XalanDOMChar* theString, size_type theCount2) const { invariants(); return doCompare(c_str() + thePosition1, theCount1, theString, theCount2); } template inline void reset_func(XalanDOMString& obj, MemoryManager& theManager, Type string) { assert( string != 0 ); XalanDOMString tmpString(string, theManager); obj.swap(tmpString); } void XalanDOMString::reset(MemoryManager& theManager, const char* theString) { reset_func(*this, theManager, theString); } void XalanDOMString::reset(MemoryManager& theManager, const XalanDOMChar* theString) { reset_func(*this, theManager, theString); } void XalanDOMString::transcode(CharVectorType& theResult) const { invariants(); if (TranscodeToLocalCodePage(c_str(), length(), theResult, true) == false) { throw TranscodingError(); } } inline XalanDOMString::size_type length(const XalanDOMChar* theString) { assert(theString != 0); const XalanDOMChar* theStringPointer = theString; while(*theStringPointer != 0) { theStringPointer++; } return XalanDOMString::size_type(theStringPointer - theString); } bool XalanDOMString::equals( const XalanDOMChar* theLHS, size_type theLHSLength, const XalanDOMChar* theRHS, size_type theRHSLength) { if (theLHSLength != theRHSLength) { return false; } else if (theLHSLength == 0) { return true; } else { const XalanDOMChar* const theEnd = theLHS + theLHSLength; while(*theLHS == *theRHS) { ++theLHS; if (theLHS == theEnd) { return true; } else { ++theRHS; } } return false; } } bool XalanDOMString::equals( const XalanDOMString& theLHS, const XalanDOMString& theRHS) { const XalanDOMString::size_type theLHSLength = theLHS.size(); const XalanDOMString::size_type theRHSLength = theRHS.size(); if (theLHSLength != theRHSLength) { return false; } else { return equals(theLHS.c_str(), theLHSLength, theRHS.c_str(), theRHSLength); } } XalanDOMString::size_type XalanDOMString::length(const XalanDOMChar* theString) { return XALAN_CPP_NAMESPACE :: length(theString); } XalanDOMString::size_type XalanDOMString::length(const char* theString) { assert(theString != 0); #if defined(XALAN_STRICT_ANSI_HEADERS) assert(std::strlen(theString) < size_type(npos)); return size_type(std::strlen(theString)); #else assert(strlen(theString) < size_type(npos)); return size_type(strlen(theString)); #endif } XALAN_CPP_NAMESPACE_END #include XALAN_CPP_NAMESPACE_BEGIN const XalanDOMString::size_type theOneTranslatedWbCharLen = 10; // The template function should never fail. // In case of the unconvertable characters we add the substitution char // and in case of too small result vector we resize it template inline void doXercesTranscode( const SourceType* theSourceString, XalanDOMString::size_type theSourceStringLength, bool theSourceStringIsNullTerminated, XalanVector& theTargetVector, bool terminate, char theSubstitutionChar) { assert( theSourceStringIsNullTerminated == false || theSourceStringLength == XalanDOMString::length(theSourceString)); const SourceType* theRealSourceString = theSourceString; XalanVector theCopiedSource(theTargetVector.getMemoryManager()); if (theSourceStringIsNullTerminated == false) { theCopiedSource.reserve(theSourceStringLength + 1); theCopiedSource.assign( theSourceString, theSourceString + theSourceStringLength); theCopiedSource.push_back(static_cast(0)); theRealSourceString = &*theCopiedSource.begin(); } // Initially, let's guess the the transcoded string will be the same // length as the source string. theTargetVector.resize(theSourceStringLength + 1); assert(theRealSourceString != 0); bool fSuccess = false; XALAN_USING_XERCES(XMLString) fSuccess = XMLString::transcode( theRealSourceString, &*theTargetVector.begin(), theTargetVector.size() - 1, &theTargetVector.getMemoryManager()); if (fSuccess == false) { // Do the "manual" transcoding. But first, clean up from the // previous phase theTargetVector.clear(); // See if there are any unrepresentable characters for the // local code page. SourceType oneCharArray[2]; oneCharArray[1] = SourceType(0); TargetType theOneTranslatedWbChar[theOneTranslatedWbCharLen]; for (XalanDOMString::size_type i = 0; i < theSourceStringLength; ++i) { oneCharArray[0] = theRealSourceString[i]; theOneTranslatedWbChar[0] = TargetType(0); fSuccess = XMLString::transcode( oneCharArray, theOneTranslatedWbChar, theOneTranslatedWbCharLen - 1, &theTargetVector.getMemoryManager()); if (fSuccess == false) { theTargetVector.push_back(theSubstitutionChar); } else { XalanDOMString::size_type theRealCharLength = XalanDOMString::length(theOneTranslatedWbChar); // When we transcode the character '\0', that looks like "\0\0", // XalanDOMString::length returns a size of 0. In this case, the // real size should be 1 if (theRealCharLength == 0) { theRealCharLength = 1; } // append the translated set of characters theTargetVector.insert( theTargetVector.end(), theOneTranslatedWbChar, theOneTranslatedWbChar + theRealCharLength); } } } while(theTargetVector.back() == static_cast(0)) { theTargetVector.pop_back(); } if (terminate == true) { theTargetVector.push_back(static_cast(0)); } } template inline bool doXercesTranscode( const SourceType* theSourceString, XalanDOMString::size_type theSourceStringLength, bool theSourceStringIsNullTerminated, XalanVector& theTargetVector, bool terminate) { assert( theSourceStringIsNullTerminated == false || theSourceStringLength == XalanDOMString::length(theSourceString)); const SourceType* theRealSourceString = theSourceString; XalanVector theCopiedSource(theTargetVector.getMemoryManager()); if (theSourceStringIsNullTerminated == false) { theCopiedSource.reserve(theSourceStringLength + 1); theCopiedSource.assign( theSourceString, theSourceString + theSourceStringLength); theCopiedSource.push_back(static_cast(0)); theRealSourceString = &*theCopiedSource.begin(); } // Initially, let's guess the the transcoded string will be the same // length as the source string. theTargetVector.resize(theSourceStringLength + 1); assert(theRealSourceString != 0); bool fSuccess = false; do { XALAN_USING_XERCES(XMLString) fSuccess = XMLString::transcode( theRealSourceString, &*theTargetVector.begin(), theTargetVector.size() - 1, &theTargetVector.getMemoryManager()); if (fSuccess == false) { // We're going to assume that the maximum storage for // a transcoded string is 4 times the source string // length. This will only occur in edge cases. if (theTargetVector.size() >= theSourceStringLength * 4) { break; } else { theTargetVector.resize(theTargetVector.size() + 10); } } } while (fSuccess == false); if (fSuccess == false) { theTargetVector.clear(); } else { while(theTargetVector.back() == static_cast(0)) { theTargetVector.pop_back(); } if (terminate == true) { theTargetVector.push_back(static_cast(0)); } } return fSuccess; } static void doTranscodeToLocalCodePage( const XalanDOMChar* theSourceString, XalanDOMString::size_type theSourceStringLength, bool theSourceStringIsNullTerminated, CharVectorType& theTargetVector, bool terminate, char theSubstitutionChar) { // Short circuit if it's a null pointer, or of length 0. if (!theSourceString || (!theSourceString[0])) { if (terminate == true) { theTargetVector.resize(1); theTargetVector.back() = '\0'; } else { theTargetVector.clear(); } } else { doXercesTranscode( theSourceString, theSourceStringLength, theSourceStringIsNullTerminated, theTargetVector, terminate, theSubstitutionChar); } } static bool doTranscodeToLocalCodePage( const XalanDOMChar* theSourceString, XalanDOMString::size_type theSourceStringLength, bool theSourceStringIsNullTerminated, CharVectorType& theTargetVector, bool terminate) { // Short circuit if it's a null pointer, or of length 0. if (!theSourceString || (!theSourceString[0])) { if (terminate == true) { theTargetVector.resize(1); theTargetVector.back() = '\0'; } else { theTargetVector.clear(); } return true; } else { return doXercesTranscode( theSourceString, theSourceStringLength, theSourceStringIsNullTerminated, theTargetVector, terminate); } } XALAN_DOM_EXPORT_FUNCTION(void) TranscodeToLocalCodePage( const XalanDOMChar* theSourceString, XalanDOMString::size_type theSourceStringLength, CharVectorType& theTargetVector, bool terminate, char theSubstitutionChar) { doTranscodeToLocalCodePage( theSourceString, theSourceStringLength, false, theTargetVector, terminate, theSubstitutionChar); } XALAN_DOM_EXPORT_FUNCTION(void) TranscodeToLocalCodePage( const XalanDOMChar* theSourceString, CharVectorType& theTargetVector, bool terminate, char theSubstitutionChar) { doTranscodeToLocalCodePage( theSourceString, length(theSourceString), true, theTargetVector, terminate, theSubstitutionChar); } XALAN_DOM_EXPORT_FUNCTION(bool) TranscodeToLocalCodePage( const XalanDOMChar* theSourceString, XalanDOMString::size_type theSourceStringLength, CharVectorType& theTargetVector, bool terminate) { return doTranscodeToLocalCodePage( theSourceString, theSourceStringLength, false, theTargetVector, terminate); } XALAN_DOM_EXPORT_FUNCTION(bool) TranscodeToLocalCodePage( const XalanDOMChar* theSourceString, CharVectorType& theTargetVector, bool terminate) { return doTranscodeToLocalCodePage( theSourceString, length(theSourceString), true, theTargetVector, terminate); } XALAN_DOM_EXPORT_FUNCTION(void) TranscodeToLocalCodePage( const XalanDOMString& theSourceString, CharVectorType& theTargetVector, bool terminate, char theSubstitutionChar) { doTranscodeToLocalCodePage( theSourceString.c_str(), theSourceString.length(), true, theTargetVector, terminate, theSubstitutionChar); } static bool doTranscodeFromLocalCodePage( const char* theSourceString, XalanDOMString::size_type theSourceStringLength, bool theSourceStringIsNullTerminated, XalanDOMCharVectorType& theTargetVector, bool terminate) { typedef XalanDOMString::size_type size_type; // Short circuit if it's a null pointer, or of length 0. if (!theSourceString || (!theSourceString[0])) { if (terminate == true) { theTargetVector.resize(1); theTargetVector.back() = '\0'; } else { theTargetVector.clear(); } return true; } else { return doXercesTranscode( theSourceString, theSourceStringLength, theSourceStringIsNullTerminated, theTargetVector, terminate); } } XALAN_DOM_EXPORT_FUNCTION(bool) TranscodeFromLocalCodePage( const char* theSourceString, XalanDOMString::size_type theSourceStringLength, XalanDOMCharVectorType& theTargetVector, bool terminate) { return doTranscodeFromLocalCodePage( theSourceString, theSourceStringLength, false, theTargetVector, terminate); } XALAN_DOM_EXPORT_FUNCTION(bool) TranscodeFromLocalCodePage( const char* theSourceString, XalanDOMString::size_type theSourceStringLength, bool theSourceStringIsNullTerminated, XalanDOMCharVectorType& theTargetVector, bool terminate) { return doTranscodeFromLocalCodePage( theSourceString, theSourceStringLength, theSourceStringIsNullTerminated, theTargetVector, terminate); } XALAN_DOM_EXPORT_FUNCTION(bool) TranscodeFromLocalCodePage( const char* theSourceString, XalanDOMCharVectorType& theTargetVector, bool terminate) { return doTranscodeFromLocalCodePage( theSourceString, XalanDOMString::length(theSourceString), true, theTargetVector, terminate); } XALAN_DOM_EXPORT_FUNCTION(const XalanDOMString&) TranscodeFromLocalCodePage( const CharVectorType& theSourceString, XalanDOMString& result) { if (theSourceString.empty() == true) { result.erase(); return result; } else { typedef XalanDOMString::size_type size_type; const CharVectorType::size_type theSize = theSourceString.size(); if (theSourceString[theSize - 1] == CharVectorType::value_type(0)) { return TranscodeFromLocalCodePage(&*theSourceString.begin(), result , size_type(theSize) - 1); } else { return TranscodeFromLocalCodePage(&*theSourceString.begin(), result , size_type(theSize)); } } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanDOM/XalanComment.hpp0000664000175000000640000000503211731656103020735 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANCOMMENT_HEADER_GUARD_1357924680) #define XALANCOMMENT_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_DOM_EXPORT XalanComment : public XalanCharacterData { public: XalanComment(); virtual ~XalanComment(); // These interfaces are inherited from XalanNode... virtual const XalanDOMString& getNodeName() const = 0; virtual const XalanDOMString& getNodeValue() const = 0; virtual NodeType getNodeType() const = 0; virtual XalanNode* getParentNode() const = 0; virtual const XalanNodeList* getChildNodes() const = 0; virtual XalanNode* getFirstChild() const = 0; virtual XalanNode* getLastChild() const = 0; virtual XalanNode* getPreviousSibling() const = 0; virtual XalanNode* getNextSibling() const = 0; virtual const XalanNamedNodeMap* getAttributes() const = 0; virtual XalanDocument* getOwnerDocument() const = 0; virtual const XalanDOMString& getNamespaceURI() const = 0; virtual const XalanDOMString& getPrefix() const = 0; virtual const XalanDOMString& getLocalName() const = 0; virtual bool isIndexed() const = 0; virtual IndexType getIndex() const = 0; // These interfaces are inherited from XalanCharacterData... virtual const XalanDOMString& getData() const = 0; protected: XalanComment(const XalanComment& theSource); XalanComment& operator=(const XalanComment& theSource); bool operator==(const XalanComment& theRHS) const; private: }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANCOMMENT_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanDOM/XalanDOMInit.hpp0000664000175000000640000000305211731656103020576 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANDOMINIT_INCLUDE_GUARD_1357924680) #define XALANDOMINIT_INCLUDE_GUARD_1357924680 // Base include file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_DOM_EXPORT XalanDOMInit { public: explicit XalanDOMInit(MemoryManager& theManager); ~XalanDOMInit(); private: // Not implemented... XalanDOMInit(const XalanDOMInit&); XalanDOMInit& operator=(const XalanDOMInit&); static void initialize(MemoryManager& theManager); static void terminate(); static unsigned long s_initCounter; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANDOMINIT_INCLUDE_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/Harness/0002775000175000000640000000000012037700125015632 5ustar stevesambaxalan-c-1.11/c/src/xalanc/Harness/XalanDiagnosticMemoryManager.hpp0000664000175000000640000001002711731656103024103 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_DIAGNOSTICMEMORYMANAGER_HEADER_GUARD_1357924680) #define XALAN_DIAGNOSTICMEMORYMANAGER_HEADER_GUARD_1357924680 #include "xalanc/Harness/XalanHarnessDefinitions.hpp" #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #include #endif #include "xalanc/Include/XalanMap.hpp" #include "xalanc/Include/XalanMemoryManagement.hpp" XALAN_CPP_NAMESPACE_BEGIN class XALAN_HARNESS_EXPORT XalanDiagnosticMemoryManager : public XalanMemoryManager { public: #if defined(XALAN_NO_STD_NAMESPACE) typedef ostream StreamType; #else typedef std::ostream StreamType; #endif class LockException { public: LockException() { } ~LockException() { } }; XalanDiagnosticMemoryManager( MemoryManager& theMemoryManager, bool fAssertErrors = false, StreamType* theStream = 0); virtual ~XalanDiagnosticMemoryManager(); virtual void* allocate(size_type size); virtual void deallocate(void* pointer); virtual MemoryManager* getExceptionMemoryManager(); bool getAssertErrors() const { return m_assertErrors; } void setAssertErrors(bool fFlag) { m_assertErrors = fFlag; } // Get the high-water mark (the highest amount // that was allocated at any particular point). size_type getHighWaterMark() const { return m_highWaterMark; } // Get the number of bytes currently allocated. size_type getAllocated() const { return m_currentAllocated; } // Get the current number of outstanding allocations. size_type getAllocations() const { return m_allocations.size(); } struct Data { Data() : m_size(0), m_sequence(0) { } Data( size_type theSize, size_type theSequence) : m_size(theSize), m_sequence(theSequence) { } size_type m_size; size_type m_sequence; }; typedef XalanMap MapType; typedef MapType::const_iterator const_iterator; const_iterator getAllocationsIterator() const { return m_allocations.begin(); } void lock() { m_locked = true; } void unlock() { m_locked = false; } enum { defaultBytesToDump = 20u }; void dumpStatistics( StreamType* theStream = 0, size_type theBytesToDump = defaultBytesToDump); private: XalanDiagnosticMemoryManager(const XalanDiagnosticMemoryManager&); XalanDiagnosticMemoryManager& operator=(const XalanDiagnosticMemoryManager&); MemoryManager& m_memoryManager; bool m_assertErrors; bool m_locked; size_type m_sequence; size_type m_highWaterMark; size_type m_currentAllocated; MapType m_allocations; StreamType* m_stream; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_DIAGNOSTICMEMORYMANAGER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/Harness/XalanFileUtility.cpp0000664000175000000640000016622511731656103021605 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanFileUtility.hpp" #include #include #include #include #include #if defined(XALAN_WINDOWS) #include #define PATH_MAX _MAX_PATH #define chdir _chdir #define getcwd _getcwd #define mkdir _mkdir #else #if !defined(PATH_MAX) #define PATH_MAX 2000 #endif #define DIR_MODE_BITS 509 #include #include #include #endif #if defined(XALAN_CLASSIC_IOSTREAMS) #include #include #else #include #include #endif #if !defined(NDEBUG) && defined(_MSC_VER) #include #endif #if defined(XALAN_STRICT_ANSI_HEADERS) using std::fclose; using std::feof; using std::ferror; using std::fgets; using std::fopen; using std::localtime; using std::sprintf; using std::strftime; using std::tm; using std::time; #endif #include "xercesc/sax/ErrorHandler.hpp" #include "xercesc/sax/SAXException.hpp" #include "xercesc/sax/SAXParseException.hpp" #include "xalanc/PlatformSupport/DirectoryEnumerator.hpp" #include "xalanc/PlatformSupport/DOMStringHelper.hpp" #include "xalanc/PlatformSupport/XalanOutputStreamPrintWriter.hpp" #include "xalanc/PlatformSupport/XalanFileOutputStream.hpp" #include "xalanc/PlatformSupport/XalanUnicode.hpp" #include "xalanc/XMLSupport/FormatterToXML.hpp" #include "xalanc/XMLSupport/FormatterTreeWalker.hpp" #include "xalanc/XalanSourceTree/XalanSourceTreeDOMSupport.hpp" #include "xalanc/XalanSourceTree/XalanSourceTreeParserLiaison.hpp" #include "xalanc/XalanSourceTree/XalanSourceTreeDocument.hpp" #include "xalanc/XSLT/StylesheetRoot.hpp" #include "xalanc/XalanTransformer/XalanCompiledStylesheet.hpp" #include "xalanc/XalanTransformer/XalanTransformer.hpp" #include "XalanXMLFileReporter.hpp" XALAN_CPP_NAMESPACE_BEGIN const char* const xalanNodeTypes[] = { "UNKNOWN_NODE", "ELEMENT_NODE", "ATTRIBUTE_NODE", "TEXT_NODE", "CDATA_SECTION_NODE", "ENTITY_REFERENCE_NODE", "ENTITY_NODE", "PROCESSING_INSTRUCTION_NODE", "COMMENT_NODE", "DOCUMENT_NODE", "DOCUMENT_TYPE_NODE", "DOCUMENT_FRAGMENT_NODE", "NOTATION_NODE" }; XALAN_USING_STD(cerr) XALAN_USING_STD(cout) XALAN_USING_STD(endl) const XalanDOMString XalanFileUtility::s_emptyString(XalanMemMgrs::getDummyMemMgr()); XalanFileUtility::reportStruct::reportStruct(MemoryManager& theManager) : theDrive(theManager), testOrFile(theManager), xmlFileURL(theManager), xslFileURL(theManager), xmlFormat(theManager), msg(0), currentNode(theManager), actual(theManager), expected(theManager), pass(0), fail(0), nogold(0) { } void XalanFileUtility::reportStruct::reset() { testOrFile.clear(); msg = ""; currentNode.clear(); actual.clear(); expected.clear(); } XalanFileUtility::cmdParams::cmdParams(MemoryManager& theManager) : help(), base(theManager), output(theManager), gold(theManager), sub(theManager), source(0), skip(false), iters(0) { } const char* XalanFileUtility::cmdParams::getHelpMessage() { help << '\0'; const char* const data = help.str(); #if defined(HPUX) help.rdbuf() -> freeze(false); #else help.freeze(false); #endif return data; } XalanFileUtility::XalanFileUtility(MemoryManager& theManager) : data(theManager), args(theManager), m_buffer(theManager), m_verbose(false) { cout << endl << "Using Xalan version " << XALAN_FULLVERSIONDOT << endl << "Using Xerces version " << XERCES_FULLVERSIONDOT << endl << endl; } XalanFileUtility::~XalanFileUtility() { } #if !defined(XALAN_WINDOWS) XalanDOMString& XalanFileUtility::getDrive(XalanDOMString& theResult) { theResult.erase(); return theResult; } #else XalanDOMString& XalanFileUtility::getDrive(XalanDOMString& theResult) { const char temp[] = { char(_getdrive() + 'A' - 1), ':', '\0' }; theResult.assign(temp, sizeof(temp) - 1); return theResult; } #endif bool XalanFileUtility::getParams( int argc, char* argv[], const char* outDir, bool fsetGold) { bool fSuccess = true; // Used to continue argument loop bool fsetOut = true; // Set default output directory, set to false if data is provided args.skip = true; // Default values for performance testing parameters. args.iters = 3; // Insure that required "-base" argument is there. // if (argc == 1 || argv[1][0] == '-') { cout << args.getHelpMessage(); return false; } else { if (checkDir(XalanDOMString(argv[1], getMemoryManager()))) { args.base.assign(XalanDOMString(argv[1], getMemoryManager())); } else { cout << endl << "Given base directory \"" << argv[1] << "\" does not exist" << endl; cout << args.getHelpMessage(); return false; } } // Get the rest of the arguments. // for (int i = 2; i < argc && fSuccess == true; ++i) { if(!strcmp("-out", argv[i])) { ++i; if(i < argc && argv[i][0] != '-') { args.output.assign(XalanDOMString(argv[i], getMemoryManager())); args.output.append(s_pathSep); checkAndCreateDir(args.output); fsetOut = false; } else { cout << args.getHelpMessage(); fSuccess = false; } } else if(!strcmp("-gold", argv[i])) { ++i; if(i < argc && argv[i][0] != '-') { args.gold.assign(XalanDOMString(argv[i], getMemoryManager())); if ( !checkDir(args.gold) ) { TranscodeToLocalCodePage(args.gold, m_buffer, true); cout << "Given Gold dir - " << &*m_buffer.begin() << " - does not exist" << endl; fSuccess = false; } args.gold.append(s_pathSep); fsetGold = false; } else { cout << args.getHelpMessage(); fSuccess = false; } } else if(!strcmp("-source", argv[i])) { ++i; if(i < argc && argv[i][0] != '-') { if (strcmp(argv[i],"XPL") == 0) { args.source = 1; outDir = "DOM-XALAN"; } else if (strcmp(argv[i], "DOM") == 0) { args.source = 2; outDir = "DOM-XERCES"; } else { cout << args.getHelpMessage(); fSuccess = false; } } else { cout << args.getHelpMessage(); fSuccess = false; } } else if(!strcmp("-sub", argv[i])) { ++i; if(i < argc && argv[i][0] != '-') { args.sub.assign(XalanDOMString(argv[i], getMemoryManager())); } else { cout << args.getHelpMessage(); fSuccess = false; } } else if(!strcmp("-i", argv[i])) { args.skip = false; } else if(!strcmp("-iter", argv[i])) { ++i; // Make sure number is there and is greater then zero if(i < argc && atol(argv[i]) > 0) { args.iters = atol(argv[i]); } else { cout << args.getHelpMessage(); fSuccess = false; } } else { cout << args.getHelpMessage(); fSuccess = false; } } // End of for-loop // Do we need to set the default output directory?? // if (fsetOut) { const XalanDOMString::size_type ii = lastIndexOf(args.base, s_pathSep[0]); if (ii < args.base.length()) { args.output.assign(args.base, 0, ii + 1); } args.output.append(XalanDOMString(outDir, getMemoryManager())); checkAndCreateDir(args.output); args.output.append(s_pathSep); } // Do we need to set the default gold directory?? // if (fsetGold) { args.gold = args.base; args.gold.append(XalanDOMString("-gold", getMemoryManager())); if ( !checkDir(args.gold) ) { TranscodeToLocalCodePage(args.gold, m_buffer, true); cout << "Assumed Gold dir - " << &*m_buffer.begin() << " - does not exist" << endl; fSuccess = false; } args.gold.append(s_pathSep); } // Add the path seperator to the end of the base directory // here after we've finished using it for all directory creation. // args.base.append(s_pathSep); return fSuccess; } // This routine retrieves test file names from specified directories. // Inputs: baseDir: typically "conf" or "perf" // relDir: sub-directory to search. // // Notes: It builds the searchSpecification by concatenating all the // necessary components. // XalanFileUtility::FileNameVectorType& XalanFileUtility::getTestFileNames( const XalanDOMString& baseDir, const XalanDOMString& relDir, bool useDirPrefix, FileNameVectorType& theFiles) { char buffer3[PATH_MAX]; getcwd(buffer3, PATH_MAX); const XalanDOMString searchSuffix("*.xsl", getMemoryManager()); XalanDOMString searchSpecification(getMemoryManager()); // Allow directory search w/o mandating files start with directory name. Required for files // garnered from XSLTMARK performance directory exm. if (useDirPrefix) { searchSpecification.assign(baseDir); searchSpecification += relDir; searchSpecification += s_pathSep; searchSpecification += relDir; searchSpecification += searchSuffix; } else { searchSpecification.assign(baseDir); searchSpecification += relDir; searchSpecification += s_pathSep; searchSpecification += searchSuffix; } DirectoryEnumeratorFunctor< FileNameVectorType, XalanDOMString> theEnumerator(getMemoryManager()); theEnumerator(searchSpecification, theFiles); chdir(buffer3); return theFiles; } /* This routine retrieves all sub-directories from the specified directories. // Inputs: rootDirectory: typically "conf" or "perf" // // Notes: The searchSpecification in this case is just "*". // */ XalanFileUtility::FileNameVectorType& XalanFileUtility::getDirectoryNames( const XalanDOMString& rootDirectory, XalanFileUtility::FileNameVectorType& theFiles) { char buffer2[PATH_MAX]; getcwd(buffer2, PATH_MAX); const XalanDOMString dirSpec("*", getMemoryManager()); DirectoryEnumeratorFunctor< FileNameVectorType, XalanDOMString, DirectoryFilterPredicate> theEnumerator(getMemoryManager()); theEnumerator( XalanDOMString( rootDirectory, getMemoryManager()), XalanDOMString( dirSpec, getMemoryManager()), theFiles); chdir(buffer2); return theFiles; } bool XalanFileUtility::checkDir(const XalanDOMString& directory ) { char buffer[PATH_MAX]; getcwd(buffer, PATH_MAX); bool fResult = false; TranscodeToLocalCodePage(directory, m_buffer, true); if ( !chdir(&*m_buffer.begin()) ) { fResult = true; } chdir(buffer); return fResult; } void XalanFileUtility::checkAndCreateDir(const XalanDOMString& directory) { char buffer[PATH_MAX]; getcwd(buffer, PATH_MAX); TranscodeToLocalCodePage(directory, m_buffer, true); const char* const theDir = &*m_buffer.begin(); assert(theDir != 0); if (chdir(theDir)) { //cout << "Couldn't change to " << directory << ", will create it." << endl; #if defined(XALAN_WINDOWS_DIR_FUNCTIONS) if (!mkdir(theDir)) #else if (!mkdir(theDir, DIR_MODE_BITS)) #endif { if (m_verbose == true) { cout << theDir << " created." << endl; } } else { cout << theDir << " NOT created." << endl; } } chdir(buffer); } /* This routine generates file names based on the provide suffix // Inputs: theXMLFileName: typically "conf" or "perf" // suffix: typically "xsl" or "out". // // Notes: */ XalanDOMString& XalanFileUtility::generateFileName( const XalanDOMString& theXMLFileName, const char* suffix, XalanDOMString& targetFile, bool* status) { const XalanDOMString::size_type thePeriodIndex = lastIndexOf(theXMLFileName, XalanUnicode::charFullStop); if (thePeriodIndex != XalanDOMString::npos) { targetFile.assign(theXMLFileName, 0, thePeriodIndex + 1); targetFile += XalanDOMString(suffix, getMemoryManager()); } // Check the .xml file exists. if (!strcmp(suffix, "xml")) { TranscodeToLocalCodePage(targetFile, m_buffer, true); const char* const theFileName = &*m_buffer.begin(); assert(theFileName != 0); FILE* fileHandle = fopen(theFileName, "r"); if (fileHandle == 0) { cout << "TEST ERROR: File Missing: " << theFileName << endl; if (status != 0) { *status = false; } } else { fclose(fileHandle); } } return targetFile; } /* This routine generates a Unique Runid. // Inputs: None // // Notes: The format is mmddhhmm. For example // 03151046 is "Mar 15 10:46" */ XalanDOMString& XalanFileUtility::generateUniqRunid(XalanDOMString& theResult) { struct tm *newtime; time_t long_time; char tmpbuf[10]; time( &long_time ); /* Get time as long integer. */ newtime = localtime( &long_time ); /* Convert to local time. */ strftime( tmpbuf, 10,"%m%d%H%M",newtime ); theResult.assign(tmpbuf); return theResult; } // This routine gets Xerces Version number. It's used to put the Xerces Version // into the output xml results file as an attribute of 'PerfData' element. // Inputs: None // XalanDOMString& XalanFileUtility::getXercesVersion(XalanDOMString& theResult) { theResult.assign(gXercesFullVersionStr); return theResult; } /* This routine creates a FormatterToXML FormatterListener. This is used to format // the output DOM so a comparision can be done with the expected GOLD file. // Inputs: None // */ FormatterListener* XalanFileUtility::getXMLFormatter( PrintWriter& resultWriter, int indentAmount, const XalanDOMString& mimeEncoding, const StylesheetRoot* stylesheet) { XalanDOMString version(getMemoryManager()); bool outputIndent= 0; XalanDOMString mediatype(getMemoryManager()); XalanDOMString doctypeSystem(getMemoryManager()); XalanDOMString doctypePublic(getMemoryManager()); XalanDOMString standalone(getMemoryManager()); if (stylesheet != 0) { XalanDOMString theBuffer(getMemoryManager()); version = stylesheet->getOutputVersion(theBuffer); mediatype = stylesheet->getOutputMediaType(theBuffer); doctypeSystem = stylesheet->getOutputDoctypeSystem(theBuffer); doctypePublic = stylesheet->getOutputDoctypePublic(theBuffer); standalone = stylesheet->getOutputStandalone(theBuffer); outputIndent = stylesheet->getOutputIndent(); } return FormatterToXML::create( resultWriter.getMemoryManager(), resultWriter, version, outputIndent, indentAmount, mimeEncoding, mediatype, doctypeSystem, doctypePublic, true, // xmlDecl standalone); } /* This routine is used to compares the results of a transform and report the results. // When a failure is detected the 'data' structure used to report detailed info about // a failure is filled in. // Inputs: // goldFile - Name of gold file // outputFile - Name of result file. // logfile - Name of log file reporter. // // Returns: // Void */ void XalanFileUtility::checkResults( const XalanDOMString& outputFile, const XalanDOMString& goldFile, XalanXMLFileReporter& logfile) { int ambgFlag = data.nogold; // get the current number of tests w/o gold files. // Compare the results, report success if compareSerializedResults returns true. if(compareSerializedResults(outputFile, goldFile)) { cout << "Passed: " << data.testOrFile << endl; logfile.logCheckPass(data.testOrFile); data.pass += 1; } else { typedef XalanXMLFileReporter::Hashtable Hashtable; // if the compairson fails gather up the failure data and determine if it failed // due to bad output or missing Gold file. Lastly, log the failure. Hashtable attrs(getMemoryManager()); Hashtable actexp(getMemoryManager()); reportError(); attrs.insert(XalanDOMString("reason", getMemoryManager()), XalanDOMString(data.msg, getMemoryManager())); attrs.insert(XalanDOMString("atNode", getMemoryManager()), data.currentNode); actexp.insert(XalanDOMString("exp", getMemoryManager()),data.expected); actexp.insert(XalanDOMString("act", getMemoryManager()), data.actual); actexp.insert(XalanDOMString("xsl", getMemoryManager()), data.xslFileURL); actexp.insert( XalanDOMString("xml", getMemoryManager()), data.xmlFileURL); actexp.insert( XalanDOMString("result", getMemoryManager()), outputFile ); actexp.insert( XalanDOMString("gold", getMemoryManager()), goldFile); if (ambgFlag < data.nogold) { logfile.logCheckAmbiguous(data.testOrFile); } else { logfile.logCheckFail(data.testOrFile, attrs, actexp); } } } void XalanFileUtility::checkAPIResults( const XalanDOMString& actual, const XalanDOMString& expected, const char* msg, XalanXMLFileReporter& logfile, const XalanDOMString& outputFile, const XalanDOMString& goldFile, bool containsOnly) { if(actual == expected || (containsOnly == true && indexOf(actual, expected) != XalanDOMString::npos)) { data.pass += 1; cout << "Passed: " << data.testOrFile << endl; logfile.logCheckPass(data.testOrFile); } else { data.actual = actual; data.expected = expected; data.currentNode = "API Test"; data.msg = msg; data.fail += 1; reportError(); typedef XalanXMLFileReporter::Hashtable Hashtable; Hashtable actexp(getMemoryManager()); actexp.insert( XalanDOMString("exp", getMemoryManager()), expected); actexp.insert( XalanDOMString("act", getMemoryManager()), actual); actexp.insert( XalanDOMString("xsl", getMemoryManager()), data.xslFileURL); actexp.insert( XalanDOMString("xml", getMemoryManager()), data.xmlFileURL); actexp.insert( XalanDOMString("result", getMemoryManager()), outputFile); actexp.insert( XalanDOMString("gold", getMemoryManager()), goldFile); // Todo: Need to determine if I should check for missing gold in these cases. logfile.logCheckFail(data.testOrFile, actexp); } } /* This routine compares the results of a transform with the gold file. // It in turn call the domCompare routine to do the actual comparision. // Inputs: // gold - Dom tree for the expected results // doc - Dom tree created during transformation // filename - Current filename // // Returns: // Void // */ void XalanFileUtility::checkDOMResults( const XalanDOMString& theOutputFile, const XalanCompiledStylesheet* compiledSS, const XalanSourceTreeDocument* dom, const XSLTInputSource& goldInputSource, XalanXMLFileReporter& logfile) { const int ambgFlag = data.nogold; const XalanDOMString mimeEncoding("", getMemoryManager()); XalanFileOutputStream myOutput(theOutputFile, getMemoryManager()); XalanOutputStreamPrintWriter myResultWriter(myOutput); FormatterListener* const theFormatter = getXMLFormatter( myResultWriter, 0, mimeEncoding, compiledSS->getStylesheetRoot()); FormatterTreeWalker theTreeWalker(*theFormatter, getMemoryManager()); theTreeWalker.traverse(dom); XalanDestroy( getMemoryManager(), *theFormatter); XalanSourceTreeDOMSupport domSupport; XalanSourceTreeParserLiaison parserLiaison(domSupport, getMemoryManager()); domSupport.setParserLiaison(&parserLiaison); const XalanDocument* const goldDom = parserLiaison.parseXMLStream(goldInputSource); if (domCompare(*goldDom, *dom)) { cout << "Passed: " << data.testOrFile << endl; logfile.logCheckPass(data.testOrFile); data.pass += 1; } else { typedef XalanXMLFileReporter::Hashtable Hashtable; // if the compairson fails gather up the failure data and determine if it failed // due to bad output or missing Gold file. Lastly, log the failure. Hashtable attrs(getMemoryManager()); Hashtable actexp(getMemoryManager()); reportError(); attrs.insert( XalanDOMString("reason", getMemoryManager()), XalanDOMString(data.msg, getMemoryManager())); attrs.insert( XalanDOMString("atNode", getMemoryManager()), data.currentNode); actexp.insert( XalanDOMString("exp", getMemoryManager()), data.expected); actexp.insert( XalanDOMString("act", getMemoryManager()), data.actual); if (ambgFlag < data.nogold) { logfile.logCheckAmbiguous(data.testOrFile); } else { logfile.logCheckFail(data.testOrFile, attrs, actexp); } } } class DummyErrorHandler : public XERCES_CPP_NAMESPACE_QUALIFIER ErrorHandler { virtual void warning(const XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException& exc) { throw exc; } virtual void error(const XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException& exc) { throw exc; } virtual void fatalError(const XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException& exc) { throw exc; } virtual void resetErrors() { } }; /* This routine takes the result file and gold file and parses them. // If either of the files fails to parse and a SAXException is throw, // then the files are compared using a char by char file compare, // otherwise the domCompare routine is used. // Inputs: // outputFile: Name of result file // goldFile: Name of gold file // // Returns: // True or False // */ bool XalanFileUtility::compareSerializedResults( const XalanDOMString& outputFile, const XalanDOMString& goldFile) { const XSLTInputSource resultInputSource(outputFile, getMemoryManager()); const XSLTInputSource goldInputSource(goldFile, getMemoryManager()); XalanSourceTreeDOMSupport domSupport; XalanSourceTreeParserLiaison parserLiaison(domSupport, getMemoryManager()); domSupport.setParserLiaison(&parserLiaison); DummyErrorHandler theErrorHandler; parserLiaison.setErrorHandler(&theErrorHandler); try { const XalanDocument* const transformDom = parserLiaison.parseXMLStream(resultInputSource); assert(transformDom != 0); const XalanDocument* const goldDom = parserLiaison.parseXMLStream(goldInputSource); assert(goldDom != 0); return domCompare(*goldDom, *transformDom); } // This exception is being reported prior to this Catch, however, however, I clarify that it's a SAX exception. // It's a good indication that the Gold file is not a valid XML. When this happens the transform result needs // to be compared with the Gold, with a character by character basis, not via the DOM compair. catch (const XERCES_CPP_NAMESPACE_QUALIFIER SAXException&) { if (m_verbose == true) { cout << "SAXException: Using fileCompare to check output.\n"; } CharVectorType goldFileVec(getMemoryManager()); TranscodeToLocalCodePage(goldFile, goldFileVec, true); CharVectorType outputFileVec(getMemoryManager()); TranscodeToLocalCodePage(outputFile, outputFileVec, true); return fileCompare(c_str(goldFileVec), c_str(outputFileVec)); } } /* This routine is used to compare the results against the gold when one or both of // fails to parse without throwing a SAXException. When a failure is detected the 'data' // structure used to report detailed info about a failure is filled in. // Inputs: // outputFile: Name of result file // goldFile: Name of gold file // // Returns: // True or False // */ bool XalanFileUtility::fileCompare( const char* goldFile, const char* outputFile) { bool retValue = true; const unsigned long maxBuffer = 132; char rline[maxBuffer]; // declare buffers to hold single line from file char gline[maxBuffer]; char temp[20]; // buffer to hold line number char lineNum = 1; // Set fail data incase there are i/o problems with the files to compare. data.expected = XalanDOMString(" ", getMemoryManager()); data.actual = XalanDOMString(" ", getMemoryManager()); data.currentNode = XalanDOMString("Line: 0", getMemoryManager()); // Attempt to open the files. FILE* const result = fopen(outputFile, "r"); FILE* const gold = fopen(goldFile, "r"); if (!result) { // If the result file fails to open report this as a failure. data.msg = "No Result (Transform failed)"; data.fail += 1; retValue = false; } else if (!gold) { // If the gold file fails to open report this as ambiguous. data.msg = "No Gold file"; data.nogold += 1; retValue = false; } else { // Start file comparison, line by line.. while(!feof(result) && !feof(gold) && retValue == true) { gline[0] = '\0'; rline[0] = '\0'; fgets(gline, sizeof(gline), gold ); fgets(rline, sizeof(rline), result ); sprintf(temp,"%d",lineNum); if (ferror(gold) || ferror(result)) { data.msg = "Read Error - Gold/Result file"; data.currentNode = XalanDOMString("Line: ", getMemoryManager()); data.currentNode += XalanDOMString(temp, getMemoryManager()); retValue = false; } else { // Compare the lines character by charcter .... XalanSize_t i = 0; while(i < strlen(gline) && retValue == true) { if (gline[i] == rline[i]) { ++i; } else { // If there is a mismatch collect up the fail data and return false. To ensure that // the results can be seen in the browser enclose the actual/expected in CDATA Sections. data.msg = "Text based comparison failure"; try { data.expected += XalanDOMString(gline, getMemoryManager()); } catch(const XalanDOMString::TranscodingError&) { data.expected += XalanDOMString( "Unable to transcode expected data.", getMemoryManager()); } try { data.actual += XalanDOMString(rline, getMemoryManager()); } catch(const XalanDOMString::TranscodingError&) { data.actual += XalanDOMString( "Unable to transcode actual data.", getMemoryManager()); } data.currentNode = XalanDOMString("Line: ", getMemoryManager()); data.currentNode += XalanDOMString(temp, getMemoryManager()); data.fail += 1; retValue = false; } } ++lineNum; } } } fclose(result); fclose(gold); return retValue; } /* This routine performs a DOM Comparision. // Inputs: // gold - Dom tree for the expected results // doc - Dom tree created during transformation // filename - Current filename // // Returns: // True or False // */ bool XalanFileUtility::domCompare( const XalanNode& gold, const XalanNode& doc) { const XalanNode::NodeType docNodeType = doc.getNodeType(); const XalanNode::NodeType goldNodeType = gold.getNodeType(); const XalanDOMString& docNodeName = doc.getNodeName(); if (goldNodeType != docNodeType) { collectData( "NodeType mismatch.", docNodeName, XalanDOMString(xalanNodeTypes[docNodeType], getMemoryManager()), XalanDOMString(xalanNodeTypes[goldNodeType], getMemoryManager())); return false; } switch (goldNodeType) { case XalanNode::ELEMENT_NODE: // ATTRIBUTE_NODEs are processed with diffElement(). { if (diffElement(gold, doc) == false) { return false; } } break; case XalanNode::CDATA_SECTION_NODE: case XalanNode::TEXT_NODE: { const XalanDOMString& docNodeValue = doc.getNodeValue(); const XalanDOMString& goldNodeValue = gold.getNodeValue(); //debugNodeData(docNodeName, docNodeValue); if(goldNodeValue != docNodeValue) { collectData( "Text node mismatch. ", docNodeName, goldNodeValue, docNodeValue); return false; } } break; case XalanNode::PROCESSING_INSTRUCTION_NODE: { const XalanDOMString& goldNodeName = gold.getNodeName(); if (goldNodeName != docNodeName) { collectData( "processing-instruction target mismatch. ", docNodeName, goldNodeName, docNodeName); return false; } else { const XalanDOMString& docNodeValue = doc.getNodeValue(); const XalanDOMString& goldNodeValue = gold.getNodeValue(); if (goldNodeValue != docNodeValue) { collectData( "processing-instruction data mismatch. ", docNodeName, goldNodeValue, docNodeValue); return false; } } } break; case XalanNode::COMMENT_NODE: { const XalanDOMString& docNodeValue = doc.getNodeValue(); const XalanDOMString& goldNodeValue = gold.getNodeValue(); if (goldNodeValue != docNodeValue) { collectData( "comment data mismatch. ", docNodeName, goldNodeValue, docNodeValue); return false; } } break; case XalanNode::DOCUMENT_NODE: { //debugNodeData(docNodeName); const XalanNode *goldNextNode; const XalanNode *domNextNode; goldNextNode = gold.getFirstChild(); domNextNode = doc.getFirstChild(); if (0 != goldNextNode) { if(domCompare(*goldNextNode,*domNextNode) == false) { return false; } } } break; case XalanNode::ENTITY_REFERENCE_NODE: case XalanNode::ENTITY_NODE: case XalanNode::DOCUMENT_TYPE_NODE: case XalanNode::DOCUMENT_FRAGMENT_NODE: case XalanNode::NOTATION_NODE: default: cerr << "Unexpected node type: " << goldNodeType << endl; return false; } // Need to process siblings. Children are processed in diffElement, since // only they can have children in the XPath data model. const XalanNode* const goldNextNode = gold.getNextSibling(); const XalanNode* const domNextNode = doc.getNextSibling(); if (0 != goldNextNode) { if (0 != domNextNode) { if (domCompare(*goldNextNode, *domNextNode) == false) { return false; } } else { collectData( "Missing sibling node. ", docNodeName, goldNextNode->getNodeName(), goldNextNode->getNodeName()); return false; } } else if (0 != domNextNode) { collectData( "Extra sibling node. ", docNodeName, domNextNode->getNodeName(), domNextNode->getNodeName()); return false; } return true; } bool XalanFileUtility::domCompare( const XalanDocument& gold, const XalanDocument& doc) { const XalanNode* theGoldPos = &gold; const XalanNode* theDocPos = &doc; bool fEqual = true; do { fEqual = diffNode(theGoldPos, theDocPos); if (fEqual == true) { assert(theGoldPos != 0 && theDocPos != 0); const XalanNode* nextGoldNode = theGoldPos->getFirstChild(); const XalanNode* nextDocNode = theDocPos->getFirstChild(); bool fBreak = false; while( nextGoldNode == 0 && nextDocNode == 0 && fBreak == false) { // Move to the next sibling of each node, // since we would get here only if both have // no children. nextGoldNode = theGoldPos->getNextSibling(); nextDocNode = theDocPos->getNextSibling(); // If there is no next sibling, move up to the // parent. If one, but not both, has a sibling, // we'll end up back at the top of the do/while // loop and the difference will be reported. if(0 == nextGoldNode && 0 == nextDocNode) { theGoldPos = theGoldPos->getParentNode(); theDocPos = theDocPos->getParentNode(); // If the parent is null, then we've reached // the end of the document. Note that if we // got here, then there must also be a parent // node in the document we're verifying, so we // could simply assert that theDocPos is either // null if theGoldPos is null, or it is not-null // if theGoldPos is not-null. if(0 == theGoldPos) { nextGoldNode = theGoldPos; fBreak = true; } if(0 == theDocPos) { nextDocNode = theDocPos; fBreak = true; } } } theGoldPos = nextGoldNode; theDocPos = nextDocNode; } } while((theGoldPos != 0 || theDocPos != 0) && fEqual == true); return fEqual; } bool XalanFileUtility::diffNode( const XalanNode& gold, const XalanNode& doc) { const XalanNode::NodeType docNodeType = doc.getNodeType(); const XalanNode::NodeType goldNodeType = gold.getNodeType(); const XalanDOMString& docNodeName = doc.getNodeName(); if (goldNodeType != docNodeType) { collectData( "NodeType mismatch.", docNodeName, XalanDOMString(xalanNodeTypes[docNodeType], getMemoryManager()), XalanDOMString(xalanNodeTypes[goldNodeType], getMemoryManager())); return false; } switch (goldNodeType) { case XalanNode::ELEMENT_NODE: // ATTRIBUTE_NODEs are processed with diffElement(). return diffElement2(gold, doc); break; case XalanNode::CDATA_SECTION_NODE: case XalanNode::TEXT_NODE: { const XalanDOMString& docNodeValue = doc.getNodeValue(); const XalanDOMString& goldNodeValue = gold.getNodeValue(); //debugNodeData(docNodeName, docNodeValue); if(goldNodeValue != docNodeValue) { collectData( "Text node mismatch. ", docNodeName, goldNodeValue, docNodeValue); return false; } } break; case XalanNode::PROCESSING_INSTRUCTION_NODE: { const XalanDOMString& goldNodeName = gold.getNodeName(); if (goldNodeName != docNodeName) { collectData( "processing-instruction target mismatch. ", docNodeName, goldNodeName, docNodeName); return false; } else { const XalanDOMString& docNodeValue = doc.getNodeValue(); const XalanDOMString& goldNodeValue = gold.getNodeValue(); if (goldNodeValue != docNodeValue) { collectData( "processing-instruction data mismatch. ", docNodeName, goldNodeValue, docNodeValue); return false; } } } break; case XalanNode::COMMENT_NODE: { const XalanDOMString& docNodeValue = doc.getNodeValue(); const XalanDOMString& goldNodeValue = gold.getNodeValue(); if (goldNodeValue != docNodeValue) { collectData( "comment data mismatch. ", docNodeName, goldNodeValue, docNodeValue); return false; } } break; case XalanNode::DOCUMENT_NODE: break; case XalanNode::ENTITY_REFERENCE_NODE: case XalanNode::ENTITY_NODE: case XalanNode::DOCUMENT_TYPE_NODE: case XalanNode::DOCUMENT_FRAGMENT_NODE: case XalanNode::NOTATION_NODE: default: cerr << "Unexpected node type: " << goldNodeType << endl; return false; } return true; } bool XalanFileUtility::diffNode( const XalanNode* gold, const XalanNode* doc) { if (gold != 0 && doc != 0) { return diffNode(*gold, *doc); } else if (gold != 0) { const XalanNode* const parent = gold->getParentNode(); collectData( "Missing sibling node. ", parent == 0 ? s_emptyString : parent->getNodeName(), s_emptyString, gold->getNodeName()); return false; } else { assert(doc != 0 && gold == 0); const XalanNode* const parent = doc->getParentNode(); collectData( "Extra sibling node. ", parent == 0 ? s_emptyString : parent->getNodeName(), doc->getNodeName(), s_emptyString); return false; } } /* This routine compares two element nodes. // Inputs: // gold - Dom tree for the expected results // doc - Dom tree created during transformation // filename - Current filenam // // Returns: // True or False // */ bool XalanFileUtility::diffElement( const XalanNode& gold, const XalanNode& doc) { assert(gold.getNodeType() == XalanNode::ELEMENT_NODE); assert(gold.getNodeType() == XalanNode::ELEMENT_NODE); const XalanDOMString& docNodeName = doc.getNodeName(); const XalanDOMString& goldNodeName = gold.getNodeName(); const XalanDOMString& docNsUri = doc.getNamespaceURI(); const XalanDOMString& goldNsUri = gold.getNamespaceURI(); //debugNodeData(docNodeName); // This essentially checks 2 things, that the prefix and localname are the // same. So specific checks of these items are not necessary. if (goldNodeName != docNodeName) { collectData( "Element mismatch. ", docNodeName, goldNodeName, docNodeName); return false; } if ( goldNsUri != docNsUri) { collectData( "Element NamespaceURI mismatch. ", docNodeName, goldNsUri, docNsUri); return false; } // Get Attributes for each Element Node. const XalanNamedNodeMap* const goldAttrs = gold.getAttributes(); const XalanNamedNodeMap* const docAttrs = doc.getAttributes(); // Get number of Attributes const XalanSize_t numGoldAttr = goldAttrs->getLength(); const XalanSize_t numDomAttr = docAttrs ->getLength(); /* // This needs to be uncommented if 'compare.exe' is to work. // If this is the 'root' element strip off the xmlns:xml namespace attribute, // that is lurking around on the gold file, but not the dom. This is necessary // only for the 'compare' test, that uses a pure DOM, that has not been serialized. //if (goldNodeName == XalanDOMString("root")) { numGoldAttr -= 1; XalanNode *gXMLAttr = goldAttrs->item(1); } */ // Check that each Element has same number of Attributes. If they don't report error if ( numGoldAttr == numDomAttr ) { // Compare Attributes one at a time. for (XalanSize_t i = 0; i < numGoldAttr; ++i) { // Attribute order is irrelvant, so comparision is base on Attribute name. const XalanNode* const gAttr = goldAttrs->item(i); const XalanDOMString& goldAttrName = gAttr->getNodeName(); const XalanNode* const dAttr = docAttrs->getNamedItem(goldAttrName); if (dAttr != 0) { if( ! (diffAttr(gAttr, dAttr)) ) return false; } else { collectData( "Element missing named Attribute. ", docNodeName, goldAttrName, XalanDOMString("NOTHING", getMemoryManager())); return false; } } } else { XalanDOMString numGoldStr(getMemoryManager()); XalanDOMString numDOMStr(getMemoryManager()); collectData( "Wrong number of attributes. ", docNodeName, NumberToDOMString(numGoldAttr, numGoldStr), NumberToDOMString(numDomAttr, numDOMStr)); return false; } const XalanNode* goldNextNode = gold.getFirstChild(); const XalanNode* domNextNode = doc.getFirstChild(); if (0 != goldNextNode) { if (0 != domNextNode) { if ( ! domCompare(*goldNextNode, *domNextNode) ) return false; } else { collectData( "Element missing ChildNode. ", docNodeName, XalanDOMString(goldNextNode->getNodeName(), getMemoryManager()), XalanDOMString("NOTHING", getMemoryManager())); return false; } } else if (domNextNode != 0) { // The result doc has additional Children. If the additional node is a text node // then gather up the text and print it out. if ( domNextNode->getNodeType() == XalanNode::TEXT_NODE) { collectData( "Result has additional Child node: ", docNodeName, XalanDOMString("NOTHING", getMemoryManager()), XalanDOMString(domNextNode->getNodeName(), getMemoryManager()).append(XalanDOMString(" \"", getMemoryManager()).append( XalanDOMString(domNextNode->getNodeValue(), getMemoryManager()).append(XalanDOMString("\"", getMemoryManager()))))); } // Additional node is NOT text, so just print it's Name. else { collectData( "Result has additional Child node: ", docNodeName, XalanDOMString("NOTHING", getMemoryManager()), XalanDOMString(domNextNode->getNodeName(), getMemoryManager())); } return false; } return true; } bool XalanFileUtility::diffElement2( const XalanNode& gold, const XalanNode& doc) { assert(gold.getNodeType() == XalanNode::ELEMENT_NODE); assert(gold.getNodeType() == XalanNode::ELEMENT_NODE); const XalanDOMString& docNodeName = doc.getNodeName(); const XalanDOMString& goldNodeName = gold.getNodeName(); const XalanDOMString& docNsUri = doc.getNamespaceURI(); const XalanDOMString& goldNsUri = gold.getNamespaceURI(); //debugNodeData(docNodeName); // This essentially checks 2 things, that the prefix and localname are the // same. So specific checks of these items are not necessary. if (goldNodeName != docNodeName) { collectData( "Element mismatch. ", docNodeName, goldNodeName, docNodeName); return false; } if ( goldNsUri != docNsUri) { collectData( "Element NamespaceURI mismatch. ", docNodeName, goldNsUri, docNsUri); return false; } // Get Attributes for each Element Node. const XalanNamedNodeMap* const goldAttrs = gold.getAttributes(); assert(goldAttrs != 0); const XalanNamedNodeMap* const docAttrs = doc.getAttributes(); assert(docAttrs != 0); // Get number of Attributes const XalanSize_t numGoldAttr = goldAttrs->getLength(); const XalanSize_t numDomAttr = docAttrs ->getLength(); // Check that each Element has same number of Attributes. If they don't report error if ( numGoldAttr == numDomAttr ) { // Compare Attributes one at a time. for (XalanSize_t i = 0; i < numGoldAttr; ++i) { // Attribute order is irrelevant, so comparision is base on Attribute name. const XalanNode* const gAttr = goldAttrs->item(i); const XalanDOMString& goldAttrName = gAttr->getNodeName(); const XalanNode* const dAttr = docAttrs->getNamedItem(goldAttrName); if (dAttr != 0) { if( ! (diffAttr(gAttr, dAttr)) ) return false; } else { collectData( "Element missing named Attribute. ", docNodeName, goldAttrName, XalanDOMString("NOTHING", getMemoryManager())); return false; } } } else { XalanDOMString numGoldStr(getMemoryManager()); XalanDOMString numDOMStr(getMemoryManager()); collectData( "Wrong number of attributes. ", docNodeName, NumberToDOMString(numGoldAttr, numGoldStr), NumberToDOMString(numDomAttr, numDOMStr)); return false; } return true; } /* This routine compares two attribute nodes. // Inputs: // gAttr - attribute from Gold dom tree // dAttr - attribute from Dom tree created during transformation // fileName - Current filenam // // Returns: // True or False // */ bool XalanFileUtility::diffAttr(const XalanNode* gAttr, const XalanNode* dAttr) { const XalanDOMString& docAttrName = dAttr->getNodeName(); //debugAttributeData(goldAttrName); const XalanDOMString& goldAttrValue = gAttr->getNodeValue(); const XalanDOMString& docAttrValue = dAttr->getNodeValue(); if (goldAttrValue != docAttrValue) { collectData( "Attribute Value mismatch. ", docAttrName, goldAttrValue, docAttrValue); return false; } const XalanDOMString& goldAttrNsUri = gAttr->getNamespaceURI(); const XalanDOMString& docAttrNsUri = dAttr->getNamespaceURI(); if (goldAttrNsUri != docAttrNsUri) { collectData( "Attribute NamespaceURI mismatch. ", docAttrName, goldAttrNsUri, docAttrNsUri); return false; } return true; } /* This routine reports DOM comparison errors. // Inputs: // file - Name of current file // node - Current node that fails // msg - Failure message // */ void XalanFileUtility::reportError() { cout << endl << "* Failed " << data.testOrFile << " Error: " << data.msg << endl << " " << "Processing Node: " << data.currentNode << endl << " Expected: " << data.expected << endl << " Actual: " << data.actual << endl << endl; } void XalanFileUtility::debugNodeData(const XalanDOMString& value) { CharVectorType valueVec(getMemoryManager()); TranscodeToLocalCodePage(value, valueVec, true); cout << "Node is: " << c_str(valueVec) << endl; } void XalanFileUtility::debugNodeData( const XalanDOMString& node, const XalanDOMString& value) { CharVectorType valueVec(getMemoryManager()); TranscodeToLocalCodePage(value, valueVec, true); CharVectorType nodeVec(getMemoryManager()); TranscodeToLocalCodePage(node, nodeVec, true); cout << "Node is: " << c_str(nodeVec) << " " << "Value is: \"" << c_str(valueVec) << "\"\n"; } void XalanFileUtility::debugAttributeData(const XalanDOMString& value) { CharVectorType theTargetVector(getMemoryManager()); TranscodeToLocalCodePage(value, theTargetVector, true); cout << "Attribute is: " << c_str(theTargetVector) << endl; } /* This routine collects up data pertinent to a dom comparison failure. // Inputs: // errmsg: Reason for the failure. // currentnode: Node in the dom tree where the mismatch occured // expdata: Expected data based on the Gold file. // actdata: Actual data returned in the result file. // Returns: Void */ void XalanFileUtility::collectData( const char* errmsg, const XalanDOMString& currentnode, const XalanDOMString& expdata, const XalanDOMString& actdata) { data.msg = errmsg; data.currentNode = currentnode; data.expected = expdata; data.actual = actdata; data.fail += 1; } /* Routine prints the result to the console, as well as adds summary info into the logfile. // Inputs: // logfile: Current log file // runid: Unique runid // Returns: Void */ void XalanFileUtility::reportPassFail( XalanXMLFileReporter& logfile, const XalanDOMString& runid) { typedef XalanXMLFileReporter::Hashtable Hashtable; Hashtable runResults(getMemoryManager()); char temp[10]; // Create entrys that contain runid, xerces version, and numbers for Pass, Fail and No Gold. XalanDOMString theBuffer(getMemoryManager()); runResults.insert( XalanDOMString("UniqRunid", getMemoryManager()), runid); runResults.insert( XalanDOMString("Xerces-Version ", getMemoryManager()), getXercesVersion(theBuffer)); runResults.insert( XalanDOMString("BaseDrive ", getMemoryManager()), XalanDOMString(getDrive(theBuffer), getMemoryManager())); runResults.insert( XalanDOMString("TestBase ", getMemoryManager()), XalanDOMString(args.base, getMemoryManager())); runResults.insert( XalanDOMString("xmlFormat ", getMemoryManager()), data.xmlFormat); sprintf(temp, "%ld", args.iters); runResults.insert( XalanDOMString("Iters ", getMemoryManager()), XalanDOMString(temp, getMemoryManager())); sprintf(temp, "%d", data.pass); runResults.insert( XalanDOMString("Passed", getMemoryManager()), XalanDOMString(temp, getMemoryManager())); sprintf(temp, "%d", data.fail); runResults.insert( XalanDOMString("Failed", getMemoryManager()), XalanDOMString(temp, getMemoryManager())); sprintf(temp, "%d", data.nogold); runResults.insert( XalanDOMString("No_Gold_Files", getMemoryManager()), XalanDOMString(temp, getMemoryManager())); logfile.logElementWAttrs(10, "RunResults", runResults, "xxx"); cout << "\nPassed " << data.pass; cout << "\nFailed " << data.fail; cout << "\nMissing Gold " << data.nogold << endl; } /* Routine runs a stylesheet on the log file and displays the results in HTML. // Inputs: // xalan: An instance of the transformer // resultsFile: logfile // Returns: Void */ void XalanFileUtility::analyzeResults(XalanTransformer& xalan, const XalanDOMString& resultsFile) { XalanDOMString paramValue(getMemoryManager()); bool fileStatus; #if defined(AIX) || defined(SOLARIS) || defined(LINUX) || defined(HPUX) bool pathStatus; CharVectorType withPath(getMemoryManager()); TranscodeToLocalCodePage(resultsFile, withPath, false); if (withPath[0] == '/') pathStatus=true; else pathStatus=false; char buffer5[PATH_MAX]; XalanDOMString resultPath(getcwd(buffer5, PATH_MAX), getMemoryManager()); append(resultPath, s_pathSep); #endif // Pass the results .xml file as a parameter to the stylesheet. It must be wrapped in single // quotes so that it is not considered an expression. // #if defined (AIX) || defined(SOLARIS) || defined(LINUX) || defined(HPUX) paramValue.assign(XalanDOMString("\'", getMemoryManager())); if ( !pathStatus ) paramValue.append(resultPath); paramValue.append(resultsFile); paramValue.append(XalanDOMString("\'", getMemoryManager())); #else paramValue.assign(XalanDOMString("'", getMemoryManager())); paramValue.append(resultsFile); paramValue.append(XalanDOMString("'", getMemoryManager())); #endif // Set the parameter // xalan.setStylesheetParam( XalanDOMString("testfile", getMemoryManager()), paramValue); // Generate the input and output file names. // XalanDOMString theHTMLFile(getMemoryManager()); generateFileName(resultsFile,"html", theHTMLFile, &fileStatus); XalanDOMString theStylesheet(getMemoryManager()); theStylesheet += args.base; theStylesheet += XalanDOMString("cconf.xsl", getMemoryManager()); XalanDOMString theXMLSource(getMemoryManager()); theXMLSource += args.base; theXMLSource += XalanDOMString("cconf.xml", getMemoryManager()); // Check that we can find the stylesheet to analyze the results. // CharVectorType theBuffer(getMemoryManager()); TranscodeToLocalCodePage(theStylesheet, theBuffer, true); FILE* fileHandle = fopen(c_str(theBuffer), "r"); if (fileHandle == 0) { cout << "ANALYSIS ERROR: File Missing: " << c_str(theBuffer) << endl; return; } else { fclose(fileHandle); } // Create the InputSources and ResultTarget. const XSLTInputSource xslInputSource(theStylesheet, getMemoryManager()); const XSLTInputSource xmlInputSource(theXMLSource, getMemoryManager()); const XSLTResultTarget resultFile(theHTMLFile, getMemoryManager()); // Do the transform, display the output HTML, or report any failure. const int result = xalan.transform(xmlInputSource, xslInputSource, resultFile); if (result == 0) { #if defined(_MSC_VER) CharVectorType theBuffer(getMemoryManager()); TranscodeToLocalCodePage(theHTMLFile, theBuffer, true); // system(c_str(theBuffer)); #else cout << "The HTML output: " << theHTMLFile << " was created" << endl; #endif } else { cout << "Analysis failed due to following error: " << xalan.getLastError() << endl; } } const XalanDOMChar XalanFileUtility::s_xmlSuffix[] = { XalanUnicode::charFullStop, XalanUnicode::charLetter_x, XalanUnicode::charLetter_m, XalanUnicode::charLetter_l, 0 }; const XalanDOMChar XalanFileUtility::s_pathSep[] = { #if defined(XALAN_WINDOWS) XalanUnicode::charReverseSolidus, #else XalanUnicode::charSolidus, #endif 0 }; XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/Harness/XalanXMLFileReporter.cpp0000664000175000000640000006260411731656103022321 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanXMLFileReporter.hpp" #include #include #include "xalanc/PlatformSupport/DOMStringHelper.hpp" #include #include "xalanc/PlatformSupport/XalanTranscodingServices.hpp" #include "xalanc/PlatformSupport/XalanUnicode.hpp" #include XALAN_CPP_NAMESPACE_BEGIN #if defined(XALAN_STRICT_ANSI_HEADERS) using std::fclose; using std::fflush; using std::fopen; using std::fprintf; using std::fputs; using std::sprintf; #endif XalanOutputTranscoder* makeNewUTF8Transcoder(MemoryManager& theMemoryManager) { XalanTranscodingServices::eCode theCode; XalanOutputTranscoder* const theTranscoder = XalanTranscodingServices::makeNewTranscoder( theMemoryManager, XalanTranscodingServices::s_utf8String, theCode, 1024); if (theCode != XalanTranscodingServices::OK) { XalanDOMString theBuffer(theMemoryManager); throw XalanTranscodingServices::MakeTranscoderException( theCode, XalanTranscodingServices::s_utf8String, theBuffer); } return theTranscoder; } XalanXMLFileReporter::XalanXMLFileReporter( MemoryManager& theManager, const XalanDOMString& fileName) : OPT_FILENAME(theManager), ELEM_RESULTSFILE(theManager), ELEM_TESTFILE(theManager), ELEM_FILERESULT(theManager), ELEM_TESTCASE(theManager), ELEM_CASERESULT(theManager), ELEM_CHECKRESULT(theManager), ELEM_STATISTIC(theManager), ELEM_LONGVAL(theManager), ELEM_DOUBLEVAL(theManager), ELEM_MESSAGE(theManager), ELEM_ARBITRARY(theManager), ELEM_HASHTABLE(theManager), ELEM_HASHITEM(theManager), ATTR_LEVEL(theManager), ATTR_DESC(theManager), ATTR_TIME(theManager), ATTR_RESULT(theManager), ATTR_KEY(theManager), ATTR_FILENAME(theManager), LESS_THAN(theManager), GREATER_THAN(theManager), EQUALS_QUOTE(theManager), SPACE(theManager), QUOTE(theManager), QUOTE_SPACE(theManager), QUOTE_GREATER_THAN(theManager), QUOTE_SOLIDUS_GREATER_THAN(theManager), PASS(theManager), AMBG(theManager), ERRR(theManager), FAIL(theManager), LESS_THAN_SOLIDUS(theManager), XML_HEADER(theManager), REASON_EQUALS_QUOTE(theManager), TESTCASEINIT_HDR(theManager), TESTCASECLOSE_HDR(theManager), MESSAGE_HDR(theManager), STATISTIC_HDR(theManager), ARBITRARY_HDR(theManager), HASHTABLE_HDR(theManager), HASHITEM_HDR(theManager), CHECKPASS_HDR(theManager), CHECKAMBG_HDR(theManager), CHECKERRR_HDR(theManager), CHECKFAIL_HDR(theManager), CHECKFAIL_FTR(theManager), m_anyOutput(false), m_fileName(fileName, theManager), m_fileHandle(0), m_ready(false), m_error(false), m_flushOnCaseClose(true), m_transcoder(makeNewUTF8Transcoder(theManager)), m_buffer(theManager) { assert(m_transcoder.get() != 0); if (m_fileName.empty() == false) { m_ready = initialize(theManager); } } XalanXMLFileReporter::~XalanXMLFileReporter() { } bool XalanXMLFileReporter::initialize(MemoryManager& /* theManager */) { if (m_fileName.empty() == true) { // We don't have a valid file, so bail m_error = true; m_ready = false; fprintf(stderr, "XalanXMLFileReporter.initialize() ERROR: No file name specified"); } else { // Transcode down the file name... TranscodeToLocalCodePage(m_fileName, m_buffer, true); const char* const theTranscodedFileNamePointer = &*m_buffer.begin(); // Create a file and ensure it has a place to live m_fileHandle = fopen(theTranscodedFileNamePointer, "w"); if (m_fileHandle == 0) { // Couldn't create or find the directory for the file to live in, so bail m_error = true; m_ready = false; fprintf(stderr, "XalanXMLFileReporter.initialize() ERROR: unble to open file, %s", theTranscodedFileNamePointer); return(false); } else { m_ready = true; initStrings(); startResultsFile(); // fprintf(stderr, "DEBUG:XalanXMLFileReporter.initialize() complete with " + fileName); } } return m_ready; } bool XalanXMLFileReporter::getFlushOnCaseClose() { return(m_flushOnCaseClose); } const XalanDOMString& XalanXMLFileReporter::getFileName() const { return(m_fileName); } void XalanXMLFileReporter::setFileName(const XalanDOMString& fileName) { m_fileName = fileName; } bool XalanXMLFileReporter::checkError() { // Ensure our underlying reporter, if one, is still OK if (m_fileHandle == 0) { m_error = true; } return(m_error); } bool XalanXMLFileReporter::isReady() { // Ensure our underlying reporter, if one, is still OK if (m_fileHandle == 0) { // NEEDSWORK: should we set m_ready = false in this case? // errors in the PrintStream are not necessarily fatal m_error = true; m_ready = false; } return(m_ready); } void XalanXMLFileReporter::flush() { if (isReady()) { fflush(m_fileHandle); } } void XalanXMLFileReporter::close() { fflush(m_fileHandle); if (isReady()) { if (m_fileHandle != 0) { closeResultsFile(); fclose(m_fileHandle); } } m_ready = false; } void XalanXMLFileReporter::logTestFileInit(const XalanDOMString& msg) { XalanDOMString b(getMemoryManager()); if (isReady()) { XalanDOMString b(getMemoryManager()); XalanDOMString buffer(getMemoryManager()); b += LESS_THAN; b += ELEM_TESTFILE; b += SPACE; b +=ATTR_DESC; b +=EQUALS_QUOTE; b +=escapestring(msg, buffer); b +=QUOTE_SPACE; b +=ATTR_TIME; b +=EQUALS_QUOTE; buffer.clear(); b +=getDateTimeString(buffer); b +=QUOTE_GREATER_THAN; printToFile(b); } } void XalanXMLFileReporter::logTestFileClose(const XalanDOMString& /* msg */, const XalanDOMString& /* result */) { if (isReady()) { XalanDOMString b(getMemoryManager()); b +=LESS_THAN_SOLIDUS; b +=ELEM_TESTFILE; b +=GREATER_THAN; printToFile(b); } flush(); } void XalanXMLFileReporter::logTestCaseInit(const XalanDOMString& msg) { if (isReady()) { XalanDOMString b(getMemoryManager()); XalanDOMString buffer(getMemoryManager()); b +=TESTCASEINIT_HDR; b +=escapestring(msg, buffer); b +=QUOTE_GREATER_THAN; printToFile(b); } } void XalanXMLFileReporter::logTestCaseClose(const XalanDOMString& /* msg */, const XalanDOMString& /* result */) { if (isReady()) { XalanDOMString b(getMemoryManager()); b +=LESS_THAN_SOLIDUS; b +=ELEM_TESTCASE; b +=GREATER_THAN; printToFile(b); } if (getFlushOnCaseClose()) { flush(); } } void XalanXMLFileReporter::logMessage(int level, const XalanDOMString& msg) { char tmp[20]; sprintf(tmp, "%d", level); if (isReady()) { XalanDOMString b(getMemoryManager()); XalanDOMString buffer(getMemoryManager()); b +=LESS_THAN_SOLIDUS; b +=MESSAGE_HDR; b.append(tmp); b +=QUOTE_GREATER_THAN; printToFile(b); printToFile(escapestring(msg, buffer)); b.clear(); b +=LESS_THAN_SOLIDUS; b +=ELEM_MESSAGE; b +=GREATER_THAN; printToFile(b ); } } void XalanXMLFileReporter::addMetricToAttrs(const char* desc, double theMetric, Hashtable& attrs) { XalanDOMString temp(getMemoryManager()); NumberToDOMString(theMetric, temp); attrs.insert(XalanDOMString(desc,getMemoryManager()) ,temp); } void XalanXMLFileReporter::logElementWAttrs(int /* level */, const XalanDOMString& element, Hashtable& attrs, const XalanDOMString& msg) { if (isReady() && !element.empty()&& !attrs.empty()) { XalanDOMString b(getMemoryManager()); b +=LESS_THAN; b +=element; b +=SPACE; printToFile( b); Hashtable::iterator theEnd = attrs.end(); for(Hashtable::iterator i = attrs.begin(); i != theEnd; ++i) { b.erase(); b +=(*i).first; b +=EQUALS_QUOTE; b +=(*i).second ; b +=QUOTE; printToFile(b); } printToFile(GREATER_THAN); if (msg.empty() != 0) { XalanDOMString theResult( getMemoryManager()); printToFile(escapestring(msg,theResult )); } b.erase(); b +=LESS_THAN_SOLIDUS; b +=element; b +=GREATER_THAN; printToFile(b); } } void XalanXMLFileReporter::logElement(const XalanDOMString& element, const XalanDOMString& msg) { if (isReady() && !element.empty() && !msg.empty()) { XalanDOMString theString( getMemoryManager()); XalanDOMString buffer(getMemoryManager()); theString += LESS_THAN; theString += element; theString +=GREATER_THAN; theString +=escapestring(msg, buffer); theString +=LESS_THAN_SOLIDUS; theString +=element; theString +=GREATER_THAN; printToFile(theString); } } void XalanXMLFileReporter::logStatistic (int level, long lVal, double dVal, const XalanDOMString& msg) { if (isReady()) { XalanDOMString b(getMemoryManager()); XalanDOMString buffer(getMemoryManager()); char tmp[40]; sprintf(tmp, "%d", level); b += STATISTIC_HDR; b += XalanDOMString(tmp, getMemoryManager()); b += QUOTE_SPACE; b += ATTR_DESC; b += EQUALS_QUOTE; b += escapestring(msg,buffer); b += QUOTE_GREATER_THAN; printToFile(b); b.clear(); sprintf(tmp, "%ld", lVal); b += LESS_THAN; b += ELEM_LONGVAL; b += GREATER_THAN; b += XalanDOMString(tmp, getMemoryManager()); b += LESS_THAN_SOLIDUS; b += ELEM_LONGVAL; b += GREATER_THAN; printToFile(b); b.clear(); sprintf(tmp, "%f", dVal); b += LESS_THAN; b += XalanDOMString(ELEM_DOUBLEVAL, getMemoryManager()); b += GREATER_THAN; b += XalanDOMString(tmp, getMemoryManager()); b += LESS_THAN_SOLIDUS; b += ELEM_DOUBLEVAL; b += GREATER_THAN; printToFile(b); b.clear(); b += LESS_THAN_SOLIDUS; b += ELEM_STATISTIC; b += GREATER_THAN; printToFile(b); } } void XalanXMLFileReporter::logArbitraryMessage (int level, const XalanDOMString& msg) { char tmp[20]; sprintf(tmp, "%d", level); if (isReady()) { XalanDOMString b(getMemoryManager()); XalanDOMString buffer(getMemoryManager()); b += ARBITRARY_HDR; b += XalanDOMString(tmp,getMemoryManager()); b += QUOTE_GREATER_THAN; printToFile(b); printToFile(escapestring(msg, buffer)); b.clear(); b +=LESS_THAN_SOLIDUS; b +=ELEM_ARBITRARY; b +=GREATER_THAN; printToFile(b); } } /* void logHashtable (int level, Hashtable hash, XalanDOMString msg) { if (isReady()) { printToFile(HASHTABLE_HDR + level + QUOTE_SPACE + ATTR_DESC + EQUALS_QUOTE + msg + QUOTE_GREATER_THAN); if (hash == null) { printToFile(LESS_THAN + ELEM_HASHITEM + SPACE + ATTR_KEY + "=\"null\">"); printToFile(LESS_THAN_SOLIDUS + ELEM_HASHITEM + GREATER_THAN); } try { for (Enumeration enum = hash.keys(); enum.hasMoreElements();) { Object key = enum.nextElement(); // Ensure we'll have clean output by pre-fetching value before outputting anything XalanDOMString value = hash.get(key).tostring(); printToFile(HASHITEM_HDR + key.tostring() + QUOTE_GREATER_THAN); printToFile(value); printToFile(LESS_THAN_SOLIDUS + ELEM_HASHITEM + GREATER_THAN); } } catch (Exception e) { // No-op: should ensure we have clean output } printToFile(LESS_THAN_SOLIDUS + ELEM_HASHTABLE + GREATER_THAN); } } */ void XalanXMLFileReporter::logCheckPass(const XalanDOMString& comment) { if (isReady()) { XalanDOMString b(getMemoryManager()); XalanDOMString buffer(getMemoryManager()); b += CHECKPASS_HDR; b += escapestring(comment,buffer); b +=QUOTE_SOLIDUS_GREATER_THAN; printToFile(b); } } void XalanXMLFileReporter::logCheckFail(const XalanDOMString& comment) { if (isReady()) { XalanDOMString b(getMemoryManager()); XalanDOMString buffer(getMemoryManager()); b+= CHECKFAIL_HDR; b+=escapestring(comment, buffer); b+= QUOTE_SOLIDUS_GREATER_THAN; printToFile(b); } } void XalanXMLFileReporter::logCheckFail(const XalanDOMString& test, const Hashtable& actexp) { if (isReady()) { XalanDOMString b(getMemoryManager()); XalanDOMString buffer(getMemoryManager()); b+= CHECKFAIL_HDR; b+= escapestring(test, buffer); b+= QUOTE; printToFile(b); printToFile(GREATER_THAN); Hashtable::const_iterator aeEnd = actexp.end(); for(Hashtable::const_iterator ii = actexp.begin(); ii != aeEnd; ++ii) { logElement((*ii).first, (*ii).second); } printToFile(CHECKFAIL_FTR); } } void XalanXMLFileReporter::logCheckFail(const XalanDOMString& test, const Hashtable& attrs, const Hashtable& actexp) { if (isReady()) { XalanDOMString b(getMemoryManager()); XalanDOMString buffer(getMemoryManager()); b+= CHECKFAIL_HDR; b+= escapestring(test, buffer); b+= QUOTE; printToFile(b); Hashtable::const_iterator fdEnd = attrs.end(); for(Hashtable::const_iterator i = attrs.begin(); i != fdEnd; ++i) { b.clear(); b += (*i).first; b += EQUALS_QUOTE; b += QUOTE; printToFile(b); } printToFile(GREATER_THAN); Hashtable::const_iterator aeEnd = actexp.end(); for(Hashtable::const_iterator ii = actexp.begin(); ii != aeEnd; ++ii) { logElement((*ii).first, (*ii).second); } printToFile(CHECKFAIL_FTR); } } void XalanXMLFileReporter::logCheckAmbiguous(const XalanDOMString& comment) { if (isReady()) { XalanDOMString b(getMemoryManager()); XalanDOMString buffer(getMemoryManager()); b += CHECKAMBG_HDR; b += escapestring(comment, buffer); b += QUOTE_SOLIDUS_GREATER_THAN; printToFile(b); } } void XalanXMLFileReporter::logErrorResult(const XalanDOMString& test, const XalanDOMString& reason) { if (isReady()) { XalanDOMString b(getMemoryManager()); XalanDOMString buffer(getMemoryManager()); b += CHECKFAIL_HDR; b += escapestring(test, buffer); b += QUOTE_SPACE; b += XalanDOMString(REASON_EQUALS_QUOTE, getMemoryManager()); buffer.clear(); b += escapestring(reason, buffer); b += QUOTE_SOLIDUS_GREATER_THAN; printToFile( b); } } void XalanXMLFileReporter::logCheckErr(const XalanDOMString& comment) { if (isReady()) { XalanDOMString b(getMemoryManager()); XalanDOMString buffer(getMemoryManager()); b += CHECKERRR_HDR; b += escapestring(comment, buffer); b += QUOTE_SOLIDUS_GREATER_THAN; printToFile(b); } } static const XalanDOMChar theAmpersandString[] = { XalanUnicode::charAmpersand, XalanUnicode::charLetter_a, XalanUnicode::charLetter_m, XalanUnicode::charLetter_p, XalanUnicode::charSemicolon, 0 }; static const XalanDOMChar theApostropheString[] = { XalanUnicode::charAmpersand, XalanUnicode::charLetter_a, XalanUnicode::charLetter_p, XalanUnicode::charLetter_o, XalanUnicode::charLetter_s, XalanUnicode::charSemicolon, 0 }; static const XalanDOMChar theLessThanString[] = { XalanUnicode::charAmpersand, XalanUnicode::charLetter_l, XalanUnicode::charLetter_t, XalanUnicode::charSemicolon, 0 }; static const XalanDOMChar theGreaterThanString[] = { XalanUnicode::charAmpersand, XalanUnicode::charLetter_g, XalanUnicode::charLetter_t, XalanUnicode::charSemicolon, 0 }; static const XalanDOMChar theQuoteString[] = { XalanUnicode::charAmpersand, XalanUnicode::charLetter_q, XalanUnicode::charLetter_u, XalanUnicode::charLetter_o, XalanUnicode::charLetter_t, XalanUnicode::charSemicolon, 0 }; XalanDOMString& XalanXMLFileReporter::escapestring(const XalanDOMString& s, XalanDOMString& sb) { const XalanDOMString::size_type length = s.length(); sb.reserve(length); for (XalanDOMString::size_type i = 0; i < length; i++) { const XalanDOMChar ch = s[i]; if (XalanUnicode::charLessThanSign == ch) { sb.append(theLessThanString); } else if (XalanUnicode::charGreaterThanSign == ch) { sb.append(theGreaterThanString); } else if (XalanUnicode::charAmpersand == ch) { sb.append(theAmpersandString); } else if (XalanUnicode::charQuoteMark == ch) { sb.append(theQuoteString); } else if (XalanUnicode::charApostrophe == ch) { sb.append(theApostropheString); } else { sb.append(1, ch); } } return sb; } bool XalanXMLFileReporter::startResultsFile() { if (isReady()) { // Write out XML header and root test result element printToFile(XML_HEADER); // Note: this tag is closed in our .close() method, which the caller had better call! XalanDOMString b(getMemoryManager()); b += LESS_THAN; b += ELEM_RESULTSFILE; b += SPACE; b += ATTR_FILENAME; b += EQUALS_QUOTE; b += m_fileName; b += QUOTE_GREATER_THAN; printToFile(b); return true; } else { return false; } } bool XalanXMLFileReporter::closeResultsFile() { if (isReady() == false) { return false; } else { XalanDOMString b(getMemoryManager()); b += LESS_THAN_SOLIDUS; b += ELEM_RESULTSFILE; b += GREATER_THAN; printToFile(b); return true; } } bool XalanXMLFileReporter::printToFile(const XalanDOMString& output) { const XalanDOMString::size_type theLength = output.size(); if (isReady() == false) { return false; } else if (theLength == 0) { return true; } else { m_buffer.resize((theLength * 4) + 1); typedef XalanOutputTranscoder::size_type size_type; typedef XalanOutputTranscoder::XalanXMLByte XalanXMLByte; XalanOutputTranscoder::size_type theCharsTranscoded; XalanOutputTranscoder::size_type theTargetBytesUsed; const XalanOutputTranscoder::eCode theCode = m_transcoder->transcode( output.c_str(), theLength, reinterpret_cast(&*m_buffer.begin()), m_buffer.size(), theCharsTranscoded, theTargetBytesUsed); if (theCode != XalanTranscodingServices::OK || theCharsTranscoded != theLength) { fputs("Error transcoding text.", m_fileHandle); } else { m_buffer[theTargetBytesUsed] = 0; fputs(&*m_buffer.begin(), m_fileHandle); } fputs("\n", m_fileHandle); return true; } } XalanDOMString & XalanXMLFileReporter::getDateTimeString(XalanDOMString& theResult) { struct tm *tmNow; time_t time_tNow; time(&time_tNow); tmNow = localtime(&time_tNow); const char* const theTime = asctime(tmNow); theResult.assign(theTime, XalanDOMString::length(theTime) - 1); return theResult; } void XalanXMLFileReporter::initStrings() { OPT_FILENAME = XalanDOMString("filename", getMemoryManager()); ELEM_RESULTSFILE = XalanDOMString("resultsfile", getMemoryManager()); ELEM_TESTFILE = XalanDOMString("testfile", getMemoryManager()); ELEM_FILERESULT = XalanDOMString("fileresult", getMemoryManager()); ELEM_TESTCASE = XalanDOMString("Test_Dir", getMemoryManager()); ELEM_CASERESULT = XalanDOMString("Dir-result", getMemoryManager()); ELEM_CHECKRESULT = XalanDOMString("Testcase", getMemoryManager()); ELEM_STATISTIC = XalanDOMString("statistic", getMemoryManager()); ELEM_LONGVAL = XalanDOMString("longval", getMemoryManager()); ELEM_DOUBLEVAL = XalanDOMString("doubleval", getMemoryManager()); ELEM_MESSAGE = XalanDOMString("message", getMemoryManager()); ELEM_ARBITRARY = XalanDOMString("arbitrary", getMemoryManager()); ELEM_HASHTABLE = XalanDOMString("hashtable", getMemoryManager()); ELEM_HASHITEM = XalanDOMString("hashitem", getMemoryManager()); ATTR_LEVEL = XalanDOMString("level", getMemoryManager()); ATTR_DESC = XalanDOMString("desc", getMemoryManager()); ATTR_TIME = XalanDOMString("time", getMemoryManager()); ATTR_RESULT = XalanDOMString("result", getMemoryManager()); ATTR_KEY = XalanDOMString("key", getMemoryManager()); ATTR_FILENAME = OPT_FILENAME; LESS_THAN = XalanDOMString("<", getMemoryManager()); GREATER_THAN = XalanDOMString(">", getMemoryManager()); EQUALS_QUOTE = XalanDOMString("=\"", getMemoryManager()); SPACE = XalanDOMString(" ", getMemoryManager()); QUOTE = XalanDOMString("\"", getMemoryManager()); QUOTE_SPACE = XalanDOMString("\" ", getMemoryManager()); QUOTE_GREATER_THAN = XalanDOMString("\">", getMemoryManager()); QUOTE_SOLIDUS_GREATER_THAN = XalanDOMString("\"/>", getMemoryManager()); PASS = XalanDOMString("PASS", getMemoryManager()); AMBG = XalanDOMString("AMBG", getMemoryManager()); ERRR = XalanDOMString("ERRR", getMemoryManager()); FAIL = XalanDOMString("FAIL", getMemoryManager()); LESS_THAN_SOLIDUS = XalanDOMString("", getMemoryManager()); REASON_EQUALS_QUOTE = XalanDOMString("reason=\"", getMemoryManager()); TESTCASEINIT_HDR = LESS_THAN; TESTCASEINIT_HDR += ELEM_TESTCASE ; TESTCASEINIT_HDR += SPACE; TESTCASEINIT_HDR += ATTR_DESC; TESTCASEINIT_HDR += EQUALS_QUOTE; TESTCASECLOSE_HDR = LESS_THAN; TESTCASECLOSE_HDR += ELEM_CASERESULT; TESTCASECLOSE_HDR += SPACE; TESTCASECLOSE_HDR += ATTR_DESC; TESTCASECLOSE_HDR += EQUALS_QUOTE; MESSAGE_HDR = LESS_THAN; MESSAGE_HDR += ELEM_MESSAGE; MESSAGE_HDR += SPACE; MESSAGE_HDR += ATTR_LEVEL; MESSAGE_HDR += EQUALS_QUOTE; STATISTIC_HDR +=LESS_THAN; STATISTIC_HDR +=ELEM_STATISTIC; STATISTIC_HDR +=SPACE; STATISTIC_HDR +=ATTR_LEVEL; STATISTIC_HDR +=EQUALS_QUOTE; ARBITRARY_HDR += LESS_THAN; ARBITRARY_HDR += ELEM_ARBITRARY; ARBITRARY_HDR += SPACE; ARBITRARY_HDR += ATTR_LEVEL; ARBITRARY_HDR += EQUALS_QUOTE; HASHTABLE_HDR += LESS_THAN; HASHTABLE_HDR += ELEM_HASHTABLE; HASHTABLE_HDR += SPACE; HASHTABLE_HDR += ATTR_LEVEL; HASHTABLE_HDR += EQUALS_QUOTE; HASHITEM_HDR += LESS_THAN; HASHITEM_HDR += ELEM_HASHITEM; HASHITEM_HDR += SPACE; HASHITEM_HDR += ATTR_KEY; HASHITEM_HDR += EQUALS_QUOTE; XalanDOMString prefix(getMemoryManager()), suffix(getMemoryManager()); prefix += LESS_THAN; prefix += ELEM_CHECKRESULT; prefix += SPACE; prefix += ATTR_RESULT; prefix += EQUALS_QUOTE; suffix += QUOTE_SPACE; suffix += ATTR_DESC; suffix += EQUALS_QUOTE; CHECKPASS_HDR += prefix; CHECKPASS_HDR += PASS; CHECKPASS_HDR += suffix; CHECKAMBG_HDR += prefix; CHECKAMBG_HDR += AMBG; CHECKAMBG_HDR += suffix; CHECKERRR_HDR += prefix; CHECKERRR_HDR += ERRR; CHECKERRR_HDR += suffix; CHECKFAIL_HDR += prefix; CHECKFAIL_HDR += FAIL; CHECKFAIL_HDR += suffix; CHECKFAIL_FTR += LESS_THAN_SOLIDUS; CHECKFAIL_FTR += ELEM_CHECKRESULT; CHECKFAIL_FTR += GREATER_THAN; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/Harness/XalanHarnessDefinitions.hpp0000664000175000000640000000250011731656103023127 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_HARNESSDEFINITIONS_HEADER_GUARD_1357924680) #define XALAN_HARNESSDEFINITIONS_HEADER_GUARD_1357924680 #include "xalanc/Include/PlatformDefinitions.hpp" #if defined(XALAN_BUILD_DLL) # define XALAN_HARNESS_EXPORT XALAN_PLATFORM_EXPORT # define XALAN_HARNESS_EXPORT_FUNCTION(T) XALAN_PLATFORM_EXPORT_FUNCTION(T) #else # define XALAN_HARNESS_EXPORT XALAN_PLATFORM_IMPORT # define XALAN_HARNESS_EXPORT_FUNCTION(T) XALAN_PLATFORM_IMPORT_FUNCTION(T) #endif #endif // XALAN_HARNESSDEFINITIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/Harness/XalanDiagnosticMemoryManager.cpp0000664000175000000640000001573611731656103024112 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanDiagnosticMemoryManager.hpp" #if !defined(XALAN_CLASSIC_IOSTREAMS) #include #endif #include #include "xercesc/util/PlatformUtils.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanDiagnosticMemoryManager::XalanDiagnosticMemoryManager( MemoryManager& theMemoryManager, bool fAssertErrors, StreamType* theStream) : m_memoryManager(theMemoryManager), m_assertErrors(fAssertErrors), m_locked(false), m_sequence(0), m_highWaterMark(0), m_currentAllocated(0), m_allocations(theMemoryManager), m_stream(theStream) { } XalanDiagnosticMemoryManager::~XalanDiagnosticMemoryManager() { if (m_allocations.size() > 0 && m_stream != 0) { *m_stream << "Detected memory leaks. " << m_allocations.size() << " blocks are still allocated.\n"; } } void* XalanDiagnosticMemoryManager::allocate(size_type size) { void* theResult = 0; if (m_locked == true) { if (m_stream != 0) { *m_stream << "Attempt to allocate " << size << " bytes from locked instance " << this << ".\n"; } throw LockException(); } else { theResult = m_memoryManager.allocate(size); assert(theResult != 0); assert(m_allocations.find(theResult) == m_allocations.end()); m_currentAllocated += size; if (m_currentAllocated > m_highWaterMark) { m_highWaterMark = m_currentAllocated; } m_allocations.insert(MapType::value_type(theResult, Data(size, m_sequence++))); } return theResult; } void XalanDiagnosticMemoryManager::deallocate(void* pointer) { if (m_locked == true) { if (m_stream != 0) { *m_stream << "Attempt to deallocate address " << pointer << " with locked instance " << this << ".\n"; } throw LockException(); } else { if (pointer != 0) { MapType::iterator i = m_allocations.find(pointer); if (i != m_allocations.end()) { m_memoryManager.deallocate(pointer); assert(m_currentAllocated >= i->second.m_size); m_currentAllocated -= i->second.m_size; m_allocations.erase(i); } else { if (m_stream != 0) { *m_stream << "Attempt to free unallocated address " << pointer << " with instance " << this << ".\n"; } assert(!m_assertErrors); } } } } MemoryManager* XalanDiagnosticMemoryManager::getExceptionMemoryManager() { return &m_memoryManager; } void XalanDiagnosticMemoryManager::dumpStatistics( StreamType* theStream, size_type theBytesToDump) { StreamType* const diagStream = theStream != 0 ? theStream : m_stream; if (diagStream != 0) { *diagStream << "Total number of allocations: " << m_sequence << ".\n" << "Total current allocations: " << m_allocations.size() << ".\n" << "Total bytes currently allocated: " << m_currentAllocated << ".\n" << "Peak bytes allocated: " << m_highWaterMark << ".\n"; for (const_iterator i = m_allocations.begin(); i != m_allocations.end(); ++i) { const void* const thePointer = i->first; const Data& theData = i->second; XALAN_USING_STD(dec); *diagStream << "Block at address " << thePointer << " with sequence " << dec << theData.m_sequence << " is " << theData.m_size << " bytes long.\n"; XALAN_USING_XERCES(XMLPlatformUtils); const size_type theHeaderSize = XMLPlatformUtils::alignPointerForNewBlockAllocation(sizeof(MemoryManager*)); const char* const theChars = reinterpret_cast(thePointer) + theHeaderSize; const unsigned char* const theUChars = reinterpret_cast(theChars); if (theBytesToDump != 0) { XALAN_USING_STD(hex); const size_type theCount = theBytesToDump > theData.m_size ? theData.m_size : theBytesToDump; { *diagStream << "("; for (size_type j = 0; j < theCount; ++j) { const char ch = isprint(theChars[j]) ? theChars[j] : ' '; *diagStream << ch; } *diagStream << ") "; } if (theCount < theBytesToDump) { for (size_type j = theCount; j < theBytesToDump; ++j) { *diagStream << ' '; } } { *diagStream << hex; for (size_type j = 0; j < theCount; ++j) { *diagStream << static_cast(theUChars[j]) << " "; } } *diagStream << "\n"; } } } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/Harness/XalanFileUtility.hpp0000664000175000000640000002672411731656103021611 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_FILEUTILITY_HEADER_GUARD_1357924680) #define XALAN_FILEUTILITY_HEADER_GUARD_1357924680 #include "xalanc/Harness/XalanHarnessDefinitions.hpp" #include "xalanc/Include/XalanVector.hpp" #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include "xalanc/XalanDOM/XalanDOMString.hpp" XALAN_CPP_NAMESPACE_BEGIN class FormatterListener; class PrintWriter; class StylesheetRoot; class XalanCompiledStylesheet; class XalanDocument; class XalanNode; class XalanSourceTreeDocument; class XalanTransformer; class XalanXMLFileReporter; class XSLTInputSource; XALAN_USING_XERCES(MemoryManager) // This class is exported from the Harness.dll class XALAN_HARNESS_EXPORT XalanFileUtility { public: // A vector to hold directory names and file names. typedef XalanVector FileNameVectorType; typedef XalanVector CharVectorType; struct XALAN_HARNESS_EXPORT reportStruct { XalanDOMString theDrive; XalanDOMString testOrFile; XalanDOMString xmlFileURL; XalanDOMString xslFileURL; XalanDOMString xmlFormat; const char* msg; XalanDOMString currentNode; XalanDOMString actual; XalanDOMString expected; int pass; int fail; int nogold; reportStruct(MemoryManager& theManager); void reset(); private: //Not implemented reportStruct(); reportStruct(const reportStruct&); } data; struct XALAN_HARNESS_EXPORT cmdParams { private: #if defined(XALAN_NO_STD_NAMESPACE) typedef ostrstream StreamType; #else typedef std::ostrstream StreamType; #endif StreamType help; public: XalanDOMString base; XalanDOMString output; XalanDOMString gold; XalanDOMString sub; int source; bool skip; long iters; cmdParams(MemoryManager& theManager); ~cmdParams() { } const char* getHelpMessage(); StreamType& getHelpStream() { return help; } private: //Not implemented cmdParams(); cmdParams(const cmdParams&); } args; /** Simple constructor, does not perform initialization. */ XalanFileUtility(MemoryManager& theManager); ~XalanFileUtility(); bool getVerbose() const { return m_verbose; } void setVerbose(bool flag) { m_verbose = flag; } int getFailureCount() const { return data.fail; } /** * Utility method used to get test files from a specific directory. * @returns a vector containing test files. */ XalanDOMString& getDrive(XalanDOMString& theResult); bool getParams( int argc, char* argv[], const char* outDir, bool fsetGold = true); FileNameVectorType& getTestFileNames( const XalanDOMString& baseDir, const XalanDOMString& relDir, bool useDirPrefix, FileNameVectorType& theFiles); /** * Utility method used to get subdirectories from a specific directory. * @returns a vector containing directory files. */ FileNameVectorType& getDirectoryNames(const XalanDOMString& rootDirectory, FileNameVectorType& theFiles); /** * Utility method used to create default directories when neccessary */ void checkAndCreateDir(const XalanDOMString& directory); /** * Utility method determines if directory exists. */ bool checkDir(const XalanDOMString& directory); /** * Utility method used to get XSL file based on XML file. * @returns a XalanDOMString. */ XalanDOMString& getXSLFileName(const XalanDOMString& theXMLFileName, XalanDOMString& theResult); /** * Utility method used to get OUT file based on XML file. * @returns a XalanDOMString. */ XalanDOMString& generateFileName( const XalanDOMString& theXMLFileName, const char* suffix, XalanDOMString& theResult, bool* status = 0); /** * Utility method used to generate UniqRunid. * @returns a XalanDOMString. */ XalanDOMString& generateUniqRunid(XalanDOMString& theResult); /** * Utility methods used to get Xerces Version number. * @returns a XalanDOMString. */ XalanDOMString& getXercesVersion(XalanDOMString& theResult); void checkResults( const XalanDOMString& outputFile, const XalanDOMString& goldFile, XalanXMLFileReporter& logfile); void checkAPIResults( const XalanDOMString& actual, const XalanDOMString& expected, const char* msg, XalanXMLFileReporter& logfile, const XalanDOMString& outputFile, const XalanDOMString& goldFile, bool containsOnly = false); // This API is deprecated. Please use the following // one. void checkAPIResults( const char* actual, const char* expected, const char* msg, XalanXMLFileReporter& logfile, const XalanDOMString& outputFile, const XalanDOMString& goldFile, MemoryManager& /* theManager */, bool containsOnly = false) { checkAPIResults( actual, expected, msg, logfile, outputFile, goldFile, containsOnly); } void checkAPIResults( const char* actual, const char* expected, const char* msg, XalanXMLFileReporter& logfile, const XalanDOMString& outputFile, const XalanDOMString& goldFile, bool containsOnly = false) { checkAPIResults( XalanDOMString(actual, getMemoryManager()), XalanDOMString(expected, getMemoryManager()), msg, logfile, outputFile, goldFile, containsOnly); } /** * Utility method used to compare the results. It inturn * call domCompare. * @returns Void. */ void checkDOMResults( const XalanDOMString& theOutputFile, const XalanCompiledStylesheet* compiledSS, const XalanSourceTreeDocument* dom, const XSLTInputSource& goldInputSource, XalanXMLFileReporter& logfile); bool compareSerializedResults( const XalanDOMString& transformResult, const XalanDOMString& goldInputSource); /** * Utility method used to create a FormatterToXML FormatterListener. * This is required to DOM comparisions. * @returns a pointer to a FormatterListener. */ FormatterListener* getXMLFormatter( PrintWriter& resultWriter, int indentAmount, const XalanDOMString& mimeEncoding, const StylesheetRoot* stylesheet); bool fileCompare( const char* goldFile, const char* outputFile); /** * Utility methods used to perform a DOM Compare * @returns boolean */ bool domCompare(const XalanNode& gold, const XalanNode& doc); /** * Utility methods used to perform a DOM Compare * @returns boolean */ bool domCompare( const XalanDocument& gold, const XalanDocument& doc); /** * Utility methods used to diff two Element nodes. * @returns boolean. */ bool diffElement(const XalanNode& gold, const XalanNode& doc); /** * Utility methods used to diff two nodes. * @returns true if the nodes are equal, and false if not. */ bool diffNode( const XalanNode& gold, const XalanNode& doc); /** * Utility methods used to diff two nodes. * @returns true if the nodes are equal, and false if not. */ bool diffNode( const XalanNode* gold, const XalanNode* doc); /** * Utility methods used to diff two Element nodes. * @returns boolean. */ bool diffElement2( const XalanNode& gold, const XalanNode& doc); /** * Utility methods used to diff two attribute nodes. * @returns boolean. */ bool diffAttr(const XalanNode* gAttr, const XalanNode* dAttr); /** * Utility methods used to report Pass/Fail numbers. * @returns void. */ void reportPassFail(XalanXMLFileReporter& logfile); void reportPassFail(XalanXMLFileReporter& logfile, const XalanDOMString& runid); void analyzeResults(XalanTransformer& xalan, const XalanDOMString& resultsFile); static const XalanDOMChar s_xmlSuffix[]; static const XalanDOMChar s_pathSep[]; const MemoryManager& getMemoryManager() const { return m_buffer.getMemoryManager(); } MemoryManager& getMemoryManager() { return m_buffer.getMemoryManager(); } private: static const XalanDOMString s_emptyString; XalanDOMString& getProgramName(const char* fullName, XalanDOMString& theBuffer); /** * Utility methods used to collect information about compare failures. * @returns void. */ void collectData( const char* errmsg, const XalanDOMString& currentnode, const XalanDOMString& actdata, const XalanDOMString& expdata); /** * Utility methods used to report DOM compare errors. * @returns void. */ void reportError(); void debugNodeData(const XalanDOMString& /* value */); void debugNodeData( const XalanDOMString& /* node */, const XalanDOMString& /* value */); void debugAttributeData(const XalanDOMString& /* value */); private: CharVectorType m_buffer; bool m_verbose; //Not implemented XalanFileUtility(); XalanFileUtility(const XalanFileUtility&); }; XALAN_CPP_NAMESPACE_END #endif // XALAN_FILEUTILITY_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/Harness/XalanXMLFileReporter.hpp0000664000175000000640000003110411731656103022315 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(HARNESS_HEADER_GUARD_1357924680) #define HARNESS_HEADER_GUARD_1357924680 #include "xalanc/Harness/XalanHarnessDefinitions.hpp" #include #include "xalanc/XalanDOM/XalanDOMString.hpp" #include "xalanc/Include/XalanAutoPtr.hpp" #include "xalanc/Include/XalanMap.hpp" #include "xalanc/Include/XalanVector.hpp" #include "xalanc/PlatformSupport/DOMStringHelper.hpp" XALAN_CPP_NAMESPACE_BEGIN class XalanOutputTranscoder; class XALAN_HARNESS_EXPORT XalanXMLFileReporter { public: typedef XalanMap Hashtable; #if defined(XALAN_STRICT_ANSI_HEADERS) typedef std::FILE FileHandleType; #else typedef FILE FileHandleType; #endif public: // Construct and initialize this reporter with specified filename, if // the filename is not empty. XalanXMLFileReporter(MemoryManager& theManager, const XalanDOMString& fileName); ~XalanXMLFileReporter(); // Initialize this XalanXMLFileReporter. Must be called before attempting to log anything. bool initialize(MemoryManager& theManager); MemoryManager& getMemoryManager() { return m_fileName.getMemoryManager(); } // Accessor for flushing; is set from properties. bool getFlushOnCaseClose(); // Accessor methods for our properties block. const XalanDOMString& getFileName() const; // Accessor methods for our properties block. void setFileName(const XalanDOMString& fileName); // Accessor methods for our properties block. void setFileName(const char* fileName, MemoryManager& theManager) { setFileName(XalanDOMString(fileName, theManager)); } // // Is this Reporter still running OK? // @returns status - true if an error has occoured, false if it's still working fine bool checkError(); // // Is this Reporter ready to log results? // @returns status - true if it's ready to report, false otherwise bool isReady(); // Flush this reporter - ensure our File is flushed. void flush(); // Close this reporter - ensure our File, etc. are closed. void close(); //----------------------------------------------------- //-------- Testfile / Testcase start and stop routines -------- //----------------------------------------------------- /** * Report that a testfile has started. * @param msg message to log out */ void logTestFileInit(const XalanDOMString& msg); void logTestFileInit(const char* msg) { logTestFileInit(XalanDOMString(msg, getMemoryManager())); } /** * Report that a testfile has finished, and report it's result. * @param msg message to log out * @param result result of testfile */ void logTestFileClose(const XalanDOMString& msg, const XalanDOMString& result); void logTestFileClose(const char* msg, const char* result) { logTestFileClose(XalanDOMString(msg, getMemoryManager()), XalanDOMString(result, getMemoryManager())); } void logTestCaseInit(const XalanDOMString& msg); void logTestCaseInit(const char* msg) { logTestCaseInit(XalanDOMString(msg, getMemoryManager())); } /** * Report that a testcase has finished, and report it's result. * @param msg message to log out * @param result result of testfile */ void logTestCaseClose(const XalanDOMString& msg, const XalanDOMString& result); void logTestCaseClose(const char* msg, const char* result) { logTestCaseClose(XalanDOMString(msg , getMemoryManager()), XalanDOMString(result , getMemoryManager())); } //----------------------------------------------------- //-------- Test results reporting and logging routines -------- //----------------------------------------------------- /** * Report a comment to result file with specified severity. *

    Record format: <message level="##">msg</message>

    * @param level severity or class of message. * @param msg comment to log out. */ void logMessage(int level, const XalanDOMString& msg); /** * Logs out statistics to result file with specified severity. *

    Record format: <statistic level="##" desc="msg"><longval>1234</longval><doubleval>1.234</doubleval></statistic>

    * @param level severity of message. * @param lVal statistic in long format. * @param dVal statistic in double format. * @param msg comment to log out. */ void logStatistic (int level, long lVal, double dVal, const XalanDOMString& msg); void logStatistic (int level, long lVal, double dVal, const char* msg) { logStatistic(level, lVal, dVal, XalanDOMString(msg, getMemoryManager())); } // This routine will add an attribute to the attribute list. void addMetricToAttrs(const char* desc, double theMetric, Hashtable& attrs); /** * Logs out a element to results with specified severity. * Uses user-supplied element name and attribute list. Currently * attribute values and msg are forced .toString(). Also, * 'level' is forced to be the first attribute of the element. * @param level severity of message. * @param element name of enclosing element * @param attrs hash of name=value attributes; note that the * caller must ensure they're legal XML * @param msg comment to log out. */ void logElementWAttrs(int level, const XalanDOMString& element, Hashtable& attrs, const XalanDOMString& msg); void logElementWAttrs(int level, const char* element, Hashtable& attrs, const char* msg) { logElementWAttrs(level, XalanDOMString(element, getMemoryManager()), attrs, XalanDOMString(msg, getMemoryManager())); } void logElement(int level, const XalanDOMString& element, const XalanDOMString& msg); void logElement(const XalanDOMString& element, const XalanDOMString& msg); /** * Report an arbitrary XalanDOMString to result file with specified severity. *

    Appends and prepends \\n newline characters at the start and * end of the message to separate it from the tags.

    *

    Record format: <arbitrary level="##">
    * msg
    * </arbitrary> *

    * @param level severity or class of message. * @param msg arbitrary XalanDOMString to log out. */ void logArbitraryMessage (int level, const XalanDOMString& msg); /** * Report a complete Hashtable to result file with specified severity. *

    Indents each hashitem within the table.

    *

    Record format: <hashtable level="##" desc="msg"/>
    *   <hashitem key="key1">value1</hashitem>
    *   <hashitem key="key2">value2</hashitem>
    * </hashtable> *

    * @param level severity or class of message. * @param hash Hashtable to log the contents of. * @param msg decription of the Hashtable. */ /* void logHashtable (int level, Hashtable hash, const XalanDOMString& msg); */ /** * Writes out a Pass record with comment. *

    Record format: <checkresult result="PASS" desc="comment"/>

    * @param comment comment to log with the pass record. */ void logCheckPass(const XalanDOMString& comment); /** * Writes out an ambiguous record with comment. *

    Record format: <checkresult result="AMBG" desc="comment"/>

    * @param comment comment to log with the ambg record. */ void logCheckAmbiguous(const XalanDOMString& comment); /** * Writes out a Fail record with comment. *

    Record format: <checkresult result="FAIL" desc="comment"/>

    * @param comment comment to log with the fail record. */ void logCheckFail(const XalanDOMString& comment); void logCheckFail(const XalanDOMString& test, const Hashtable& faildata, const Hashtable& actexp); void logCheckFail(const XalanDOMString& test, const Hashtable& actexp); void logErrorResult(const XalanDOMString& test, const XalanDOMString& reason); /** * Writes out a Error record with comment. *

    Record format: <checkresult result="ERRR" desc="comment"/>

    * @param comment comment to log with the error record. */ void logCheckErr(const XalanDOMString& comment); /** * Escapes a XalanDOMString to remove <, >, ', &, and " so it's valid XML. *

    Stolen mostly from Xalan applet sample.

    * @param s XalanDOMString to escape. * @return XalanDOMString that has been escaped. */ XalanDOMString& escapestring(const XalanDOMString& s, XalanDOMString& buffer); private: // not implemented XalanXMLFileReporter(const XalanXMLFileReporter&); /** * worker method to dump the xml header and open the resultsfile element. */ bool startResultsFile(); /** * worker method to close the resultsfile element. */ bool closeResultsFile(); /** * worker method to prints to the resultsfile. */ bool printToFile(const XalanDOMString& output); void initStrings(); /** * worker method to prints to the resultsfile. */ XalanDOMString& getDateTimeString(XalanDOMString& result); /** Key for Properties block that denotes our output filename. */ XalanDOMString OPT_FILENAME; /** XML tagnames for results file structure. */ XalanDOMString ELEM_RESULTSFILE; XalanDOMString ELEM_TESTFILE; XalanDOMString ELEM_FILERESULT; XalanDOMString ELEM_TESTCASE; XalanDOMString ELEM_CASERESULT; XalanDOMString ELEM_CHECKRESULT; XalanDOMString ELEM_STATISTIC; XalanDOMString ELEM_LONGVAL; XalanDOMString ELEM_DOUBLEVAL; XalanDOMString ELEM_MESSAGE; XalanDOMString ELEM_ARBITRARY; XalanDOMString ELEM_HASHTABLE; XalanDOMString ELEM_HASHITEM; /** XML attribute names for results file structure. */ XalanDOMString ATTR_LEVEL; XalanDOMString ATTR_DESC; XalanDOMString ATTR_TIME; XalanDOMString ATTR_RESULT; XalanDOMString ATTR_KEY; XalanDOMString ATTR_FILENAME; XalanDOMString LESS_THAN; XalanDOMString GREATER_THAN; XalanDOMString EQUALS_QUOTE; XalanDOMString SPACE; XalanDOMString QUOTE; XalanDOMString QUOTE_SPACE; XalanDOMString QUOTE_GREATER_THAN; XalanDOMString QUOTE_SOLIDUS_GREATER_THAN; XalanDOMString PASS; XalanDOMString AMBG; XalanDOMString ERRR; XalanDOMString FAIL; XalanDOMString LESS_THAN_SOLIDUS; XalanDOMString XML_HEADER; XalanDOMString REASON_EQUALS_QUOTE; /** * Optimization: for heavy use methods, form pre-defined constants to save on XalanDOMString concatenation. *

    Note the indent; must be updated if we ever switch to another indenting method.

    */ XalanDOMString TESTCASEINIT_HDR; XalanDOMString TESTCASECLOSE_HDR; XalanDOMString MESSAGE_HDR; XalanDOMString STATISTIC_HDR; XalanDOMString ARBITRARY_HDR; XalanDOMString HASHTABLE_HDR; XalanDOMString HASHITEM_HDR; XalanDOMString CHECKPASS_HDR; XalanDOMString CHECKAMBG_HDR; XalanDOMString CHECKERRR_HDR; XalanDOMString CHECKFAIL_HDR; XalanDOMString CHECKFAIL_FTR; /** If we have output anything yet. */ bool m_anyOutput; /** Name of the file we're outputing to. */ XalanDOMString m_fileName; /** File reference and other internal convenience variables. */ FileHandleType* m_fileHandle; /** If we're ready to start outputting yet. */ bool m_ready; /** If an error has occoured in this Reporter. */ bool m_error; /** If we should flush after every logTestCaseClose. */ bool m_flushOnCaseClose; const XalanAutoPtr m_transcoder; CharVectorType m_buffer; }; // end of class XalanXMLFileReporter XALAN_CPP_NAMESPACE_END #endif xalan-c-1.11/c/src/xalanc/XalanSourceTree/0002775000175000000640000000000012037700125017273 5ustar stevesambaxalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeElementNAAllocator.cpp0000664000175000000640000000423611731656103026446 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanSourceTreeElementNAAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanSourceTreeElementNAAllocator::XalanSourceTreeElementNAAllocator( MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanSourceTreeElementNAAllocator::~XalanSourceTreeElementNAAllocator() { } XalanSourceTreeElementNAAllocator::ObjectType* XalanSourceTreeElementNAAllocator::create( const XalanDOMString& theTagName, XalanSourceTreeDocument* theOwnerDocument, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling, IndexType theIndex) { ObjectType* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); new(theBlock) ObjectType( m_allocator.getMemoryManager(), theTagName, theOwnerDocument, theParentNode, thePreviousSibling, theNextSibling, theIndex); m_allocator.commitAllocation(theBlock); return theBlock; } void XalanSourceTreeElementNAAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeElementNANSAllocator.cpp0000664000175000000640000000470211731656103026705 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanSourceTreeElementNANSAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanSourceTreeElementNANSAllocator::XalanSourceTreeElementNANSAllocator( MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanSourceTreeElementNANSAllocator::~XalanSourceTreeElementNANSAllocator() { } XalanSourceTreeElementNANSAllocator::ObjectType* XalanSourceTreeElementNANSAllocator::create( const XalanDOMString& theTagName, const XalanDOMString& theLocalName, const XalanDOMString& theNamespaceURI, const XalanDOMString& thePrefix, XalanSourceTreeDocument* theOwnerDocument, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling, IndexType theIndex) { ObjectType* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); new(theBlock) ObjectType( m_allocator.getMemoryManager(), theTagName, theLocalName, theNamespaceURI, thePrefix, theOwnerDocument, theParentNode, thePreviousSibling, theNextSibling, theIndex); m_allocator.commitAllocation(theBlock); return theBlock; } void XalanSourceTreeElementNANSAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeAttrNS.cpp0000664000175000000640000000357111731656103024151 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanSourceTreeAttrNS.hpp" #include XALAN_CPP_NAMESPACE_BEGIN XalanSourceTreeAttrNS::XalanSourceTreeAttrNS( const XalanDOMString& theName, const XalanDOMString& theLocalName, const XalanDOMString& theNamespaceURI, const XalanDOMString& thePrefix, const XalanDOMString& theValue, XalanSourceTreeElement* theOwnerElement, IndexType theIndex) : XalanSourceTreeAttr( theName, theValue, theOwnerElement, theIndex), m_localName(theLocalName), m_prefix(thePrefix), m_namespaceURI(theNamespaceURI) { } XalanSourceTreeAttrNS::~XalanSourceTreeAttrNS() { } const XalanDOMString& XalanSourceTreeAttrNS::getNamespaceURI() const { return m_namespaceURI; } const XalanDOMString& XalanSourceTreeAttrNS::getPrefix() const { return m_prefix; } const XalanDOMString& XalanSourceTreeAttrNS::getLocalName() const { return m_localName; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeDOMSupport.cpp0000664000175000000640000000471411731656103025012 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanSourceTreeDOMSupport.hpp" #include #include #include #include #include #include #include "XalanSourceTreeDocument.hpp" #include "XalanSourceTreeParserLiaison.hpp" XALAN_CPP_NAMESPACE_BEGIN static const XalanDOMString s_emptyString(XalanMemMgrs::getDummyMemMgr()); XalanSourceTreeDOMSupport::XalanSourceTreeDOMSupport() : DOMSupport(), m_parserLiaison(0) { } XalanSourceTreeDOMSupport::XalanSourceTreeDOMSupport(const XalanSourceTreeParserLiaison& theParserLiaison) : DOMSupport(), m_parserLiaison(&theParserLiaison) { } XalanSourceTreeDOMSupport::~XalanSourceTreeDOMSupport() { } void XalanSourceTreeDOMSupport::reset() { } const XalanDOMString& XalanSourceTreeDOMSupport::getUnparsedEntityURI( const XalanDOMString& theName, const XalanDocument& theDocument) const { if (m_parserLiaison != 0) { const XalanSourceTreeDocument* const theXSTDocument = m_parserLiaison->mapDocument(&theDocument); if (theXSTDocument != 0) { return theXSTDocument->getUnparsedEntityURI(theName); } } return s_emptyString; } bool XalanSourceTreeDOMSupport::isNodeAfter( const XalanNode& node1, const XalanNode& node2) const { assert(node1.isIndexed() == true && node2.isIndexed() == true); return node1.getIndex() > node2.getIndex() ? true : false; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeContentHandler.hpp0000664000175000000640000001600211731656103025704 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREECONTENTHANDLER_HEADER_GUARD_1357924680) #define XALANSOURCETREECONTENTHANDLER_HEADER_GUARD_1357924680 #include #include #include #include #include #include #include XALAN_DECLARE_XERCES_CLASS(Attributes) XALAN_DECLARE_XERCES_CLASS(AttributeList) XALAN_DECLARE_XERCES_CLASS(ContentHandler) XALAN_DECLARE_XERCES_CLASS(DTDHandler) XALAN_DECLARE_XERCES_CLASS(LexicalHandler) XALAN_DECLARE_XERCES_CLASS(Locator) XALAN_CPP_NAMESPACE_BEGIN XALAN_USING_XERCES(Locator) typedef XERCES_CPP_NAMESPACE_QUALIFIER Attributes AttributesType; typedef XERCES_CPP_NAMESPACE_QUALIFIER AttributeList AttributeListType; typedef XERCES_CPP_NAMESPACE_QUALIFIER ContentHandler ContentHandlerType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DTDHandler DTDHandlerType; typedef XERCES_CPP_NAMESPACE_QUALIFIER LexicalHandler LexicalHandlerType; typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator LocatorType; class XalanNode; class XalanSourceTreeDocument; class XalanSourceTreeElement; class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeContentHandler : public ContentHandlerType, public DTDHandlerType, public LexicalHandlerType { public: typedef XalanVector ElementStackType; typedef XalanVector LastChildStackType; typedef XalanSize_t size_type; enum { eDefaultStackSize = 50, eDefaultTextBufferSize = 100 }; // Constructor explicit XalanSourceTreeContentHandler( MemoryManager& theManager, XalanSourceTreeDocument* theDocument = 0, bool fAccumulateText = true); virtual ~XalanSourceTreeContentHandler(); // Inherited from ContentHandler... virtual void characters( const XMLCh* const chars, const size_type length); virtual void endDocument(); virtual void endElement( const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname); virtual void ignorableWhitespace( const XMLCh* const chars, const size_type length); virtual void processingInstruction( const XMLCh* const target, const XMLCh* const data); virtual void setDocumentLocator(const Locator* const locator); virtual void startDocument(); virtual void startElement( const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const AttributesType& attrs); virtual void startPrefixMapping( const XMLCh* const prefix, const XMLCh* const uri); virtual void endPrefixMapping(const XMLCh* const prefix); virtual void skippedEntity(const XMLCh* const name); // Inherited from DTDHandler... virtual void notationDecl( const XMLCh* const name, const XMLCh* const publicId, const XMLCh* const systemId); virtual void unparsedEntityDecl( const XMLCh* const name, const XMLCh* const publicId, const XMLCh* const systemId, const XMLCh* const notationName); virtual void resetDocType(); // Inherited from LexicalHandler... virtual void comment( const XMLCh* const chars, const size_type length); virtual void endCDATA(); virtual void endDTD(); virtual void endEntity(const XMLCh* const name); virtual void startCDATA(); virtual void startDTD( const XMLCh* const name, const XMLCh* const publicId, const XMLCh* const systemId); virtual void startEntity(const XMLCh* const name); // New to XalanSourceTreeContentHandler... XalanSourceTreeDocument* getDocument() const { return m_document; } void setDocument(XalanSourceTreeDocument* theDocument); private: // Not implemented... XalanSourceTreeContentHandler(const XalanSourceTreeContentHandler&); XalanSourceTreeContentHandler& operator=(const XalanSourceTreeContentHandler&); bool operator==(const XalanSourceTreeContentHandler&) const; // Helper functions... XalanSourceTreeElement* createElement( const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const AttributesType& attrs, XalanSourceTreeElement* theOwnerElement); void processAccumulatedText(); void doCharacters( const XMLCh* chars, size_type length); // Data members... // The current document we're building... XalanSourceTreeDocument* m_document; // The current element... XalanSourceTreeElement* m_currentElement; // Stack of elements... ElementStackType m_elementStack; // The last child appended to the current element. This is // an important optimization, because XalanSourceTreeElement // does not have a pointer to its last child. Without this, // appending a child becomes a linear search. XalanNode* m_lastChild; // Stack of last children appended. There is a ono-to-one // correspondance to the entries in m_elementStack. LastChildStackType m_lastChildStack; // If true, the handler will accumulate text from calls to // characters() until another event triggers the creation // of the node. const bool m_accumulateText; // A buffer to hold accumulated text. XalanDOMString m_textBuffer; // A flag to determine if the DTD is being processed. bool m_inDTD; }; XALAN_CPP_NAMESPACE_END #endif // #if !defined(XALANSOURCETREECONTENTHANDLER_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeElementNA.hpp0000664000175000000640000000536711731656103024620 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEELEMENTNA_HEADER_GUARD_1357924680) #define XALANSOURCETREEELEMENTNA_HEADER_GUARD_1357924680 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeElementNA : public XalanSourceTreeElement { public: /** * Constructor. * * @param theTagName The tag name of the element * @param theOwnerDocument The document that owns the instance * @param theParentNode The parent node, if any. * @param thePreviousSibling The previous sibling, if any. * @param theNextSibling The next sibling, if any. * @param theIndex The document-order index of the node. */ XalanSourceTreeElementNA( MemoryManager& theManager, const XalanDOMString& theTagName, XalanSourceTreeDocument* theOwnerDocument, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0, IndexType theIndex = 0); virtual ~XalanSourceTreeElementNA(); virtual const XalanNamedNodeMap* getAttributes() const; virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; protected: static const XalanEmptyNamedNodeMap s_emptyAttributes; private: // Not implemented... XalanSourceTreeElementNA(const XalanSourceTreeElementNA&); XalanSourceTreeElementNA& operator=(const XalanSourceTreeElementNA& theSource); bool operator==(const XalanSourceTreeElementNA& theRHS) const; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANSOURCETREEELEMENTNA_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeTextIWSAllocator.hpp0000664000175000000640000000701311731656103026146 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREETEXTIWSALLOCATOR_INCLUDE_GUARD_12455133) #define XALANSOURCETREETEXTIWSALLOCATOR_INCLUDE_GUARD_12455133 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeTextIWSAllocator { public: typedef XalanSourceTreeTextIWS ObjectType; typedef ObjectType::IndexType IndexType; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanSourceTreeTextIWSAllocator(MemoryManager& theManager, size_type theBlockCount); ~XalanSourceTreeTextIWSAllocator(); /** * Create an instance. * * @param theData The data for the node * @param theParentNode The parent node, if any. * @param thePreviousSibling The next sibling, if any. * @param theNextSibling The next sibling, if any. * @param theIndex The document-order index of the node. * * @return pointer to the instance */ ObjectType* create( const XalanDOMString& theData, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0, IndexType theIndex = 0); /** * Delete all objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanSourceTreeTextIWSAllocator(const XalanSourceTreeTextIWSAllocator&); XalanSourceTreeTextIWSAllocator& operator=(const XalanSourceTreeTextIWSAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANSOURCETREETEXTIWSALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeElementNAAllocator.hpp0000664000175000000640000000733711731656103026460 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEELEMENTNAALLOCATOR_INCLUDE_GUARD_12455133) #define XALANSOURCETREEELEMENTNAALLOCATOR_INCLUDE_GUARD_12455133 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeElementNAAllocator { public: typedef XalanSourceTreeElementNA ObjectType; typedef ObjectType::IndexType IndexType; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanSourceTreeElementNAAllocator( MemoryManager& theManager, size_type theBlockCount); ~XalanSourceTreeElementNAAllocator(); /** * Create an instance. * * @param theTagName The tag name of the element * @param theOwnerDocument The document that owns the instance * @param theParentNode The parent node, if any. * @param thePreviousSibling The previous sibling, if any. * @param theNextSibling The next sibling, if any. * @param theIndex The document-order index of the node. * * @return pointer to the instance */ ObjectType* create( const XalanDOMString& theTagName, XalanSourceTreeDocument* theOwnerDocument, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0, IndexType theIndex = 0); /** * Delete all objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanSourceTreeElementNAAllocator(const XalanSourceTreeElementNAAllocator&); XalanSourceTreeElementNAAllocator& operator=(const XalanSourceTreeElementNAAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANSOURCETREEELEMENTNAALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeProcessingInstruction.cpp0000664000175000000640000001353011731656103027350 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanSourceTreeProcessingInstruction.hpp" #include #include #include "XalanSourceTreeComment.hpp" #include "XalanSourceTreeDocument.hpp" #include "XalanSourceTreeDocumentFragment.hpp" #include "XalanSourceTreeElement.hpp" #include "XalanSourceTreeText.hpp" #include "XalanSourceTreeHelper.hpp" XALAN_CPP_NAMESPACE_BEGIN static const XalanDOMString s_emptyString(XalanMemMgrs::getDummyMemMgr()); XalanSourceTreeProcessingInstruction::XalanSourceTreeProcessingInstruction( const XalanDOMString& theTarget, const XalanDOMString& theData, XalanSourceTreeDocument* theOwnerDocument, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling, IndexType theIndex) : XalanProcessingInstruction(), m_target(theTarget), m_data(theData), m_ownerDocument(theOwnerDocument), m_parentNode(theParentNode), m_previousSibling(thePreviousSibling), m_nextSibling(theNextSibling), m_index(theIndex) { } XalanSourceTreeProcessingInstruction::~XalanSourceTreeProcessingInstruction() { } const XalanDOMString& XalanSourceTreeProcessingInstruction::getNodeName() const { return m_target; } const XalanDOMString& XalanSourceTreeProcessingInstruction::getNodeValue() const { return m_data; } XalanSourceTreeProcessingInstruction::NodeType XalanSourceTreeProcessingInstruction::getNodeType() const { return PROCESSING_INSTRUCTION_NODE; } XalanNode* XalanSourceTreeProcessingInstruction::getParentNode() const { if (m_parentNode != 0) { return m_parentNode; } else { return m_ownerDocument; } } const XalanNodeList* XalanSourceTreeProcessingInstruction::getChildNodes() const { throw XalanDOMException(XalanDOMException::NOT_SUPPORTED_ERR); // Dummy return value... return 0; } XalanNode* XalanSourceTreeProcessingInstruction::getFirstChild() const { return 0; } XalanNode* XalanSourceTreeProcessingInstruction::getLastChild() const { return 0; } XalanNode* XalanSourceTreeProcessingInstruction::getPreviousSibling() const { return m_previousSibling; } XalanNode* XalanSourceTreeProcessingInstruction::getNextSibling() const { return m_nextSibling; } const XalanNamedNodeMap* XalanSourceTreeProcessingInstruction::getAttributes() const { return 0; } XalanDocument* XalanSourceTreeProcessingInstruction::getOwnerDocument() const { assert(m_ownerDocument != 0); return m_ownerDocument; } const XalanDOMString& XalanSourceTreeProcessingInstruction::getNamespaceURI() const { return s_emptyString; } const XalanDOMString& XalanSourceTreeProcessingInstruction::getPrefix() const { return s_emptyString; } const XalanDOMString& XalanSourceTreeProcessingInstruction::getLocalName() const { return s_emptyString; } bool XalanSourceTreeProcessingInstruction::isIndexed() const { return true; } XalanSourceTreeProcessingInstruction::IndexType XalanSourceTreeProcessingInstruction::getIndex() const { return m_index; } const XalanDOMString& XalanSourceTreeProcessingInstruction::getTarget() const { return m_target; } const XalanDOMString& XalanSourceTreeProcessingInstruction::getData() const { return m_data; } void XalanSourceTreeProcessingInstruction::setParent(XalanSourceTreeElement* theParent) { m_parentNode = theParent; } void XalanSourceTreeProcessingInstruction::setParent(XalanSourceTreeDocumentFragment* theParent) { m_parentNode = theParent; } void XalanSourceTreeProcessingInstruction::setPreviousSibling(XalanSourceTreeComment* thePreviousSibling) { m_previousSibling = thePreviousSibling; } void XalanSourceTreeProcessingInstruction::setPreviousSibling(XalanSourceTreeElement* thePreviousSibling) { m_previousSibling = thePreviousSibling; } void XalanSourceTreeProcessingInstruction::setPreviousSibling(XalanSourceTreeProcessingInstruction* thePreviousSibling) { m_previousSibling = thePreviousSibling; } void XalanSourceTreeProcessingInstruction::setPreviousSibling(XalanSourceTreeText* thePreviousSibling) { m_previousSibling = thePreviousSibling; } void XalanSourceTreeProcessingInstruction::appendSiblingNode(XalanSourceTreeComment* theSibling) { XalanSourceTreeHelper::appendSibling(this, m_nextSibling, theSibling); } void XalanSourceTreeProcessingInstruction::appendSiblingNode(XalanSourceTreeElement* theSibling) { XalanSourceTreeHelper::appendSibling(this, m_nextSibling, theSibling); } void XalanSourceTreeProcessingInstruction::appendSiblingNode(XalanSourceTreeProcessingInstruction* theSibling) { XalanSourceTreeHelper::appendSibling(this, m_nextSibling, theSibling); } void XalanSourceTreeProcessingInstruction::appendSiblingNode(XalanSourceTreeText* theSibling) { XalanSourceTreeHelper::appendSibling(this, m_nextSibling, theSibling); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeElementNANSAllocator.hpp0000664000175000000640000001034611731656103026713 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEELEMENTNANSALLOCATOR_INCLUDE_GUARD_12455133) #define XALANSOURCETREEELEMENTNANSALLOCATOR_INCLUDE_GUARD_12455133 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeElementNANSAllocator { public: typedef XalanSourceTreeElementNANS ObjectType; typedef ObjectType::IndexType IndexType; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanSourceTreeElementNANSAllocator( MemoryManager& theManager, size_type theBlockCount); ~XalanSourceTreeElementNANSAllocator(); /** * Create an instance. * * @param theTagName The tag name of the element * @param theLocalName The local name of the attribute * @param theNamespaceURI The namespace URI of the attribute * @param thePrefix The namespace prefix of the attribute * @param theOwnerDocument The document that owns the instance * @param theAttributes An array of pointers to the attribute instances for the element * @param theAttributeCount The number of attributes. * @param theParentNode The parent node, if any. * @param thePreviousSibling The previous sibling, if any. * @param theNextSibling The next sibling, if any. * @param theIndex The document-order index of the node. * * @return pointer to the instance */ ObjectType* create( const XalanDOMString& theTagName, const XalanDOMString& theLocalName, const XalanDOMString& theNamespaceURI, const XalanDOMString& thePrefix, XalanSourceTreeDocument* theOwnerDocument, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0, IndexType theIndex = 0); /** * Delete all objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanSourceTreeElementNANSAllocator(const XalanSourceTreeElementNANSAllocator&); XalanSourceTreeElementNANSAllocator& operator=(const XalanSourceTreeElementNANSAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANSOURCETREEELEMENTANSALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeProcessingInstructionAllocator.cpp0000664000175000000640000000437011731656103031213 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanSourceTreeProcessingInstructionAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanSourceTreeProcessingInstructionAllocator::XalanSourceTreeProcessingInstructionAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanSourceTreeProcessingInstructionAllocator::~XalanSourceTreeProcessingInstructionAllocator() { } XalanSourceTreeProcessingInstructionAllocator::ObjectType* XalanSourceTreeProcessingInstructionAllocator::create( const XalanDOMString& theTarget, const XalanDOMString& theData, XalanSourceTreeDocument* theOwnerDocument, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling, IndexType theIndex) { ObjectType* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); new(theBlock) ObjectType( theTarget, theData, theOwnerDocument, theParentNode, thePreviousSibling, theNextSibling, theIndex); m_allocator.commitAllocation(theBlock); return theBlock; } void XalanSourceTreeProcessingInstructionAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeDefinitions.hpp0000664000175000000640000000254511731656103025256 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEDEFINITIONS_HEADER_GUARD_1357924680) #define XALANSOURCETREEDEFINITIONS_HEADER_GUARD_1357924680 #include #if defined(XALAN_BUILD_DLL) #define XALAN_XALANSOURCETREE_EXPORT XALAN_PLATFORM_EXPORT #define XALAN_XALANSOURCETREE_EXPORT_FUNCTION(T) XALAN_PLATFORM_EXPORT_FUNCTION(T) #else #define XALAN_XALANSOURCETREE_EXPORT XALAN_PLATFORM_IMPORT #define XALAN_XALANSOURCETREE_EXPORT_FUNCTION(T) XALAN_PLATFORM_IMPORT_FUNCTION(T) #endif #endif // XALANSOURCETREEDEFINITIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeAttrNS.hpp0000664000175000000640000000557611731656103024165 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEATTRNS_HEADER_GUARD_1357924680) #define XALANSOURCETREEATTRNS_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN /* * * * Base class for the Xalan source tree Attr interface. * * This class is experimental and subject to change!! */ class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeAttrNS : public XalanSourceTreeAttr { public: /** * Constructor. * * @param theName The name of the attribute * @param theLocalName The local name of the attribute * @param theNamespaceURI The namespace URI of the attribute * @param thePrefix The namespace prefix of the attribute * @param theValue The value of the attribute * @param theOwnerElement The element that owns the instance * @param theIndex The document-order index of the node. */ XalanSourceTreeAttrNS( const XalanDOMString& theName, const XalanDOMString& theLocalName, const XalanDOMString& theNamespaceURI, const XalanDOMString& thePrefix, const XalanDOMString& theValue, XalanSourceTreeElement* theOwnerElement = 0, IndexType theIndex = 0); virtual ~XalanSourceTreeAttrNS(); virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; private: // Not defined... XalanSourceTreeAttrNS(const XalanSourceTreeAttrNS& theSource); XalanSourceTreeAttrNS& operator=(const XalanSourceTreeAttrNS& theSource); bool operator==(const XalanSourceTreeAttrNS& theRHS) const; // Data members... const XalanDOMString& m_localName; const XalanDOMString& m_prefix; const XalanDOMString& m_namespaceURI; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANSOURCETREEATTRNS_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeDOMSupport.hpp0000664000175000000640000000423511731656103025015 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEDOMSUPPORT_HEADER_GUARD_1357924680) #define XALANSOURCETREEDOMSUPPORT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanSourceTreeParserLiaison; class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeDOMSupport : public DOMSupport { public: XalanSourceTreeDOMSupport(); XalanSourceTreeDOMSupport(const XalanSourceTreeParserLiaison& theParserLiaison); virtual ~XalanSourceTreeDOMSupport(); virtual void reset(); // These interfaces are inherited from DOMSupport... virtual const XalanDOMString& getUnparsedEntityURI( const XalanDOMString& theName, const XalanDocument& theDocument) const; virtual bool isNodeAfter( const XalanNode& node1, const XalanNode& node2) const; const XalanSourceTreeParserLiaison* getParserLiaison() const { return m_parserLiaison; } void setParserLiaison(const XalanSourceTreeParserLiaison* theParserLiaison) { m_parserLiaison = theParserLiaison; } private: const XalanSourceTreeParserLiaison* m_parserLiaison; }; XALAN_CPP_NAMESPACE_END #endif // XALANSOURCETREEDOMSUPPORT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanSourceTree/FormatterToSourceTree.cpp0000664000175000000640000002424611731656103024262 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "FormatterToSourceTree.hpp" #include #include #include #include #include #include #include "XalanSourceTreeComment.hpp" #include "XalanSourceTreeDocument.hpp" #include "XalanSourceTreeDocumentFragment.hpp" #include "XalanSourceTreeElement.hpp" #include "XalanSourceTreeHelper.hpp" #include "XalanSourceTreeProcessingInstruction.hpp" #include "XalanSourceTreeText.hpp" XALAN_CPP_NAMESPACE_BEGIN FormatterToSourceTree::FormatterToSourceTree(MemoryManager& theManager, XalanSourceTreeDocument* theDocument) : FormatterListener(OUTPUT_METHOD_DOM), m_document(theDocument), m_documentFragment(0), m_currentElement(0), m_elementStack(theManager), m_lastChild(0), m_lastChildStack(theManager), m_textBuffer(theManager) { } FormatterToSourceTree::FormatterToSourceTree( XalanSourceTreeDocument* theDocument, XalanSourceTreeDocumentFragment* theDocumentFragment, MemoryManager& theManager) : FormatterListener(OUTPUT_METHOD_DOM), m_document(theDocument), m_documentFragment(theDocumentFragment), m_currentElement(0), m_elementStack(theManager), m_lastChild(0), m_lastChildStack(theManager), m_textBuffer(theManager) { assert(m_document != 0); assert(m_documentFragment != 0); } FormatterToSourceTree::~FormatterToSourceTree() { } void FormatterToSourceTree::setDocumentLocator(const Locator* const /* locator */) { } void FormatterToSourceTree::startDocument() { m_currentElement = 0; m_elementStack.clear(); m_lastChild = 0; m_lastChildStack.clear(); m_lastChildStack.reserve(eDefaultStackSize); m_textBuffer.clear(); m_textBuffer.reserve(eDefaultTextBufferSize); // Push a dummy value for the current element, so we // don't have to check for an empty stack in endElement(). m_elementStack.push_back(ElementStackType::value_type(0)); } void FormatterToSourceTree::endDocument() { if (m_documentFragment != 0) { processAccumulatedText(); } // Pop off the dummy value that we pushed in // startDocument()... m_elementStack.pop_back(); assert(m_elementStack.empty() == true); assert(m_lastChildStack.empty() == true); assert(m_textBuffer.empty() == true); } // A helper function to manage appending the new child. template inline void doAppendChildNode( ParentNodeType* theParent, XalanNode*& theLastChild, ChildNodeType theNewChild) { assert(theParent != 0); assert(theNewChild != 0); if (theLastChild == 0) { theParent->appendChildNode(theNewChild); } else { XalanSourceTreeHelper::appendSibling(theLastChild, theNewChild); theNewChild->setParent(theParent); } theLastChild = theNewChild; } // A helper function to manage appending the new child. template inline void doAppendChildNode( XalanSourceTreeDocument* theDocument, XalanSourceTreeDocumentFragment* theDocumentFragment, XalanSourceTreeElement* theCurrentElement, XalanNode*& theLastChild, ChildNodeType theNewChild) { assert(theDocument != 0); assert(theNewChild != 0); if (theCurrentElement == 0) { if (theDocumentFragment != 0) { doAppendChildNode(theDocumentFragment, theLastChild, theNewChild); } else { // If there is no current element. it means we haven't // created the document element yet, so always append // to the document, rather than the last child. theDocument->appendChildNode(theNewChild); } } else { doAppendChildNode(theCurrentElement, theLastChild, theNewChild); } } void FormatterToSourceTree::startElement( const XMLCh* const name, AttributeListType& attrs) { processAccumulatedText(); XalanSourceTreeElement* const theNewElement = createElementNode(name, attrs, m_currentElement); doAppendChildNode( m_document, m_documentFragment, m_currentElement, m_lastChild, theNewElement); m_elementStack.push_back(theNewElement); m_lastChildStack.push_back(m_lastChild); m_currentElement = theNewElement; m_lastChild = 0; } void FormatterToSourceTree::endElement(const XMLCh* const /* name */) { processAccumulatedText(); assert(m_elementStack.empty() == false); // Pop the element of the stack... m_elementStack.pop_back(); assert(m_elementStack.empty() == false); // Get the element from the back of the // stack. m_currentElement = m_elementStack.back(); assert(m_lastChildStack.empty() == false); m_lastChild = m_lastChildStack.back(); // Pop the last child stack m_lastChildStack.pop_back(); } void FormatterToSourceTree::characters( const XMLCh* const chars, const size_type length) { if (m_documentFragment != 0) { m_textBuffer.append(chars, length); } else if (m_currentElement == 0) { if (isXMLWhitespace(chars) == false) { throw XalanDOMException(XalanDOMException::HIERARCHY_REQUEST_ERR); } } else { m_textBuffer.append(chars, length); } } void FormatterToSourceTree::charactersRaw( const XMLCh* const chars, const size_type length) { assert(m_document != 0); processAccumulatedText(); doProcessingInstruction(s_piTarget, s_piData); characters(chars, length); } void FormatterToSourceTree::entityReference(const XMLCh* const /* name */) { } void FormatterToSourceTree::ignorableWhitespace( const XMLCh* const chars, const size_type length) { assert(m_document != 0); // Ignore any whitespace reported before the document element has been parsed. if (m_elementStack.size() > 1) { assert(m_documentFragment != 0 || m_document->getDocumentElement() != 0); processAccumulatedText(); assert(m_currentElement != 0); doAppendChildNode( m_currentElement, m_lastChild, m_document->createTextIWSNode(chars, length, m_currentElement)); } else if(m_documentFragment != 0) { processAccumulatedText(); doAppendChildNode( m_documentFragment, m_lastChild, m_document->createTextIWSNode(chars, length, m_currentElement)); } } void FormatterToSourceTree::processingInstruction( const XMLCh* const target, const XMLCh* const data) { assert(m_document != 0); processAccumulatedText(); doProcessingInstruction(target, data); } void FormatterToSourceTree::resetDocument() { } void FormatterToSourceTree::comment(const XMLCh* const data) { assert(m_document != 0); processAccumulatedText(); XalanSourceTreeComment* const theNewComment = m_document->createCommentNode(data, length(data), m_currentElement); doAppendChildNode( m_document, m_documentFragment, m_currentElement, m_lastChild, theNewComment); } void FormatterToSourceTree::cdata( const XMLCh* const /* ch */, const size_type /* length */) { } void FormatterToSourceTree::processAccumulatedText() { if (m_textBuffer.empty() == false) { doCharacters( m_textBuffer.c_str(), m_textBuffer.length()); m_textBuffer.clear(); } } void FormatterToSourceTree::doCharacters( const XMLCh* chars, size_type length) { if (m_currentElement != 0) { doAppendChildNode( m_currentElement, m_lastChild, m_document->createTextNode(chars, length, m_currentElement)); } else if (m_documentFragment != 0) { doAppendChildNode( m_documentFragment, m_lastChild, m_document->createTextNode(chars, length, m_currentElement)); } else { throw XalanDOMException(XalanDOMException::HIERARCHY_REQUEST_ERR); } } XalanSourceTreeElement* FormatterToSourceTree::createElementNode( const XalanDOMChar* name, AttributeListType& attrs, XalanSourceTreeElement* theParentElement) { if (m_prefixResolver != 0) { return m_document->createElementNode(name, attrs, *m_prefixResolver, theParentElement); } else { return m_document->createElementNode(name, attrs, theParentElement); } } void FormatterToSourceTree::doProcessingInstruction( const XMLCh* target, const XMLCh* data) { doAppendChildNode( m_document, m_documentFragment, m_currentElement, m_lastChild, m_document->createProcessingInstructionNode(target, data)); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeProcessingInstruction.hpp0000664000175000000640000001217411731656103027360 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEPROCESSINGINSTRUCTION_HEADER_GUARD_1357924680) #define XALANSOURCETREEPROCESSINGINSTRUCTION_HEADER_GUARD_1357924680 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanSourceTreeComment; class XalanSourceTreeDocument; class XalanSourceTreeDocumentFragment; class XalanSourceTreeElement; class XalanSourceTreeText; class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeProcessingInstruction : public XalanProcessingInstruction { public: /** * Create an instance. * * @param theTarget The target for the processing instruction. * @param theData The data for the node * @param theOwnerDocument The document that owns the instance. * @param theParentNode The parent node, if any. * @param thePreviousSibling The next sibling, if any. * @param theNextSibling The next sibling, if any. * @param theIndex The document-order index of the node. * * @return pointer to the instance */ XalanSourceTreeProcessingInstruction( const XalanDOMString& theTarget, const XalanDOMString& theData, XalanSourceTreeDocument* theOwnerDocument, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0, IndexType theIndex = 0); virtual ~XalanSourceTreeProcessingInstruction(); // These interfaces are inherited from XalanProcessingInstruction... virtual const XalanDOMString& getNodeName() const; virtual const XalanDOMString& getNodeValue() const; virtual NodeType getNodeType() const; virtual XalanNode* getParentNode() const; virtual const XalanNodeList* getChildNodes() const; virtual XalanNode* getFirstChild() const; virtual XalanNode* getLastChild() const; virtual XalanNode* getPreviousSibling() const; virtual XalanNode* getNextSibling() const; virtual const XalanNamedNodeMap* getAttributes() const; virtual XalanDocument* getOwnerDocument() const; virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; virtual bool isIndexed() const; virtual IndexType getIndex() const; virtual const XalanDOMString& getTarget() const; virtual const XalanDOMString& getData() const; // public interfaces not inherited from XalanProcessingInstruction... void setParent(XalanSourceTreeElement* theParent); void setParent(XalanSourceTreeDocumentFragment* theParent); void setPreviousSibling(XalanSourceTreeComment* thePreviousSibling); void setPreviousSibling(XalanSourceTreeElement* thePreviousSibling); void setPreviousSibling(XalanSourceTreeProcessingInstruction* thePreviousSibling); void setPreviousSibling(XalanSourceTreeText* thePreviousSibling); void appendSiblingNode(XalanSourceTreeComment* theSibling); void appendSiblingNode(XalanSourceTreeElement* theSibling); void appendSiblingNode(XalanSourceTreeProcessingInstruction* theSibling); void appendSiblingNode(XalanSourceTreeText* theSibling); void setIndex(IndexType theIndex) { m_index = theIndex; } private: // Not implemented... XalanSourceTreeProcessingInstruction( const XalanSourceTreeProcessingInstruction& theSource); XalanSourceTreeProcessingInstruction& operator=(const XalanSourceTreeProcessingInstruction& theSource); bool operator==(const XalanSourceTreeProcessingInstruction& theRHS) const; // Data members... const XalanDOMString& m_target; const XalanDOMString& m_data; XalanSourceTreeDocument* m_ownerDocument; XalanNode* m_parentNode; XalanNode* m_previousSibling; XalanNode* m_nextSibling; IndexType m_index; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANSOURCETREEPROCESSINGINSTRUCTION_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeText.cpp0000664000175000000640000001306111731656103023715 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanSourceTreeText.hpp" #include #include #include "XalanSourceTreeComment.hpp" #include "XalanSourceTreeDocumentFragment.hpp" #include "XalanSourceTreeElement.hpp" #include "XalanSourceTreeProcessingInstruction.hpp" #include "XalanSourceTreeHelper.hpp" XALAN_CPP_NAMESPACE_BEGIN static const XalanDOMString s_emptyString(XalanMemMgrs::getDummyMemMgr()); XalanSourceTreeText::XalanSourceTreeText( const XalanDOMString& theData, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling, IndexType theIndex) : XalanText(), m_data(theData), m_parentNode(theParentNode), m_previousSibling(thePreviousSibling), m_nextSibling(theNextSibling), m_index(theIndex) { } XalanSourceTreeText::~XalanSourceTreeText() { } const XalanDOMString& XalanSourceTreeText::getNodeName() const { return s_nameString; } const XalanDOMString& XalanSourceTreeText::getNodeValue() const { return m_data; } XalanSourceTreeText::NodeType XalanSourceTreeText::getNodeType() const { return TEXT_NODE; } XalanNode* XalanSourceTreeText::getParentNode() const { return m_parentNode; } const XalanNodeList* XalanSourceTreeText::getChildNodes() const { throw XalanDOMException(XalanDOMException::NOT_SUPPORTED_ERR); // Dummy return value... return 0; } XalanNode* XalanSourceTreeText::getFirstChild() const { return 0; } XalanNode* XalanSourceTreeText::getLastChild() const { return 0; } XalanNode* XalanSourceTreeText::getPreviousSibling() const { return m_previousSibling; } XalanNode* XalanSourceTreeText::getNextSibling() const { return m_nextSibling; } const XalanNamedNodeMap* XalanSourceTreeText::getAttributes() const { return 0; } XalanDocument* XalanSourceTreeText::getOwnerDocument() const { assert(m_parentNode != 0); return m_parentNode->getOwnerDocument(); } const XalanDOMString& XalanSourceTreeText::getNamespaceURI() const { return s_emptyString; } const XalanDOMString& XalanSourceTreeText::getPrefix() const { return s_emptyString; } const XalanDOMString& XalanSourceTreeText::getLocalName() const { return s_emptyString; } bool XalanSourceTreeText::isIndexed() const { return true; } XalanSourceTreeText::IndexType XalanSourceTreeText::getIndex() const { return m_index; } const XalanDOMString& XalanSourceTreeText::getData() const { return m_data; } bool XalanSourceTreeText::isWhitespace() const { return false; } void XalanSourceTreeText::setParent(XalanSourceTreeElement* theParent) { m_parentNode = theParent; } void XalanSourceTreeText::setParent(XalanSourceTreeDocumentFragment* theParent) { m_parentNode = theParent; } void XalanSourceTreeText::setPreviousSibling(XalanSourceTreeComment* thePreviousSibling) { m_previousSibling = thePreviousSibling; } void XalanSourceTreeText::setPreviousSibling(XalanSourceTreeElement* thePreviousSibling) { m_previousSibling = thePreviousSibling; } void XalanSourceTreeText::setPreviousSibling(XalanSourceTreeProcessingInstruction* thePreviousSibling) { m_previousSibling = thePreviousSibling; } void XalanSourceTreeText::setPreviousSibling(XalanSourceTreeText* thePreviousSibling) { m_previousSibling = thePreviousSibling; } void XalanSourceTreeText::appendSiblingNode(XalanSourceTreeComment* theSibling) { XalanSourceTreeHelper::appendSibling(this, m_nextSibling, theSibling); } void XalanSourceTreeText::appendSiblingNode(XalanSourceTreeElement* theSibling) { XalanSourceTreeHelper::appendSibling(this, m_nextSibling, theSibling); } void XalanSourceTreeText::appendSiblingNode(XalanSourceTreeProcessingInstruction* theSibling) { XalanSourceTreeHelper::appendSibling(this, m_nextSibling, theSibling); } void XalanSourceTreeText::appendSiblingNode(XalanSourceTreeText* theSibling) { XalanSourceTreeHelper::appendSibling(this, m_nextSibling, theSibling); } static XalanDOMString s_staticNameString(XalanMemMgrs::getDummyMemMgr()); const XalanDOMString& XalanSourceTreeText::s_nameString = s_staticNameString; const XalanDOMChar s_text[] = { XalanUnicode::charNumberSign, XalanUnicode::charLetter_t, XalanUnicode::charLetter_e, XalanUnicode::charLetter_x, XalanUnicode::charLetter_t, 0 }; void XalanSourceTreeText::initialize(MemoryManager& theManager) { XalanDOMString theBuffer(s_text, theManager); s_staticNameString.swap(theBuffer); } void XalanSourceTreeText::terminate() { releaseMemory(s_staticNameString, XalanMemMgrs::getDummyMemMgr()); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeProcessingInstructionAllocator.hpp0000664000175000000640000000765311731656103031227 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEPROCESSINGINSTRUCTIONALLOCATOR_INCLUDE_GUARD_12455133) #define XALANSOURCETREEPROCESSINGINSTRUCTIONALLOCATOR_INCLUDE_GUARD_12455133 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeProcessingInstructionAllocator { public: typedef XalanSourceTreeProcessingInstruction ObjectType; typedef ObjectType::IndexType IndexType; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanSourceTreeProcessingInstructionAllocator(MemoryManager& theManager, size_type theBlockCount); ~XalanSourceTreeProcessingInstructionAllocator(); /** * Create an instance. * * @param theTarget The target for the processing instruction. * @param theData The data for the node * @param theOwnerDocument The document that owns the instance. * @param theParentNode The parent node, if any. * @param thePreviousSibling The next sibling, if any. * @param theNextSibling The next sibling, if any. * @param theIndex The document-order index of the node. * * @return pointer to the instance */ ObjectType* create( const XalanDOMString& theTarget, const XalanDOMString& theData, XalanSourceTreeDocument* theOwnerDocument, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0, IndexType theIndex = 0); /** * Delete all objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanSourceTreeProcessingInstructionAllocator(const XalanSourceTreeProcessingInstructionAllocator&); XalanSourceTreeProcessingInstructionAllocator& operator=(const XalanSourceTreeProcessingInstructionAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANSOURCETREEPROCESSINGINSTRUCTIONALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeTextAllocator.cpp0000664000175000000640000000364411731656103025564 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanSourceTreeTextAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanSourceTreeTextAllocator::XalanSourceTreeTextAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanSourceTreeTextAllocator::~XalanSourceTreeTextAllocator() { } XalanSourceTreeTextAllocator::ObjectType* XalanSourceTreeTextAllocator::create( const XalanDOMString& theData, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling, IndexType theIndex) { ObjectType* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); new(theBlock) ObjectType( theData, theParentNode, thePreviousSibling, theNextSibling, theIndex); m_allocator.commitAllocation(theBlock); return theBlock; } void XalanSourceTreeTextAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/FormatterToSourceTree.hpp0000664000175000000640000001416611731656103024267 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(FORMATTERTOSOURCETREE_HEADER_GUARD_1357924680) #define FORMATTERTOSOURCETREE_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include // Base class header file. #include #include XALAN_CPP_NAMESPACE_BEGIN class PrefixResolver; class XalanNode; class XalanSourceTreeDocument; class XalanSourceTreeDocumentFragment; class XalanSourceTreeElement; /** * This class takes SAX events (in addition to some extra events that SAX * doesn't handle yet) and adds the result to a document or document fragment. */ class XALAN_XALANSOURCETREE_EXPORT FormatterToSourceTree : public FormatterListener { public: typedef XalanVector ElementStackType; typedef XalanVector LastChildStackType; enum { eDefaultStackSize = 50, eDefaultTextBufferSize = 100 }; /** * Perform static initialization. See class XalanSourceTreeInit. */ static void initialize(MemoryManager& theManager); /** * Perform static shut down. See class XalanSourceTreeInit. */ static void terminate(); /** * Construct a FormatterToSourceTree instance. it will add the nodes * to the document. * * @param theDocument The document for nodes */ explicit FormatterToSourceTree( MemoryManager& theManager XALAN_DEFAULT_CONSTRUCTOR_MEMMGR, XalanSourceTreeDocument* theDocument = 0); /** * Construct a FormatterToSourceTree instance. it will add the nodes * to the document fragment. * * @param theDocument The document for nodes * @param theDocumentFragment The document fragment for nodes */ FormatterToSourceTree( XalanSourceTreeDocument* theDocument, XalanSourceTreeDocumentFragment* theDocumentFragment, MemoryManager& theManager XALAN_DEFAULT_MEMMGR); virtual ~FormatterToSourceTree(); XalanSourceTreeDocument* getDocument() const { return m_document; } void setDocument(XalanSourceTreeDocument* theDocument) { m_document = theDocument; } XalanSourceTreeDocumentFragment* getDocumentFragment() const { return m_documentFragment; } void setDocumentFragment(XalanSourceTreeDocumentFragment* theDocumentFragment) { m_documentFragment = theDocumentFragment; } XalanSourceTreeElement* getCurrentElement() const { return m_currentElement; } void setCurrentElement(XalanSourceTreeElement* theElement) { m_currentElement = theElement; } // These methods are inherited from DocumentHandler ... virtual void charactersRaw( const XMLCh* const chars, const size_type length); virtual void comment(const XMLCh* const data); virtual void cdata( const XMLCh* const ch, const size_type length); virtual void entityReference(const XMLCh* const name); virtual void setDocumentLocator(const Locator* const locator); virtual void startDocument(); virtual void endDocument(); virtual void startElement( const XMLCh* const name, AttributeListType& attrs); virtual void endElement(const XMLCh* const name); virtual void characters( const XMLCh* const chars, const size_type length); virtual void ignorableWhitespace( const XMLCh* const chars, const size_type length); virtual void processingInstruction( const XMLCh* const target, const XMLCh* const data); virtual void resetDocument(); private: // Some utility functions... void processAccumulatedText(); XalanSourceTreeElement* createElementNode( const XalanDOMChar* name, AttributeListType& attrs, XalanSourceTreeElement* theParentElement); void doCharacters( const XalanDOMChar* chars, size_type length); void doProcessingInstruction( const XalanDOMChar* target, const XalanDOMChar* data); // Data members... XalanSourceTreeDocument* m_document; XalanSourceTreeDocumentFragment* m_documentFragment; XalanSourceTreeElement* m_currentElement; ElementStackType m_elementStack; // The last child appended to the current element. This is // an important optimization, because XalanSourceTreeElement // does not have a pointer to it's last child. Without this, // appending a child becomes a linear search. XalanNode* m_lastChild; // Stack of last children appended. There is a one-to-one // correspondance to the entries in m_elementStack. LastChildStackType m_lastChildStack; XalanDOMString m_textBuffer; }; XALAN_CPP_NAMESPACE_END #endif // FORMATTERTOSOURCETREE_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeText.hpp0000664000175000000640000001150111731656103023717 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREETEXT_HEADER_GUARD_1357924680) #define XALANSOURCETREETEXT_HEADER_GUARD_1357924680 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanSourceTreeComment; class XalanSourceTreeDocumentFragment; class XalanSourceTreeElement; class XalanSourceTreeProcessingInstruction; class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeText : public XalanText { public: /** * Perform static initialization. See class XalanSourceTreeInit. */ static void initialize(MemoryManager& theManager); /** * Perform static shut down. See class XalanSourceTreeInit. */ static void terminate(); /** * Constructor. * * @param theData The text data of the node * @param isWhitespace true if the text data is only whitespace * @param theParentNode The parent node, if any. * @param thePreviousSibling The previous sibling, if any. * @param theNextSibling The next sibling, if any. * @param theIndex The document-order index of the node. */ XalanSourceTreeText( const XalanDOMString& theData, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0, IndexType theIndex = 0); virtual ~XalanSourceTreeText(); // These interfaces are inherited from XalanText... virtual const XalanDOMString& getNodeName() const; virtual const XalanDOMString& getNodeValue() const; virtual NodeType getNodeType() const; virtual XalanNode* getParentNode() const; virtual const XalanNodeList* getChildNodes() const; virtual XalanNode* getFirstChild() const; virtual XalanNode* getLastChild() const; virtual XalanNode* getPreviousSibling() const; virtual XalanNode* getNextSibling() const; virtual const XalanNamedNodeMap* getAttributes() const; virtual XalanDocument* getOwnerDocument() const; virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; virtual bool isIndexed() const; virtual IndexType getIndex() const; virtual const XalanDOMString& getData() const; virtual bool isWhitespace() const; // public interfaces not inherited from XalanText... void setParent(XalanSourceTreeElement* theParent); void setParent(XalanSourceTreeDocumentFragment* theParent); void setPreviousSibling(XalanSourceTreeComment* thePreviousSibling); void setPreviousSibling(XalanSourceTreeElement* thePreviousSibling); void setPreviousSibling(XalanSourceTreeProcessingInstruction* thePreviousSibling); void setPreviousSibling(XalanSourceTreeText* thePreviousSibling); void appendSiblingNode(XalanSourceTreeComment* theSibling); void appendSiblingNode(XalanSourceTreeElement* theSibling); void appendSiblingNode(XalanSourceTreeProcessingInstruction* theSibling); void appendSiblingNode(XalanSourceTreeText* theSibling); void setIndex(IndexType theIndex) { m_index = theIndex; } private: // Not implemented... XalanSourceTreeText(const XalanSourceTreeText&); XalanSourceTreeText& operator=(const XalanSourceTreeText& theSource); bool operator==(const XalanSourceTreeText& theRHS) const; // Data members... const XalanDOMString& m_data; XalanNode* m_parentNode; XalanNode* m_previousSibling; XalanNode* m_nextSibling; IndexType m_index; static const XalanDOMString& s_nameString; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANSOURCETREETEXT_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeTextAllocator.hpp0000664000175000000640000000675111731656103025573 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREETEXTALLOCATOR_INCLUDE_GUARD_12455133) #define XALANSOURCETREETEXTALLOCATOR_INCLUDE_GUARD_12455133 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeTextAllocator { public: typedef XalanSourceTreeText ObjectType; typedef ObjectType::IndexType IndexType; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanSourceTreeTextAllocator(MemoryManager& theManager, size_type theBlockCount); ~XalanSourceTreeTextAllocator(); /** * Create an instance. * * @param theData The data for the node * @param theParentNode The parent node, if any. * @param thePreviousSibling The next sibling, if any. * @param theNextSibling The next sibling, if any. * @param theIndex The document-order index of the node. * * @return pointer to the instance */ ObjectType* create( const XalanDOMString& theData, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0, IndexType theIndex = 0); /** * Delete all objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanSourceTreeTextAllocator(const XalanSourceTreeTextAllocator&); XalanSourceTreeTextAllocator& operator=(const XalanSourceTreeTextAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANSOURCETREETEXTALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeElementA.cpp0000664000175000000640000000651311731656103024467 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanSourceTreeElementA.hpp" #include #include #include "XalanSourceTreeAttr.hpp" XALAN_CPP_NAMESPACE_BEGIN static const XalanDOMString s_emptyString(XalanMemMgrs::getDummyMemMgr()); XalanSourceTreeElementA::XalanSourceTreeElementA( MemoryManager& theManager, const XalanDOMString& theTagName, XalanSourceTreeDocument* theOwnerDocument, XalanSourceTreeAttr** theAttributes, XalanSize_t theAttributeCount, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling, IndexType theIndex) : XalanSourceTreeElement( theManager, theTagName, theOwnerDocument, theParentNode, thePreviousSibling, theNextSibling, theIndex), m_attributes(theAttributes), m_attributeCount(theAttributeCount) { } XalanSourceTreeElementA::~XalanSourceTreeElementA() { } const XalanNamedNodeMap* XalanSourceTreeElementA::getAttributes() const { return this; } const XalanDOMString& XalanSourceTreeElementA::getNamespaceURI() const { return s_emptyString; } const XalanDOMString& XalanSourceTreeElementA::getPrefix() const { return s_emptyString; } const XalanDOMString& XalanSourceTreeElementA::getLocalName() const { return m_tagName; } XalanNode* XalanSourceTreeElementA::item(XalanSize_t index) const { return index < m_attributeCount ? m_attributes[index] : 0; } XalanNode* XalanSourceTreeElementA::getNamedItem(const XalanDOMString& name) const { for (XalanSize_t i = 0; i < m_attributeCount; ++i) { assert(m_attributes[i] != 0); if (m_attributes[i]->getNodeName() == name) { return m_attributes[i]; } } return 0; } XalanSize_t XalanSourceTreeElementA::getLength() const { return m_attributeCount; } XalanNode* XalanSourceTreeElementA::getNamedItemNS( const XalanDOMString& namespaceURI, const XalanDOMString& localName) const { for (XalanSize_t i = 0; i < m_attributeCount; ++i) { assert(m_attributes[i] != 0); if (m_attributes[i]->getLocalName() == localName && m_attributes[i]->getNamespaceURI() == namespaceURI) { return m_attributes[i]; } } return 0; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeElementAAllocator.cpp0000664000175000000640000000453211731656103026327 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanSourceTreeElementAAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanSourceTreeElementAAllocator::XalanSourceTreeElementAAllocator( MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanSourceTreeElementAAllocator::~XalanSourceTreeElementAAllocator() { } XalanSourceTreeElementAAllocator::ObjectType* XalanSourceTreeElementAAllocator::create( const XalanDOMString& theTagName, XalanSourceTreeDocument* theOwnerDocument, XalanSourceTreeAttr** theAttributes, XalanSize_t theAttributeCount, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling, IndexType theIndex) { ObjectType* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); new(theBlock) ObjectType( m_allocator.getMemoryManager(), theTagName, theOwnerDocument, theAttributes, theAttributeCount, theParentNode, thePreviousSibling, theNextSibling, theIndex); m_allocator.commitAllocation(theBlock); return theBlock; } void XalanSourceTreeElementAAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeElementANSAllocator.cpp0000664000175000000640000000517611731656103026575 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanSourceTreeElementANSAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanSourceTreeElementANSAllocator::XalanSourceTreeElementANSAllocator( MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanSourceTreeElementANSAllocator::~XalanSourceTreeElementANSAllocator() { } XalanSourceTreeElementANSAllocator::ObjectType* XalanSourceTreeElementANSAllocator::create( const XalanDOMString& theTagName, const XalanDOMString& theLocalName, const XalanDOMString& theNamespaceURI, const XalanDOMString& thePrefix, XalanSourceTreeDocument* theOwnerDocument, XalanSourceTreeAttr** theAttributes, XalanSize_t theAttributeCount, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling, IndexType theIndex) { ObjectType* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); new(theBlock) ObjectType( m_allocator.getMemoryManager(), theTagName, theLocalName, theNamespaceURI, thePrefix, theOwnerDocument, theAttributes, theAttributeCount, theParentNode, thePreviousSibling, theNextSibling, theIndex); m_allocator.commitAllocation(theBlock); return theBlock; } void XalanSourceTreeElementANSAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeElementA.hpp0000664000175000000640000000734011731656103024473 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEELEMENTA_HEADER_GUARD_1357924680) #define XALANSOURCETREEELEMENTA_HEADER_GUARD_1357924680 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeElementA : public XalanSourceTreeElement, private XalanNamedNodeMap { public: /** * Constructor. * * @param theTagName The tag name of the element * @param theOwnerDocument The document that owns the instance * @param theAttributes An array of pointers to the attribute instances for the element * @param theAttributeCount The number of attributes. * @param theParentNode The parent node, if any. * @param thePreviousSibling The previous sibling, if any. * @param theNextSibling The next sibling, if any. * @param theIndex The document-order index of the node. */ XalanSourceTreeElementA( MemoryManager& theManager, const XalanDOMString& theTagName, XalanSourceTreeDocument* theOwnerDocument, XalanSourceTreeAttr** theAttributes, XalanSize_t theAttributeCount, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0, IndexType theIndex = 0); virtual ~XalanSourceTreeElementA(); virtual const XalanNamedNodeMap* getAttributes() const; virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; // public interfaces not inherited from XalanElement... XalanSize_t getAttributeCount() const { return m_attributeCount; } XalanSourceTreeAttr* getAttributeByIndex(XalanSize_t index) const { return index < m_attributeCount ? m_attributes[index] : 0; } private: // These are from XalanNamedNodeMap... virtual XalanNode* item(XalanSize_t index) const; virtual XalanNode* getNamedItem(const XalanDOMString& name) const; virtual XalanSize_t getLength() const; virtual XalanNode* getNamedItemNS( const XalanDOMString& namespaceURI, const XalanDOMString& localName) const; // Not implemented... XalanSourceTreeElementA(const XalanSourceTreeElementA&); XalanSourceTreeElementA& operator=(const XalanSourceTreeElementA&); bool operator==(const XalanSourceTreeElementA&) const; // Data members... XalanSourceTreeAttr* const * m_attributes; const XalanSize_t m_attributeCount; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANSOURCETREEELEMENTA_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeElementAAllocator.hpp0000664000175000000640000000774411731656103026344 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEELEMENTAALLOCATOR_INCLUDE_GUARD_12455133) #define XALANSOURCETREEELEMENTAALLOCATOR_INCLUDE_GUARD_12455133 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeElementAAllocator { public: typedef XalanSourceTreeElementA ObjectType; typedef ObjectType::IndexType IndexType; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanSourceTreeElementAAllocator( MemoryManager& theManager, size_type theBlockCount); ~XalanSourceTreeElementAAllocator(); /** * Create an instance. * * @param theTagName The tag name of the element * @param theOwnerDocument The document that owns the instance * @param theAttributes An array of pointers to the attribute instances for the element * @param theAttributeCount The number of attributes. * @param theParentNode The parent node, if any. * @param thePreviousSibling The previous sibling, if any. * @param theNextSibling The next sibling, if any. * @param theIndex The document-order index of the node. * * @return pointer to the instance */ ObjectType* create( const XalanDOMString& theTagName, XalanSourceTreeDocument* theOwnerDocument, XalanSourceTreeAttr** theAttributes, XalanSize_t theAttributeCount, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0, IndexType theIndex = 0); /** * Delete all objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanSourceTreeElementAAllocator(const XalanSourceTreeElementAAllocator&); XalanSourceTreeElementAAllocator& operator=(const XalanSourceTreeElementAAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANSOURCETREEELEMENTAALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeElementANSAllocator.hpp0000664000175000000640000001052611731656103026575 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEELEMENTANSALLOCATOR_INCLUDE_GUARD_12455133) #define XALANSOURCETREEELEMENTANSALLOCATOR_INCLUDE_GUARD_12455133 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeElementANSAllocator { public: typedef XalanSourceTreeElementANS ObjectType; typedef ObjectType::IndexType IndexType; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanSourceTreeElementANSAllocator( MemoryManager& theManager, size_type theBlockCount); ~XalanSourceTreeElementANSAllocator(); /** * Create an instance. * * @param theTagName The tag name of the element * @param theLocalName The local name of the attribute * @param theNamespaceURI The namespace URI of the attribute * @param thePrefix The namespace prefix of the attribute * @param theOwnerDocument The document that owns the instance * @param theAttributes An array of pointers to the attribute instances for the element * @param theAttributeCount The number of attributes. * @param theParentNode The parent node, if any. * @param thePreviousSibling The previous sibling, if any. * @param theNextSibling The next sibling, if any. * @param theIndex The document-order index of the node. * * @return pointer to the instance */ ObjectType* create( const XalanDOMString& theTagName, const XalanDOMString& theLocalName, const XalanDOMString& theNamespaceURI, const XalanDOMString& thePrefix, XalanSourceTreeDocument* theOwnerDocument, XalanSourceTreeAttr** theAttributes, XalanSize_t theAttributeCount, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0, IndexType theIndex = 0); /** * Delete all objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanSourceTreeElementANSAllocator(const XalanSourceTreeElementANSAllocator&); XalanSourceTreeElementANSAllocator& operator=(const XalanSourceTreeElementANSAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANSOURCETREEELEMENTANSALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeComment.cpp0000664000175000000640000001372611731656103024403 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanSourceTreeComment.hpp" #include #include #include "XalanSourceTreeDocument.hpp" #include "XalanSourceTreeDocumentFragment.hpp" #include "XalanSourceTreeElement.hpp" #include "XalanSourceTreeProcessingInstruction.hpp" #include "XalanSourceTreeText.hpp" #include "XalanSourceTreeHelper.hpp" XALAN_CPP_NAMESPACE_BEGIN static const XalanDOMString s_emptyString(XalanMemMgrs::getDummyMemMgr()); XalanSourceTreeComment::XalanSourceTreeComment( const XalanDOMString& theData, XalanSourceTreeDocument* theOwnerDocument, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling, IndexType theIndex) : XalanComment(), m_data(theData), m_ownerDocument(theOwnerDocument), m_parentNode(theParentNode), m_previousSibling(thePreviousSibling), m_nextSibling(theNextSibling), m_index(theIndex) { } XalanSourceTreeComment::~XalanSourceTreeComment() { } const XalanDOMString& XalanSourceTreeComment::getNodeName() const { return s_nameString; } const XalanDOMString& XalanSourceTreeComment::getNodeValue() const { return m_data; } XalanSourceTreeComment::NodeType XalanSourceTreeComment::getNodeType() const { return COMMENT_NODE; } XalanNode* XalanSourceTreeComment::getParentNode() const { assert(m_ownerDocument != 0); if (m_parentNode != 0) { return m_parentNode; } else { return m_ownerDocument; } } const XalanNodeList* XalanSourceTreeComment::getChildNodes() const { throw XalanDOMException(XalanDOMException::NOT_SUPPORTED_ERR); // Dummy return value... return 0; } XalanNode* XalanSourceTreeComment::getFirstChild() const { return 0; } XalanNode* XalanSourceTreeComment::getLastChild() const { return 0; } XalanNode* XalanSourceTreeComment::getPreviousSibling() const { return m_previousSibling; } XalanNode* XalanSourceTreeComment::getNextSibling() const { return m_nextSibling; } const XalanNamedNodeMap* XalanSourceTreeComment::getAttributes() const { return 0; } XalanDocument* XalanSourceTreeComment::getOwnerDocument() const { assert(m_ownerDocument != 0); return m_ownerDocument; } const XalanDOMString& XalanSourceTreeComment::getNamespaceURI() const { return s_emptyString; } const XalanDOMString& XalanSourceTreeComment::getPrefix() const { return s_emptyString; } const XalanDOMString& XalanSourceTreeComment::getLocalName() const { return s_emptyString; } bool XalanSourceTreeComment::isIndexed() const { return true; } XalanSourceTreeComment::IndexType XalanSourceTreeComment::getIndex() const { return m_index; } const XalanDOMString& XalanSourceTreeComment::getData() const { return m_data; } void XalanSourceTreeComment::setParent(XalanSourceTreeElement* theParent) { m_parentNode = theParent; } void XalanSourceTreeComment::setParent(XalanSourceTreeDocumentFragment* theParent) { m_parentNode = theParent; } void XalanSourceTreeComment::setPreviousSibling(XalanSourceTreeComment* thePreviousSibling) { m_previousSibling = thePreviousSibling; } void XalanSourceTreeComment::setPreviousSibling(XalanSourceTreeElement* thePreviousSibling) { m_previousSibling = thePreviousSibling; } void XalanSourceTreeComment::setPreviousSibling(XalanSourceTreeProcessingInstruction* thePreviousSibling) { m_previousSibling = thePreviousSibling; } void XalanSourceTreeComment::setPreviousSibling(XalanSourceTreeText* thePreviousSibling) { m_previousSibling = thePreviousSibling; } void XalanSourceTreeComment::appendSiblingNode(XalanSourceTreeComment* theSibling) { XalanSourceTreeHelper::appendSibling(this, m_nextSibling, theSibling); } void XalanSourceTreeComment::appendSiblingNode(XalanSourceTreeElement* theSibling) { XalanSourceTreeHelper::appendSibling(this, m_nextSibling, theSibling); } void XalanSourceTreeComment::appendSiblingNode(XalanSourceTreeProcessingInstruction* theSibling) { XalanSourceTreeHelper::appendSibling(this, m_nextSibling, theSibling); } void XalanSourceTreeComment::appendSiblingNode(XalanSourceTreeText* theSibling) { XalanSourceTreeHelper::appendSibling(this, m_nextSibling, theSibling); } static XalanDOMString s_staticNameString(XalanMemMgrs::getDummyMemMgr()); const XalanDOMString& XalanSourceTreeComment::s_nameString = s_staticNameString; static const XalanDOMChar s_comment[] = { XalanUnicode::charNumberSign, XalanUnicode::charLetter_c, XalanUnicode::charLetter_o, XalanUnicode::charLetter_m, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, 0 }; void XalanSourceTreeComment::initialize(MemoryManager& theManager) { XalanDOMString tmpBuffer(s_comment, theManager); s_staticNameString.swap(tmpBuffer); } void XalanSourceTreeComment::terminate() { releaseMemory(s_staticNameString,XalanMemMgrs::getDummyMemMgr()); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeDocumentFragment.cpp0000664000175000000640000001127311731656103026236 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanSourceTreeDocumentFragment.hpp" #include #include #include #include "XalanSourceTreeDocument.hpp" #include "XalanSourceTreeElement.hpp" #include "XalanSourceTreeHelper.hpp" XALAN_CPP_NAMESPACE_BEGIN static const XalanDOMString s_emptyString(XalanMemMgrs::getDummyMemMgr()); XalanSourceTreeDocumentFragment::XalanSourceTreeDocumentFragment(MemoryManager& theManager, XalanSourceTreeDocument& theOwnerDocument) : XalanDocumentFragment(), m_manager(theManager), m_ownerDocument(&theOwnerDocument), m_firstChild(0) { } /* XalanSourceTreeDocumentFragment::XalanSourceTreeDocumentFragment( MemoryManager& theManager, const XalanSourceTreeDocumentFragment& theSource, bool deep) : XalanDocumentFragment(), m_manager(theManager), m_ownerDocument(theSource.m_ownerDocument), m_firstChild(theSource.m_firstChild == 0 ? 0 : theSource.m_firstChild->cloneNode(deep)) { } */ XalanSourceTreeDocumentFragment::~XalanSourceTreeDocumentFragment() { } const XalanDOMString& XalanSourceTreeDocumentFragment::getNodeName() const { return s_emptyString; } const XalanDOMString& XalanSourceTreeDocumentFragment::getNodeValue() const { return s_emptyString; } XalanSourceTreeDocumentFragment::NodeType XalanSourceTreeDocumentFragment::getNodeType() const { return DOCUMENT_FRAGMENT_NODE; } XalanNode* XalanSourceTreeDocumentFragment::getParentNode() const { return 0; } const XalanNodeList* XalanSourceTreeDocumentFragment::getChildNodes() const { throw XalanDOMException(XalanDOMException::NOT_SUPPORTED_ERR); // Dummy return value... return 0; } XalanNode* XalanSourceTreeDocumentFragment::getFirstChild() const { return m_firstChild; } XalanNode* XalanSourceTreeDocumentFragment::getLastChild() const { return XalanSourceTreeHelper::getLastSibling(m_firstChild); } XalanNode* XalanSourceTreeDocumentFragment::getPreviousSibling() const { return 0; } XalanNode* XalanSourceTreeDocumentFragment::getNextSibling() const { return 0; } const XalanNamedNodeMap* XalanSourceTreeDocumentFragment::getAttributes() const { return 0; } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) XalanDocument* #else XalanSourceTreeDocument* #endif XalanSourceTreeDocumentFragment::getOwnerDocument() const { return m_ownerDocument; } const XalanDOMString& XalanSourceTreeDocumentFragment::getNamespaceURI() const { return s_emptyString; } const XalanDOMString& XalanSourceTreeDocumentFragment::getPrefix() const { return s_emptyString; } const XalanDOMString& XalanSourceTreeDocumentFragment::getLocalName() const { return s_emptyString; } bool XalanSourceTreeDocumentFragment::isIndexed() const { return false; } XalanSourceTreeDocumentFragment::IndexType XalanSourceTreeDocumentFragment::getIndex() const { return 0; } void XalanSourceTreeDocumentFragment::appendChildNode(XalanSourceTreeComment* theChild) { XalanSourceTreeHelper::appendSiblingToChild(this, m_firstChild, theChild); } void XalanSourceTreeDocumentFragment::appendChildNode(XalanSourceTreeElement* theChild) { XalanSourceTreeHelper::appendSiblingToChild(this, m_firstChild, theChild); } void XalanSourceTreeDocumentFragment::appendChildNode(XalanSourceTreeProcessingInstruction* theChild) { XalanSourceTreeHelper::appendSiblingToChild(this, m_firstChild, theChild); } void XalanSourceTreeDocumentFragment::appendChildNode(XalanSourceTreeText* theChild) { XalanSourceTreeHelper::appendSiblingToChild(this, m_firstChild, theChild); } void XalanSourceTreeDocumentFragment::clearChildren() { m_firstChild = 0; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeCommentAllocator.cpp0000664000175000000640000000406211731656103026235 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanSourceTreeCommentAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanSourceTreeCommentAllocator::XalanSourceTreeCommentAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanSourceTreeCommentAllocator::~XalanSourceTreeCommentAllocator() { } XalanSourceTreeCommentAllocator::ObjectType* XalanSourceTreeCommentAllocator::create( const XalanDOMString& theData, XalanSourceTreeDocument* theOwnerDocument, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling, IndexType theIndex) { ObjectType* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); new(theBlock) ObjectType( theData, theOwnerDocument, theParentNode, thePreviousSibling, theNextSibling, theIndex); m_allocator.commitAllocation(theBlock); return theBlock; } void XalanSourceTreeCommentAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeAttributeAllocator.cpp0000664000175000000640000000355611731656103026605 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanSourceTreeAttributeAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanSourceTreeAttributeAllocator::XalanSourceTreeAttributeAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanSourceTreeAttributeAllocator::~XalanSourceTreeAttributeAllocator() { } XalanSourceTreeAttributeAllocator::ObjectType* XalanSourceTreeAttributeAllocator::create( const XalanDOMString& theName, const XalanDOMString& theValue, XalanSourceTreeElement* theOwnerElement, IndexType theIndex) { ObjectType* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); new(theBlock) ObjectType( theName, theValue, theOwnerElement, theIndex); m_allocator.commitAllocation(theBlock); return theBlock; } void XalanSourceTreeAttributeAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeAttributeNSAllocator.cpp0000664000175000000640000000422211731656103027035 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanSourceTreeAttributeNSAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanSourceTreeAttributeNSAllocator::XalanSourceTreeAttributeNSAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanSourceTreeAttributeNSAllocator::~XalanSourceTreeAttributeNSAllocator() { } XalanSourceTreeAttributeNSAllocator::ObjectType* XalanSourceTreeAttributeNSAllocator::create( const XalanDOMString& theName, const XalanDOMString& theLocalName, const XalanDOMString& theNamespaceURI, const XalanDOMString& thePrefix, const XalanDOMString& theValue, XalanSourceTreeElement* theOwnerElement, IndexType theIndex) { ObjectType* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); new(theBlock) ObjectType( theName, theLocalName, theNamespaceURI, thePrefix, theValue, theOwnerElement, theIndex); m_allocator.commitAllocation(theBlock); return theBlock; } void XalanSourceTreeAttributeNSAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeDocumentFragment.hpp0000664000175000000640000000735211731656103026246 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEDOCUMENTFRAGMENT_HEADER_GUARD_1357924680) #define XALANSOURCETREEDOCUMENTFRAGMENT_HEADER_GUARD_1357924680 #include #include #include #if !defined(XALAN_NO_COVARIANT_RETURN_TYPE) #include #endif XALAN_CPP_NAMESPACE_BEGIN class XalanSourceTreeComment; class XalanSourceTreeDocument; class XalanSourceTreeElement; class XalanSourceTreeProcessingInstruction; class XalanSourceTreeText; class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeDocumentFragment : public XalanDocumentFragment { public: XalanSourceTreeDocumentFragment(MemoryManager& theManager, XalanSourceTreeDocument& theOwnerDocument); /* XalanSourceTreeDocumentFragment( MemoryManager& theManager, const XalanSourceTreeDocumentFragment& theSource, bool deep = false); */ virtual ~XalanSourceTreeDocumentFragment(); // These interfaces are inherited from XalanNode... virtual const XalanDOMString& getNodeName() const; virtual const XalanDOMString& getNodeValue() const; virtual NodeType getNodeType() const; virtual XalanNode* getParentNode() const; virtual const XalanNodeList* getChildNodes() const; virtual XalanNode* getFirstChild() const; virtual XalanNode* getLastChild() const; virtual XalanNode* getPreviousSibling() const; virtual XalanNode* getNextSibling() const; virtual const XalanNamedNodeMap* getAttributes() const; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual XalanDocument* #else virtual XalanSourceTreeDocument* #endif getOwnerDocument() const; virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; virtual bool isIndexed() const; virtual IndexType getIndex() const; // These interfaces are new... void appendChildNode(XalanSourceTreeComment* theChild); void appendChildNode(XalanSourceTreeElement* theChild); void appendChildNode(XalanSourceTreeProcessingInstruction* theChild); void appendChildNode(XalanSourceTreeText* theChild); void clearChildren(); protected: XalanSourceTreeDocumentFragment& operator=(const XalanSourceTreeDocumentFragment& theSource); bool operator==(const XalanSourceTreeDocumentFragment& theRHS) const; private: MemoryManager& m_manager; XalanSourceTreeDocument* const m_ownerDocument; XalanNode* m_firstChild; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANSOURCETREEDOCUMENTFRAGMENT_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeComment.hpp0000664000175000000640000001175411731656103024407 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREECOMMENT_HEADER_GUARD_1357924680) #define XALANSOURCETREECOMMENT_HEADER_GUARD_1357924680 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanSourceTreeDocument; class XalanSourceTreeDocumentFragment; class XalanSourceTreeElement; class XalanSourceTreeProcessingInstruction; class XalanSourceTreeText; class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeComment : public XalanComment { public: /** * Perform static initialization. See class XalanSourceTreeInit. */ static void initialize(MemoryManager& theManager); /** * Perform static shut down. See class XalanSourceTreeInit. */ static void terminate(); /** * Constructor. * * @param theData The text data of the node. * @param theOwnerDocument The owner document of the comment node. * @param theParentNode The parent node, if any. * @param thePreviousSibling The previous sibling, if any. * @param theNextSibling The next sibling, if any. * @param theIndex The document-order index of the node. */ XalanSourceTreeComment( const XalanDOMString& theData, XalanSourceTreeDocument* theOwnerDocument, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0, IndexType theIndex = 0); virtual ~XalanSourceTreeComment(); // These interfaces are inherited from XalanComment virtual const XalanDOMString& getNodeName() const; virtual const XalanDOMString& getNodeValue() const; virtual NodeType getNodeType() const; virtual XalanNode* getParentNode() const; virtual const XalanNodeList* getChildNodes() const; virtual XalanNode* getFirstChild() const; virtual XalanNode* getLastChild() const; virtual XalanNode* getPreviousSibling() const; virtual XalanNode* getNextSibling() const; virtual const XalanNamedNodeMap* getAttributes() const; virtual XalanDocument* getOwnerDocument() const; virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; virtual bool isIndexed() const; virtual IndexType getIndex() const; virtual const XalanDOMString& getData() const; // public interfaces not inherited from XalanComment... void setParent(XalanSourceTreeElement* theParent); void setParent(XalanSourceTreeDocumentFragment* theParent); void setPreviousSibling(XalanSourceTreeComment* thePreviousSibling); void setPreviousSibling(XalanSourceTreeElement* thePreviousSibling); void setPreviousSibling(XalanSourceTreeProcessingInstruction* thePreviousSibling); void setPreviousSibling(XalanSourceTreeText* thePreviousSibling); void appendSiblingNode(XalanSourceTreeComment* theSibling); void appendSiblingNode(XalanSourceTreeElement* theSibling); void appendSiblingNode(XalanSourceTreeProcessingInstruction* theSibling); void appendSiblingNode(XalanSourceTreeText* theSibling); void setIndex(IndexType theIndex) { m_index = theIndex; } private: // Not implemented... XalanSourceTreeComment(const XalanSourceTreeComment& theSource); XalanSourceTreeComment& operator=(const XalanSourceTreeComment& theSource); bool operator==(const XalanSourceTreeComment& theRHS) const; // Data members... const XalanDOMString& m_data; XalanSourceTreeDocument* m_ownerDocument; XalanNode* m_parentNode; XalanNode* m_previousSibling; XalanNode* m_nextSibling; IndexType m_index; static const XalanDOMString& s_nameString; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANSOURCETREECOMMENT_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeTextIWS.cpp0000664000175000000640000000267711731656103024313 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanSourceTreeTextIWS.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanSourceTreeTextIWS::XalanSourceTreeTextIWS( const XalanDOMString& theData, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling, IndexType theIndex) : XalanSourceTreeText( theData, theParentNode, thePreviousSibling, theNextSibling, theIndex) { } XalanSourceTreeTextIWS::~XalanSourceTreeTextIWS() { } bool XalanSourceTreeTextIWS::isWhitespace() const { return true; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeCommentAllocator.hpp0000664000175000000640000000724311731656103026246 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREECOMMENTALLOCATOR_INCLUDE_GUARD_12455133) #define XALANSOURCETREECOMMENTALLOCATOR_INCLUDE_GUARD_12455133 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeCommentAllocator { public: typedef XalanSourceTreeComment ObjectType; typedef ObjectType::IndexType IndexType; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanSourceTreeCommentAllocator(MemoryManager& theManager, size_type theBlockCount); ~XalanSourceTreeCommentAllocator(); /** * Create an instance. * * @param theData The data for the comment * @param theOwnerDocument The owner document of the comment node. * @param theParentNode The parent node, if any. * @param thePreviousSibling The next sibling, if any. * @param theNextSibling The next sibling, if any. * @param theIndex The document-order index of the node. * * @return pointer to the instance */ ObjectType* create( const XalanDOMString& theData, XalanSourceTreeDocument* theOwnerDocument, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0, IndexType theIndex = 0); /** * Delete all objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanSourceTreeCommentAllocator(const XalanSourceTreeCommentAllocator&); XalanSourceTreeCommentAllocator& operator=(const XalanSourceTreeCommentAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANSOURCETREECOMMENTALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeAttributeAllocator.hpp0000664000175000000640000000677511731656103026620 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEATTRIBUTEALLOCATOR_INCLUDE_GUARD_12455133) #define XALANSOURCETREEATTRIBUTEALLOCATOR_INCLUDE_GUARD_12455133 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeAttributeAllocator { public: typedef XalanSourceTreeAttr ObjectType; typedef ObjectType::IndexType IndexType; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanSourceTreeAttributeAllocator(MemoryManager& theManager, size_type theBlockCount); ~XalanSourceTreeAttributeAllocator(); /** * Create an instance. * * @param theName The name of the attribute * @param theValue The value of the attribute * @param theOwnerDocument The document that owns the instance * @param theOwnerElement The element that owns the instance * @param theIndex The document-order index of the node. * * @return pointer to the instance */ ObjectType* create( const XalanDOMString& theName, const XalanDOMString& theValue, XalanSourceTreeElement* theOwnerElement = 0, IndexType theIndex = 0); /** * Delete all objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanSourceTreeAttributeAllocator(const XalanSourceTreeAttributeAllocator&); XalanSourceTreeAttributeAllocator& operator=(const XalanSourceTreeAttributeAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANSOURCETREEATTRIBUTEALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeElementNANS.cpp0000664000175000000640000000424711731656103025050 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanSourceTreeElementNANS.hpp" #include XALAN_CPP_NAMESPACE_BEGIN XalanSourceTreeElementNANS::XalanSourceTreeElementNANS( MemoryManager& theManager, const XalanDOMString& theTagName, const XalanDOMString& theLocalName, const XalanDOMString& theNamespaceURI, const XalanDOMString& thePrefix, XalanSourceTreeDocument* theOwnerDocument, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling, IndexType theIndex) : XalanSourceTreeElementNA( theManager, theTagName, theOwnerDocument, theParentNode, thePreviousSibling, theNextSibling, theIndex), m_localName(theLocalName), m_prefix(thePrefix), m_namespaceURI(theNamespaceURI) { } XalanSourceTreeElementNANS::~XalanSourceTreeElementNANS() { } const XalanDOMString& XalanSourceTreeElementNANS::getNamespaceURI() const { return m_namespaceURI; } const XalanDOMString& XalanSourceTreeElementNANS::getPrefix() const { return m_prefix; } const XalanDOMString& XalanSourceTreeElementNANS::getLocalName() const { return m_localName; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeAttr.cpp0000664000175000000640000000634311731656103023710 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanSourceTreeAttr.hpp" #include #include #include "XalanSourceTreeElement.hpp" XALAN_CPP_NAMESPACE_BEGIN static const XalanDOMString s_emptyString(XalanMemMgrs::getDummyMemMgr()); XalanSourceTreeAttr::XalanSourceTreeAttr( const XalanDOMString& theName, const XalanDOMString& theValue, XalanSourceTreeElement* theOwnerElement, IndexType theIndex) : XalanAttr(), m_name(theName), m_value(theValue), m_ownerElement(theOwnerElement), m_index(theIndex) { } XalanSourceTreeAttr::~XalanSourceTreeAttr() { } const XalanDOMString& XalanSourceTreeAttr::getNodeName() const { return m_name; } const XalanDOMString& XalanSourceTreeAttr::getNodeValue() const { return m_value; } XalanSourceTreeAttr::NodeType XalanSourceTreeAttr::getNodeType() const { return ATTRIBUTE_NODE; } XalanNode* XalanSourceTreeAttr::getParentNode() const { return 0; } const XalanNodeList* XalanSourceTreeAttr::getChildNodes() const { return 0; } XalanNode* XalanSourceTreeAttr::getFirstChild() const { return 0; } XalanNode* XalanSourceTreeAttr::getLastChild() const { return 0; } XalanNode* XalanSourceTreeAttr::getPreviousSibling() const { return 0; } XalanNode* XalanSourceTreeAttr::getNextSibling() const { return 0; } const XalanNamedNodeMap* XalanSourceTreeAttr::getAttributes() const { return 0; } XalanDocument* XalanSourceTreeAttr::getOwnerDocument() const { assert(m_ownerElement != 0); return m_ownerElement->getOwnerDocument(); } const XalanDOMString& XalanSourceTreeAttr::getNamespaceURI() const { return s_emptyString; } const XalanDOMString& XalanSourceTreeAttr::getPrefix() const { return s_emptyString; } const XalanDOMString& XalanSourceTreeAttr::getLocalName() const { return s_emptyString; } bool XalanSourceTreeAttr::isIndexed() const { return true; } XalanSourceTreeAttr::IndexType XalanSourceTreeAttr::getIndex() const { return m_index; } const XalanDOMString& XalanSourceTreeAttr::getName() const { return m_name; } bool XalanSourceTreeAttr::getSpecified() const { return false; } const XalanDOMString& XalanSourceTreeAttr::getValue() const { return m_value; } XalanElement* XalanSourceTreeAttr::getOwnerElement() const { return m_ownerElement; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeAttributeNSAllocator.hpp0000664000175000000640000000745211731656103027052 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEATTRIBUTENSALLOCATOR_INCLUDE_GUARD_12455133) #define XALANSOURCETREEATTRIBUTENSALLOCATOR_INCLUDE_GUARD_12455133 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeAttributeNSAllocator { public: typedef XalanSourceTreeAttrNS ObjectType; typedef ObjectType::IndexType IndexType; #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS) typedef ArenaBlock ArenaBlockType; typedef ArenaAllocator ArenaAllocatorType; #else typedef ArenaAllocator ArenaAllocatorType; #endif typedef ArenaAllocatorType::size_type size_type; /** * Construct an instance that will allocate blocks of the specified size. * * @param theBlockSize The block size. */ XalanSourceTreeAttributeNSAllocator(MemoryManager& theManager, size_type theBlockCount); ~XalanSourceTreeAttributeNSAllocator(); /** * Create an instance. * * @param theName The name of the attribute * @param theLocalName The local name of the attribute * @param theNamespaceURI The namespace URI of the attribute * @param thePrefix The namespace prefix of the attribute * @param theValue The value of the attribute * @param theOwnerElement The element that owns the instance * @param theIndex The document-order index of the node. * * @return pointer to the instance */ ObjectType* create( const XalanDOMString& theName, const XalanDOMString& theLocalName, const XalanDOMString& theNamespaceURI, const XalanDOMString& thePrefix, const XalanDOMString& theValue, XalanSourceTreeElement* theOwnerElement = 0, IndexType theIndex = 0); /** * Delete all objects from allocator. */ void reset(); /** * Get size of an ArenaBlock, that is, the number * of objects in each block. * * @return The size of the block */ size_type getBlockCount() const { return m_allocator.getBlockCount(); } /** * Get the number of ArenaBlocks currently allocated. * * @return The number of blocks. */ size_type getBlockSize() const { return m_allocator.getBlockSize(); } private: // Not implemented... XalanSourceTreeAttributeNSAllocator(const XalanSourceTreeAttributeNSAllocator&); XalanSourceTreeAttributeNSAllocator& operator=(const XalanSourceTreeAttributeNSAllocator&); // Data members... ArenaAllocatorType m_allocator; }; XALAN_CPP_NAMESPACE_END #endif // XALANSOURCETREEATTRIBUTENSALLOCATOR_INCLUDE_GUARD_12455133 xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeParserLiaison.cpp0000664000175000000640000002526711731656103025557 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanSourceTreeParserLiaison.hpp" #include #include "xercesc/parsers/SAX2XMLReaderImpl.hpp" #include "xercesc/util/XMLUni.hpp" #include #include #include #include "XalanSourceTreeContentHandler.hpp" #include "XalanSourceTreeDOMSupport.hpp" #include "XalanSourceTreeDocument.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanSourceTreeParserLiaison::XalanSourceTreeParserLiaison( XalanSourceTreeDOMSupport& /* theSupport */, MemoryManager& theManager) : m_xercesParserLiaison(theManager), m_documentMap(theManager), m_poolAllText(true), m_xmlReader(0) { } XalanSourceTreeParserLiaison::XalanSourceTreeParserLiaison(MemoryManager& theManager) : m_xercesParserLiaison(theManager), m_documentMap(theManager), m_poolAllText(true), m_xmlReader(0) { } XalanSourceTreeParserLiaison::~XalanSourceTreeParserLiaison() { reset(); delete m_xmlReader; } void XalanSourceTreeParserLiaison::reset() { typedef DocumentMapType::iterator iterator; MemoryManager& theManager = getMemoryManager(); for (iterator i = m_documentMap.begin(); i != m_documentMap.end(); ++i) { assert((*i).second != 0); XalanDestroy( theManager, *(*i).second); (*i).second = 0; } m_documentMap.clear(); m_xercesParserLiaison.reset(); } ExecutionContext* XalanSourceTreeParserLiaison::getExecutionContext() const { return m_xercesParserLiaison.getExecutionContext(); } void XalanSourceTreeParserLiaison::setExecutionContext(ExecutionContext& theContext) { m_xercesParserLiaison.setExecutionContext(theContext); } void XalanSourceTreeParserLiaison::parseXMLStream( const InputSource& inputSource, DocumentHandler& handler, const XalanDOMString& identifier) { m_xercesParserLiaison.parseXMLStream(inputSource, handler, identifier); } void XalanSourceTreeParserLiaison::ensureReader() { XALAN_USING_XERCES(XMLUni) if (m_xmlReader == 0) { m_xmlReader = createReader(); } const bool fValidate = m_xercesParserLiaison.getUseValidation(); if (fValidate == false) { m_xmlReader->setFeature( XMLUni::fgSAX2CoreValidation, false); m_xmlReader->setFeature( XMLUni::fgXercesDynamic, false); m_xmlReader->setFeature( XMLUni::fgXercesSchema, false); } else { m_xmlReader->setFeature( XMLUni::fgSAX2CoreValidation, true); m_xmlReader->setFeature( XMLUni::fgXercesDynamic, true); m_xmlReader->setFeature( XMLUni::fgXercesSchema, true); } ErrorHandler* const theHandler = getErrorHandler(); if (theHandler == 0) { m_xmlReader->setErrorHandler(&m_xercesParserLiaison); } else { m_xmlReader->setErrorHandler(theHandler); } EntityResolver* const theEntityResolver = getEntityResolver(); if (theEntityResolver != 0) { m_xmlReader->setEntityResolver(theEntityResolver); } else { m_xmlReader->setXMLEntityResolver(getXMLEntityResolver()); } { const XalanDOMChar* const theLocation = getExternalSchemaLocation(); if (theLocation != 0) { m_xmlReader->setProperty( XMLUni::fgXercesSchemaExternalSchemaLocation, const_cast(theLocation)); } } { const XalanDOMChar* const theLocation = getExternalNoNamespaceSchemaLocation(); if (theLocation != 0) { m_xmlReader->setProperty( XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation, const_cast(theLocation)); } } } XalanDocument* XalanSourceTreeParserLiaison::parseXMLStream( const InputSource& inputSource, const XalanDOMString& identifier) { XalanSourceTreeDocument* const theDocument = createXalanSourceTreeDocument(); EnsureDestroyDocument theGuard( *this, theDocument); XalanSourceTreeContentHandler theContentHandler( getMemoryManager(), theDocument); parseXMLStream( inputSource, theContentHandler, identifier, &theContentHandler, &theContentHandler); return theGuard.release(); } void XalanSourceTreeParserLiaison::destroyDocument(XalanDocument* theDocument) { if (mapDocument(theDocument) != 0) { m_documentMap.erase(theDocument); assert(theDocument != 0); XalanDestroy( m_documentMap.getMemoryManager(), *theDocument); } else { m_xercesParserLiaison.destroyDocument(theDocument); } } int XalanSourceTreeParserLiaison::getIndent() const { return m_xercesParserLiaison.getIndent(); } void XalanSourceTreeParserLiaison::setIndent(int i) { m_xercesParserLiaison.setIndent(i); } bool XalanSourceTreeParserLiaison::getUseValidation() const { return m_xercesParserLiaison.getUseValidation(); } void XalanSourceTreeParserLiaison::setUseValidation(bool b) { m_xercesParserLiaison.setUseValidation(b); } const XalanDOMString& XalanSourceTreeParserLiaison::getParserDescription(XalanDOMString& theResult) const { theResult.assign("XalanSourceTree"); return theResult; } void XalanSourceTreeParserLiaison::parseXMLStream( const InputSource& theInputSource, ContentHandler& theContentHandler, const XalanDOMString& /* theIdentifier */, DTDHandler* theDTDHandler, LexicalHandler* theLexicalHandler) { ensureReader(); assert(m_xmlReader != 0); m_xmlReader->setContentHandler(&theContentHandler); m_xmlReader->setDTDHandler(theDTDHandler); m_xmlReader->setLexicalHandler(theLexicalHandler); m_xmlReader->parse(theInputSource); } DOMDocument_Type* XalanSourceTreeParserLiaison::createDOMFactory() { return m_xercesParserLiaison.createDOMFactory(); } void XalanSourceTreeParserLiaison::destroyDocument(DOMDocument_Type* theDocument) { m_xercesParserLiaison.destroyDocument(theDocument); } bool XalanSourceTreeParserLiaison::getIncludeIgnorableWhitespace() const { return m_xercesParserLiaison.getIncludeIgnorableWhitespace(); } void XalanSourceTreeParserLiaison::setIncludeIgnorableWhitespace(bool include) { m_xercesParserLiaison.setIncludeIgnorableWhitespace(include); } ErrorHandler* XalanSourceTreeParserLiaison::getErrorHandler() const { return m_xercesParserLiaison.getErrorHandler(); } void XalanSourceTreeParserLiaison::setErrorHandler(ErrorHandler* handler) { m_xercesParserLiaison.setErrorHandler(handler); } bool XalanSourceTreeParserLiaison::getDoNamespaces() const { return m_xercesParserLiaison.getDoNamespaces(); } void XalanSourceTreeParserLiaison::setDoNamespaces(bool newState) { m_xercesParserLiaison.setDoNamespaces(newState); } bool XalanSourceTreeParserLiaison::getExitOnFirstFatalError() const { return m_xercesParserLiaison.getExitOnFirstFatalError(); } void XalanSourceTreeParserLiaison::setExitOnFirstFatalError(bool newState) { m_xercesParserLiaison.setExitOnFirstFatalError(newState); } EntityResolver* XalanSourceTreeParserLiaison::getEntityResolver() const { return m_xercesParserLiaison.getEntityResolver(); } void XalanSourceTreeParserLiaison::setEntityResolver(EntityResolver* resolver) { m_xercesParserLiaison.setEntityResolver(resolver); } XMLEntityResolver* XalanSourceTreeParserLiaison::getXMLEntityResolver() const { return m_xercesParserLiaison.getXMLEntityResolver(); } void XalanSourceTreeParserLiaison::setXMLEntityResolver(XMLEntityResolver* resolver) { m_xercesParserLiaison.setXMLEntityResolver(resolver); } const XalanDOMChar* XalanSourceTreeParserLiaison::getExternalSchemaLocation() const { return m_xercesParserLiaison.getExternalSchemaLocation(); } void XalanSourceTreeParserLiaison::setExternalSchemaLocation(const XalanDOMChar* location) { m_xercesParserLiaison.setExternalSchemaLocation(location); } const XalanDOMChar* XalanSourceTreeParserLiaison::getExternalNoNamespaceSchemaLocation() const { return m_xercesParserLiaison.getExternalNoNamespaceSchemaLocation(); } void XalanSourceTreeParserLiaison::setExternalNoNamespaceSchemaLocation(const XalanDOMChar* location) { m_xercesParserLiaison.setExternalNoNamespaceSchemaLocation(location); } XalanSourceTreeDocument* XalanSourceTreeParserLiaison::mapDocument(const XalanDocument* theDocument) const { DocumentMapType::const_iterator i = m_documentMap.find(theDocument); return i != m_documentMap.end() ? (*i).second : 0; } XalanSourceTreeDocument* XalanSourceTreeParserLiaison::createXalanSourceTreeDocument() { XalanSourceTreeDocument* const theNewDocument = XalanSourceTreeDocument::create(getMemoryManager(), m_poolAllText); m_documentMap[theNewDocument] = theNewDocument; return theNewDocument; } SAX2XMLReaderImpl* XalanSourceTreeParserLiaison::createReader() { XALAN_USING_XERCES(XMLUni) typedef XalanAutoPtr AutoPtrType; MemoryManager& theManager = getMemoryManager(); AutoPtrType theReader(new (&theManager) SAX2XMLReaderImpl(&theManager)); theReader->setFeature( XMLUni::fgSAX2CoreNameSpaces, true); theReader->setFeature( XMLUni::fgSAX2CoreNameSpacePrefixes, true); return theReader.release(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeTextIWS.hpp0000664000175000000640000000433511731656103024311 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREETEXTIWS_HEADER_GUARD_1357924680) #define XALANSOURCETREETEXTIWS_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeTextIWS : public XalanSourceTreeText { public: /** * Constructor. * * @param theData The text data of the node * @param theParentNode The parent node, if any. * @param thePreviousSibling The previous sibling, if any. * @param theNextSibling The next sibling, if any. * @param theIndex The document-order index of the node. */ XalanSourceTreeTextIWS( const XalanDOMString& theData, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0, IndexType theIndex = 0); virtual ~XalanSourceTreeTextIWS(); virtual bool isWhitespace() const; private: // Not implemented... XalanSourceTreeTextIWS(const XalanSourceTreeTextIWS&); XalanSourceTreeTextIWS& operator=(const XalanSourceTreeTextIWS& theSource); bool operator==(const XalanSourceTreeTextIWS& theRHS) const; // Data members... }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANSOURCETREETEXTIWS_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeDocument.cpp0000664000175000000640000011667311731656103024564 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanSourceTreeDocument.hpp" #include #include #include #include #include #include #include "XalanSourceTreeHelper.hpp" XALAN_CPP_NAMESPACE_BEGIN static const XalanDOMString s_emptyString(XalanMemMgrs::getDummyMemMgr()); bool XalanSourceTreeDocument::s_poolAllTextNodes = false; XalanSourceTreeDocument::XalanSourceTreeDocument( MemoryManager& theManager, bool fPoolAllText, block_size_type theNamesStringPoolBlockSize, bucket_count_type theNamesStringPoolBucketCount, bucket_size_type theNamesStringPoolBucketSize, block_size_type theValuesStringPoolBlockSize, bucket_count_type theValuesStringPoolBucketCount, bucket_size_type theValuesStringPoolBucketSize) : XalanDocument(), m_firstChild(0), m_documentElement(0), m_attributeAllocator(theManager, eDefaultAttributeAllocatorBlockSize), m_attributeNSAllocator(theManager, eDefaultAttributeNSAllocatorBlockSize), m_commentAllocator(theManager, eDefaultCommentAllocatorBlockSize), m_elementAAllocator(theManager, eDefaultElementAllocatorBlockSize), m_elementANSAllocator(theManager, eDefaultElementNSAllocatorBlockSize), m_elementNAAllocator(theManager, eDefaultElementAllocatorBlockSize), m_elementNANSAllocator(theManager, eDefaultElementNSAllocatorBlockSize), m_piAllocator(theManager, eDefaultPIAllocatorBlockSize), m_textAllocator(theManager, eDefaultTextAllocatorBlockSize), m_textIWSAllocator(theManager, eDefaultTextIWSAllocatorBlockSize), m_namesStringPool(theManager, theNamesStringPoolBlockSize, theNamesStringPoolBucketCount, theNamesStringPoolBucketSize), m_valuesStringPool(theManager, theValuesStringPoolBlockSize, theValuesStringPoolBucketCount, theValuesStringPoolBucketSize), m_attributesVector(theManager), m_nextIndexValue(2), m_poolAllText(fPoolAllText), m_elementsByID(theManager), m_unparsedEntityURIs(theManager), m_nonPooledStrings(theManager, theValuesStringPoolBlockSize), m_stringBuffer(theManager) { } XalanSourceTreeDocument* XalanSourceTreeDocument::create( MemoryManager& theManager, bool fPoolAllText, block_size_type theNamesStringPoolBlockSize, bucket_count_type theNamesStringPoolBucketCount, bucket_size_type theNamesStringPoolBucketSize, block_size_type theValuesStringPoolBlockSize, bucket_count_type theValuesStringPoolBucketCount, bucket_size_type theValuesStringPoolBucketSize) { typedef XalanSourceTreeDocument ThisType; XalanAllocationGuard theGuard(theManager, theManager.allocate(sizeof(ThisType))); ThisType* const theResult = new (theGuard.get()) ThisType( theManager, fPoolAllText, theNamesStringPoolBlockSize, theNamesStringPoolBucketCount, theNamesStringPoolBucketSize, theValuesStringPoolBlockSize, theValuesStringPoolBucketCount, theValuesStringPoolBucketSize); theGuard.release(); return theResult; } XalanSourceTreeDocument::XalanSourceTreeDocument( MemoryManager& theManager, allocator_size_type theAttributeBlockSize, allocator_size_type theAttributeNSBlockSize, allocator_size_type theCommentBlockSize, allocator_size_type theElementBlockSize, allocator_size_type theElementNSBlockSize, allocator_size_type thePIBlockSize, allocator_size_type theTextBlockSize, allocator_size_type theTextIWSBlockSize, bool fPoolAllText) : XalanDocument(), m_firstChild(0), m_documentElement(0), m_attributeAllocator(theManager, theAttributeBlockSize), m_attributeNSAllocator(theManager, theAttributeNSBlockSize), m_commentAllocator(theManager, theCommentBlockSize), m_elementAAllocator(theManager, theElementBlockSize), m_elementANSAllocator(theManager, theElementNSBlockSize), m_elementNAAllocator(theManager, theElementBlockSize), m_elementNANSAllocator(theManager, theElementNSBlockSize), m_piAllocator(theManager, thePIBlockSize), m_textAllocator(theManager, theTextBlockSize), m_textIWSAllocator(theManager, theTextIWSBlockSize), m_namesStringPool(theManager, eDefaultNamesStringPoolBlockSize, eDefaultNamesStringPoolBucketCount, eDefaultNamesStringPoolBucketSize), m_valuesStringPool(theManager, eDefaultValuesStringPoolBlockSize, eDefaultValuesStringPoolBucketCount, eDefaultValuesStringPoolBucketSize), m_attributesVector(theManager), m_nextIndexValue(2), m_poolAllText(fPoolAllText), m_elementsByID(theManager), m_unparsedEntityURIs(theManager), m_nonPooledStrings(theManager, eDefaultValuesStringPoolBlockSize), m_stringBuffer(theManager) { } XalanSourceTreeDocument::~XalanSourceTreeDocument() { } const XalanDOMString& XalanSourceTreeDocument::getNodeName() const { return s_nameString; } const XalanDOMString& XalanSourceTreeDocument::getNodeValue() const { return s_emptyString; } XalanSourceTreeDocument::NodeType XalanSourceTreeDocument::getNodeType() const { return DOCUMENT_NODE; } XalanNode* XalanSourceTreeDocument::getParentNode() const { return 0; } const XalanNodeList* XalanSourceTreeDocument::getChildNodes() const { throw XalanDOMException(XalanDOMException::NOT_SUPPORTED_ERR); // Dummy return value... return 0; } XalanNode* XalanSourceTreeDocument::getFirstChild() const { return m_firstChild; } XalanNode* XalanSourceTreeDocument::getLastChild() const { return m_documentElement; } XalanNode* XalanSourceTreeDocument::getPreviousSibling() const { return 0; } XalanNode* XalanSourceTreeDocument::getNextSibling() const { return 0; } const XalanNamedNodeMap* XalanSourceTreeDocument::getAttributes() const { return 0; } XalanDocument* XalanSourceTreeDocument::getOwnerDocument() const { return 0; } const XalanDOMString& XalanSourceTreeDocument::getNamespaceURI() const { return s_emptyString; } const XalanDOMString& XalanSourceTreeDocument::getPrefix() const { return s_emptyString; } const XalanDOMString& XalanSourceTreeDocument::getLocalName() const { return s_nameString; } bool XalanSourceTreeDocument::isIndexed() const { return true; } XalanSourceTreeDocument::IndexType XalanSourceTreeDocument::getIndex() const { return 1; } XalanElement* XalanSourceTreeDocument::getDocumentElement() const { return m_documentElement; } XalanElement* XalanSourceTreeDocument::getElementById(const XalanDOMString& elementId) const { const ElementByIDMapType::const_iterator i = m_elementsByID.find(elementId.c_str()); if (i == m_elementsByID.end()) { return 0; } else { return (*i).second; } } static bool hasXMLNamespaceAttribute(const AttributeListType& attrs) { const XalanSize_t theLength = attrs.getLength(); for (XalanSize_t i = 0; i < theLength; ++i) { const XalanDOMChar* const theName = attrs.getName(i); assert(theName != 0); if (equals(theName, DOMServices::s_XMLNamespacePrefix) == true) { return true; } } return false; } static bool hasXMLNamespaceAttribute(const AttributesType& attrs) { const XalanSize_t theLength = attrs.getLength(); for (XalanSize_t i = 0; i < theLength; ++i) { const XalanDOMChar* const theName = attrs.getQName(i); assert(theName != 0); if (equals(theName, DOMServices::s_XMLNamespacePrefix) == true) { return true; } } return false; } size_t XalanSourceTreeDocument::createAttributes( XalanSourceTreeAttr** theAttributeVector, const AttributeListType& attrs, size_t theStartIndex, XalanSourceTreeElement* theOwnerElement, bool fCreateNamespaces, const PrefixResolver* thePrefixResolver) { const XalanSize_t theSAXAttributeCount = attrs.getLength(); // Now, create the attributes... for (XalanSize_t i = 0; i < theSAXAttributeCount; ++i) { const XalanDOMChar* const theName = attrs.getName(i); assert(theName != 0); const bool isNamespaceNode = startsWith(theName, DOMServices::s_XMLNamespaceWithSeparator) == true || theName == DOMServices::s_XMLNamespace; if ((isNamespaceNode == true && fCreateNamespaces == true) || (isNamespaceNode == false && fCreateNamespaces == false)) { const XalanDOMChar* const theValue = attrs.getValue(i); assert(theValue != 0); if (thePrefixResolver == 0) { theAttributeVector[theStartIndex] = m_attributeAllocator.create( m_namesStringPool.get(theName), m_valuesStringPool.get(theValue), theOwnerElement, m_nextIndexValue++); assert(theAttributeVector[theStartIndex] != 0); } else { const XalanDOMChar* theLocalName = 0; const XalanDOMString* const theNamespace = getNamespaceForPrefix( theName, *thePrefixResolver, m_stringBuffer, false, &theLocalName); if (theNamespace == 0 || theNamespace->empty() == true) { // the prefix was returned by getNamespaceForPrefix()... assert(m_stringBuffer.empty() == true); theAttributeVector[theStartIndex] = m_attributeAllocator.create( m_namesStringPool.get(theName), m_valuesStringPool.get(theValue), theOwnerElement, m_nextIndexValue++); assert(theAttributeVector[theStartIndex] != 0); } else { assert(theLocalName != 0); theAttributeVector[theStartIndex] = m_attributeNSAllocator.create( m_namesStringPool.get(theName), m_namesStringPool.get(theLocalName), m_namesStringPool.get(*theNamespace), // This is the prefix... m_namesStringPool.get(m_stringBuffer), m_valuesStringPool.get(theValue), theOwnerElement, m_nextIndexValue++); } } ++theStartIndex; } } return theStartIndex; } XalanSourceTreeElement* XalanSourceTreeDocument::createElementNode( const XalanDOMChar* name, const AttributeListType& attrs, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling, bool fAddXMLNamespaceAttribute) { XalanSize_t theAttributeCount = attrs.getLength(); if (fAddXMLNamespaceAttribute == true) { if (hasXMLNamespaceAttribute(attrs) == true) { fAddXMLNamespaceAttribute = false; } else { ++theAttributeCount; } } XalanSourceTreeAttr** theAttributeVector = 0; XalanSourceTreeElement* theNewElement = 0; if (theAttributeCount == 0) { theNewElement = m_elementNAAllocator.create( m_namesStringPool.get(name), this, theParentNode, thePreviousSibling, theNextSibling, m_nextIndexValue++); } else { theAttributeVector = m_attributesVector.allocate(theAttributeCount); theNewElement = m_elementAAllocator.create( m_namesStringPool.get(name), this, theAttributeVector, theAttributeCount, theParentNode, thePreviousSibling, theNextSibling, m_nextIndexValue++); } assert(theNewElement != 0); size_t theIndex = 0; if (fAddXMLNamespaceAttribute == true) { // The constructor parameters for AttrNS are: // // name // local name // namespace URI // prefix // value // owner element // index // theAttributeVector[theIndex] = m_attributeNSAllocator.create( m_namesStringPool.get(DOMServices::s_XMLNamespacePrefix), m_namesStringPool.get(DOMServices::s_XMLString), m_namesStringPool.get(DOMServices::s_XMLNamespacePrefixURI), m_namesStringPool.get(DOMServices::s_XMLNamespace), m_valuesStringPool.get(DOMServices::s_XMLNamespaceURI), theNewElement, m_nextIndexValue++); assert(theAttributeVector[theIndex] != 0); ++theIndex; } // Create the namespace "nodes" first... theIndex = createAttributes( theAttributeVector, attrs, theIndex, theNewElement, true); // Now, create the attribute "nodes"... theIndex = createAttributes( theAttributeVector, attrs, theIndex, theNewElement, false); return theNewElement; } XalanSourceTreeElement* XalanSourceTreeDocument::createElementNode( const XalanDOMChar* tagName, const AttributeListType& attrs, const PrefixResolver& thePrefixResolver, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling, bool fAddXMLNamespaceAttribute) { XalanSize_t theAttributeCount = attrs.getLength(); if (fAddXMLNamespaceAttribute == true) { if (hasXMLNamespaceAttribute(attrs) == true) { fAddXMLNamespaceAttribute = false; } else { ++theAttributeCount; } } XalanSourceTreeAttr** const theAttributeVector = theAttributeCount == 0 ? 0 : m_attributesVector.allocate(theAttributeCount); XalanSourceTreeElement* const theNewElement = createElementNode( tagName, theAttributeVector, theAttributeCount, theParentNode, thePreviousSibling, theNextSibling, thePrefixResolver); assert(theNewElement != 0); size_t theIndex = 0; if (fAddXMLNamespaceAttribute == true) { // The constructor parameters for AttrNS are: // // name // local name // namespace URI // prefix // value // owner element // index // theAttributeVector[theIndex] = m_attributeNSAllocator.create( m_namesStringPool.get(DOMServices::s_XMLNamespacePrefix), m_namesStringPool.get(DOMServices::s_XMLString), m_namesStringPool.get(DOMServices::s_XMLNamespacePrefixURI), m_namesStringPool.get(DOMServices::s_XMLNamespace), m_valuesStringPool.get(DOMServices::s_XMLNamespaceURI), theNewElement, m_nextIndexValue++); assert(theAttributeVector[theIndex] != 0); ++theIndex; } // Create the namespace "nodes" first... theIndex = createAttributes( theAttributeVector, attrs, theIndex, theNewElement, true, &thePrefixResolver); // Now, create the attribute "nodes"... theIndex = createAttributes( theAttributeVector, attrs, theIndex, theNewElement, false, &thePrefixResolver); return theNewElement; } inline const XalanDOMString& getElementNodePrefix( MemoryManager& theManager, const XalanDOMChar* qname, XalanDOMStringPool* theStringPool, XalanDOMString::size_type theLength, XalanDOMString::size_type theColonIndex) { if(theColonIndex == theLength) { return theStringPool->get(XalanDOMString( theManager)); } else { return theStringPool->get(qname, theColonIndex); } } XalanSourceTreeElement* XalanSourceTreeDocument::createElementNode( const XalanDOMChar* uri, const XalanDOMChar* localname, const XalanDOMChar* qname, const AttributesType& attrs, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling, bool fAddXMLNamespaceAttribute) { XalanSize_t theAttributeCount = attrs.getLength(); if (fAddXMLNamespaceAttribute == true) { if (hasXMLNamespaceAttribute(attrs) == true) { fAddXMLNamespaceAttribute = false; } else { ++theAttributeCount; } } XalanSourceTreeAttr** theAttributeVector = 0; XalanSourceTreeElement* theNewElement = 0; const XalanDOMString::size_type theColonIndex = indexOf(qname, XalanUnicode::charColon); const XalanDOMString::size_type theLength = length(qname); if (theAttributeCount == 0) { theNewElement = m_elementNANSAllocator.create( m_namesStringPool.get(qname), m_namesStringPool.get(localname), m_namesStringPool.get(uri), // This is the prefix... getElementNodePrefix( getMemoryManager() , qname, &m_namesStringPool, theLength, theColonIndex), this, theParentNode, thePreviousSibling, theNextSibling, m_nextIndexValue++); } else { theAttributeVector = m_attributesVector.allocate(theAttributeCount); theNewElement = m_elementANSAllocator.create( m_namesStringPool.get(qname), m_namesStringPool.get(localname), m_namesStringPool.get(uri), // This is the prefix... getElementNodePrefix( getMemoryManager() ,qname, &m_namesStringPool, theLength, theColonIndex), this, theAttributeVector, theAttributeCount, theParentNode, thePreviousSibling, theNextSibling, m_nextIndexValue++); createAttributes(attrs, theAttributeVector, theNewElement, fAddXMLNamespaceAttribute); } return theNewElement; } XalanSourceTreeElement* XalanSourceTreeDocument::createElementNode( const XalanDOMChar* name, const AttributesType& attrs, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling, bool fAddXMLNamespaceAttribute) { assert(indexOf(name, XalanUnicode::charColon) == length(name)); XalanSize_t theAttributeCount = attrs.getLength(); if (fAddXMLNamespaceAttribute == true) { if (hasXMLNamespaceAttribute(attrs) == true) { fAddXMLNamespaceAttribute = false; } else { ++theAttributeCount; } } XalanSourceTreeAttr** theAttributeVector = 0; XalanSourceTreeElement* theNewElement = 0; if (theAttributeCount == 0) { theNewElement = m_elementNAAllocator.create( m_namesStringPool.get(name), this, theParentNode, thePreviousSibling, theNextSibling, m_nextIndexValue++); } else { theAttributeVector = m_attributesVector.allocate(theAttributeCount); theNewElement = m_elementAAllocator.create( m_namesStringPool.get(name), this, theAttributeVector, theAttributeCount, theParentNode, thePreviousSibling, theNextSibling, m_nextIndexValue++); createAttributes(attrs, theAttributeVector, theNewElement, fAddXMLNamespaceAttribute); } return theNewElement; } XalanSourceTreeComment* XalanSourceTreeDocument::createCommentNode( const XalanDOMChar* data, XalanDOMString::size_type length, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling) { return m_commentAllocator.create( m_valuesStringPool.get(data, length), this, theParentNode, thePreviousSibling, theNextSibling, m_nextIndexValue++); } XalanSourceTreeProcessingInstruction* XalanSourceTreeDocument::createProcessingInstructionNode( const XalanDOMChar* target, const XalanDOMChar* data, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling) { assert(target != 0); assert(data != 0); return m_piAllocator.create( m_namesStringPool.get(target), m_valuesStringPool.get(data), this, theParentNode, thePreviousSibling, theNextSibling, m_nextIndexValue++); } inline const XalanDOMString& XalanSourceTreeDocument::getTextNodeString( const XalanDOMChar* chars, XalanDOMString::size_type length) { if (m_poolAllText == true) { return m_valuesStringPool.get(chars, length); } else { XalanDOMString* const theString = m_nonPooledStrings.create(chars, length); assert(theString != 0); return *theString; } } const XalanDOMString* XalanSourceTreeDocument::getNamespaceForPrefix( const XalanDOMChar* theName, const PrefixResolver& thePrefixResolver, XalanDOMString& thePrefix, bool fUseDefault, const XalanDOMChar** theLocalName) { const XalanDOMString::size_type theLength = length(theName); const XalanDOMString::size_type theColonIndex = indexOf(theName, XalanUnicode::charColon); if (theColonIndex != theLength) { // Get the prefix from theName... thePrefix.assign(theName, theColonIndex); assert(thePrefix.empty() == false); if (theLocalName != 0) { *theLocalName = theName + theColonIndex + 1; } return thePrefixResolver.getNamespaceForPrefix(thePrefix); } else { thePrefix.clear(); if (theLocalName != 0) { *theLocalName = theName; } if (fUseDefault == false) { return 0; } else { return thePrefixResolver.getNamespaceForPrefix(s_emptyString); } } } XalanSourceTreeText* XalanSourceTreeDocument::createTextNode( const XalanDOMChar* chars, XalanDOMString::size_type length, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling) { assert(chars != 0); if (isXMLWhitespace(chars, 0, length) == true) { const XalanDOMString& theString = m_valuesStringPool.get(chars, length); return m_textIWSAllocator.create( theString, theParentNode, thePreviousSibling, theNextSibling, m_nextIndexValue++); } else { return m_textAllocator.create( getTextNodeString(chars, length), theParentNode, thePreviousSibling, theNextSibling, m_nextIndexValue++); } } XalanSourceTreeText* XalanSourceTreeDocument::createTextIWSNode( const XalanDOMChar* chars, XalanDOMString::size_type length, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling) { assert(chars != 0); return m_textIWSAllocator.create( m_valuesStringPool.get(chars, length), theParentNode, thePreviousSibling, theNextSibling, m_nextIndexValue++); } void XalanSourceTreeDocument::unparsedEntityDeclaration( const XalanDOMChar* name, const XalanDOMChar* /* publicId */, const XalanDOMChar* systemId, const XalanDOMChar* /* notationName */) { m_unparsedEntityURIs[XalanDOMString(name, getMemoryManager())] = XalanDOMString(systemId, getMemoryManager()); } const XalanDOMString& XalanSourceTreeDocument::getUnparsedEntityURI(const XalanDOMString& theName) const { const UnparsedEntityURIMapType::const_iterator i = m_unparsedEntityURIs.find(theName); if (i != m_unparsedEntityURIs.end()) { return (*i).second; } else { return s_emptyString; } } XalanSourceTreeAttr* XalanSourceTreeDocument::createAttribute( const XalanDOMChar* theName, const XalanDOMChar* theValue, XalanSourceTreeElement* theOwnerElement, const PrefixResolver& thePrefixResolver) { // Get the namespace for the theName. Since attributes do not use // the default namespace, make sure we don't get it... const XalanDOMString* const theNamespace = getNamespaceForPrefix( theName, thePrefixResolver, m_stringBuffer, false); assert((theNamespace == 0 && m_stringBuffer.empty() == true) || (theNamespace != 0 && m_stringBuffer.empty() == false)); if (theNamespace == 0 || theNamespace->empty() == true) { return m_attributeAllocator.create( m_namesStringPool.get(theName), m_valuesStringPool.get(theValue), theOwnerElement, m_nextIndexValue++); } else { // There must be a prefix, so we don't have to check to see if // we got one... // The constructor parameters for AttrNS are: // // name // local name // namespace URI // prefix // value // owner element // index // return m_attributeNSAllocator.create( m_namesStringPool.get(theName), m_namesStringPool.get(theName + m_stringBuffer.length() + 1), m_namesStringPool.get(*theNamespace), // This is the prefix... m_namesStringPool.get(m_stringBuffer), m_valuesStringPool.get(theValue), theOwnerElement, m_nextIndexValue++); } } XalanSourceTreeElement* XalanSourceTreeDocument::createElementNode( const XalanDOMChar* theTagName, XalanSourceTreeAttr** theAttributeVector, XalanSize_t theAttributeCount, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling, const PrefixResolver& thePrefixResolver) { const XalanDOMString* const theNamespace = getNamespaceForPrefix( theTagName, thePrefixResolver, m_stringBuffer, true); if (theNamespace == 0 || theNamespace->empty() == true) { // the prefix was returned by getNamespaceForPrefix()... assert(m_stringBuffer.empty() == true); if (theAttributeCount == 0) { return m_elementNAAllocator.create( m_namesStringPool.get(theTagName), this, theParentNode, thePreviousSibling, theNextSibling, m_nextIndexValue++); } else { return m_elementAAllocator.create( m_namesStringPool.get(theTagName), this, theAttributeVector, theAttributeCount, theParentNode, thePreviousSibling, theNextSibling, m_nextIndexValue++); } } else { // We need figure out if there's a prefix on theTagName. If not, // the local name is the same as the tag name. Otherwise, we need // to remove the prefix and the ':' that separates them. If // m_stringBuffer is of length 0, there's no prefix. const XalanDOMString::size_type thePrefixLength = m_stringBuffer.length(); const XalanDOMChar* const theLocalName = thePrefixLength == 0 ? theTagName : theTagName + thePrefixLength + 1; // The constructor parameters for ElementNS are: // // tag name // local name // namespace URI // prefix // owner document // attributes // attribute count // parent element // previous sibling // next sibling // index // if (theAttributeCount == 0) { return m_elementNANSAllocator.create( m_namesStringPool.get(theTagName), m_namesStringPool.get(theLocalName), m_namesStringPool.get(*theNamespace), m_namesStringPool.get(m_stringBuffer), this, theParentNode, thePreviousSibling, theNextSibling, m_nextIndexValue++); } else { return m_elementANSAllocator.create( m_namesStringPool.get(theTagName), m_namesStringPool.get(theLocalName), m_namesStringPool.get(*theNamespace), m_namesStringPool.get(m_stringBuffer), this, theAttributeVector, theAttributeCount, theParentNode, thePreviousSibling, theNextSibling, m_nextIndexValue++); } } } size_t XalanSourceTreeDocument::createAttributes( XalanSourceTreeAttr** theAttributeVector, const AttributesType& theAttributes, size_t theStartIndex, XalanSourceTreeElement* theOwnerElement, bool fCreateNamespaces) { const XalanSize_t theSAXAttributeCount = theAttributes.getLength(); // Now, create the attributes... for (XalanSize_t i = 0; i < theSAXAttributeCount; ++i) { const XalanDOMChar* const theQName = theAttributes.getQName(i); assert(theQName != 0); const bool isNamespaceNode = startsWith(theQName, DOMServices::s_XMLNamespaceWithSeparator) == true || theQName == DOMServices::s_XMLNamespace; if ((isNamespaceNode == true && fCreateNamespaces == true) || (isNamespaceNode == false && fCreateNamespaces == false)) { const XalanDOMChar* const theValue = theAttributes.getValue(i); assert(theValue != 0); const XalanDOMChar* const theURI = theAttributes.getURI(i); assert(theURI != 0); if (length(theURI) == 0) { theAttributeVector[theStartIndex] = m_attributeAllocator.create( m_namesStringPool.get(theQName), m_valuesStringPool.get(theValue), theOwnerElement, m_nextIndexValue++); } else { const XalanDOMChar* const theLocalName = theAttributes.getLocalName(i); assert(theLocalName != 0); const XalanDOMString::size_type theColonIndex = indexOf(theQName, XalanUnicode::charColon); assert(theColonIndex != length(theQName)); // The constructor parameters for AttrNS are: // // name // local name // namespace URI // prefix // value // owner element // index // theAttributeVector[theStartIndex] = m_attributeNSAllocator.create( m_namesStringPool.get(theQName), m_namesStringPool.get(theLocalName), m_namesStringPool.get(theURI), // This is the prefix... m_namesStringPool.get(theQName, theColonIndex), m_valuesStringPool.get(theValue), theOwnerElement, m_nextIndexValue++); } // OK, now let's see if we have an ID attribute... const XalanDOMChar* theType = theAttributes.getType(i); // Look for an attribute that was declared as type ID in the DTD. // Note that we can just save a pointer to the attribute's XalanDOMString // data, since the attribute is guaranteed to exist for as long as the // document does. if (*theType == XalanUnicode::charLetter_I && *++theType == XalanUnicode::charLetter_D && *++theType == 0) { // The XPath says that if there are duplicate IDs, the first node is // always returned, so use insert(), rather than [] m_elementsByID.insert( ElementByIDMapType::value_type( theAttributeVector[theStartIndex]->getValue().c_str(), theOwnerElement)); } ++theStartIndex; } } return theStartIndex; } void XalanSourceTreeDocument::createAttributes( const AttributesType& theAttributes, XalanSourceTreeAttr** theAttributeVector, XalanSourceTreeElement* theOwnerElement, bool fAddXMLNamespaceAttribute) { size_t theIndex = 0; if (fAddXMLNamespaceAttribute == true) { // The constructor parameters for AttrNS are: // // name // local name // namespace URI // prefix // value // owner element // index // theAttributeVector[theIndex] = m_attributeNSAllocator.create( m_namesStringPool.get(DOMServices::s_XMLNamespacePrefix), m_namesStringPool.get(DOMServices::s_XMLString), m_namesStringPool.get(DOMServices::s_XMLNamespacePrefixURI), m_namesStringPool.get(DOMServices::s_XMLNamespace), m_valuesStringPool.get(DOMServices::s_XMLNamespaceURI), theOwnerElement, m_nextIndexValue++); ++theIndex; } // Create the namespace "nodes" first... theIndex = createAttributes( theAttributeVector, theAttributes, theIndex, theOwnerElement, true); // Now, create the attribute "nodes"... theIndex = createAttributes( theAttributeVector, theAttributes, theIndex, theOwnerElement, false); } void XalanSourceTreeDocument::appendChildNode(XalanSourceTreeComment* theChild) { XalanSourceTreeHelper::appendSibling(this, m_firstChild, theChild); } void XalanSourceTreeDocument::appendChildNode(XalanSourceTreeElement* theChild) { if (m_documentElement != 0) { throw XalanDOMException(XalanDOMException::HIERARCHY_REQUEST_ERR); } else { m_documentElement = theChild; XalanSourceTreeHelper::appendSibling(this, m_firstChild, theChild); } } void XalanSourceTreeDocument::appendChildNode(XalanSourceTreeProcessingInstruction* theChild) { XalanSourceTreeHelper::appendSibling(this, m_firstChild, theChild); } static XalanDOMString s_staticNameString(XalanMemMgrs::getDummyMemMgr()); const XalanDOMString& XalanSourceTreeDocument::s_nameString = s_staticNameString; static const XalanDOMChar s_document[] = { XalanUnicode::charNumberSign, XalanUnicode::charLetter_d, XalanUnicode::charLetter_o, XalanUnicode::charLetter_c, XalanUnicode::charLetter_u, XalanUnicode::charLetter_m, XalanUnicode::charLetter_e, XalanUnicode::charLetter_n, XalanUnicode::charLetter_t, 0 }; void XalanSourceTreeDocument::initialize(MemoryManager& theManager) { XalanDOMString tmpString(s_document, theManager); s_staticNameString.swap(tmpString); } void XalanSourceTreeDocument::terminate() { releaseMemory(s_staticNameString, XalanMemMgrs::getDummyMemMgr()); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeElementNANS.hpp0000664000175000000640000000610111731656103025044 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEELEMENTNANS_HEADER_GUARD_1357924680) #define XALANSOURCETREEELEMENTNANS_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeElementNANS : public XalanSourceTreeElementNA { public: /** * Constructor. * * @param theTagName The tag name of the element * @param theLocalName The local name of the attribute * @param theNamespaceURI The namespace URI of the attribute * @param thePrefix The namespace prefix of the attribute * @param theOwnerDocument The document that owns the instance * @param theParentNode The parent node, if any. * @param thePreviousSibling The previous sibling, if any. * @param theNextSibling The next sibling, if any. * @param theIndex The document-order index of the node. */ XalanSourceTreeElementNANS( MemoryManager& theManager, const XalanDOMString& theTagName, const XalanDOMString& theLocalName, const XalanDOMString& theNamespaceURI, const XalanDOMString& thePrefix, XalanSourceTreeDocument* theOwnerDocument, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0, IndexType theIndex = 0); virtual ~XalanSourceTreeElementNANS(); virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; private: // Not implemented... XalanSourceTreeElementNANS(const XalanSourceTreeElementNANS&); XalanSourceTreeElementNANS& operator=(const XalanSourceTreeElementNANS& theSource); bool operator==(const XalanSourceTreeElementNANS& theRHS) const; // Data members... const XalanDOMString& m_localName; const XalanDOMString& m_prefix; const XalanDOMString& m_namespaceURI; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANSOURCETREEELEMENTNANS_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeAttr.hpp0000664000175000000640000000773211731656103023720 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEATTR_HEADER_GUARD_1357924680) #define XALANSOURCETREEATTR_HEADER_GUARD_1357924680 #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanSourceTreeDocument; class XalanSourceTreeElement; /* * * * Base class for the Xalan source tree Attr interface. * * This class is experimental and subject to change!! */ class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeAttr : public XalanAttr { public: /** * Constructor. * * @param theName The name of the attribute * @param theValue The value of the attribute * @param theOwnerDocument The document that owns the instance * @param theOwnerElement The element that owns the instance * @param theIndex The document-order index of the node. */ XalanSourceTreeAttr( const XalanDOMString& theName, const XalanDOMString& theValue, XalanSourceTreeElement* theOwnerElement = 0, IndexType theIndex = 0); virtual ~XalanSourceTreeAttr(); // These interfaces are inherited from XalanNode... virtual const XalanDOMString& getNodeName() const; virtual const XalanDOMString& getNodeValue() const; virtual NodeType getNodeType() const; virtual XalanNode* getParentNode() const; virtual const XalanNodeList* getChildNodes() const; virtual XalanNode* getFirstChild() const; virtual XalanNode* getLastChild() const; virtual XalanNode* getPreviousSibling() const; virtual XalanNode* getNextSibling() const; virtual const XalanNamedNodeMap* getAttributes() const; virtual XalanDocument* getOwnerDocument() const; virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; virtual bool isIndexed() const; virtual IndexType getIndex() const; // These interfaces are inherited from XalanAttr... virtual const XalanDOMString& getName() const; virtual bool getSpecified() const; virtual const XalanDOMString& getValue() const; virtual XalanElement* getOwnerElement() const; // public interfaces not inherited from XalanAttr... void setOwnerElement(XalanSourceTreeElement* theElement) { m_ownerElement = theElement; } void setIndex(IndexType theIndex) { m_index = theIndex; } private: // Not defined... XalanSourceTreeAttr(const XalanSourceTreeAttr& theSource); XalanSourceTreeAttr& operator=(const XalanSourceTreeAttr& theSource); bool operator==(const XalanSourceTreeAttr& theRHS) const; // Data members... const XalanDOMString& m_name; const XalanDOMString& m_value; XalanSourceTreeElement* m_ownerElement; IndexType m_index; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANSOURCETREEATTR_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeHelper.cpp0000664000175000000640000003160111731656103024210 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanSourceTreeHelper.hpp" #include #include #include "XalanSourceTreeComment.hpp" #include "XalanSourceTreeDocument.hpp" #include "XalanSourceTreeDocumentFragment.hpp" #include "XalanSourceTreeElement.hpp" #include "XalanSourceTreeProcessingInstruction.hpp" #include "XalanSourceTreeText.hpp" XALAN_CPP_NAMESPACE_BEGIN inline XalanSourceTreeComment* castToComment(XalanNode* theNode) { return static_cast(theNode); } inline XalanSourceTreeElement* castToElement(XalanNode* theNode) { return static_cast(theNode); } inline XalanSourceTreeProcessingInstruction* castToProcessingInstruction(XalanNode* theNode) { return static_cast(theNode); } inline XalanSourceTreeText* castToText(XalanNode* theNode) { return static_cast(theNode); } template inline void doAppendSibling( XalanNode* theSibling, NodeType* theNewSibling) { assert(theSibling != 0); assert(theNewSibling != 0); XalanNode* const theLastSibling = XalanSourceTreeHelper::getLastSibling(theSibling); switch(theLastSibling->getNodeType()) { case XalanNode::COMMENT_NODE: castToComment(theLastSibling)->appendSiblingNode(theNewSibling); break; case XalanNode::ELEMENT_NODE: castToElement(theLastSibling)->appendSiblingNode(theNewSibling); break; case XalanNode::PROCESSING_INSTRUCTION_NODE: castToProcessingInstruction(theLastSibling)->appendSiblingNode(theNewSibling); break; case XalanNode::TEXT_NODE: castToText(theLastSibling)->appendSiblingNode(theNewSibling); break; default: throw XalanDOMException(XalanDOMException::HIERARCHY_REQUEST_ERR); break; } } template inline void doAppendToLastSibling( XalanNode* theLastSibling, NodeType* theNewSibling) { assert(theLastSibling != 0); assert(theNewSibling != 0); assert(theLastSibling->getNextSibling() == 0); switch(theLastSibling->getNodeType()) { case XalanNode::COMMENT_NODE: castToComment(theLastSibling)->appendSiblingNode(theNewSibling); break; case XalanNode::ELEMENT_NODE: castToElement(theLastSibling)->appendSiblingNode(theNewSibling); break; case XalanNode::PROCESSING_INSTRUCTION_NODE: castToProcessingInstruction(theLastSibling)->appendSiblingNode(theNewSibling); break; case XalanNode::TEXT_NODE: castToText(theLastSibling)->appendSiblingNode(theNewSibling); break; default: throw XalanDOMException(XalanDOMException::HIERARCHY_REQUEST_ERR); break; } } template inline void append( NodeType1* thePreviousSibling, XalanNode*& theNextSiblingSlot, NodeType2* theNewSibling) { if (theNextSiblingSlot == 0) { theNextSiblingSlot = theNewSibling; if (thePreviousSibling != 0) { theNewSibling->setPreviousSibling(thePreviousSibling); } } else { doAppendSibling(theNextSiblingSlot, theNewSibling); } } template inline void append( XalanNode*& theNextSiblingSlot, NodeType* theNewSibling) { if (theNextSiblingSlot == 0) { theNextSiblingSlot = theNewSibling; } else { doAppendSibling(theNextSiblingSlot, theNewSibling); } } template inline void doAppendSibling( NodeType* thePreviousSibling, XalanNode*& theNextSiblingSlot, XalanNode* theNewSibling) { assert(theNewSibling != 0); assert(theNextSiblingSlot == 0 || theNextSiblingSlot->getParentNode() == theNewSibling->getParentNode()); switch(theNewSibling->getNodeType()) { case XalanNode::COMMENT_NODE: append(thePreviousSibling, theNextSiblingSlot, castToComment(theNewSibling)); break; case XalanNode::ELEMENT_NODE: append(thePreviousSibling, theNextSiblingSlot, castToElement(theNewSibling)); break; case XalanNode::PROCESSING_INSTRUCTION_NODE: append(thePreviousSibling, theNextSiblingSlot, castToProcessingInstruction(theNewSibling)); break; case XalanNode::TEXT_NODE: append(thePreviousSibling, theNextSiblingSlot, castToText(theNewSibling)); break; default: throw XalanDOMException(XalanDOMException::HIERARCHY_REQUEST_ERR); break; } } void XalanSourceTreeHelper::appendSibling( XalanSourceTreeDocument* theDocument, XalanNode*& theNextSiblingSlot, XalanNode* theNewSibling) { if (theNewSibling->getOwnerDocument() != theDocument) { throw XalanDOMException(XalanDOMException::WRONG_DOCUMENT_ERR); } else { switch(theNewSibling->getNodeType()) { case XalanNode::COMMENT_NODE: append(theNextSiblingSlot, castToComment(theNewSibling)); break; case XalanNode::ELEMENT_NODE: append(theNextSiblingSlot, castToElement(theNewSibling)); break; case XalanNode::PROCESSING_INSTRUCTION_NODE: append(theNextSiblingSlot, castToProcessingInstruction(theNewSibling)); break; default: throw XalanDOMException(XalanDOMException::HIERARCHY_REQUEST_ERR); break; } } } void XalanSourceTreeHelper::appendSibling( XalanSourceTreeComment* theNode, XalanNode*& theNextSiblingSlot, XalanNode* theNewSibling) { doAppendSibling(theNode, theNextSiblingSlot, theNewSibling); } void XalanSourceTreeHelper::appendSibling( XalanSourceTreeElement* theNode, XalanNode*& theNextSiblingSlot, XalanNode* theNewSibling) { doAppendSibling(theNode, theNextSiblingSlot, theNewSibling); } void XalanSourceTreeHelper::appendSibling( XalanSourceTreeProcessingInstruction* theNode, XalanNode*& theNextSiblingSlot, XalanNode* theNewSibling) { doAppendSibling(theNode, theNextSiblingSlot, theNewSibling); } void XalanSourceTreeHelper::appendSibling( XalanSourceTreeText* theNode, XalanNode*& theNextSiblingSlot, XalanNode* theNewSibling) { doAppendSibling(theNode, theNextSiblingSlot, theNewSibling); } void XalanSourceTreeHelper::appendSibling( XalanNode* theLastSibling, XalanSourceTreeComment* theNewLastSibling) { doAppendToLastSibling(theLastSibling, theNewLastSibling); } void XalanSourceTreeHelper::appendSibling( XalanNode* theLastSibling, XalanSourceTreeElement* theNewLastSibling) { doAppendToLastSibling(theLastSibling, theNewLastSibling); } void XalanSourceTreeHelper::appendSibling( XalanNode* theLastSibling, XalanSourceTreeProcessingInstruction* theNewLastSibling) { doAppendToLastSibling(theLastSibling, theNewLastSibling); } void XalanSourceTreeHelper::appendSibling( XalanNode* theLastSibling, XalanSourceTreeText* theNewLastSibling) { doAppendToLastSibling(theLastSibling, theNewLastSibling); } XalanNode* doGetLastSibling(XalanNode* theNode) { if (theNode == 0) { return 0; } else { XalanNode* theNextSibling = theNode->getNextSibling(); while(theNextSibling != 0) { theNode = theNextSibling; theNextSibling = theNode->getNextSibling(); } return theNode; } } template void doAppendSiblingToChild( XalanSourceTreeElement* theOwnerElement, XalanNode*& theFirstChildSlot, NodeType* theNewSibling) { assert(theOwnerElement != 0); assert(theNewSibling != 0); if (theNewSibling->getParentNode() != theOwnerElement) { theNewSibling->setParent(theOwnerElement); } if (theFirstChildSlot == 0) { append(theFirstChildSlot, theNewSibling); } else { XalanNode* const theLastSibling = doGetLastSibling(theFirstChildSlot); doAppendSibling(theLastSibling, theNewSibling); } } template void doAppendSiblingToChild( XalanSourceTreeDocumentFragment* theOwnerDocumentFragment, XalanNode*& theFirstChildSlot, NodeType* theNewSibling) { assert(theOwnerDocumentFragment != 0); assert(theNewSibling != 0); if (theNewSibling->getParentNode() != theOwnerDocumentFragment) { theNewSibling->setParent(theOwnerDocumentFragment); } if (theFirstChildSlot == 0) { append(theFirstChildSlot, theNewSibling); } else { XalanNode* const theLastSibling = doGetLastSibling(theFirstChildSlot); doAppendSibling(theLastSibling, theNewSibling); } } void XalanSourceTreeHelper::appendSiblingToChild( XalanSourceTreeElement* theOwnerElement, XalanNode*& theFirstChildSlot, XalanSourceTreeComment* theNewSibling) { doAppendSiblingToChild(theOwnerElement, theFirstChildSlot, theNewSibling); } void XalanSourceTreeHelper::appendSiblingToChild( XalanSourceTreeElement* theOwnerElement, XalanNode*& theFirstChildSlot, XalanSourceTreeElement* theNewSibling) { doAppendSiblingToChild(theOwnerElement, theFirstChildSlot, theNewSibling); } void XalanSourceTreeHelper::appendSiblingToChild( XalanSourceTreeElement* theOwnerElement, XalanNode*& theFirstChildSlot, XalanSourceTreeProcessingInstruction* theNewSibling) { doAppendSiblingToChild(theOwnerElement, theFirstChildSlot, theNewSibling); } void XalanSourceTreeHelper::appendSiblingToChild( XalanSourceTreeElement* theOwnerElement, XalanNode*& theFirstChildSlot, XalanSourceTreeText* theNewSibling) { doAppendSiblingToChild(theOwnerElement, theFirstChildSlot, theNewSibling); } void XalanSourceTreeHelper::appendSiblingToChild( XalanSourceTreeDocumentFragment* theOwnerDocumentFragment, XalanNode*& theFirstChildSlot, XalanSourceTreeComment* theNewSibling) { doAppendSiblingToChild(theOwnerDocumentFragment, theFirstChildSlot, theNewSibling); } void XalanSourceTreeHelper::appendSiblingToChild( XalanSourceTreeDocumentFragment* theOwnerDocumentFragment, XalanNode*& theFirstChildSlot, XalanSourceTreeElement* theNewSibling) { doAppendSiblingToChild(theOwnerDocumentFragment, theFirstChildSlot, theNewSibling); } void XalanSourceTreeHelper::appendSiblingToChild( XalanSourceTreeDocumentFragment* theOwnerDocumentFragment, XalanNode*& theFirstChildSlot, XalanSourceTreeProcessingInstruction* theNewSibling) { doAppendSiblingToChild(theOwnerDocumentFragment, theFirstChildSlot, theNewSibling); } void XalanSourceTreeHelper::appendSiblingToChild( XalanSourceTreeDocumentFragment* theOwnerDocumentFragment, XalanNode*& theFirstChildSlot, XalanSourceTreeText* theNewSibling) { doAppendSiblingToChild(theOwnerDocumentFragment, theFirstChildSlot, theNewSibling); } XalanNode* XalanSourceTreeHelper::getLastSibling(XalanNode* theNode) { return doGetLastSibling(theNode); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeParserLiaison.hpp0000664000175000000640000002660111731656103025555 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEPARSERLIAISON_HEADER_GUARD_1357924680) #define XALANSOURCETREEPARSERLIAISON_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include XALAN_DECLARE_XERCES_CLASS(ContentHandler) XALAN_DECLARE_XERCES_CLASS(DTDHandler) XALAN_DECLARE_XERCES_CLASS(LexicalHandler) XALAN_DECLARE_XERCES_CLASS(SAX2XMLReaderImpl) XALAN_CPP_NAMESPACE_BEGIN class XalanSourceTreeDOMSupport; class XalanSourceTreeDocument; /* typedef XERCES_CPP_NAMESPACE_QUALIFIER ContentHandler ContentHandlerType; typedef XERCES_CPP_NAMESPACE_QUALIFIER DTDHandler DTDHandlerType; typedef XERCES_CPP_NAMESPACE_QUALIFIER LexicalHandler LexicalHandlerType; typedef XERCES_CPP_NAMESPACE_QUALIFIER SAX2XMLReader SAX2XMLReaderType; */ XALAN_USING_XERCES(ContentHandler) XALAN_USING_XERCES(DTDHandler) XALAN_USING_XERCES(LexicalHandler) XALAN_USING_XERCES(SAX2XMLReaderImpl) class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeParserLiaison : public XMLParserLiaison { public: /** * Construct a XalanSourceTreeParserLiaison instance. * * @param theSupport instance of DOMSupport object * * @deprecated This constructor is deprecated. Use the next constructor instead. */ XalanSourceTreeParserLiaison( XalanSourceTreeDOMSupport& theSupport, MemoryManager& theManager XALAN_DEFAULT_MEMMGR); /** * Construct a XalanSourceTreeParserLiaison instance. */ XalanSourceTreeParserLiaison(MemoryManager& theManager XALAN_DEFAULT_MEMMGR); MemoryManager& getMemoryManager() { return m_documentMap.getMemoryManager(); } virtual ~XalanSourceTreeParserLiaison(); /** * Get the value of the flag which determines if the data of all * text nodes are pooled, or just whitespace text nodes. * * @return true if the data of all text nodes are pooled, false otherwise. */ bool getPoolAllText() const { return m_poolAllText; } /** * Set the value of the flag which determines if the data of all * text nodes are pooled, or just whitespace text nodes. * * @param fValue The new value for the flag. */ void setPoolAllText(bool fValue) { m_poolAllText = fValue; } // These interfaces are inherited from XMLParserLiaison... virtual void reset(); virtual ExecutionContext* getExecutionContext() const; virtual void setExecutionContext(ExecutionContext& theContext); virtual XalanDocument* parseXMLStream( const InputSource& reader, const XalanDOMString& identifier = XalanDOMString(XalanMemMgrs::getDummyMemMgr())); virtual void parseXMLStream( const InputSource& inputSource, DocumentHandler& handler, const XalanDOMString& identifier = XalanDOMString(XalanMemMgrs::getDummyMemMgr())); virtual void destroyDocument(XalanDocument* theDocument); virtual int getIndent() const; virtual void setIndent(int i); virtual bool getUseValidation() const; virtual void setUseValidation(bool b); virtual const XalanDOMString& getParserDescription(XalanDOMString& theResult) const; virtual EntityResolver* getEntityResolver() const; virtual void setEntityResolver(EntityResolver* resolver); virtual XMLEntityResolver* getXMLEntityResolver() const; virtual void setXMLEntityResolver(XMLEntityResolver* resolver); virtual ErrorHandler* getErrorHandler() const; virtual void setErrorHandler(ErrorHandler* handler); // These interfaces are new to XalanSourceTreeParserLiaison... /** * Parse using a SAX2 ContentHandler, DTDHandler, and LexicalHandler. * * @param theInputSource The input source for the parser * @param theContentHandler The ContentHandler to use * @param theDTDHandler The DTDHandler to use. May be null. * @param theLexicalHandler The LexicalHandler to use. May be null. * @param identifier Used for error reporting only. */ virtual void parseXMLStream( const InputSource& theInputSource, ContentHandler& theContentHandler, const XalanDOMString& theIdentifier, DTDHandler* theDTDHandler = 0, LexicalHandler* theLexicalHandler = 0); virtual DOMDocument_Type* createDOMFactory(); virtual void destroyDocument(DOMDocument_Type* theDocument); /** Get the 'include ignorable whitespace' flag. * * This method returns the state of the parser's include ignorable * whitespace flag. * * @return 'true' if the include ignorable whitespace flag is set on * the parser, 'false' otherwise. * * @see #setIncludeIgnorableWhitespace */ virtual bool getIncludeIgnorableWhitespace() const; /** Set the 'include ignorable whitespace' flag * * This method allows the user to specify whether a validating parser * should include ignorable whitespaces as text nodes. It has no effect * on non-validating parsers which always include non-markup text. *

    When set to true (also the default), ignorable whitespaces will be * added to the DOM tree as text nodes. The method * DOM_Text::isWhitespace() will return true for those text * nodes only. *

    When set to false, all ignorable whitespace will be discarded and * no text node is added to the DOM tree. Note: applications intended * to process the "xml:space" attribute should not set this flag to false. * * @param include The new state of the include ignorable whitespace * flag. * * @see #getIncludeIgnorableWhitespace */ virtual void setIncludeIgnorableWhitespace(bool include); /** * This method returns the state of the parser's namespace * handling capability. * * @return true, if the parser is currently configured to * understand namespaces, false otherwise. * * @see #setDoNamespaces */ virtual bool getDoNamespaces() const; /** * This method allows users to enable or disable the parser's * namespace processing. When set to true, parser starts enforcing * all the constraints / rules specified by the NameSpace * specification. * *

    The parser's default state is: false.

    * *

    This flag is ignored by the underlying scanner if the installed * validator indicates that namespace constraints should be * enforced.

    * * @param newState The value specifying whether NameSpace rules should * be enforced or not. * * @see #getDoNamespaces */ virtual void setDoNamespaces(bool newState); /** * This method returns the state of the parser's * exit-on-First-Fatal-Error flag. * * @return true, if the parser is currently configured to * exit on the first fatal error, false otherwise. * * @see #setExitOnFirstFatalError */ virtual bool getExitOnFirstFatalError() const; /** * This method allows users to set the parser's behaviour when it * encounters the first fatal error. If set to true, the parser * will exit at the first fatal error. If false, then it will * report the error and continue processing. * *

    The default value is 'true' and the parser exits on the * first fatal error.

    * * @param newState The value specifying whether the parser should * continue or exit when it encounters the first * fatal error. * * @see #getExitOnFirstFatalError */ virtual void setExitOnFirstFatalError(bool newState); /** * This method returns the location for an external schema document * for parsing. * * @return A string representing the location of the external schema document */ virtual const XalanDOMChar* getExternalSchemaLocation() const; /** * This method sets the location for an external schema document * for parsing. * * @param location A string representing the location of the external schema document */ virtual void setExternalSchemaLocation(const XalanDOMChar* location); /** * This method returns the location for an external schema document * for parsing. * * @return A string representing the location of the external schema document */ virtual const XalanDOMChar* getExternalNoNamespaceSchemaLocation() const; /** * This method sets the location for an external schema document * for parsing. * * @param location A string representing the location of the external schema document */ virtual void setExternalNoNamespaceSchemaLocation(const XalanDOMChar* location); /** * Map a pointer to a XalanDocument instance to its implementation * class pointer. Normally, you should have no reason for doing * this. The liaison will return a null pointer if it did not * create the instance passed. * * @param theDocument A pointer to a XalanDocument instance. * @return A pointer to the XalanSourceTreeDocument instance. */ XalanSourceTreeDocument* mapDocument(const XalanDocument* theDocument) const; /** * Create a XalanSourceTreeDocument instance. * * @return A pointer to the XalanSourceTreeDocument instance. */ XalanSourceTreeDocument* createXalanSourceTreeDocument(); typedef XalanMap DocumentMapType; protected: virtual SAX2XMLReaderImpl* createReader(); private: void ensureReader(); // Not implemented... XalanSourceTreeParserLiaison(const XalanSourceTreeParserLiaison&); XalanSourceTreeParserLiaison& operator=(const XalanSourceTreeParserLiaison&); // Data members... XercesParserLiaison m_xercesParserLiaison; DocumentMapType m_documentMap; bool m_poolAllText; SAX2XMLReaderImpl* m_xmlReader; }; XALAN_CPP_NAMESPACE_END #endif // XALANSOURCETREEPARSERLIAISON_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeDocument.hpp0000664000175000000640000004214011731656103024554 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEDOCUMENT_HEADER_GUARD_1357924680) #define XALANSOURCETREEDOCUMENT_HEADER_GUARD_1357924680 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XALAN_DECLARE_XERCES_CLASS(Attributes) XALAN_DECLARE_XERCES_CLASS(AttributeList) XALAN_CPP_NAMESPACE_BEGIN typedef XERCES_CPP_NAMESPACE_QUALIFIER Attributes AttributesType; typedef XERCES_CPP_NAMESPACE_QUALIFIER AttributeList AttributeListType; class PrefixResolver; class XalanSourceTreeAttr; class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeDocument : public XalanDocument { public: typedef XalanArrayAllocator AttributesArrayAllocatorType; typedef XalanMap< const XalanDOMChar*, XalanSourceTreeElement*> ElementByIDMapType; typedef XalanMap< XalanDOMString, XalanDOMString> UnparsedEntityURIMapType; /** * Perform static initialization. See class XalanSourceTreeInit. */ static void initialize(MemoryManager& theManager); /** * Perform static shut down. See class XalanSourceTreeInit. */ static void terminate(); enum { eDefaultAttributeAllocatorBlockSize = 100, eDefaultAttributeNSAllocatorBlockSize = 50, eDefaultCommentAllocatorBlockSize = 10, eDefaultElementAllocatorBlockSize = 100, eDefaultElementNSAllocatorBlockSize = 100, eDefaultPIAllocatorBlockSize = 10, eDefaultTextAllocatorBlockSize = 100, eDefaultTextIWSAllocatorBlockSize = 100, eDefaultNamesStringPoolBlockSize = XalanDOMStringPool::eDefaultBlockSize, eDefaultNamesStringPoolBucketCount = XalanDOMStringPool::eDefaultBucketCount, eDefaultNamesStringPoolBucketSize = XalanDOMStringPool::eDefaultBucketSize, eDefaultValuesStringPoolBlockSize = XalanDOMStringPool::eDefaultBlockSize, eDefaultValuesStringPoolBucketCount = 997, eDefaultValuesStringPoolBucketSize = XalanDOMStringPool::eDefaultBucketSize }; typedef XalanSourceTreeAttributeAllocator::size_type allocator_size_type; typedef XalanDOMStringPool::block_size_type block_size_type; typedef XalanDOMStringPool::bucket_count_type bucket_count_type; typedef XalanDOMStringPool::bucket_size_type bucket_size_type; /** * * Constructor for XalanSourceTreeDocument. * * @param fPoolAllText If false, text node data that is not whitespace will not be pooled. * @param theNamesStringPoolBlockSize The block size for allocating strings in the name pool * @param theNamesStringPoolBucketCount The number of buckets for allocating strings in the name pool * @param theNamesStringPoolBucketSize The bucket size for allocating strings in the name pool * @param theValuesStringPoolBlockSize The block size for allocating strings in the values pool * @param theValuesStringPoolBucketCount The number of buckets for allocating strings in the values pool * @param theValuesStringPoolBucketSize The bucket size for allocating strings in the values pool * */ XalanSourceTreeDocument( MemoryManager& theManager, bool fPoolAllText = s_poolAllTextNodes, block_size_type theNamesStringPoolBlockSize = eDefaultNamesStringPoolBlockSize, bucket_count_type theNamesStringPoolBucketCount = eDefaultNamesStringPoolBucketCount, bucket_size_type theNamesStringPoolBucketSize = eDefaultNamesStringPoolBucketSize, block_size_type theValuesStringPoolBlockSize = eDefaultValuesStringPoolBlockSize, bucket_count_type theValuesStringPoolBucketCount = eDefaultValuesStringPoolBucketCount, bucket_size_type theValuesStringPoolBucketSize = eDefaultValuesStringPoolBucketSize); static XalanSourceTreeDocument* create( MemoryManager& theManager, bool fPoolAllText = s_poolAllTextNodes, block_size_type theNamesStringPoolBlockSize = eDefaultNamesStringPoolBlockSize, bucket_count_type theNamesStringPoolBucketCount = eDefaultNamesStringPoolBucketCount, bucket_size_type theNamesStringPoolBucketSize = eDefaultNamesStringPoolBucketSize, block_size_type theValuesStringPoolBlockSize = eDefaultValuesStringPoolBlockSize, bucket_count_type theValuesStringPoolBucketCount = eDefaultValuesStringPoolBucketCount, bucket_size_type theValuesStringPoolBucketSize = eDefaultValuesStringPoolBucketSize); /** * * Constructor for XalanSourceTreeDocument. * * @param theAttributeBlockSize The block size for allocating attribute nodes * @param theAttributeNSBlockSize The block size for allocating attribute NS nodes * @param theCommentBlockSize The block size for allocating comment nodes * @param theElementBlockSize The block size for allocating element nodes * @param theElementNSBlockSize The block size for allocating element nodes * @param theTextBlockSize The block size for allocating text nodes, * @param theTextIWSBlockSize The block size for allocating text IWS nodes, * @param fPoolAllText If false, text node data that is not whitespace will not be pooled. * */ XalanSourceTreeDocument( MemoryManager& theManager, allocator_size_type theAttributeBlockSize, allocator_size_type theAttributeNSBlockSize, allocator_size_type theCommentBlockSize, allocator_size_type theElementBlockSize, allocator_size_type theElementNSBlockSize, allocator_size_type thePIBlockSize, allocator_size_type theTextBlockSize, allocator_size_type theTextIWSBlockSize, bool fPoolAllText = s_poolAllTextNodes); virtual ~XalanSourceTreeDocument(); // These interfaces are inherited from XalanNode... virtual const XalanDOMString& getNodeName() const; virtual const XalanDOMString& getNodeValue() const; virtual NodeType getNodeType() const; virtual XalanNode* getParentNode() const; virtual const XalanNodeList* getChildNodes() const; virtual XalanNode* getFirstChild() const; virtual XalanNode* getLastChild() const; virtual XalanNode* getPreviousSibling() const; virtual XalanNode* getNextSibling() const; virtual const XalanNamedNodeMap* getAttributes() const; virtual XalanDocument* getOwnerDocument() const; virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; virtual bool isIndexed() const; virtual IndexType getIndex() const; virtual XalanElement* getDocumentElement() const; virtual XalanElement* getElementById(const XalanDOMString& elementId) const; // Interfaces not inherited from XalanDocument... static bool getPoolAllTextNodes() { return s_poolAllTextNodes; } static void setPoolAllTextNodes(bool fPool) { s_poolAllTextNodes = fPool; } XalanSourceTreeElement* createElementNode( const XalanDOMChar* name, const AttributeListType& attrs, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0, bool fAddXMLNamespaceAttribute = false); XalanSourceTreeElement* createElementNode( const XalanDOMChar* uri, const XalanDOMChar* localname, const XalanDOMChar* qname, const AttributesType& attrs, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0, bool fAddXMLNamespaceAttribute = false); XalanSourceTreeElement* createElementNode( const XalanDOMChar* tagName, const AttributeListType& attrs, const PrefixResolver& thePrefixResolver, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0, bool fAddXMLNamespaceAttribute = false); XalanSourceTreeElement* createElementNode( const XalanDOMChar* name, const AttributesType& attrs, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0, bool fAddXMLNamespaceAttribute = false); XalanSourceTreeComment* createCommentNode( const XalanDOMChar* data, XalanDOMString::size_type length, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0); XalanSourceTreeProcessingInstruction* createProcessingInstructionNode( const XalanDOMChar* target, const XalanDOMChar* data, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0); XalanSourceTreeText* createTextNode( const XalanDOMChar* chars, XalanDOMString::size_type length, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0); XalanSourceTreeText* createTextIWSNode( const XalanDOMChar* chars, XalanDOMString::size_type length, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0); void unparsedEntityDeclaration( const XalanDOMChar* name, const XalanDOMChar* publicId, const XalanDOMChar* systemId, const XalanDOMChar* notationName); const XalanDOMString& getUnparsedEntityURI(const XalanDOMString& theName) const; // Child node setters... void appendChildNode(XalanSourceTreeComment* theChild); void appendChildNode(XalanSourceTreeElement* theChild); void appendChildNode(XalanSourceTreeProcessingInstruction* theChild); private: MemoryManager& getMemoryManager() { return m_stringBuffer.getMemoryManager(); } // Helper functions... XalanSourceTreeAttr* createAttribute( const XalanDOMChar* theName, const XalanDOMChar* theValue, XalanSourceTreeElement* theOwnerElement, const PrefixResolver& thePrefixResolver); XalanSourceTreeAttr* createAttribute( const XalanDOMChar* theName, const XalanDOMChar* theValue, XalanSourceTreeElement* theOwnerElement); size_t createAttributes( XalanSourceTreeAttr** theAttributeVector, const AttributeListType& attrs, size_t theStartIndex, XalanSourceTreeElement* theOwnerElement, bool fCreateNamespaces, const PrefixResolver* thePrefixResolver = 0); XalanSourceTreeElement* createElementNode( const XalanDOMChar* theTagName, XalanSourceTreeAttr** theAttributeVector, XalanSize_t theAttributeCount, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling, const PrefixResolver& thePrefixResolver); size_t createAttributes( XalanSourceTreeAttr** theAttributeVector, const AttributesType& theAttributes, size_t theStartIndex, XalanSourceTreeElement* theOwnerElement, bool fCreateNamespaces); void createAttributes( const AttributesType& theAttributes, XalanSourceTreeAttr** theAttributeVector, XalanSourceTreeElement* theOwnerElement, bool fAddXMLNamespaceAttribute); const XalanDOMString& getTextNodeString( const XalanDOMChar* chars, XalanDOMString::size_type length); const XalanDOMString* getNamespaceForPrefix( const XalanDOMChar* theName, const PrefixResolver& thePrefixResolver, XalanDOMString& thePrefix, bool fUseDefault, const XalanDOMChar** theLocalName = 0); // Not implemented... XalanSourceTreeDocument(const XalanSourceTreeDocument& theSource); XalanSourceTreeDocument& operator=(const XalanSourceTreeDocument& theRHS); bool operator==(const XalanSourceTreeDocument& theRHS) const; // Data members... XalanNode* m_firstChild; XalanSourceTreeElement* m_documentElement; XalanSourceTreeAttributeAllocator m_attributeAllocator; XalanSourceTreeAttributeNSAllocator m_attributeNSAllocator; XalanSourceTreeCommentAllocator m_commentAllocator; XalanSourceTreeElementAAllocator m_elementAAllocator; XalanSourceTreeElementANSAllocator m_elementANSAllocator; XalanSourceTreeElementNAAllocator m_elementNAAllocator; XalanSourceTreeElementNANSAllocator m_elementNANSAllocator; XalanSourceTreeProcessingInstructionAllocator m_piAllocator; XalanSourceTreeTextAllocator m_textAllocator; XalanSourceTreeTextIWSAllocator m_textIWSAllocator; XalanDOMStringPool m_namesStringPool; XalanDOMStringPool m_valuesStringPool; AttributesArrayAllocatorType m_attributesVector; IndexType m_nextIndexValue; const bool m_poolAllText; ElementByIDMapType m_elementsByID; UnparsedEntityURIMapType m_unparsedEntityURIs; XalanDOMStringAllocator m_nonPooledStrings; XalanDOMString m_stringBuffer; static const XalanDOMString& s_nameString; static bool s_poolAllTextNodes; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANSOURCETREEDOCUMENT_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeHelper.hpp0000664000175000000640000001217211731656103024217 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEHELPER_HEADER_GUARD_1357924680) #define XALANSOURCETREEHELPER_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanNode; class XalanSourceTreeComment; class XalanSourceTreeDocument; class XalanSourceTreeDocumentFragment; class XalanSourceTreeElement; class XalanSourceTreeProcessingInstruction; class XalanSourceTreeText; class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeHelper { public: static XalanNode* getLastSibling(XalanNode* theNode); static void appendSibling( XalanSourceTreeDocument* theDocument, XalanNode*& theNextSiblingSlot, XalanNode* theNewSibling); static void appendSibling( XalanSourceTreeComment* theNode, XalanNode*& theNextSiblingSlot, XalanNode* theNewSibling); static void appendSibling( XalanSourceTreeElement* theNode, XalanNode*& theNextSiblingSlot, XalanNode* theNewSibling); static void appendSibling( XalanSourceTreeProcessingInstruction* theNode, XalanNode*& theNextSiblingSlot, XalanNode* theNewSibling); static void appendSibling( XalanSourceTreeText* theNode, XalanNode*& theNextSiblingSlot, XalanNode* theNewSibling); // New appendSibling interfaces... static void appendSibling( XalanNode* theLastSibling, XalanSourceTreeComment* theNewLastSibling); static void appendSibling( XalanNode* theLastSibling, XalanSourceTreeElement* theNewLastSibling); static void appendSibling( XalanNode* theLastSibling, XalanSourceTreeProcessingInstruction* theNewLastSibling); static void appendSibling( XalanNode* theLastSibling, XalanSourceTreeText* theNewLastSibling); static void appendSiblingToChild( XalanSourceTreeElement* theOwnerElement, XalanNode*& theFirstChildSlot, XalanSourceTreeComment* theNewSibling); static void appendSiblingToChild( XalanSourceTreeElement* theOwnerElement, XalanNode*& theFirstChildSlot, XalanSourceTreeElement* theNewSibling); static void appendSiblingToChild( XalanSourceTreeElement* theOwnerElement, XalanNode*& theFirstChildSlot, XalanSourceTreeProcessingInstruction* theNewSibling); static void appendSiblingToChild( XalanSourceTreeElement* theOwnerElement, XalanNode*& theFirstChildSlot, XalanSourceTreeText* theNewSibling); static void appendSiblingToChild( XalanSourceTreeDocumentFragment* theOwnerDocumentFragment, XalanNode*& theFirstChildSlot, XalanSourceTreeComment* theNewSibling); static void appendSiblingToChild( XalanSourceTreeDocumentFragment* theOwnerDocumentFragment, XalanNode*& theFirstChildSlot, XalanSourceTreeElement* theNewSibling); static void appendSiblingToChild( XalanSourceTreeDocumentFragment* theOwnerDocumentFragment, XalanNode*& theFirstChildSlot, XalanSourceTreeProcessingInstruction* theNewSibling); static void appendSiblingToChild( XalanSourceTreeDocumentFragment* theOwnerDocumentFragment, XalanNode*& theFirstChildSlot, XalanSourceTreeText* theNewSibling); private: // Not implemented... XalanSourceTreeHelper(); XalanSourceTreeHelper(const XalanSourceTreeHelper&); }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANSOURCETREEHELPER_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeElement.cpp0000664000175000000640000001413111731656103024361 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanSourceTreeElement.hpp" #include #include #include "XalanSourceTreeAttr.hpp" #include "XalanSourceTreeComment.hpp" #include "XalanSourceTreeDocument.hpp" #include "XalanSourceTreeDocumentFragment.hpp" #include "XalanSourceTreeProcessingInstruction.hpp" #include "XalanSourceTreeText.hpp" #include "XalanSourceTreeHelper.hpp" XALAN_CPP_NAMESPACE_BEGIN const XalanDOMString XalanSourceTreeElement::s_emptyString(XalanMemMgrs::getDummyMemMgr()); XalanSourceTreeElement::XalanSourceTreeElement( MemoryManager& theManager, const XalanDOMString& theTagName, XalanSourceTreeDocument* theOwnerDocument, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling, IndexType theIndex) : XalanElement(), m_tagName(theTagName), m_memoryManager(theManager), m_ownerDocument(theOwnerDocument), m_parentNode(theParentNode), m_previousSibling(thePreviousSibling), m_nextSibling(theNextSibling), m_firstChild(0), m_index(theIndex) { } XalanSourceTreeElement::~XalanSourceTreeElement() { } /* XalanSourceTreeElement::XalanSourceTreeElement( MemoryManager& theManager, const XalanSourceTreeElement& theSource, bool deep) : XalanElement(theSource), m_tagName(theSource.m_tagName), m_memoryManager(theManager), m_ownerDocument(theSource.m_ownerDocument), m_parentNode(0), m_previousSibling(0), m_nextSibling(0), m_firstChild(theSource.m_firstChild == 0 ? 0 : theSource.m_firstChild->cloneNode(deep)), m_index(0) { } */ const XalanDOMString& XalanSourceTreeElement::getNodeName() const { return m_tagName; } const XalanDOMString& XalanSourceTreeElement::getNodeValue() const { return s_emptyString; } XalanSourceTreeElement::NodeType XalanSourceTreeElement::getNodeType() const { return ELEMENT_NODE; } XalanNode* XalanSourceTreeElement::getParentNode() const { if (m_parentNode != 0) { return m_parentNode; } else { return m_ownerDocument; } } const XalanNodeList* XalanSourceTreeElement::getChildNodes() const { throw XalanDOMException(XalanDOMException::NOT_SUPPORTED_ERR); // Dummy return value... return 0; } XalanNode* XalanSourceTreeElement::getFirstChild() const { return m_firstChild; } XalanNode* XalanSourceTreeElement::getLastChild() const { return XalanSourceTreeHelper::getLastSibling(m_firstChild); } XalanNode* XalanSourceTreeElement::getPreviousSibling() const { return m_previousSibling; } XalanNode* XalanSourceTreeElement::getNextSibling() const { return m_nextSibling; } XalanDocument* XalanSourceTreeElement::getOwnerDocument() const { return m_ownerDocument; } bool XalanSourceTreeElement::isIndexed() const { return true; } XalanSourceTreeElement::IndexType XalanSourceTreeElement::getIndex() const { return m_index; } const XalanDOMString& XalanSourceTreeElement::getTagName() const { return m_tagName; } void XalanSourceTreeElement::setParent(XalanSourceTreeDocumentFragment* theParent) { m_parentNode = theParent; } void XalanSourceTreeElement::setPreviousSibling(XalanSourceTreeComment* thePreviousSibling) { m_previousSibling = thePreviousSibling; } void XalanSourceTreeElement::setPreviousSibling(XalanSourceTreeElement* thePreviousSibling) { m_previousSibling = thePreviousSibling; } void XalanSourceTreeElement::setPreviousSibling(XalanSourceTreeProcessingInstruction* thePreviousSibling) { m_previousSibling = thePreviousSibling; } void XalanSourceTreeElement::setPreviousSibling(XalanSourceTreeText* thePreviousSibling) { m_previousSibling = thePreviousSibling; } void XalanSourceTreeElement::appendSiblingNode(XalanSourceTreeComment* theSibling) { XalanSourceTreeHelper::appendSibling(this, m_nextSibling, theSibling); } void XalanSourceTreeElement::appendSiblingNode(XalanSourceTreeElement* theSibling) { XalanSourceTreeHelper::appendSibling(this, m_nextSibling, theSibling); } void XalanSourceTreeElement::appendSiblingNode(XalanSourceTreeProcessingInstruction* theSibling) { XalanSourceTreeHelper::appendSibling(this, m_nextSibling, theSibling); } void XalanSourceTreeElement::appendSiblingNode(XalanSourceTreeText* theSibling) { XalanSourceTreeHelper::appendSibling(this, m_nextSibling, theSibling); } void XalanSourceTreeElement::appendChildNode(XalanSourceTreeComment* theChild) { XalanSourceTreeHelper::appendSiblingToChild(this, m_firstChild, theChild); } void XalanSourceTreeElement::appendChildNode(XalanSourceTreeElement* theChild) { XalanSourceTreeHelper::appendSiblingToChild(this, m_firstChild, theChild); } void XalanSourceTreeElement::appendChildNode(XalanSourceTreeProcessingInstruction* theChild) { XalanSourceTreeHelper::appendSiblingToChild(this, m_firstChild, theChild); } void XalanSourceTreeElement::appendChildNode(XalanSourceTreeText* theChild) { XalanSourceTreeHelper::appendSiblingToChild(this, m_firstChild, theChild); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeElementANS.cpp0000664000175000000640000000441711731656103024731 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanSourceTreeElementANS.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanSourceTreeElementANS::XalanSourceTreeElementANS( MemoryManager& theManager, const XalanDOMString& theTagName, const XalanDOMString& theLocalName, const XalanDOMString& theNamespaceURI, const XalanDOMString& thePrefix, XalanSourceTreeDocument* theOwnerDocument, XalanSourceTreeAttr** theAttributes, XalanSize_t theAttributeCount, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling, IndexType theIndex) : XalanSourceTreeElementA( theManager, theTagName, theOwnerDocument, theAttributes, theAttributeCount, theParentNode, thePreviousSibling, theNextSibling, theIndex), m_localName(theLocalName), m_prefix(thePrefix), m_namespaceURI(theNamespaceURI) { } XalanSourceTreeElementANS::~XalanSourceTreeElementANS() { } const XalanDOMString& XalanSourceTreeElementANS::getNamespaceURI() const { return m_namespaceURI; } const XalanDOMString& XalanSourceTreeElementANS::getPrefix() const { return m_prefix; } const XalanDOMString& XalanSourceTreeElementANS::getLocalName() const { return m_localName; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeElement.hpp0000664000175000000640000001412311731656103024367 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEELEMENT_HEADER_GUARD_1357924680) #define XALANSOURCETREEELEMENT_HEADER_GUARD_1357924680 #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanSourceTreeAttr; class XalanSourceTreeComment; class XalanSourceTreeDocument; class XalanSourceTreeDocumentFragment; class XalanSourceTreeProcessingInstruction; class XalanSourceTreeText; class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeElement : public XalanElement { public: /** * Constructor. * * @param theTagName The tag name of the element * @param theOwnerDocument The document that owns the instance * @param theAttributes An array of pointers to the attribute instances for the element * @param theAttributeCount The number of attributes. * @param theParentNode The parent node, if any. * @param thePreviousSibling The previous sibling, if any. * @param theNextSibling The next sibling, if any. * @param theIndex The document-order index of the node. */ XalanSourceTreeElement( MemoryManager& theManager, const XalanDOMString& theTagName, XalanSourceTreeDocument* theOwnerDocument, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0, IndexType theIndex = 0); virtual ~XalanSourceTreeElement(); MemoryManager& getMemoryManager() { return m_memoryManager; } // These interfaces are inherited from XalanElement... virtual const XalanDOMString& getNodeName() const; virtual const XalanDOMString& getNodeValue() const; virtual NodeType getNodeType() const; virtual XalanNode* getParentNode() const; virtual const XalanNodeList* getChildNodes() const; virtual XalanNode* getFirstChild() const; virtual XalanNode* getLastChild() const; virtual XalanNode* getPreviousSibling() const; virtual XalanNode* getNextSibling() const; virtual const XalanNamedNodeMap* getAttributes() const = 0; virtual XalanDocument* getOwnerDocument() const; virtual const XalanDOMString& getNamespaceURI() const = 0; virtual const XalanDOMString& getPrefix() const = 0; virtual const XalanDOMString& getLocalName() const = 0; virtual bool isIndexed() const; virtual IndexType getIndex() const; virtual const XalanDOMString& getTagName() const; // public interfaces not inherited from XalanElement... XalanSourceTreeDocument* getDocument() const { return m_ownerDocument; } void setParent(XalanSourceTreeElement* theParent) { m_parentNode = theParent; } void setParent(XalanSourceTreeDocumentFragment* theParent); void setPreviousSibling(XalanSourceTreeComment* thePreviousSibling); void setPreviousSibling(XalanSourceTreeElement* thePreviousSibling); void setPreviousSibling(XalanSourceTreeProcessingInstruction* thePreviousSibling); void setPreviousSibling(XalanSourceTreeText* thePreviousSibling); void appendSiblingNode(XalanSourceTreeComment* theSibling); void appendSiblingNode(XalanSourceTreeElement* theSibling); void appendSiblingNode(XalanSourceTreeProcessingInstruction* theSibling); void appendSiblingNode(XalanSourceTreeText* theSibling); void appendChildNode(XalanSourceTreeComment* theChild); void appendChildNode(XalanSourceTreeElement* theChild); void appendChildNode(XalanSourceTreeProcessingInstruction* theChild); void appendChildNode(XalanSourceTreeText* theChild); void setIndex(IndexType theIndex) { m_index = theIndex; } /** * Removes all of the children. Since the owner document controls the * lifetime of all nodes in the document, this just sets the first child * to 0. */ void clearChildren() { m_firstChild = 0; } protected: /* XalanSourceTreeElement( MemoryManager& theManager, const XalanSourceTreeElement& theSource, bool deep = false); */ static const XalanDOMString s_emptyString; // Data members... const XalanDOMString& m_tagName; private: // Not implemented... XalanSourceTreeElement(const XalanSourceTreeElement& theSource); XalanSourceTreeElement& operator=(const XalanSourceTreeElement& theSource); bool operator==(const XalanSourceTreeElement& theRHS) const; // Data members... MemoryManager& m_memoryManager; XalanSourceTreeDocument* m_ownerDocument; XalanNode* m_parentNode; XalanNode* m_previousSibling; XalanNode* m_nextSibling; XalanNode* m_firstChild; IndexType m_index; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANSOURCETREEELEMENT_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeElementANS.hpp0000664000175000000640000000647211731656103024741 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEELEMENTANS_HEADER_GUARD_1357924680) #define XALANSOURCETREEELEMENTANS_HEADER_GUARD_1357924680 #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeElementANS : public XalanSourceTreeElementA { public: /** * Constructor. * * @param theTagName The tag name of the element * @param theLocalName The local name of the attribute * @param theNamespaceURI The namespace URI of the attribute * @param thePrefix The namespace prefix of the attribute * @param theOwnerDocument The document that owns the instance * @param theAttributes An array of pointers to the attribute instances for the element * @param theAttributeCount The number of attributes. * @param theParentNode The parent node, if any. * @param thePreviousSibling The previous sibling, if any. * @param theNextSibling The next sibling, if any. * @param theIndex The document-order index of the node. */ XalanSourceTreeElementANS( MemoryManager& theManager, const XalanDOMString& theTagName, const XalanDOMString& theLocalName, const XalanDOMString& theNamespaceURI, const XalanDOMString& thePrefix, XalanSourceTreeDocument* theOwnerDocument, XalanSourceTreeAttr** theAttributes, XalanSize_t theAttributeCount, XalanNode* theParentNode = 0, XalanNode* thePreviousSibling = 0, XalanNode* theNextSibling = 0, IndexType theIndex = 0); virtual ~XalanSourceTreeElementANS(); virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; private: // Not implemented... XalanSourceTreeElementANS(const XalanSourceTreeElementANS&); XalanSourceTreeElementANS& operator=(const XalanSourceTreeElementANS& theSource); bool operator==(const XalanSourceTreeElementANS& theRHS) const; // Data members... const XalanDOMString& m_localName; const XalanDOMString& m_prefix; const XalanDOMString& m_namespaceURI; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANSOURCETREEELEMENTANS_HEADER_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeInit.cpp0000664000175000000640000000352411731656103023677 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanSourceTreeInit.hpp" #include "XalanSourceTreeComment.hpp" #include "XalanSourceTreeDocument.hpp" #include "XalanSourceTreeText.hpp" XALAN_CPP_NAMESPACE_BEGIN unsigned long XalanSourceTreeInit::s_initCounter = 0; XalanSourceTreeInit::XalanSourceTreeInit(MemoryManager& theManager) : m_platformSupportInit(theManager), m_domSupportInit(theManager), m_xmlSupportInit(theManager) { ++s_initCounter; if (s_initCounter == 1) { initialize(theManager); } } XalanSourceTreeInit::~XalanSourceTreeInit() { --s_initCounter; if (s_initCounter == 0) { terminate(); } } void XalanSourceTreeInit::initialize(MemoryManager& theManager) { XalanSourceTreeDocument::initialize(theManager); XalanSourceTreeComment::initialize(theManager); XalanSourceTreeText::initialize(theManager); } void XalanSourceTreeInit::terminate() { XalanSourceTreeText::terminate(); XalanSourceTreeComment::terminate(); XalanSourceTreeDocument::terminate(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeContentHandler.cpp0000664000175000000640000002562011731656103025705 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanSourceTreeContentHandler.hpp" #include #include #include "XalanSourceTreeDocument.hpp" #include "XalanSourceTreeElement.hpp" #include "XalanSourceTreeHelper.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanSourceTreeContentHandler::XalanSourceTreeContentHandler( MemoryManager& theManager, XalanSourceTreeDocument* theDocument, bool fAccumulateText) : ContentHandler(), DTDHandler(), LexicalHandler(), m_document(theDocument), m_currentElement(0), m_elementStack(theManager), m_lastChild(0), m_lastChildStack(theManager), m_accumulateText(fAccumulateText), m_textBuffer(theManager), m_inDTD(false) { } XalanSourceTreeContentHandler::~XalanSourceTreeContentHandler() { } void XalanSourceTreeContentHandler::characters( const XMLCh* const chars, const size_type length) { assert(m_inDTD == false); if (m_currentElement == 0) { if (isXMLWhitespace(chars) == false) { throw XalanDOMException(XalanDOMException::HIERARCHY_REQUEST_ERR); } } else if (m_accumulateText == true) { m_textBuffer.append(chars, length); } else { doCharacters(chars, length); } } void XalanSourceTreeContentHandler::endDocument() { assert(m_inDTD == false); // Pop off the dummy value that we pushed in // startDocument()... m_elementStack.pop_back(); assert(m_document->getDocumentElement() != 0); assert(m_elementStack.empty() == true); assert(m_lastChildStack.empty() == true); assert(m_textBuffer.empty() == true); } void XalanSourceTreeContentHandler::endElement( const XMLCh* const /* uri */, const XMLCh* const /* localname */, const XMLCh* const /* qname */) { assert(m_inDTD == false); // Process any text that we may have accumulated... processAccumulatedText(); assert(m_elementStack.empty() == false); // Pop the stack... m_elementStack.pop_back(); assert(m_elementStack.empty() == false); // Get the element from the back of the // stack. m_currentElement = m_elementStack.back(); assert(m_lastChildStack.empty() == false); m_lastChild = m_lastChildStack.back(); // Pop the last child stack m_lastChildStack.pop_back(); } // A helper function to manage appending the new child. template inline void doAppendChildNode( ParentNodeType* theParent, XalanNode*& theLastChild, ChildNodeType theNewChild) { assert(theParent != 0); assert(theNewChild != 0); if (theLastChild == 0) { theParent->appendChildNode(theNewChild); } else { XalanSourceTreeHelper::appendSibling(theLastChild, theNewChild); } theLastChild = theNewChild; } // A helper function to manage appending the new child. template inline void doAppendChildNode( XalanSourceTreeDocument* theDocument, XalanSourceTreeElement* theCurrentElement, XalanNode*& theLastChild, ChildNodeType theNewChild) { assert(theDocument != 0); assert(theNewChild != 0); if (theCurrentElement == 0) { // If there is no current element. it means we haven't // created the document element yet, so always append // to the document, rather than the last child. theDocument->appendChildNode(theNewChild); } else { doAppendChildNode(theCurrentElement, theLastChild, theNewChild); } } void XalanSourceTreeContentHandler::ignorableWhitespace( const XMLCh* const chars, const size_type length) { assert(m_inDTD == false); // Ignore any whitespace reported before the document element has been parsed. if (m_elementStack.empty() == false) { assert(m_currentElement != 0); processAccumulatedText(); XalanSourceTreeText* theNewTextNode = m_document->createTextIWSNode(chars, length, m_currentElement); doAppendChildNode(m_currentElement, m_lastChild, theNewTextNode); } } void XalanSourceTreeContentHandler::processingInstruction( const XMLCh* const target, const XMLCh* const data) { assert(m_inDTD == false); processAccumulatedText(); XalanSourceTreeProcessingInstruction* const theNewPI = m_document->createProcessingInstructionNode(target, data, m_currentElement); doAppendChildNode( m_document, m_currentElement, m_lastChild, theNewPI); } void XalanSourceTreeContentHandler::setDocumentLocator(const Locator* const /* locator */) { } void XalanSourceTreeContentHandler::startDocument() { assert(m_inDTD == false); m_currentElement = 0; m_elementStack.clear(); m_elementStack.reserve(eDefaultStackSize); m_lastChild = 0; m_lastChildStack.clear(); m_lastChildStack.reserve(eDefaultStackSize); if (m_accumulateText == true) { m_textBuffer.clear(); m_textBuffer.reserve(eDefaultTextBufferSize); } // Push a dummy value for the current element, so we // don't have to check for an empty stack in endElement(). m_elementStack.push_back(ElementStackType::value_type(0)); } void XalanSourceTreeContentHandler::startElement( const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const AttributesType& attrs) { #if 0 assert(m_inDTD == false); #else if (m_inDTD == true) { m_inDTD = false; } #endif processAccumulatedText(); XalanSourceTreeElement* const theNewElement = createElement(uri, localname, qname, attrs, m_currentElement); doAppendChildNode( m_document, m_currentElement, m_lastChild, theNewElement); m_elementStack.push_back(theNewElement); m_lastChildStack.push_back(m_lastChild); m_currentElement = theNewElement; m_lastChild = 0; } void XalanSourceTreeContentHandler::startPrefixMapping( const XMLCh* const /* prefix */, const XMLCh* const /* uri */) { assert(m_inDTD == false); } void XalanSourceTreeContentHandler::endPrefixMapping(const XMLCh* const /* prefix */) { assert(m_inDTD == false); } void XalanSourceTreeContentHandler::skippedEntity(const XMLCh* const /* name */) { } void XalanSourceTreeContentHandler::notationDecl( const XMLCh* const /* name */, const XMLCh* const /* publicId */, const XMLCh* const /* systemId */) { } void XalanSourceTreeContentHandler::unparsedEntityDecl( const XMLCh* const name, const XMLCh* const publicId, const XMLCh* const systemId, const XMLCh* const notationName) { assert(m_document != 0); m_document->unparsedEntityDeclaration(name, publicId, systemId, notationName); } void XalanSourceTreeContentHandler::resetDocType() { } void XalanSourceTreeContentHandler::comment( const XMLCh* const chars, const size_type length) { assert(m_document != 0); if (m_inDTD == false) { processAccumulatedText(); XalanSourceTreeComment* const theNewComment = m_document->createCommentNode(chars, length, m_currentElement); doAppendChildNode( m_document, m_currentElement, m_lastChild, theNewComment); } } void XalanSourceTreeContentHandler::endCDATA() { assert(m_inDTD == false); } void XalanSourceTreeContentHandler::endDTD() { assert(m_document != 0); // assert(m_inDTD == true); m_inDTD = false; } void XalanSourceTreeContentHandler::endEntity(const XMLCh* const /* name */) { assert(m_document != 0); } void XalanSourceTreeContentHandler::startCDATA() { assert(m_inDTD == false); } void XalanSourceTreeContentHandler::startDTD( const XMLCh* const /* name */, const XMLCh* const /* publicId */, const XMLCh* const /* systemId */) { assert(m_inDTD == false); assert(m_document != 0); m_inDTD = true; } void XalanSourceTreeContentHandler::startEntity(const XMLCh* const /* name */) { assert(m_document != 0); } void XalanSourceTreeContentHandler::setDocument(XalanSourceTreeDocument* theDocument) { m_document = theDocument; } XalanSourceTreeElement* XalanSourceTreeContentHandler::createElement( const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const AttributesType& attrs, XalanSourceTreeElement* theOwnerElement) { assert(m_inDTD == false); // If we're creating the document element, add the special xml namespace attribute... const bool fAddXMLNamespaceAttribute = theOwnerElement == 0 ? true : false; if (length(uri) != 0) { return m_document->createElementNode(uri, localname, qname, attrs, theOwnerElement, 0, 0, fAddXMLNamespaceAttribute); } else { return m_document->createElementNode(qname, attrs, theOwnerElement, 0, 0, fAddXMLNamespaceAttribute); } } void XalanSourceTreeContentHandler::processAccumulatedText() { assert(m_inDTD == false); if (m_textBuffer.empty() == false) { doCharacters( m_textBuffer.c_str(), m_textBuffer.length()); m_textBuffer.clear(); } } void XalanSourceTreeContentHandler::doCharacters( const XMLCh* chars, size_type length) { assert(m_inDTD == false); assert(m_currentElement != 0); XalanSourceTreeText* theNewTextNode = m_document->createTextNode(chars, length, m_currentElement); doAppendChildNode(m_currentElement, m_lastChild, theNewTextNode); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeElementNA.cpp0000664000175000000640000000420711731656103024603 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XalanSourceTreeElementNA.hpp" #include #include XALAN_CPP_NAMESPACE_BEGIN const XalanEmptyNamedNodeMap XalanSourceTreeElementNA::s_emptyAttributes; XalanSourceTreeElementNA::XalanSourceTreeElementNA( MemoryManager& theManager, const XalanDOMString& theTagName, XalanSourceTreeDocument* theOwnerDocument, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling, IndexType theIndex) : XalanSourceTreeElement( theManager, theTagName, theOwnerDocument, theParentNode, thePreviousSibling, theNextSibling, theIndex) { } XalanSourceTreeElementNA::~XalanSourceTreeElementNA() { } const XalanNamedNodeMap* XalanSourceTreeElementNA::getAttributes() const { return &s_emptyAttributes; } const XalanDOMString& XalanSourceTreeElementNA::getNamespaceURI() const { return s_emptyString; } const XalanDOMString& XalanSourceTreeElementNA::getPrefix() const { return s_emptyString; } const XalanDOMString& XalanSourceTreeElementNA::getLocalName() const { return m_tagName; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeInit.hpp0000664000175000000640000000400411731656103023676 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANSOURCETREEINIT_INCLUDE_GUARD_1357924680) #define XALANSOURCETREEINIT_INCLUDE_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeInit { public: explicit XalanSourceTreeInit(MemoryManager& theManager XALAN_DEFAULT_MEMMGR); ~XalanSourceTreeInit(); private: // Not implemented... XalanSourceTreeInit(const XalanSourceTreeInit&); XalanSourceTreeInit& operator=(const XalanSourceTreeInit&); static void initialize(MemoryManager& theManager); static void terminate(); const PlatformSupportInit m_platformSupportInit; const DOMSupportInit m_domSupportInit; const XMLSupportInit m_xmlSupportInit; static unsigned long s_initCounter; }; XALAN_CPP_NAMESPACE_END #endif // !defined(XALANSOURCETREEINIT_INCLUDE_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/XalanSourceTree/XalanSourceTreeTextIWSAllocator.cpp0000664000175000000640000000367111731656103026147 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "XalanSourceTreeTextIWSAllocator.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanSourceTreeTextIWSAllocator::XalanSourceTreeTextIWSAllocator(MemoryManager& theManager, size_type theBlockCount) : m_allocator(theManager, theBlockCount) { } XalanSourceTreeTextIWSAllocator::~XalanSourceTreeTextIWSAllocator() { } XalanSourceTreeTextIWSAllocator::ObjectType* XalanSourceTreeTextIWSAllocator::create( const XalanDOMString& theData, XalanNode* theParentNode, XalanNode* thePreviousSibling, XalanNode* theNextSibling, IndexType theIndex) { ObjectType* const theBlock = m_allocator.allocateBlock(); assert(theBlock != 0); new(theBlock) ObjectType( theData, theParentNode, thePreviousSibling, theNextSibling, theIndex); m_allocator.commitAllocation(theBlock); return theBlock; } void XalanSourceTreeTextIWSAllocator::reset() { m_allocator.reset(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/XalanExe/0002775000175000000640000000000012037700125015734 5ustar stevesambaxalan-c-1.11/c/src/xalanc/XalanExe/XalanExe.cpp0000664000175000000640000005532111731656103020157 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #if !defined(NDEBUG) && defined(_MSC_VER) #include #endif #include #include #include #include #include #include #if defined(_MSC_VER) #define XALAN_USE_WINDOWS_TIMING #endif #if defined(XALAN_USE_WINDOWS_TIMING) #include "windows.h" #else #include #if defined(XALAN_STRICT_ANSI_HEADERS) using std::clock; using std::clock_t; #endif #endif XALAN_USING_STD(cerr) XALAN_USING_STD(cin) XALAN_USING_STD(cout) XALAN_USING_STD(endl) XALAN_USING_STD(ostream) #if defined(XALAN_STRICT_ANSI_HEADERS) using std::atoi; using std::strcmp; using std::strlen; #endif void Usage() { XALAN_USING_XALAN(XalanDOMString) XALAN_USING_XALAN(XalanMessageLoader) XALAN_USING_XALAN(XalanMessages) XALAN_USING_XALAN(XalanMemMgrs) XALAN_USING_XERCES(MemoryManager) MemoryManager& theManager = XalanMemMgrs::getDefaultXercesMemMgr(); bool bErrorState = true; // means OK XalanDOMString szXalanVersion(theManager); XalanMessageLoader::getMessage( szXalanVersion, XalanMessages::XalanExeHelpMenuXalanVersion_1Param, XALAN_FULLVERSIONDOT); XalanDOMString szXercesVersion(theManager); XalanMessageLoader::getMessage( szXercesVersion, XalanMessages::XalanExeHelpMenuXercesVersion_1Param, XERCES_FULLVERSIONDOT); try { XalanDOMString::CharVectorType cvtXalanVersion(theManager); szXalanVersion.transcode(cvtXalanVersion); XalanDOMString::CharVectorType cvtXercesVersion(theManager); szXercesVersion.transcode(cvtXercesVersion); cerr << &cvtXalanVersion[0] << endl; cerr << &cvtXercesVersion[0] << endl; } catch(const XalanDOMString::TranscodingError&) { cerr << endl << "Transcoding error: wrong XalanC or XercesC versions." << endl; bErrorState = false; } XalanDOMString::CharVectorType cvtXalanExeHelpMenu(theManager); XalanDOMString theBuffer(theManager); for (int i = XalanMessages::XalanExeHelpMenu; bErrorState && (i <= XalanMessages::XalanExeHelpMenu12); ++i) { try { XalanMessageLoader::getMessage( theBuffer, XalanMessages::Codes(i)); theBuffer.transcode(cvtXalanExeHelpMenu); cerr << &cvtXalanExeHelpMenu[0] << endl; } catch(const XalanDOMString::TranscodingError&) { cerr << endl << "Cannot read help message " << i << "." << endl; bErrorState = false; } } } XALAN_USING_XALAN(XalanTransformer) XALAN_USING_XALAN(XSLTInputSource) XALAN_USING_XALAN(XSLTResultTarget) class Params { public: Params(unsigned long maxParams) : m_validate(false), m_useStylesheetPI(false), m_omitMETATag(false), m_noURLEscaping(false), m_showTiming(false), m_indentAmount(-1), m_inFileName(0), m_xslFileName(0), m_outFileName(0), m_encoding(0), m_params(), m_maxParams(maxParams), m_currentParam(0) { } bool addParam( const char* name, const char* expression) { if (m_currentParam == m_maxParams) { return false; } else { // Allocate memory if necessary... if (m_params.get() == 0) { m_params.reset(new ParamPair[m_maxParams]); } assert(m_params.get() != 0); m_params[m_currentParam].m_name = name; m_params[m_currentParam].m_expression = expression; ++m_currentParam; return true; } }; void setParams(XalanTransformer& theTransformer) const { theTransformer.setUseValidation(m_validate); if (m_omitMETATag == true) { theTransformer.setOmitMETATag(XalanTransformer::eOmitMETATagYes); } if (m_noURLEscaping == true) { theTransformer.setEscapeURLs(XalanTransformer::eEscapeURLsNo); } if (m_indentAmount >= 0) { theTransformer.setIndent(m_indentAmount); } for(unsigned long i = 0; i < m_currentParam; ++i) { theTransformer.setStylesheetParam( m_params[i].m_name, m_params[i].m_expression); } } bool m_validate; bool m_useStylesheetPI; bool m_omitMETATag; bool m_noURLEscaping; bool m_showTiming; int m_indentAmount; const char* m_inFileName; const char* m_xslFileName; const char* m_outFileName; const char* m_encoding; unsigned long getMaxParams() const { return m_maxParams; } private: struct ParamPair { ParamPair() : m_name(0), m_expression(0) { } const char* m_name; const char* m_expression; }; typedef XALAN_CPP_NAMESPACE_QUALIFIER XalanArrayAutoPtr ArrayAutoPtrType; ArrayAutoPtrType m_params; const unsigned long m_maxParams; unsigned long m_currentParam; }; bool getArgs( int argc, char* argv[], Params& params) { bool fSuccess = true; for (int i = 1; i < argc && fSuccess == true; ++i) { if (argv[i][0] == '-' && argv[i][1] != '\0') { if (argv[i][2] != '\0') { fSuccess = false; } else if (params.m_inFileName != 0 || params.m_xslFileName != 0) { fSuccess = false; } else if (argv[i][1] == 'a') { params.m_useStylesheetPI = true; } else if (argv[i][1] == 'e') { ++i; if(i < argc && argv[i][0] != '-' && strlen(argv[i]) != 0) { params.m_encoding = argv[i]; } else { fSuccess = false; } } else if (argv[i][1] == 'i') { ++i; if(i < argc && argv[i][0] != '-' && strlen(argv[i]) != 0) { params.m_indentAmount = atoi(argv[i]); } else { fSuccess = false; } } else if (argv[i][1] == 'm') { params.m_omitMETATag = true; } else if (argv[i][1] == 'o') { ++i; if(i < argc && argv[i][0] != '-' && strlen(argv[i]) != 0) { params.m_outFileName = argv[i]; } else { fSuccess = false; } } else if (argv[i][1] == 'p') { ++i; if(i >= argc || argv[i][0] == '-') { fSuccess = false; } else { const char* const name = argv[i]; ++i; // Don't check for '-' here, since that might // be a valid character in a parameter value. if(i >= argc) { fSuccess = false; } else { const char* const value = argv[i]; if (params.addParam(name, value) == false) { cerr << "The maximum number of parameters is " << params.getMaxParams() << "." << endl; fSuccess = false; } } } } else if (argv[i][1] == 't') { params.m_showTiming = true; } else if (argv[i][1] == 'u') { params.m_noURLEscaping = true; } else if (argv[i][1] == 'v') { params.m_validate = true; } else { fSuccess = false; } } else if (params.m_inFileName == 0 && strlen(argv[i]) != 0) { params.m_inFileName = argv[i]; if (strlen(params.m_inFileName) == 0) { fSuccess = false; } } else if (params.m_xslFileName == 0 && strlen(argv[i]) != 0 && params.m_useStylesheetPI == false) { params.m_xslFileName = argv[i]; if (strlen(params.m_xslFileName) == 0) { fSuccess = false; } } else { fSuccess = false; } } if (fSuccess == true && params.m_inFileName == 0) { return false; } else if (params.m_xslFileName == 0) { return params.m_useStylesheetPI; } else if (strcmp(params.m_xslFileName, params.m_inFileName) == 0) { return false; } else { return fSuccess; } } #if defined(XALAN_USE_WINDOWS_TIMING) typedef LARGE_INTEGER ClockType; #else #if defined(XALAN_STRICT_ANSI_HEADERS) typedef std::clock_t ClockType; #else typedef clock_t ClockType; #endif #endif typedef ostream OstreamType; inline ClockType getClock() { #if defined(XALAN_USE_WINDOWS_TIMING) ClockType theResult; QueryPerformanceCounter(&theResult); return theResult; #else #if defined(XALAN_STRICT_ANSI_HEADERS) return std::clock(); #else return clock(); #endif #endif } #if defined(XALAN_USE_WINDOWS_TIMING) inline ClockType getPerformanceFrequencyInMilliseconds() { ClockType theInterval; QueryPerformanceFrequency(&theInterval); theInterval.QuadPart /= 1000UL; return theInterval; } #endif void writeElapsedMilliseconds( ClockType theStartClock, ClockType theEndClock, OstreamType& theStream) { #if defined(XALAN_USE_WINDOWS_TIMING) static const ClockType theInterval = getPerformanceFrequencyInMilliseconds(); char theBuffer[1000]; ClockType theDiff; theDiff.QuadPart = theEndClock.QuadPart - theStartClock.QuadPart; ClockType theResult; ClockType theRemainder; theResult.QuadPart = theDiff.QuadPart / theInterval.QuadPart; theRemainder.QuadPart = theDiff.QuadPart % theInterval.QuadPart; sprintf( theBuffer, "%I64d.%I64d", theResult.QuadPart, theRemainder.QuadPart); theStream << theBuffer; #else theStream << (double(theEndClock - theStartClock) / CLOCKS_PER_SEC) * 1000.0; #endif } inline void reportElapsedMilliseconds( const char* theString, ClockType theStartClock, ClockType theEndClock, OstreamType& theStream) { theStream << theString; writeElapsedMilliseconds( theStartClock, theEndClock, theStream); theStream << " milliseconds.\n"; } XALAN_USING_XALAN(XalanParsedSource) XALAN_USING_XALAN(XalanCompiledStylesheet) typedef XalanTransformer::EnsureDestroyParsedSource SourceGuard; typedef XalanTransformer::EnsureDestroyCompiledStylesheet StylesheetGuard; inline int transform( XalanTransformer& theTransformer, const Params& theParams, const XSLTInputSource& theSource, const XSLTResultTarget& theTarget) { if (theParams.m_showTiming == false) { return theTransformer.transform( theSource, theTarget); } else { ClockType theStartClock = getClock(); const XalanParsedSource* theParsedSource = 0; int theResult = theTransformer.parseSource(theSource, theParsedSource); if (theResult == 0) { ClockType theEndClock = getClock(); reportElapsedMilliseconds( "Source tree parsing time: ", theStartClock, theEndClock, cerr); const SourceGuard theGuard(theTransformer, theParsedSource); theStartClock = getClock(); theResult = theTransformer.transform(*theParsedSource, theTarget); theEndClock = getClock(); reportElapsedMilliseconds( "Transformation time, including stylesheet compilation: ", theStartClock, theEndClock, cerr); } return theResult; } } inline int transform( XalanTransformer& theTransformer, const Params& theParams, const XSLTInputSource& theSource, const XSLTInputSource& theStylesheetSource, const XSLTResultTarget& theTarget) { if (theParams.m_showTiming == false) { return theTransformer.transform( theSource, theStylesheetSource, theTarget); } else { ClockType theStartClock = getClock(); const XalanParsedSource* theParsedSource = 0; int theResult = theTransformer.parseSource( theSource, theParsedSource); if (theResult == 0) { ClockType theEndClock = getClock(); reportElapsedMilliseconds( "Source tree parsing time: ", theStartClock, theEndClock, cerr); const SourceGuard theGuard(theTransformer, theParsedSource); const XalanCompiledStylesheet* theStylesheet = 0; theStartClock = getClock(); theResult = theTransformer.compileStylesheet( theStylesheetSource, theStylesheet); if (theResult == 0) { theEndClock = getClock(); reportElapsedMilliseconds( "Stylesheet compilation time: ", theStartClock, theEndClock, cerr); assert(theStylesheet != 0); const StylesheetGuard theGuard(theTransformer, theStylesheet); theStartClock = getClock(); theResult = theTransformer.transform( *theParsedSource, theStylesheet, theTarget); theEndClock = getClock(); reportElapsedMilliseconds( "Transformation time: ", theStartClock, theEndClock, cerr); } } return theResult; } } inline int transform( XalanTransformer& theTransformer, const Params& theParams, const XSLTInputSource& theSource, const XSLTInputSource& theStylesheetSource) { XALAN_USING_XALAN(XalanDOMString) XALAN_USING_XALAN(XSLTResultTarget) XALAN_USING_XERCES(MemoryManager) MemoryManager& theManager = theTransformer.getMemoryManager(); XSLTResultTarget theTarget(theManager); if (theParams.m_encoding != 0) { const XalanDOMString theEncoding(theParams.m_encoding, theManager); theTarget.setEncoding(theEncoding); } if (theParams.m_outFileName != 0) { theTarget.setFileName(theParams.m_outFileName); } else { theTarget.setByteStream(&cout); } if (theParams.m_useStylesheetPI == true) { return transform( theTransformer, theParams, theSource, theTarget); } else { return transform( theTransformer, theParams, theSource, theStylesheetSource, theTarget); } } inline int transform( XalanTransformer& theTransformer, const Params& theParams, const XSLTInputSource& theSource) { assert( theParams.m_useStylesheetPI == true || theParams.m_xslFileName != 0); if (theParams.m_useStylesheetPI == true || (theParams.m_xslFileName[0] == '-' && theParams.m_xslFileName[1] == '\0')) { return transform( theTransformer, theParams, theSource, &cin); } else { return transform( theTransformer, theParams, theSource, XSLTInputSource(theParams.m_xslFileName)); } } inline int transform( XalanTransformer& theTransformer, const Params& theParams) { assert(theParams.m_inFileName != 0); if (theParams.m_inFileName[0] == '-' && theParams.m_inFileName[1] == '\0') { return transform( theTransformer, theParams, &cin); } else { return transform( theTransformer, theParams, theParams.m_inFileName); } } #if defined(XALAN_WINDOWS) XALAN_USING_XERCES(MemoryManager) class WindowsMemoryManager : public XALAN_CPP_NAMESPACE_QUALIFIER XalanMemoryManager { public: typedef XALAN_CPP_NAMESPACE_QUALIFIER XalanSize_t XalanSize_t; WindowsMemoryManager() : XalanMemoryManager(), m_handle(HeapCreate(HEAP_NO_SERIALIZE, 0, 0)) { assert(m_handle != 0); } virtual ~WindowsMemoryManager() { HeapDestroy(m_handle); } /** * This method allocates requested memory. * * size The requested memory size * * Returns a pointer to the allocated memory */ virtual void* allocate(size_type size) { void* const value = HeapAlloc(m_handle, HEAP_NO_SERIALIZE, size); if (value == 0) { throw XERCES_CPP_NAMESPACE_QUALIFIER OutOfMemoryException(); } return value; } /** * This method deallocates memory * */ virtual void deallocate(void* pointer) { HeapFree(m_handle, HEAP_NO_SERIALIZE, pointer); } MemoryManager* getExceptionMemoryManager() { return this; } protected: private: // These are not implemented. WindowsMemoryManager(const WindowsMemoryManager&); WindowsMemoryManager& operator=(const WindowsMemoryManager&); // Data members. const HANDLE m_handle; }; #endif int xsltMain( int argc, char* argv[]) { int theResult = -1; XALAN_USING_XERCES(XMLPlatformUtils) #if defined(XALAN_WINDOWS) && defined(NDEBUG) WindowsMemoryManager theMemoryManager; // Call the static initializer for Xerces... XMLPlatformUtils::Initialize( XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXercescDefaultLocale, 0, 0, &theMemoryManager); #else // Call the static initializer for Xerces... XMLPlatformUtils::Initialize(); XALAN_USING_XERCES(MemoryManager) MemoryManager& theMemoryManager = *XMLPlatformUtils::fgMemoryManager; #endif // Initialize Xalan... XalanTransformer::initialize(theMemoryManager); { // we need to read the params after the XMLPlatformUtils::Initialize(), // because we may need the local and the local dlls for usage of the // Usage function. // Set the maximum number of params as half of argc - 1. // It's actually argc - 2, but that could get us into negative // numbers, so don't bother. Also, always add 1, in case // (argc - 1) / 2 is 0. Params theParams((argc - 1) / 2 + 1); if (getArgs(argc, argv, theParams) == false) { Usage(); } else { // Create a XalanTransformer instance... XalanTransformer theTransformer(theMemoryManager); // Set any options... theParams.setParams(theTransformer); theResult = transform(theTransformer, theParams); if (theResult != 0) { cerr << theTransformer.getLastError() << endl; } } } // Terminate Xalan... XalanTransformer::terminate(); // Terminate Xerces... XMLPlatformUtils::Terminate(); // Clean up the ICU, if it's integrated... XalanTransformer::ICUCleanUp(); return theResult; } int main( int argc, char* argv[]) { #if defined(_DEBUG) && defined(_MSC_VER) _CrtSetDbgFlag( _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); #endif return xsltMain(argc, argv); } xalan-c-1.11/c/src/xalanc/DOMSupport/0002775000175000000640000000000012037700125016243 5ustar stevesambaxalan-c-1.11/c/src/xalanc/DOMSupport/XalanNamespacesStack.hpp0000664000175000000640000002330611731656103023015 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_XALANNAMESPACESSTACK_HEADER_GUARD) #define XALAN_XALANNAMESPACESSTACK_HEADER_GUARD // Base include file. Must be first. #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanDOMString; class XALAN_DOMSUPPORT_EXPORT XalanNamespacesStack { public: class XALAN_DOMSUPPORT_EXPORT PrefixResolverProxy : public PrefixResolver { public: /** * Construct a PrefixResolver from a XalanNamespaceStack * instance. * * @param theStack The stack to use for prefix resolution * @param theURI The namespace URI of the resolver, if any. Only a reference is kept, so this cannot be a temporary * @return pointer to the string value if found, otherwise 0. */ PrefixResolverProxy( const XalanNamespacesStack& theStack, const XalanDOMString& theURI); virtual ~PrefixResolverProxy(); virtual const XalanDOMString* getNamespaceForPrefix(const XalanDOMString& prefix) const; virtual const XalanDOMString& getURI() const; private: const XalanNamespacesStack& m_stack; const XalanDOMString& m_uri; }; class XALAN_DOMSUPPORT_EXPORT XalanNamespacesStackEntry { public: typedef XalanNamespace value_type; typedef XalanDeque NamespaceCollectionType; typedef const XalanDOMString& (value_type::*MemberFunctionType)() const; typedef NamespaceCollectionType::iterator iterator; typedef NamespaceCollectionType::reverse_iterator reverse_iterator; typedef NamespaceCollectionType::const_iterator const_iterator; typedef NamespaceCollectionType::const_reverse_iterator const_reverse_iterator; XalanNamespacesStackEntry(MemoryManager& theManager); XalanNamespacesStackEntry(const XalanNamespacesStackEntry& theSource, MemoryManager& theManager); ~XalanNamespacesStackEntry(); XalanNamespacesStackEntry& set(const XalanNamespacesStackEntry& theRHS, MemoryManager& theManager); void addDeclaration( const XalanDOMString& thePrefix, const XalanDOMChar* theNamespaceURI, XalanDOMString::size_type theLength); /** * Get the namespace for a prefix. * * @param thePrefix The prefix to find * @return pointer to the string value if found, otherwise 0. */ const XalanDOMString* getNamespaceForPrefix(const XalanDOMString& thePrefix) const { return findEntry(thePrefix, &XalanNamespace::getPrefix, &XalanNamespace::getURI); } /** * Get the prefix for a namespace. * * @param theURI The namespace URI to find * @return pointer to the string value if found, otherwise 0. */ const XalanDOMString* getPrefixForNamespace(const XalanDOMString& theURI) const { return findEntry(theURI, &XalanNamespace::getURI, &XalanNamespace::getPrefix); } bool isPrefixPresent(const XalanDOMString& thePrefix) const { return getNamespaceForPrefix(thePrefix) == 0 ? false : true; } iterator begin() { return m_namespaces.begin(); } const_iterator begin() const { return m_namespaces.begin(); } iterator end() { return m_position; } const_iterator end() const { return const_iterator(m_position); } reverse_iterator rbegin() { return reverse_iterator(end()); } const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } reverse_iterator rend() { return reverse_iterator(begin()); } const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } void clear(); void reset() { m_position = m_namespaces.begin(); } void swap(XalanNamespacesStackEntry& theOther); private: //Not implemented XalanNamespacesStackEntry(); XalanNamespacesStackEntry(const XalanNamespacesStackEntry& theSource); const XalanDOMString* findEntry( const XalanDOMString& theKey, MemberFunctionType theKeyFunction, MemberFunctionType theValueFunction) const; NamespaceCollectionType m_namespaces; iterator m_position; }; typedef XalanNamespacesStackEntry value_type; typedef XalanDeque > NamespacesStackType; typedef XalanVector BoolVectorType; typedef NamespacesStackType::iterator iterator; typedef NamespacesStackType::reverse_iterator reverse_iterator; typedef NamespacesStackType::const_iterator const_iterator; typedef NamespacesStackType::const_reverse_iterator const_reverse_iterator; typedef NamespacesStackType::size_type size_type; typedef const XalanDOMString* (value_type::*MemberFunctionType)(const XalanDOMString&) const; explicit XalanNamespacesStack(MemoryManager& theManager); ~XalanNamespacesStack(); void addDeclaration( const XalanDOMString& thePrefix, const XalanDOMString& theURI) { addDeclaration( thePrefix, theURI.c_str(), theURI.length()); } void addDeclaration( const XalanDOMString& thePrefix, const XalanDOMChar* theURI) { addDeclaration( thePrefix, theURI, length(theURI)); } void addDeclaration( const XalanDOMString& thePrefix, const XalanDOMChar* theURI, XalanDOMString::size_type theLength); void pushContext(); void popContext(); const XalanDOMString* getNamespaceForPrefix(const XalanDOMString& thePrefix) const; const XalanDOMString* getPrefixForNamespace(const XalanDOMString& theURI) const { return findEntry(theURI, &value_type::getPrefixForNamespace); } /** * See if the prefix has been mapped to a namespace in the current * context, without looking down the stack of namespaces. */ bool prefixIsPresentLocal(const XalanDOMString& thePrefix); void clear(); iterator begin() { return m_stackBegin + 1; } const_iterator begin() const { return const_iterator(m_stackBegin + 1); } iterator end() { return m_stackPosition + 1; } const_iterator end() const { return const_iterator(m_stackPosition + 1); } reverse_iterator rbegin() { return reverse_iterator(end()); } const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } reverse_iterator rend() { return reverse_iterator(begin()); } const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } size_type size() const { return m_resultNamespaces.size() - 1; } bool empty() const { return NamespacesStackType::const_iterator(m_stackPosition) == m_resultNamespaces.begin() ? true : false; } private: // not implemented XalanNamespacesStack(const XalanNamespacesStack&); XalanNamespacesStack(); XalanNamespacesStackEntry& operator=(const XalanNamespacesStackEntry& theRHS); bool operator==(const XalanNamespacesStack&) const; XalanNamespacesStack& operator=(const XalanNamespacesStack&); enum { eDefaultCreateNewContextStackSize = 25 }; const XalanDOMString* findEntry( const XalanDOMString& theKey, MemberFunctionType theFunction) const; /** * A stack to keep track of the result tree namespaces. */ NamespacesStackType m_resultNamespaces; NamespacesStackType::iterator m_stackBegin; NamespacesStackType::iterator m_stackPosition; BoolVectorType m_createNewContextStack; }; XALAN_CPP_NAMESPACE_END #endif // XALAN_XALANNAMESPACESSTACK_HEADER_GUARD xalan-c-1.11/c/src/xalanc/DOMSupport/DOMSupportException.hpp0000664000175000000640000000430411731656103022654 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(DOMSUPPORTEXCEPTION_HEADER_GUARD_1357924680) #define DOMSUPPORTEXCEPTION_HEADER_GUARD_1357924680 // Base header file. Must be first. #include // Base class header file. #include XALAN_CPP_NAMESPACE_BEGIN class XalanDOMString; class XALAN_DOMSUPPORT_EXPORT DOMSupportException : public XSLException { public: /** * Constructor for an exception arising from DOMSupport classes * * @param theMessage The error message. * @param theManager the MemoryManager instance to use. * @param theLocator The Locator instance to use, if any. */ DOMSupportException( const XalanDOMString& theMessage, MemoryManager& theManager, const Locator* theLocator); /** * Constructor for an exception arising from DOMSupport classes. * Use this constructor when the error message is already formatted. * * @param theMessage The error message. * @param theManager the MemoryManager instance to use. */ DOMSupportException( const XalanDOMString& theMessage, MemoryManager& theManager); virtual ~DOMSupportException(); virtual const XalanDOMChar* getType() const; private: }; XALAN_CPP_NAMESPACE_END #endif // DOMSUPPORTEXCEPTION_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/DOMSupport/DOMSupportInit.cpp0000664000175000000640000000270311731656103021615 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "DOMSupportInit.hpp" #include "DOMServices.hpp" XALAN_CPP_NAMESPACE_BEGIN unsigned long DOMSupportInit::s_initCounter = 0; DOMSupportInit::DOMSupportInit(MemoryManager& theManager) : m_platformSupportInit(theManager) { ++s_initCounter; if (s_initCounter == 1) { initialize(theManager); } } DOMSupportInit::~DOMSupportInit() { --s_initCounter; if (s_initCounter == 0) { terminate(); } } void DOMSupportInit::initialize(MemoryManager& theManager) { DOMServices::initialize(theManager); } void DOMSupportInit::terminate() { DOMServices::terminate(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/DOMSupport/XalanDocumentPrefixResolver.cpp0000664000175000000640000001023011731656103024411 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XalanDocumentPrefixResolver.hpp" #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN XalanDocumentPrefixResolver::XalanDocumentPrefixResolver( const XalanDocument* theDocument, const XalanDOMString& theURI, MemoryManager& theManager) : m_namespaces(theManager), m_uri(theURI, theManager) { assert(theDocument != 0); NamespaceNodesTreeWalker theWalker(m_namespaces); theWalker.traverse(theDocument); } XalanDocumentPrefixResolver::~XalanDocumentPrefixResolver() { } const XalanDOMString* XalanDocumentPrefixResolver::getNamespaceForPrefix(const XalanDOMString& prefix) const { const NamespacesMapType::const_iterator i = m_namespaces.find(&prefix); if (i == m_namespaces.end()) { return 0; } else { const AttributeVectorType& theVector = (*i).second; assert(theVector.empty() == false); if (theVector.size() == 1) { assert(theVector.front() != 0); return &(theVector.front()->getNodeValue()); } else { return duplicateBinding(theVector); } } } const XalanDOMString& XalanDocumentPrefixResolver::getURI() const { return m_uri; } const XalanDOMString* XalanDocumentPrefixResolver::duplicateBinding(const AttributeVectorType& theVector) const { assert(theVector.front() != 0); return &(theVector.front()->getNodeValue()); } XalanDocumentPrefixResolver::NamespaceNodesTreeWalker::NamespaceNodesTreeWalker(NamespacesMapType& theMap) : TreeWalker(), m_map(theMap) { } XalanDocumentPrefixResolver::NamespaceNodesTreeWalker::~NamespaceNodesTreeWalker() { } bool XalanDocumentPrefixResolver::NamespaceNodesTreeWalker::startNode(const XalanNode* node) { assert(node != 0); switch(node->getNodeType()) { case XalanNode::ELEMENT_NODE: { const XalanElement* theElementNode = static_cast(node); const XalanNamedNodeMap* const atts = theElementNode->getAttributes(); assert(atts != 0); const XalanSize_t theSize = atts->getLength(); for (XalanSize_t i = 0; i < theSize; ++i) { assert(atts->item(i) != 0 && atts->item(i)->getNodeType() == XalanNode::ATTRIBUTE_NODE); const XalanAttr* const theAttr = static_cast(atts->item(i)); if (DOMServices::isNamespaceDeclaration(*theAttr) == true) { m_map[&theAttr->getLocalName()].push_back(theAttr); } } } break; default: // Do nothing... break; } return false; } bool XalanDocumentPrefixResolver::NamespaceNodesTreeWalker::startNode(XalanNode* node) { assert(node != 0); return startNode(const_cast(node)); } bool XalanDocumentPrefixResolver::NamespaceNodesTreeWalker::endNode(const XalanNode* /* node */) { return false; } bool XalanDocumentPrefixResolver::NamespaceNodesTreeWalker::endNode(XalanNode* /* node */) { return false; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/DOMSupport/DOMSupportInit.hpp0000664000175000000640000000321011731656103021614 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(DOMSUPPORTINIT_INCLUDE_GUARD_1357924680) #define DOMSUPPORTINIT_INCLUDE_GUARD_1357924680 // Base include file. Must be first. #include #include XALAN_CPP_NAMESPACE_BEGIN class XALAN_DOMSUPPORT_EXPORT DOMSupportInit { public: explicit DOMSupportInit(MemoryManager& theManager); ~DOMSupportInit(); private: // Not implemented... DOMSupportInit(const DOMSupportInit&); DOMSupportInit& operator=(const DOMSupportInit&); static void initialize(MemoryManager& theManager); static void terminate(); const PlatformSupportInit m_platformSupportInit; static unsigned long s_initCounter; }; XALAN_CPP_NAMESPACE_END #endif // !defined(DOMSUPPORTINIT_INCLUDE_GUARD_1357924680) xalan-c-1.11/c/src/xalanc/DOMSupport/TreeWalker.cpp0000664000175000000640000001241511731656103021023 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "TreeWalker.hpp" #include #include XALAN_CPP_NAMESPACE_BEGIN TreeWalker::TreeWalker() { } TreeWalker::~TreeWalker() { } const XalanNode* TreeWalker::traverse(const XalanNode* pos) { assert(pos != 0); const XalanNode* thePos = pos; bool fStop = false; while(0 != thePos && fStop == false) { fStop = startNode(thePos); const XalanNode* nextNode = thePos->getFirstChild(); while(0 == nextNode) { if (fStop == false) { fStop = endNode(thePos); } else { endNode(thePos); } nextNode = thePos->getNextSibling(); if(0 == nextNode) { thePos = thePos->getParentNode(); if(0 == thePos) { nextNode = thePos; break; } } } thePos = nextNode; } return thePos; } XalanNode* TreeWalker::traverse(XalanNode* pos) { assert(pos != 0); XalanNode* thePos = pos; bool fStop = false; while(0 != thePos && fStop == false) { fStop = startNode(thePos); XalanNode* nextNode = thePos->getFirstChild(); while(0 == nextNode) { if (fStop == false) { fStop = endNode(thePos); } else { endNode(thePos); } nextNode = thePos->getNextSibling(); if(0 == nextNode) { thePos = thePos->getParentNode(); if(0 == thePos) { nextNode = thePos; break; } } } thePos = nextNode; } return thePos; } const XalanNode* TreeWalker::traverse( const XalanNode* pos, const XalanNode* parent) { assert(pos != 0); assert(parent != 0); const XalanNode* thePos = pos; bool fStop = false; while(parent != thePos && fStop == false) { fStop = startNode(thePos); const XalanNode* nextNode = thePos->getFirstChild(); while(0 == nextNode) { if (fStop == false) { fStop = endNode(thePos); } else { endNode(thePos); } nextNode = thePos->getNextSibling(); if(0 == nextNode) { thePos = thePos->getParentNode(); assert(thePos != 0); if(parent == thePos) { nextNode = thePos; break; } } } thePos = nextNode; } return thePos; } XalanNode* TreeWalker::traverse( XalanNode* pos, XalanNode* parent) { assert(pos != 0); assert(parent != 0); XalanNode* thePos = pos; bool fStop = false; while(parent != thePos && fStop == false) { fStop = startNode(thePos); XalanNode* nextNode = thePos->getFirstChild(); while(0 == nextNode) { if (fStop == false) { fStop = endNode(thePos); } else { endNode(thePos); } nextNode = thePos->getNextSibling(); if(0 == nextNode) { thePos = thePos->getParentNode(); assert(thePos != 0); if(parent == thePos) { nextNode = thePos; break; } } } thePos = nextNode; } return thePos; } void TreeWalker::traverseSubtree(const XalanNode* pos) { if (pos != 0) { startNode(pos); const XalanNode* const theFirstChild = pos->getFirstChild(); if (theFirstChild != 0) { traverse(theFirstChild, pos); } endNode(pos); } } void TreeWalker::traverseSubtree(XalanNode* pos) { if (pos != 0) { startNode(pos); XalanNode* const theFirstChild = pos->getFirstChild(); if (theFirstChild != 0) { traverse(theFirstChild, pos); } endNode(pos); } } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/DOMSupport/XalanDocumentPrefixResolver.hpp0000664000175000000640000000751011731656103024425 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANDOCUMENTPREFIXRESOLVER_HEADER_GUARD_1357924680) #define XALANDOCUMENTPREFIXRESOLVER_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanAttr; class XalanDocument; typedef XalanVector AttributeVectorTypeDecl; XALAN_USES_MEMORY_MANAGER(AttributeVectorTypeDecl) class XALAN_DOMSUPPORT_EXPORT XalanDocumentPrefixResolver : public PrefixResolver { public: typedef AttributeVectorTypeDecl AttributeVectorType; typedef XalanMap NamespacesMapType; /** * Constructor. * * @param theDocument The XalanDocument instance to use for namespace bindings. * @param theURI The base URI for the instance. This is rarely needed, but can be provided if the URI for the XalanDocument instance is known. */ XalanDocumentPrefixResolver( const XalanDocument* theDocument, const XalanDOMString& theURI = XalanDOMString(XalanMemMgrs::getDummyMemMgr()), MemoryManager& theManager XALAN_DEFAULT_MEMMGR); virtual ~XalanDocumentPrefixResolver(); virtual const XalanDOMString* getNamespaceForPrefix(const XalanDOMString& prefix) const; virtual const XalanDOMString& getURI() const; /** * A utility class to walk the XalanDocument instance and look for attribute nodes that declare namespaces. */ class NamespaceNodesTreeWalker : public TreeWalker { public: NamespaceNodesTreeWalker(NamespacesMapType& theMap); virtual ~NamespaceNodesTreeWalker(); protected: virtual bool startNode(const XalanNode* node); virtual bool startNode(XalanNode* node); virtual bool endNode(const XalanNode* node); virtual bool endNode(XalanNode* node); private: NamespacesMapType& m_map; }; protected: /** * This function is called when more than one binding exists for a given prefix. * The default behavior uses the first binding, but a deriving class can change * that behavior by overriding. * * @param theVector The vector associated with the namespace prefix. * @return A pointer to a const XalanDOMString containing the desired binding, or NULL. */ virtual const XalanDOMString* duplicateBinding(const AttributeVectorType& theVector) const; private: NamespacesMapType m_namespaces; const XalanDOMString m_uri; }; XALAN_CPP_NAMESPACE_END #endif // XALANDOCUMENTPREFIXRESOLVER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/DOMSupport/TreeWalker.hpp0000664000175000000640000001323711731656103021033 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(TREEWALKER_HEADER_GUARD_1357924680) #define TREEWALKER_HEADER_GUARD_1357924680 // Base include file. Must be first. #include XALAN_CPP_NAMESPACE_BEGIN class XalanNode; class XALAN_DOMSUPPORT_EXPORT TreeWalker { public: /** * Constructor. */ TreeWalker(); virtual ~TreeWalker(); /** * Perform a document-order traversal. * * Derived classes and stop the traversal by returning * true from startNode() or endNode(). If that happens, * the function will return the next node in document * order. If desired, the caller can start traversing * the tree again from that point. Note that terminal * nodes will always have startNode() and endNode() * called before the traversal terminates. * * @param pos The node in the tree with which to start the walk * * @return 0 if the traversal completes, or the next node if the traversal doesn't complete. */ const XalanNode* traverse(const XalanNode* pos); /** * Perform a document-order traversal. * * Derived classes and stop the traversal by returning * true from startNode() or endNode(). If that happens, * the function will return the next node in document * order. If desired, the caller can start traversing * the tree again from that point. Note that terminal * nodes will always have startNode() and endNode() * called before the traversal terminates. * * @param pos The node in the tree with which to start the walk * * @return 0 if the traversal completes, or the next node if the traversal doesn't complete. */ XalanNode* traverse(XalanNode* pos); /** * Perform a document-order traversal stopping at the * provided parent node. * * Derived classes and stop the traversal by returning * true from startNode() or endNode(). If that happens, * the function will return the next node in document * order. If desired, the caller can start traversing * the tree again from that point. Note that terminal * nodes will always have startNode() and endNode() * called before the traversal terminates. * * @param pos The node in the tree with which to start the walk * @param parent The parent of pos. Note that for multiple calls that continue the traversal, this node must remain the same. * * @return parent if the traversal completes, or the next node if the traversal doesn't complete. */ const XalanNode* traverse( const XalanNode* pos, const XalanNode* parent); /** * Perform a document-order traversal stopping at the * provided parent node. * * Derived classes and stop the traversal by returning * true from startNode() or endNode(). If that happens, * the function will return the next node in document * order. If desired, the caller can start traversing * the tree again from that point. Note that terminal * nodes will always have startNode() and endNode() * called before the traversal terminates. * * @param pos The node in the tree with which to start the walk * @param parent The parent of pos. Note that for multiple calls that continue the traversal, this node must remain the same. * * @return parent if the traversal completes, or the next node if the traversal doesn't complete. */ XalanNode* traverse( XalanNode* pos, XalanNode* parent); /** * Perform a pre-order traversal. * * @param pos starting node */ virtual void traverseSubtree(const XalanNode* pos); /** * Perform a pre-order traversal. * * @param pos starting node */ virtual void traverseSubtree(XalanNode* pos); protected: /** * Called when first walking a node * * @param node The node * * @return return false if the walk should continue, or true if it should not. */ virtual bool startNode(const XalanNode* node) = 0; /** * Called when first walking a node * * @param node The node * * @return return false if the walk should continue, or true if it should not. */ virtual bool startNode(XalanNode* node) = 0; /** * Called when leaving a node * * @param node The node * * @return return false if the walk should continue, or true if it should not. */ virtual bool endNode(const XalanNode* node) = 0; /** * Called when leaving a node * * @param node The node * * @return return false if the walk should continue, or true if it should not. */ virtual bool endNode(XalanNode* node) = 0; private: }; XALAN_CPP_NAMESPACE_END #endif // TREEWALKER_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/DOMSupport/DOMSupport.cpp0000664000175000000640000000166711731656103021001 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "DOMSupport.hpp" XALAN_CPP_NAMESPACE_BEGIN DOMSupport::DOMSupport() { } DOMSupport::~DOMSupport() { } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/DOMSupport/DOMSupportDefinitions.hpp0000664000175000000640000000250511731656103023172 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(DOMSUPPORT_DEFINITIONS_HEADER_GUARD_1357924680) #define DOMSUPPORT_DEFINITIONS_HEADER_GUARD_1357924680 #include #if defined(XALAN_BUILD_DLL) #define XALAN_DOMSUPPORT_EXPORT XALAN_PLATFORM_EXPORT #define XALAN_DOMSUPPORT_EXPORT_FUNCTION(T) XALAN_PLATFORM_EXPORT_FUNCTION(T) #else #define XALAN_DOMSUPPORT_EXPORT XALAN_PLATFORM_IMPORT #define XALAN_DOMSUPPORT_EXPORT_FUNCTION(T) XALAN_PLATFORM_IMPORT_FUNCTION(T) #endif #endif // DOMSUPPORT_DEFINITIONS_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/DOMSupport/DOMSupport.hpp0000664000175000000640000000431111731656103020773 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(DOMSUPPORT_HEADER_GUARD_1357924680) #define DOMSUPPORT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include XALAN_CPP_NAMESPACE_BEGIN class XalanAttr; class XalanDocument; class XalanDOMString; class XalanElement; class XalanNode; class XalanText; class XALAN_DOMSUPPORT_EXPORT DOMSupport { public: DOMSupport(); virtual ~DOMSupport(); // These interfaces are inherited from Resettable... virtual void reset() = 0; // These interfaces are new to DOMSupport... /** * Retrieves the URI of the named unparsed entity * from the supplied document. * * @param theName The name of the entity * @param theDocument The document that contains the entity * @return The URI of the entity */ virtual const XalanDOMString& getUnparsedEntityURI( const XalanDOMString& theName, const XalanDocument& theDocument) const = 0; /** * Determine if a node is after another node, in document order. * * @param node1 The first node * @param node2 The second node * @return true if node1 one is after node2, or false if it is not. */ virtual bool isNodeAfter( const XalanNode& node1, const XalanNode& node2) const = 0; }; XALAN_CPP_NAMESPACE_END #endif // DOMSUPPORT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/DOMSupport/DOMSupportDefault.cpp0000664000175000000640000000330511731656103022275 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "DOMSupportDefault.hpp" #include "xalanc/Include/XalanMemoryManagement.hpp" #include "DOMServices.hpp" #include "DOMSupportException.hpp" XALAN_CPP_NAMESPACE_BEGIN DOMSupportDefault::DOMSupportDefault(MemoryManager& /* theManager */) : DOMSupport() { } DOMSupportDefault::DOMSupportDefault() : DOMSupport() { } DOMSupportDefault::~DOMSupportDefault() { } void DOMSupportDefault::reset() { } static const XalanDOMString s_emptyString(XalanMemMgrs::getDummyMemMgr()); const XalanDOMString& DOMSupportDefault::getUnparsedEntityURI( const XalanDOMString& /* theName */, const XalanDocument& /* theDocument */) const { return s_emptyString; } bool DOMSupportDefault::isNodeAfter( const XalanNode& node1, const XalanNode& node2) const { return DOMServices::isNodeAfter(node1, node2); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/DOMSupport/DOMServices.cpp0000664000175000000640000011010311731656103021072 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "DOMServices.hpp" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "DOMSupportException.hpp" XALAN_USING_XALAN(XalanDOMString) // These XalanDOMString instances will hold the actual // data. This way, the DOMSupport references can be const, // but we can initialize the data when we want to. XALAN_USING_XALAN(XalanMemMgrs) static XalanDOMString s_XMLString(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_XMLStringWithSeparator(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_XMLNamespacePrefix(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_XMLNamespaceURI(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_XMLNamespace(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_XMLNamespaceWithSeparator(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_XMLNamespaceSeparatorString(XalanMemMgrs::getDummyMemMgr()); static XalanDOMString s_XMLNamespacePrefixURI(XalanMemMgrs::getDummyMemMgr()); // These variables will hold the actual data. This way, // the DOMSupport references can be const, but we can initialize // the data when we want to. static XalanDOMString::size_type s_XMLStringLength = 0; static XalanDOMString::size_type s_XMLStringWithSeparatorLength = 0; static XalanDOMString::size_type s_XMLNamespacePrefixLength = 0; static XalanDOMString::size_type s_XMLNamespaceURILength = 0; static XalanDOMString::size_type s_XMLNamespaceLength = 0; static XalanDOMString::size_type s_XMLNamespaceWithSeparatorLength = 0; static XalanDOMString::size_type s_XMLNamespaceSeparatorStringLength = 0; static XalanDOMString::size_type s_XMLNamespacePrefixURILength = 0; XALAN_CPP_NAMESPACE_BEGIN const XalanDOMString& DOMServices::s_XMLString = ::s_XMLString; const XalanDOMString& DOMServices::s_XMLStringWithSeparator = ::s_XMLStringWithSeparator; const XalanDOMString& DOMServices::s_XMLNamespacePrefix = ::s_XMLNamespacePrefix; const XalanDOMString& DOMServices::s_XMLNamespaceURI = ::s_XMLNamespaceURI; const XalanDOMString& DOMServices::s_XMLNamespace = ::s_XMLNamespace; const XalanDOMString& DOMServices::s_XMLNamespaceWithSeparator = ::s_XMLNamespaceWithSeparator; const XalanDOMString& DOMServices::s_XMLNamespaceSeparatorString = ::s_XMLNamespaceSeparatorString; const XalanDOMString& DOMServices::s_XMLNamespacePrefixURI = ::s_XMLNamespacePrefixURI; const XalanDOMString DOMServices::s_emptyString(XalanMemMgrs::getDummyMemMgr()); const XalanDOMString::size_type& DOMServices::s_XMLStringLength = ::s_XMLStringLength; const XalanDOMString::size_type& DOMServices::s_XMLStringWithSeparatorLength = ::s_XMLStringWithSeparatorLength; const XalanDOMString::size_type& DOMServices::s_XMLNamespacePrefixLength = ::s_XMLNamespacePrefixLength; const XalanDOMString::size_type& DOMServices::s_XMLNamespaceURILength = ::s_XMLNamespaceURILength; const XalanDOMString::size_type& DOMServices::s_XMLNamespaceLength = ::s_XMLNamespaceLength; const XalanDOMString::size_type& DOMServices::s_XMLNamespaceWithSeparatorLength = ::s_XMLNamespaceWithSeparatorLength; const XalanDOMString::size_type& DOMServices::s_XMLNamespaceSeparatorStringLength = ::s_XMLNamespaceSeparatorStringLength; const XalanDOMString::size_type& DOMServices::s_XMLNamespacePrefixURILength = ::s_XMLNamespacePrefixURILength; void DOMServices::initialize(MemoryManager& theManager) { ::s_XMLString.reset( theManager, "xml"); ::s_XMLStringWithSeparator.reset( theManager, "xml:" ); ::s_XMLNamespacePrefix.reset( theManager, "xmlns:xml"); ::s_XMLNamespaceURI.reset( theManager, "http://www.w3.org/XML/1998/namespace"); ::s_XMLNamespace.reset( theManager, "xmlns"); ::s_XMLNamespaceWithSeparator.reset( theManager, "xmlns:"); ::s_XMLNamespaceSeparatorString.reset( theManager, ":"); ::s_XMLNamespacePrefixURI.reset( theManager, "http://www.w3.org/2000/xmlns/"); ::s_XMLStringLength = DOMServices::s_XMLString.length(); ::s_XMLStringWithSeparatorLength = DOMServices::s_XMLStringWithSeparator.length(); ::s_XMLNamespacePrefixLength = DOMServices::s_XMLNamespacePrefix.length(); ::s_XMLNamespaceURILength = DOMServices::s_XMLNamespaceURI.length(); ::s_XMLNamespaceLength = DOMServices::s_XMLNamespace.length(); ::s_XMLNamespaceWithSeparatorLength = DOMServices::s_XMLNamespaceWithSeparator.length(); ::s_XMLNamespaceSeparatorStringLength = DOMServices::s_XMLNamespaceSeparatorString.length(); ::s_XMLNamespacePrefixURILength = DOMServices::s_XMLNamespacePrefixURI.length(); } void DOMServices::terminate() { MemoryManager& theManager = XalanMemMgrs::getDummyMemMgr(); releaseMemory(::s_XMLString, theManager ); releaseMemory(::s_XMLStringWithSeparator, theManager ); releaseMemory(::s_XMLNamespacePrefix, theManager ); releaseMemory(::s_XMLNamespaceURI, theManager ); releaseMemory(::s_XMLNamespace, theManager ); releaseMemory(::s_XMLNamespaceWithSeparator, theManager ); releaseMemory(::s_XMLNamespaceSeparatorString, theManager ); releaseMemory(::s_XMLNamespacePrefixURI, theManager ); ::s_XMLStringLength = 0; ::s_XMLStringWithSeparatorLength = 0; ::s_XMLNamespacePrefixLength = 0; ::s_XMLNamespaceURILength = 0; ::s_XMLNamespaceLength = 0; ::s_XMLNamespaceWithSeparatorLength = 0; ::s_XMLNamespaceSeparatorStringLength = 0; ::s_XMLNamespacePrefixURILength = 0; } void DOMServices::getNodeData( const XalanNode& node, XalanDOMString& data) { switch(node.getNodeType()) { case XalanNode::DOCUMENT_FRAGMENT_NODE: { const XalanDocumentFragment& theDocumentFragment = static_cast(node); getNodeData(theDocumentFragment, data); } break; case XalanNode::DOCUMENT_NODE: { const XalanDocument& theDocument = static_cast(node); getNodeData(theDocument, data); } break; case XalanNode::ELEMENT_NODE: { const XalanElement& theElement = static_cast(node); getNodeData(theElement, data); } break; case XalanNode::TEXT_NODE: case XalanNode::CDATA_SECTION_NODE: { const XalanText& theTextNode = static_cast(node); getNodeData(theTextNode, data); } break; case XalanNode::ATTRIBUTE_NODE: { const XalanAttr& theAttr = static_cast(node); getNodeData(theAttr, data); } break; case XalanNode::COMMENT_NODE: { const XalanComment& theComment = static_cast(node); getNodeData(theComment, data); } break; case XalanNode::PROCESSING_INSTRUCTION_NODE: { const XalanProcessingInstruction& thePI = static_cast(node); getNodeData(thePI, data); } break; default: // ignore break; } } void DOMServices::doGetNodeData( const XalanNode& node, ExecutionContext& executionContext, XalanDOMString& data) { assert(executionContext.hasPreserveOrStripSpaceConditions() == true); switch(node.getNodeType()) { case XalanNode::DOCUMENT_FRAGMENT_NODE: { const XalanDocumentFragment& theDocumentFragment = static_cast(node); doGetNodeData(theDocumentFragment, executionContext, data); } break; case XalanNode::DOCUMENT_NODE: { const XalanDocument& theDocument = static_cast(node); doGetNodeData(theDocument, executionContext, data); } break; case XalanNode::ELEMENT_NODE: { const XalanElement& theElement = static_cast(node); doGetNodeData(theElement, executionContext, data); } break; case XalanNode::TEXT_NODE: case XalanNode::CDATA_SECTION_NODE: { const XalanText& theTextNode = static_cast(node); doGetNodeData(theTextNode, executionContext, data); } break; case XalanNode::ATTRIBUTE_NODE: { const XalanAttr& theAttr = static_cast(node); getNodeData(theAttr, data); } break; case XalanNode::COMMENT_NODE: { const XalanComment& theComment = static_cast(node); getNodeData(theComment, data); } break; case XalanNode::PROCESSING_INSTRUCTION_NODE: { const XalanProcessingInstruction& thePI = static_cast(node); getNodeData(thePI, data); } break; default: // ignore break; } } inline void getChildData( const XalanNode* child, XalanDOMString& data) { const XalanNode::NodeType theType = child->getNodeType(); if (theType == XalanNode::ELEMENT_NODE) { const XalanElement* const theElementNode = static_cast(child); DOMServices::getNodeData(*theElementNode, data); } else if (theType == XalanNode::TEXT_NODE || theType == XalanNode::CDATA_SECTION_NODE) { const XalanText* theTextNode = static_cast(child); DOMServices::getNodeData(*theTextNode, data); } } inline void getChildData( const XalanNode* child, ExecutionContext& executionContext, XalanDOMString& data) { assert(executionContext.hasPreserveOrStripSpaceConditions() == true); const XalanNode::NodeType theType = child->getNodeType(); if (theType == XalanNode::ELEMENT_NODE) { const XalanElement* const theElementNode = static_cast(child); DOMServices::doGetNodeData(*theElementNode, executionContext, data); } else if (theType == XalanNode::TEXT_NODE || theType == XalanNode::CDATA_SECTION_NODE) { const XalanText* theTextNode = static_cast(child); DOMServices::doGetNodeData(*theTextNode, executionContext, data); } } inline void getChildrenData( const XalanNode* firstChild, XalanDOMString& data) { while(firstChild != 0) { getChildData(firstChild, data); firstChild = firstChild->getNextSibling(); } } inline void getChildrenData( const XalanNode* firstChild, ExecutionContext& executionContext, XalanDOMString& data) { assert(executionContext.hasPreserveOrStripSpaceConditions() == true); while(firstChild != 0) { getChildData(firstChild, executionContext, data); firstChild = firstChild->getNextSibling(); } } void DOMServices::getNodeData( const XalanDocument& document, XalanDOMString& data) { assert(document.getDocumentElement() != 0); getChildrenData(document.getDocumentElement(), data); } void DOMServices::doGetNodeData( const XalanDocument& document, ExecutionContext& executionContext, XalanDOMString& data) { assert(executionContext.hasPreserveOrStripSpaceConditions() == true); assert(document.getDocumentElement() != 0); getChildrenData( document.getDocumentElement(), executionContext, data); } void DOMServices::getNodeData( const XalanDocumentFragment& documentFragment, XalanDOMString& data) { for(const XalanNode* child = documentFragment.getFirstChild(); child != 0; child = child->getNextSibling()) { assert(child != 0); getChildData(child, data); } } void DOMServices::doGetNodeData( const XalanDocumentFragment& documentFragment, ExecutionContext& executionContext, XalanDOMString& data) { assert(executionContext.hasPreserveOrStripSpaceConditions() == true); for(const XalanNode* child = documentFragment.getFirstChild(); child != 0; child = child->getNextSibling()) { assert(child != 0); getChildData(child, executionContext, data); } } void DOMServices::getNodeData( const XalanElement& element, XalanDOMString& data) { getChildrenData(element.getFirstChild(), data); } void DOMServices::doGetNodeData( const XalanElement& element, ExecutionContext& executionContext, XalanDOMString& data) { assert(executionContext.hasPreserveOrStripSpaceConditions() == true); getChildrenData(element.getFirstChild(), executionContext, data); } void DOMServices::getNodeData( const XalanNode& node, FormatterListener& formatterListener, MemberFunctionPtr function) { switch(node.getNodeType()) { case XalanNode::DOCUMENT_FRAGMENT_NODE: { const XalanDocumentFragment& theDocumentFragment = static_cast(node); getNodeData(theDocumentFragment, formatterListener, function); } break; case XalanNode::DOCUMENT_NODE: { const XalanDocument& theDocument = static_cast(node); getNodeData(theDocument, formatterListener, function); } break; case XalanNode::ELEMENT_NODE: { const XalanElement& theElement = static_cast(node); getNodeData(theElement, formatterListener, function); } break; case XalanNode::TEXT_NODE: case XalanNode::CDATA_SECTION_NODE: { const XalanText& theTextNode = static_cast(node); getNodeData(theTextNode, formatterListener, function); } break; case XalanNode::ATTRIBUTE_NODE: { const XalanAttr& theAttr = static_cast(node); getNodeData(theAttr, formatterListener, function); } break; case XalanNode::COMMENT_NODE: { const XalanComment& theComment = static_cast(node); getNodeData(theComment, formatterListener, function); } break; case XalanNode::PROCESSING_INSTRUCTION_NODE: { const XalanProcessingInstruction& thePI = static_cast(node); getNodeData(thePI, formatterListener, function); } break; default: // ignore break; } } void DOMServices::doGetNodeData( const XalanNode& node, ExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) { assert(executionContext.hasPreserveOrStripSpaceConditions() == true); switch(node.getNodeType()) { case XalanNode::DOCUMENT_FRAGMENT_NODE: { const XalanDocumentFragment& theDocumentFragment = static_cast(node); doGetNodeData(theDocumentFragment, executionContext, formatterListener, function); } break; case XalanNode::DOCUMENT_NODE: { const XalanDocument& theDocument = static_cast(node); doGetNodeData(theDocument, executionContext, formatterListener, function); } break; case XalanNode::ELEMENT_NODE: { const XalanElement& theElement = static_cast(node); doGetNodeData(theElement, executionContext, formatterListener, function); } break; case XalanNode::TEXT_NODE: case XalanNode::CDATA_SECTION_NODE: { const XalanText& theTextNode = static_cast(node); doGetNodeData(theTextNode, executionContext, formatterListener, function); } break; case XalanNode::ATTRIBUTE_NODE: { const XalanAttr& theAttr = static_cast(node); getNodeData(theAttr, formatterListener, function); } break; case XalanNode::COMMENT_NODE: { const XalanComment& theComment = static_cast(node); getNodeData(theComment, formatterListener, function); } break; case XalanNode::PROCESSING_INSTRUCTION_NODE: { const XalanProcessingInstruction& thePI = static_cast(node); getNodeData(thePI, formatterListener, function); } break; default: // ignore break; } } inline void getChildData( const XalanNode* child, FormatterListener& formatterListener, DOMServices::MemberFunctionPtr function) { const XalanNode::NodeType theType = child->getNodeType(); if (theType == XalanNode::ELEMENT_NODE) { const XalanElement* const theElementNode = static_cast(child); DOMServices::getNodeData(*theElementNode, formatterListener, function); } else if (theType == XalanNode::TEXT_NODE || theType == XalanNode::CDATA_SECTION_NODE) { const XalanText* theTextNode = static_cast(child); DOMServices::getNodeData(*theTextNode, formatterListener, function); } } inline void getChildData( const XalanNode* child, ExecutionContext& executionContext, FormatterListener& formatterListener, DOMServices::MemberFunctionPtr function) { assert(executionContext.hasPreserveOrStripSpaceConditions() == true); const XalanNode::NodeType theType = child->getNodeType(); if (theType == XalanNode::ELEMENT_NODE) { const XalanElement* const theElementNode = static_cast(child); DOMServices::getNodeData(*theElementNode, executionContext, formatterListener, function); } else if (theType == XalanNode::TEXT_NODE || theType == XalanNode::CDATA_SECTION_NODE) { const XalanText* theTextNode = static_cast(child); DOMServices::getNodeData(*theTextNode, executionContext, formatterListener, function); } } inline void getChildrenData( const XalanNode* firstChild, FormatterListener& formatterListener, DOMServices::MemberFunctionPtr function) { while(firstChild != 0) { getChildData(firstChild, formatterListener, function); firstChild = firstChild->getNextSibling(); } } inline void getChildrenData( const XalanNode* firstChild, ExecutionContext& executionContext, FormatterListener& formatterListener, DOMServices::MemberFunctionPtr function) { assert(executionContext.hasPreserveOrStripSpaceConditions() == true); while(firstChild != 0) { getChildData(firstChild, executionContext, formatterListener, function); firstChild = firstChild->getNextSibling(); } } void DOMServices::getNodeData( const XalanDocument& document, FormatterListener& formatterListener, MemberFunctionPtr function) { getChildrenData( document.getDocumentElement(), formatterListener, function); } void DOMServices::doGetNodeData( const XalanDocument& document, ExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) { assert(executionContext.hasPreserveOrStripSpaceConditions() == true); getChildrenData( document.getDocumentElement(), executionContext, formatterListener, function); } void DOMServices::getNodeData( const XalanDocumentFragment& documentFragment, FormatterListener& formatterListener, MemberFunctionPtr function) { for(const XalanNode* child = documentFragment.getFirstChild(); child != 0; child = child->getNextSibling()) { assert(child != 0); getChildData(child, formatterListener, function); } } void DOMServices::doGetNodeData( const XalanDocumentFragment& documentFragment, ExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) { assert(executionContext.hasPreserveOrStripSpaceConditions() == true); for(const XalanNode* child = documentFragment.getFirstChild(); child != 0; child = child->getNextSibling()) { assert(child != 0); getChildData(child, executionContext, formatterListener, function); } } void DOMServices::getNodeData( const XalanElement& element, FormatterListener& formatterListener, MemberFunctionPtr function) { getChildrenData( element.getFirstChild(), formatterListener, function); } void DOMServices::doGetNodeData( const XalanElement& element, ExecutionContext& executionContext, FormatterListener& formatterListener, MemberFunctionPtr function) { assert(executionContext.hasPreserveOrStripSpaceConditions() == true); getChildrenData( element.getFirstChild(), executionContext, formatterListener, function); } const XalanDOMString& DOMServices::getNameOfNode(const XalanNode& n) { const XalanNode::NodeType theNodeType = n.getNodeType(); if (theNodeType == XalanNode::ATTRIBUTE_NODE) { return getNameOfNode(static_cast(n)); } else if (theNodeType == XalanNode::ELEMENT_NODE) { return getNameOfNode(static_cast(n)); } else if (theNodeType == XalanNode::PROCESSING_INSTRUCTION_NODE) { return n.getNodeName(); } else { return s_emptyString; } } const XalanDOMString& DOMServices::getNamespaceOfNode(const XalanNode& n) { if (n.getNodeType() != XalanNode::ATTRIBUTE_NODE) { return n.getNamespaceURI(); } else { const XalanDOMString& theNodeName = n.getNodeName(); // Special case for namespace nodes... if (startsWith(theNodeName, DOMServices::s_XMLNamespaceWithSeparator) == true || equals(theNodeName, DOMServices::s_XMLNamespace) == true) { return s_emptyString; } else { return n.getNamespaceURI(); } } } // Note functional overlap with NamespaceResolver's // getNamespaceOfNode() method. // // ***** Also: although this may not yet impact Xalan, // as of DOM Level 2 it is possible for a hand-constructed DOM to // have namespaced nodes with no declaration in scope. In DOM2 it's // considered the responsibility of application code such as DOM // serializers to recognize these cases and synthesize appropriate // declarations when necessary. DOM3 is expected to add // some form of namespaceNormalize() operation to assist this task. // // DOM3 may also add a resolveNamespacePrefix() operation // which is aware of these issues and can generate reasonable // results even for a non-NS-normalized tree. The expected logic // is that a Namespaced node with a prefix will constitute an // implicit declaration of that prefix. // // If we cut over to DOM2 and want to accept DOMs from sources other // than the parser, we need to decide between demanding a // namespace-normalized DOM as input, doing a normalize pass // (full treewalk, expensive), or recognizing implicit declarations. const XalanDOMString* DOMServices::getNamespaceForPrefix( const XalanDOMString& prefix, const XalanElement& namespaceContext) { const XalanDOMString* theNamespace = 0; // Reserved xml: is hardcoded if(equals(prefix, s_XMLString) == true) { theNamespace = &s_XMLNamespaceURI; } else { const bool isDefaultNamespace = prefix.empty(); XalanNode::NodeType type; const XalanNode* parent = &namespaceContext; // Consider elements until NS is resolved, or we run out of // ancestors, or we hit something other than an Element or // EntityReference node (ie, Document or DocumentFragment) while (parent != 0 && theNamespace == 0 && ((type = parent->getNodeType()) == XalanNode::ELEMENT_NODE || type == XalanNode::ENTITY_REFERENCE_NODE)) { if (type == XalanNode::ELEMENT_NODE) { // Scan the attributes for xmlns:* or xmlns: // (The latter is the prefix=="" case.) const XalanNamedNodeMap* const nnm = parent->getAttributes(); assert(nnm != 0); const XalanSize_t theLength = nnm->getLength(); for (XalanSize_t i = 0; i < theLength; i ++) { const XalanNode* const attr = nnm->item(i); assert(attr != 0); const XalanDOMString& aname = attr->getNodeName(); if (isDefaultNamespace == true) { if (equals(aname, s_XMLNamespace) == true) { theNamespace = &attr->getNodeValue(); break; } } else if (startsWith(aname, s_XMLNamespaceWithSeparator) == true) { if (equals( prefix, aname.c_str() + s_XMLNamespaceWithSeparatorLength) == true) { theNamespace = &attr->getNodeValue(); break; } } } } parent = getParentOfNode(*parent); } } return theNamespace; } const XalanDOMString* DOMServices::getNamespaceForPrefix( const XalanDOMChar* theName, const PrefixResolver& thePrefixResolver, bool isAttribute, XalanDOMString& thePrefix) { const XalanDOMString::size_type theLength = length(theName); // Check for special default namespace value... if (isAttribute == true && equals(s_XMLNamespace, theName, theLength) == true) { return &s_XMLNamespacePrefixURI; } else { const XalanDOMString::size_type theColonIndex = indexOf(theName, XalanUnicode::charColon); if (theColonIndex == theLength) { thePrefix.clear(); if (isAttribute == true) { return 0; } else { return thePrefixResolver.getNamespaceForPrefix(s_emptyString); } } else { // Get the prefix from theName... thePrefix.assign(theName, theColonIndex); assert(thePrefix.empty() == false); return thePrefixResolver.getNamespaceForPrefix(thePrefix); } } } bool DOMServices::isNodeAfter( const XalanNode& node1, const XalanNode& node2) { assert(node1.getOwnerDocument() == node2.getOwnerDocument()); assert(node1.getNodeType() != XalanNode::DOCUMENT_NODE && node2.getNodeType() != XalanNode::DOCUMENT_NODE); if (node1.isIndexed() == true) { assert(node2.isIndexed() == true); return node1.getIndex() > node2.getIndex() ? true : false; } else { bool isNodeAfter = false; const XalanNode* parent1 = getParentOfNode(node1); const XalanNode* parent2 = getParentOfNode(node2); // Optimize for most common case if (parent1 == parent2) // then we know they are siblings { isNodeAfter = isNodeAfterSibling(*parent1, node1, node2); } else { // General strategy: Figure out the lengths of the two // ancestor chains, and walk up them looking for the // first common ancestor, at which point we can do a // sibling compare. Edge condition where one is the // ancestor of the other. // Count parents, so we can see if one of the chains // needs to be equalized. XalanSize_t nParents1 = 2; XalanSize_t nParents2 = 2; // count node & parent obtained above while (parent1 != 0) { nParents1++; parent1 = getParentOfNode(*parent1); } while (parent2 != 0) { nParents2++; parent2 = getParentOfNode(*parent2); } // adjustable starting points const XalanNode* startNode1 = &node1; const XalanNode* startNode2 = &node2; // Do I have to adjust the start point in one of // the ancesor chains? if (nParents1 < nParents2) { // adjust startNode2 const XalanSize_t adjust = nParents2 - nParents1; for (XalanSize_t i = 0; i < adjust; i++) { startNode2 = getParentOfNode(*startNode2); } } else if(nParents1 > nParents2) { // adjust startNode1 const XalanSize_t adjust = nParents1 - nParents2; for (XalanSize_t i = 0; i < adjust; i++) { startNode1 = getParentOfNode(*startNode1); } } // so we can "back up" const XalanNode* prevChild1 = 0; const XalanNode* prevChild2 = 0; // Loop up the ancestor chain looking for common parent. while (0 != startNode1) { if (startNode1 == startNode2) // common parent? { if (0 == prevChild1) // first time in loop? { // Edge condition: one is the ancestor of the other. isNodeAfter = (nParents1 < nParents2) ? true : false; break; // from while loop } else { isNodeAfter = isNodeAfterSibling(*startNode1, *prevChild1, *prevChild2); break; // from while loop } } prevChild1 = startNode1; assert(prevChild1 != 0); startNode1 = getParentOfNode(*startNode1); assert(startNode1 != 0); prevChild2 = startNode2; assert(prevChild2 != 0); startNode2 = getParentOfNode(*startNode2); assert(startNode2 != 0); } } return isNodeAfter; } } bool DOMServices::isNodeAfterSibling( const XalanNode& parent, const XalanNode& child1, const XalanNode& child2) { bool isNodeAfterSibling = false; const XalanNode::NodeType child1type = child1.getNodeType(); const XalanNode::NodeType child2type = child2.getNodeType(); if (XalanNode::ATTRIBUTE_NODE != child1type && XalanNode::ATTRIBUTE_NODE == child2type) { // always sort attributes before non-attributes. isNodeAfterSibling = true; } else if (XalanNode::ATTRIBUTE_NODE == child1type && XalanNode::ATTRIBUTE_NODE != child2type) { // always sort attributes before non-attributes. isNodeAfterSibling = false; } else if (XalanNode::ATTRIBUTE_NODE == child1type) { const XalanNamedNodeMap* children = parent.getAttributes(); const XalanSize_t nNodes = children->getLength(); bool found1 = false; bool found2 = false; for (XalanSize_t i = 0; i < nNodes; i++) { const XalanNode* child = children->item(i); if (&child1 == child) { if (found2 == true) { isNodeAfterSibling = true; break; } found1 = true; } else if (&child2 == child) { if (found1 == true) { isNodeAfterSibling = false; break; } found2 = true; } } } else { const XalanNode* child = parent.getFirstChild(); bool found1 = false; bool found2 = false; while (child != 0) { if (&child1 == child) { if (found2 == true) { isNodeAfterSibling = true; break; } found1 = true; } else if (&child2 == child) { if (found1 == true) { isNodeAfterSibling = false; break; } found2 = true; } child = child->getNextSibling(); } assert(found1 != found2); } return isNodeAfterSibling; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/DOMSupport/DOMSupportDefault.hpp0000664000175000000640000000365711731656103022314 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(DOMSUPPORTDEFAULT_HEADER_GUARD_1357924680) #define DOMSUPPORTDEFAULT_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include XALAN_DECLARE_XERCES_CLASS(MemoryManager) XALAN_CPP_NAMESPACE_BEGIN XALAN_USING_XERCES(MemoryManager) class XALAN_DOMSUPPORT_EXPORT DOMSupportDefault : public DOMSupport { public: // This constructor is deprecated. Use the default constructor instead. DOMSupportDefault(MemoryManager& theManager); DOMSupportDefault(); virtual ~DOMSupportDefault(); // These interfaces are inherited from Resettable... virtual void reset(); // These interfaces are inherited from DOMSupport... virtual const XalanDOMString& getUnparsedEntityURI( const XalanDOMString& theName, const XalanDocument& theDocument) const; virtual bool isNodeAfter( const XalanNode& node1, const XalanNode& node2) const; private: }; XALAN_CPP_NAMESPACE_END #endif // DOMSUPPORTDEFAULT_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/DOMSupport/DOMServices.hpp0000664000175000000640000007125711731656103021117 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(DOMSERVICES_HEADER_GUARD_1357924680) #define DOMSERVICES_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include #include #include #include #include #include #include #include #include XALAN_CPP_NAMESPACE_BEGIN class XalanDocument; class XalanDocumentFragment; class XALAN_DOMSUPPORT_EXPORT DOMServices { public: static const XalanDOMString& s_XMLString; static const XalanDOMString& s_XMLStringWithSeparator; static const XalanDOMString& s_XMLNamespacePrefix; static const XalanDOMString& s_XMLNamespaceURI; static const XalanDOMString& s_XMLNamespace; static const XalanDOMString& s_XMLNamespaceWithSeparator; static const XalanDOMString& s_XMLNamespaceSeparatorString; static const XalanDOMString& s_XMLNamespacePrefixURI; static const XalanDOMString::size_type& s_XMLStringLength; static const XalanDOMString::size_type& s_XMLStringWithSeparatorLength; static const XalanDOMString::size_type& s_XMLNamespacePrefixLength; static const XalanDOMString::size_type& s_XMLNamespaceURILength; static const XalanDOMString::size_type& s_XMLNamespaceLength; static const XalanDOMString::size_type& s_XMLNamespaceWithSeparatorLength; static const XalanDOMString::size_type& s_XMLNamespaceSeparatorStringLength; static const XalanDOMString::size_type& s_XMLNamespacePrefixURILength; // A dummy string to return when we need an emtpy string... static const XalanDOMString s_emptyString; /** * Initialize static data. Must be called before any * other functions are called. */ static void initialize(MemoryManager& theManager); /** * Destroy static data. After thus function is called, * no other functions can be called. */ static void terminate(); /** * Retrieves data for node * * @param node DOM node whose data is to be returned * @param data a string to which the node's data will be appended */ static void getNodeData( const XalanNode& node, XalanDOMString& data); /** * Retrieves data for node * * @param node DOM node whose data is to be returned * @param context The current execution context * @param data a string to which the node's data will be appended */ static void getNodeData( const XalanNode& node, ExecutionContext& context, XalanDOMString& data) { if (!context.hasPreserveOrStripSpaceConditions()) { getNodeData(node, data); } else { doGetNodeData(node, context, data); } } /** * Retrieves data for node * * @param attribute DOM node whose data is to be returned * @param data a string to which the node's data will be appended */ static void getNodeData( const XalanAttr& attribute, XalanDOMString& data) { data.append(attribute.getNodeValue()); } /** * Retrieves data for node * * @param comment DOM node whose data is to be returned * @param data a string to which the node's data will be appended */ static void getNodeData( const XalanComment& comment, XalanDOMString& data) { data.append(comment.getData()); } /** * Retrieves data for node * * @param document DOM node whose data is to be returned * @param data a string to which the node's data will be appended */ static void getNodeData( const XalanDocument& document, XalanDOMString& data); /** * Retrieves data for node * * @param document The DOM node whose data is to be returned * @param context The current execution context * @param data a string to which the node's data will be appended */ static void getNodeData( const XalanDocument& document, ExecutionContext& context, XalanDOMString& data) { if (!context.hasPreserveOrStripSpaceConditions()) { getNodeData(document, data); } else { doGetNodeData(document, context, data); } } /** * Retrieves data for node * * @param documentFragment The DOM node whose data is to be returned * @param data a string to which the node's data will be appended */ static void getNodeData( const XalanDocumentFragment& documentFragment, XalanDOMString& data); /** * Retrieves data for node * * @param documentFragment The DOM node whose data is to be returned * @param context The current execution context * @param data a string to which the node's data will be appended */ static void getNodeData( const XalanDocumentFragment& documentFragment, ExecutionContext& context, XalanDOMString& data) { if (!context.hasPreserveOrStripSpaceConditions()) { getNodeData(documentFragment, data); } else { doGetNodeData(documentFragment, context, data); } } /** * Retrieves data for node * * @param element DOM node whose data is to be returned * @param data a string to which the node's data will be appended */ static void getNodeData( const XalanElement& element, XalanDOMString& data); /** * Retrieves data for node * * @param node DOM node whose data is to be returned * @param context The current execution context * @param data a string to which the node's data will be appended */ static void getNodeData( const XalanElement& element, ExecutionContext& context, XalanDOMString& data) { if (!context.hasPreserveOrStripSpaceConditions()) { getNodeData(element, data); } else { doGetNodeData(element, context, data); } } /** * Retrieves data for node * * @param pi DOM node whose data is to be returned * @param data a string to which the node's data will be appended */ static void getNodeData( const XalanProcessingInstruction& pi, XalanDOMString& data) { data.append(pi.getData()); } /** * Retrieves data for node * * @param node DOM node whose data is to be returned * @param data a string to which the node's data will be appended */ static void getNodeData( const XalanText& text, XalanDOMString& data) { data.append(text.getData()); } /** * Retrieves data for node * * @param text DOM node whose data is to be returned * @param context The current execution context * @param data a string to which the node's data will be appended */ static void getNodeData( const XalanText& text, ExecutionContext& context, XalanDOMString& data) { if (!context.hasPreserveOrStripSpaceConditions()) { getNodeData(text, data); } else { doGetNodeData(text, context, data); } } typedef void (FormatterListener::*MemberFunctionPtr)(const XMLCh* const, const FormatterListener::size_type); /** * Sends the data for a node to a FormatterListener * * @param node DOM node whose data is to be returned * @param formatterListener the FormatterListener instance to receive the data * @param function A pointer to the member function of FormatterListener to call */ static void getNodeData( const XalanNode& node, FormatterListener& formatterListener, MemberFunctionPtr function); /** * Sends the data for a node to a FormatterListener * * @param node DOM node whose data is to be returned * @param context The current execution context * @param formatterListener the FormatterListener instance to receive the data * @param function A pointer to the member function of FormatterListener to call */ static void getNodeData( const XalanNode& node, ExecutionContext& context, FormatterListener& formatterListener, MemberFunctionPtr function) { if (!context.hasPreserveOrStripSpaceConditions()) { getNodeData(node, formatterListener, function); } else { doGetNodeData(node, context, formatterListener, function); } } /** * Sends the data for a node to a FormatterListener * * @param attribute DOM node whose data is to be returned * @param formatterListener the FormatterListener instance to receive the data * @param fRaw Whether or not the data should be sent raw. */ static void getNodeData( const XalanAttr& attribute, FormatterListener& formatterListener, MemberFunctionPtr function) { sendData(formatterListener, function, attribute.getNodeValue()); } /** * Sends the data for a node to a FormatterListener * * @param comment DOM node whose data is to be returned * @param formatterListener the FormatterListener instance to receive the data * @param fRaw Whether or not the data should be sent raw. */ static void getNodeData( const XalanComment& comment, FormatterListener& formatterListener, MemberFunctionPtr function) { sendData(formatterListener, function, comment.getData()); } /** * Sends the data for a node to a FormatterListener * * @param document DOM node whose data is to be returned * @param formatterListener the FormatterListener instance to receive the data * @param fRaw Whether or not the data should be sent raw. */ static void getNodeData( const XalanDocument& document, FormatterListener& formatterListener, MemberFunctionPtr function); /** * Sends the data for a node to a FormatterListener * * @param node DOM node whose data is to be returned * @param context The current execution context * @param formatterListener the FormatterListener instance to receive the data * @param function A pointer to the member function of FormatterListener to call */ static void getNodeData( const XalanDocument& document, ExecutionContext& context, FormatterListener& formatterListener, MemberFunctionPtr function) { if (!context.hasPreserveOrStripSpaceConditions()) { getNodeData(document, formatterListener, function); } else { doGetNodeData(document, context, formatterListener, function); } } /** * Sends the data for a node to a FormatterListener * * @param documentFragment DOM node whose data is to be sent * @param formatterListener the FormatterListener instance to receive the data * @param fRaw Whether or not the data should be sent raw. */ static void getNodeData( const XalanDocumentFragment& documentFragment, FormatterListener& formatterListener, MemberFunctionPtr function); /** * Sends the data for a node to a FormatterListener * * @param documentFragment DOM node whose data is to be sent * @param context The current execution context * @param formatterListener the FormatterListener instance to receive the data * @param fRaw Whether or not the data should be sent raw. */ static void getNodeData( const XalanDocumentFragment& documentFragment, ExecutionContext& context, FormatterListener& formatterListener, MemberFunctionPtr function) { if (!context.hasPreserveOrStripSpaceConditions()) { getNodeData(documentFragment, formatterListener, function); } else { doGetNodeData(documentFragment, context, formatterListener, function); } } /** * Sends the data for a node to a FormatterListener * * @param element DOM node whose data is to be returned * @param formatterListener the FormatterListener instance to receive the data * @param fRaw Whether or not the data should be sent raw. */ static void getNodeData( const XalanElement& element, FormatterListener& formatterListener, MemberFunctionPtr function); /** * Sends the data for a node to a FormatterListener * * @param node DOM node whose data is to be returned * @param context The current execution context * @param formatterListener the FormatterListener instance to receive the data * @param function A pointer to the member function of FormatterListener to call */ static void getNodeData( const XalanElement& element, ExecutionContext& context, FormatterListener& formatterListener, MemberFunctionPtr function) { if (!context.hasPreserveOrStripSpaceConditions()) { getNodeData(element, formatterListener, function); } else { doGetNodeData(element, context, formatterListener, function); } } /** * Sends the data for a node to a FormatterListener * * @param pi DOM node whose data is to be returned * @param formatterListener the FormatterListener instance to receive the data * @param fRaw Whether or not the data should be sent raw. */ static void getNodeData( const XalanProcessingInstruction& pi, FormatterListener& formatterListener, MemberFunctionPtr function) { sendData(formatterListener, function, pi.getData()); } /** * Sends the data for a node to a FormatterListener * * @param node DOM node whose data is to be returned * @param formatterListener the FormatterListener instance to receive the data * @param fRaw Whether or not the data should be sent raw. */ static void getNodeData( const XalanText& text, FormatterListener& formatterListener, MemberFunctionPtr function) { sendData(formatterListener, function, text.getData()); } /** * Sends the data for a node to a FormatterListener * * @param node DOM node whose data is to be returned * @param context The current execution context * @param formatterListener the FormatterListener instance to receive the data * @param fRaw Whether or not the data should be sent raw. */ static void getNodeData( const XalanText& text, ExecutionContext& context, FormatterListener& formatterListener, MemberFunctionPtr function) { if (!context.hasPreserveOrStripSpaceConditions()) { getNodeData(text, formatterListener, function); } else { doGetNodeData(text, context, formatterListener, function); } } /** * Retrieve the name of the node, taking into * account the differences between the DOM and * XSLT data models. * * @param node DOM node whose name is returned * @return name of the node */ static const XalanDOMString& getNameOfNode(const XalanNode& n); /** * Retrieve the name of the node, taking into * account the differences between the DOM and * XSLT data models. * * @param attr DOM attribute node whose name is returned * @return name of the node */ static const XalanDOMString& getNameOfNode(const XalanAttr& attr) { const XalanDOMString& theName = attr.getNodeName(); if (startsWith(theName, s_XMLNamespaceWithSeparator) == true) { // Special case for namespace nodes... return attr.getLocalName(); } else if (equals(theName, s_XMLNamespace) == true) { return s_emptyString; } else { return theName; } } /** * Retrieve the name of the node, taking into * account the differences between the DOM and * XSLT data models. * * @param attr DOM element node whose name is returned * @return name of the node */ static const XalanDOMString& getNameOfNode(const XalanElement& element) { return element.getNodeName(); } /** * Retrieve local name of node, taking into * account the differences between the DOM and * XSLT data models. * * @param node DOM node whose name is returned * @return name of node without namespace */ static const XalanDOMString& getLocalNameOfNode(const XalanNode& n) { const XalanDOMString& theLocalName = n.getLocalName(); if (theLocalName.empty() == false) { return theLocalName; } else { return n.getNodeName(); } } /** * Retrieve the namespace of the node, taking into * account the differences between the DOM and * XSLT data models. * * @param node DOM node whose namespace is returned * @return namespace of the node */ static const XalanDOMString& getNamespaceOfNode(const XalanNode& n); /** * Determine whether or not an attribute node * is declaring a namespace. * * @param node DOM node to check * @return true if the attribute is declaring a namespace, false if not. */ static bool isNamespaceDeclaration(const XalanAttr& n) { const XalanDOMString& theName = n.getNodeName(); return startsWith(theName, DOMServices::s_XMLNamespaceWithSeparator) == true || equals(theName, DOMServices::s_XMLNamespace) == true; } /** * Retrieve the parent of a node. This function has to be implemented, * because the DOM WG decided that attributes don't have parents. * * @param node child node * @return parent node */ static XalanNode* getParentOfNode(const XalanNode& node) { if(node.getNodeType() == XalanNode::ATTRIBUTE_NODE) { return static_cast(node).getOwnerElement(); } else { return node.getParentNode(); } } /** * Retrieve the URI corresponding to a namespace prefix * * @param prefix prefix for a namespace * @param namespaceContext DOM element representing the context for namespace * @return URI corresponding to namespace */ static const XalanDOMString* getNamespaceForPrefix( const XalanDOMString& prefix, const XalanElement& namespaceContext); /** * Retrieve the URI corresponding to a namespace prefix, using the supplied * name, and PrefixResolver. The routine also returns the prefix. * * @param theName The name that contains the prefix * @param thePrefixResolver The PrefixResolver to use * @param isAttribute If true, special rules for attributes are used * @param thePrefix The prefix * @return URI corresponding to namespace */ static const XalanDOMString* getNamespaceForPrefix( const XalanDOMChar* theName, const PrefixResolver& thePrefixResolver, bool isAttribute, XalanDOMString& thePrefix); /** * Determine if a node is after another node, in document order. * * @param node1 The first node * @param node2 The second node * @return true if node1 one is after node2, or false if it is not. */ static bool isNodeAfter( const XalanNode& node1, const XalanNode& node2); /** * Determine if a node is after another node in the sibling list. * * @param parent The parent of the nodes. * @param node1 The first node * @param node2 The second node * @return true if node1 one is after node2, or false if it is not. */ static bool isNodeAfterSibling( const XalanNode& parent, const XalanNode& child1, const XalanNode& child2); private: friend void getChildData( const XalanNode* child, XalanDOMString& data); friend void getChildData( const XalanNode* child, ExecutionContext& executionContext, XalanDOMString& data); friend void getChildData( const XalanNode* child, FormatterListener& formatterListener, DOMServices::MemberFunctionPtr function); /** * Retrieves data for node * * @param node DOM node whose data is to be returned * @param context The current execution context * @param data a string to which the node's data will be appended */ static void doGetNodeData( const XalanNode& node, ExecutionContext& executionContext, XalanDOMString& data); /** * Retrieves data for node * * @param document DOM node whose data is to be returned * @param context The current execution context * @param data a string to which the node's data will be appended */ static void doGetNodeData( const XalanDocument& document, ExecutionContext& context, XalanDOMString& data); /** * Retrieves data for node * * @param documentFragment DOM node whose data is to be returned * @param context The current execution context * @param data a string to which the node's data will be appended */ static void doGetNodeData( const XalanDocumentFragment& documentFragment, ExecutionContext& context, XalanDOMString& data); /** * Retrieves data for node * * @param element DOM node whose data is to be returned * @param context The current execution context * @param data a string to which the node's data will be appended */ static void doGetNodeData( const XalanElement& element, ExecutionContext& context, XalanDOMString& data); /** * Retrieves data for node * * @param node DOM node whose data is to be returned * @param context The current execution context * @param data a string to which the node's data will be appended */ static void doGetNodeData( const XalanText& text, ExecutionContext& context, XalanDOMString& data) { assert(context.hasPreserveOrStripSpaceConditions() == true); if (context.shouldStripSourceNode(text) == false) { data.append(text.getData()); } } /** * Sends the data for a node to a FormatterListener * * @param node DOM node whose data is to be returned * @param context The current execution context * @param formatterListener the FormatterListener instance to receive the data * @param function A pointer to the member function of FormatterListener to call */ static void doGetNodeData( const XalanNode& node, ExecutionContext& context, FormatterListener& formatterListener, MemberFunctionPtr function); /** * Sends the data for a node to a FormatterListener * * @param node DOM node whose data is to be returned * @param context The current execution context * @param formatterListener the FormatterListener instance to receive the data * @param function A pointer to the member function of FormatterListener to call */ static void doGetNodeData( const XalanDocument& document, ExecutionContext& context, FormatterListener& formatterListener, MemberFunctionPtr function); /** * Sends the data for a node to a FormatterListener * * @param documentFragment DOM node whose data is to be sent * @param context The current execution context * @param formatterListener the FormatterListener instance to receive the data * @param fRaw Whether or not the data should be sent raw. */ static void doGetNodeData( const XalanDocumentFragment& documentFragment, ExecutionContext& context, FormatterListener& formatterListener, MemberFunctionPtr function); /** * Sends the data for a node to a FormatterListener * * @param node DOM node whose data is to be returned * @param context The current execution context * @param formatterListener the FormatterListener instance to receive the data * @param function A pointer to the member function of FormatterListener to call */ static void doGetNodeData( const XalanElement& element, ExecutionContext& context, FormatterListener& formatterListener, MemberFunctionPtr function); /** * Sends the data for a node to a FormatterListener * * @param node DOM node whose data is to be returned * @param context The current execution context * @param formatterListener the FormatterListener instance to receive the data * @param fRaw Whether or not the data should be sent raw. */ static void doGetNodeData( const XalanText& text, ExecutionContext& context, FormatterListener& formatterListener, MemberFunctionPtr function) { assert(context.hasPreserveOrStripSpaceConditions() == true); if (context.shouldStripSourceNode(text) == false) { sendData(formatterListener, function, text.getData()); } } /** * Utility function to send data to a FormatterListener * * @param formatterListener The FormatterListener instance. * @param fRaw Whether or not the data should be sent raw. * @param data The data to send. */ static void sendData( FormatterListener& formatterListener, MemberFunctionPtr function, const XalanDOMString& data) { const XalanDOMString::size_type theLength = data.length(); if (theLength != 0) { assert(theLength == FormatterListener::size_type(theLength)); (formatterListener.*function)( data.c_str(), FormatterListener::size_type(theLength)); } } }; XALAN_CPP_NAMESPACE_END #endif // DOMSERVICES_HEADER_GUARD_1357924680 xalan-c-1.11/c/src/xalanc/DOMSupport/XalanNamespacesStack.cpp0000664000175000000640000002023211731656103023003 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file... #include "XalanNamespacesStack.hpp" #include "DOMServices.hpp" XALAN_CPP_NAMESPACE_BEGIN XalanNamespacesStack::PrefixResolverProxy::PrefixResolverProxy( const XalanNamespacesStack& theStack, const XalanDOMString& theURI) : m_stack(theStack), m_uri(theURI) { } XalanNamespacesStack::PrefixResolverProxy::~PrefixResolverProxy() { } const XalanDOMString* XalanNamespacesStack::PrefixResolverProxy::getNamespaceForPrefix(const XalanDOMString& prefix) const { return m_stack.getNamespaceForPrefix(prefix); } const XalanDOMString& XalanNamespacesStack::PrefixResolverProxy::getURI() const { return m_uri; } XalanNamespacesStack::XalanNamespacesStackEntry::XalanNamespacesStackEntry(MemoryManager& theManager) : m_namespaces(theManager), m_position(m_namespaces.begin()) { } XalanNamespacesStack::XalanNamespacesStackEntry::XalanNamespacesStackEntry(const XalanNamespacesStackEntry& theSource, MemoryManager& theManager) : m_namespaces(theSource.m_namespaces, theManager), m_position(m_namespaces.begin() + (const_iterator(theSource.m_position) - theSource.m_namespaces.begin())) { } XalanNamespacesStack::XalanNamespacesStackEntry& XalanNamespacesStack::XalanNamespacesStackEntry::set(const XalanNamespacesStackEntry& theRHS, MemoryManager& theManager) { if (this != &theRHS) { XalanNamespacesStackEntry theCopy(theRHS, theManager); swap(theCopy); } return *this; } XalanNamespacesStack::XalanNamespacesStackEntry::~XalanNamespacesStackEntry() { } void XalanNamespacesStack::XalanNamespacesStackEntry::swap(XalanNamespacesStackEntry& theOther) { m_namespaces.swap(theOther.m_namespaces); const iterator theTemp = theOther.m_position; theOther.m_position = m_position; m_position = theTemp; } void XalanNamespacesStack::XalanNamespacesStackEntry::addDeclaration( const XalanDOMString& thePrefix, const XalanDOMChar* theURI, XalanDOMString::size_type theLength) { // If we're at the end, we need to allocate something // new, then update m_position. if (m_position == m_namespaces.end()) { m_namespaces.resize(m_namespaces.size() + 1); m_position = m_namespaces.end() - 1; } value_type& theNamespace = *m_position; // Set the appropriate values... theNamespace.setPrefix(thePrefix); theNamespace.setURI(theURI, theLength); ++m_position; } const XalanDOMString* XalanNamespacesStack::XalanNamespacesStackEntry::findEntry( const XalanDOMString& theKey, MemberFunctionType theKeyFunction, MemberFunctionType theValueFunction) const { if (m_namespaces.empty() == false) { const_iterator i(m_position); do { // m_position is always pointed past the end, so // decrement first. --i; const value_type& ns = (*i); const XalanDOMString& thisKey = (ns.*theKeyFunction)(); if(equals(theKey, thisKey)) { return &(ns.*theValueFunction)(); } } while (i != m_namespaces.begin()); } return 0; } void XalanNamespacesStack::XalanNamespacesStackEntry::clear() { m_namespaces.clear(); m_position = m_namespaces.begin(); } XalanNamespacesStack::XalanNamespacesStack(MemoryManager& theManager) : m_resultNamespaces(theManager, 1), m_stackBegin(m_resultNamespaces.begin()), m_stackPosition(m_stackBegin), m_createNewContextStack(theManager) { // m_resultNamespaces is initialized to a size of // 1, so we always have a dummy entry at the // beginning. This makes the implementation // much simpler. } XalanNamespacesStack::~XalanNamespacesStack() { } void XalanNamespacesStack::addDeclaration( const XalanDOMString& thePrefix, const XalanDOMChar* theURI, XalanDOMString::size_type theLength) { assert(theURI != 0); assert(m_createNewContextStack.empty() == false); // Check to see if we need to create a new context and do so if necessary... if (m_createNewContextStack.back() == true) { ++m_stackPosition; if (m_stackPosition == m_resultNamespaces.end()) { m_resultNamespaces.resize(m_resultNamespaces.size() + 1); m_stackPosition = m_resultNamespaces.end() - 1; m_stackBegin = m_resultNamespaces.begin(); } m_createNewContextStack.back() = false; } value_type& theCurrentEntry = *m_stackPosition; // Add a new namespace declaration... theCurrentEntry.addDeclaration(thePrefix, theURI, theLength); } void XalanNamespacesStack::pushContext() { if (m_createNewContextStack.empty() == true) { m_createNewContextStack.reserve(eDefaultCreateNewContextStackSize); } m_createNewContextStack.push_back(true); } void XalanNamespacesStack::popContext() { assert(m_createNewContextStack.empty() == false); if (m_createNewContextStack.back() == false) { assert(m_resultNamespaces.empty() == false && m_stackPosition != m_resultNamespaces.begin()); (*m_stackPosition).reset(); --m_stackPosition; } m_createNewContextStack.pop_back(); } const XalanDOMString* XalanNamespacesStack::findEntry( const XalanDOMString& theKey, MemberFunctionType theFunction) const { if (m_stackPosition == m_stackBegin) { return 0; } else { NamespacesStackType::const_iterator theBegin(m_stackBegin); NamespacesStackType::const_iterator theEnd(m_stackPosition + 1); const XalanDOMString* theValue = 0; do { theValue = ((*(--theEnd)).*theFunction)(theKey); if (theValue != 0) { break; } } while(theBegin != theEnd); return theValue; } } const XalanDOMString* XalanNamespacesStack::getNamespaceForPrefix(const XalanDOMString& thePrefix) const { if(thePrefix == DOMServices::s_XMLString) { return &DOMServices::s_XMLNamespaceURI; } else if (thePrefix == DOMServices::s_XMLNamespace) { return &DOMServices::s_XMLNamespacePrefixURI; } else { return findEntry(thePrefix, &value_type::getNamespaceForPrefix); } } bool XalanNamespacesStack::prefixIsPresentLocal(const XalanDOMString& thePrefix) { // Check to see if we need to create a new context. If so, there are // no prefixes mapped at this level, so return false... if (m_createNewContextStack.back() == true) { return false; } else { return (*m_stackPosition).isPrefixPresent(thePrefix); } } void XalanNamespacesStack::clear() { // Since we always keep one dummy entry at the beginning, // swap with an OutputContextStackType instance of size 1. NamespacesStackType(m_resultNamespaces.getMemoryManager(), 1 ).swap(m_resultNamespaces); m_stackBegin = m_resultNamespaces.begin(); m_stackPosition = m_stackBegin; m_createNewContextStack.clear(); } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/DOMSupport/DOMSupportException.cpp0000664000175000000640000000422311731656103022647 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Class header file. #include "DOMSupportException.hpp" XALAN_CPP_NAMESPACE_BEGIN DOMSupportException::DOMSupportException( const XalanDOMString& theMessage, MemoryManager& theManager, const Locator* theLocator) : XSLException( theMessage, theManager, theLocator) { } DOMSupportException::DOMSupportException( const XalanDOMString& theMessage, MemoryManager& theManager) : XSLException( theMessage, theManager) { } DOMSupportException::~DOMSupportException() { } static const XalanDOMChar s_type[] = { XalanUnicode::charLetter_D, XalanUnicode::charLetter_O, XalanUnicode::charLetter_M, XalanUnicode::charLetter_S, XalanUnicode::charLetter_u, XalanUnicode::charLetter_p, XalanUnicode::charLetter_p, XalanUnicode::charLetter_o, XalanUnicode::charLetter_r, XalanUnicode::charLetter_t, XalanUnicode::charLetter_E, XalanUnicode::charLetter_x, XalanUnicode::charLetter_c, XalanUnicode::charLetter_e, XalanUnicode::charLetter_p, XalanUnicode::charLetter_t, XalanUnicode::charLetter_i, XalanUnicode::charLetter_o, XalanUnicode::charLetter_n, 0 }; const XalanDOMChar* DOMSupportException::getType() const { return s_type; } XALAN_CPP_NAMESPACE_END xalan-c-1.11/c/src/xalanc/Makefile.in0000664000175000000640000002544311731656140016311 0ustar stevesamba# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ################################################################### # IMPORTANT NOTE # ################################################################### # Before you try to run the Makefile, make sure you have two # # environment variables set. # # # # export XALANCROOT= # # export XERCESCROOT= # # # # # # If you are going to do the OS390BATCH build, make sure you have # # the OS390BATCH environment variable set. # # # # export OS390BATCH=1 # # # # Also, # # # # export LOADMOD=USERID.LOAD # # export LOADEXP=USERID.EXP # # export LOADSAMP=USERID.SAMP # # # # to specify your LOADMOD, the definition sidedeck dataset, and # # the testXSLT/Xalan executable destination. # # # ################################################################### INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ DEPFILE=depends # Output directory OUTDIR := ../.. ifndef XALANCROOT noxalanroot: @echo XALANCROOT must be defined endif ifndef XERCESCROOT noxercesroot: @echo XERCESCROOT must be defined endif XALANDOM_DIR = $(XALANCROOT)/src/xalanc/XalanDOM DOMSUPPORT_DIR = $(XALANCROOT)/src/xalanc/DOMSupport INCLUDE_DIR = $(XALANCROOT)/src/xalanc/Include ICUBRIDGE_DIR = $(XALANCROOT)/src/xalanc/ICUBridge PLATFORMSUPPORT_DIR = $(XALANCROOT)/src/xalanc/PlatformSupport XALANSOURCETREE_DIR = $(XALANCROOT)/src/xalanc/XalanSourceTree TESTXPATH_DIR = $(XALANCROOT)/src/xalanc/TestXPath XALANEXE_DIR = $(XALANCROOT)/src/xalanc/XalanExe TESTXSLT_DIR = $(XALANCROOT)/src/xalanc/TestXSLT XMLSUPPORT_DIR = $(XALANCROOT)/src/xalanc/XMLSupport XPATH_DIR = $(XALANCROOT)/src/xalanc/XPath XPATHCAPI_DIR = $(XALANCROOT)/src/xalanc/XPathCAPI XSLT_DIR = $(XALANCROOT)/src/xalanc/XSLT XALANEXTENSIONS_DIR = $(XALANCROOT)/src/xalanc/XalanExtensions XERCESPARSERLIAISON_DIR = $(XALANCROOT)/src/xalanc/XercesParserLiaison DEPRECATED_XERCESPARSERLIAISON_DIR = $(XALANCROOT)/src/xalanc/XercesParserLiaison/Deprecated XALANEXSLT_DIR = $(XALANCROOT)/src/xalanc/XalanEXSLT XALANTRANSFORMER_DIR = $(XALANCROOT)/src/xalanc/XalanTransformer HARNESS_DIR = $(XALANCROOT)/src/xalanc/Harness SAMPLES_DIR = ${XALANCROOT}/samples TESTS_DIR = ${XALANCROOT}/Tests ALL_VPATH_CPP = \ $(XALANDOM_DIR):$(PLATFORMSUPPORT_DIR):$(DOMSUPPORT_DIR):$(XMLSUPPORT_DIR): \ $(XPATH_DIR):$(XERCESPARSERLIAISON_DIR):$(DEPRECATED_XERCESPARSERLIAISON_DIR):$(XALANSOURCETREE_DIR):$(XPATHCAPI_DIR): \ $(XSLT_DIR):$(XALANEXTENSIONS_DIR):$(XALANEXSLT_DIR):$(XALANTRANSFORMER_DIR):$(HARNESS_DIR): \ $(TESTXPATH_DIR):$(TESTXSLT_DIR) \ ALLSOURCE = \ $(wildcard $(XALANDOM_DIR)/*.cpp) \ $(wildcard $(PLATFORMSUPPORT_DIR)/*.cpp) \ $(wildcard $(DOMSUPPORT_DIR)/*.cpp) \ $(wildcard $(XMLSUPPORT_DIR)/*.cpp) \ $(wildcard $(XPATH_DIR)/*.cpp) \ $(wildcard $(XERCESPARSERLIAISON_DIR)/*.cpp) \ $(wildcard $(DEPRECATED_XERCESPARSERLIAISON_DIR)/*.cpp) \ $(wildcard $(XALANSOURCETREE_DIR)/*.cpp) \ $(wildcard $(XPATHCAPI_DIR)/*.cpp) \ $(wildcard $(XSLT_DIR)/*.cpp) \ $(wildcard $(XALANEXTENSIONS_DIR)/*.cpp) \ $(wildcard $(XALANTRANSFORMER_DIR)/*.cpp) \ $(wildcard $(XALANEXSLT_DIR)/*.cpp) \ $(wildcard $(HARNESS_DIR)/*.cpp) \ ALL_HEADERS_DIRS = \ DOMSupport \ Include \ PlatformSupport \ XMLSupport \ XPath \ XSLT \ XalanDOM \ XalanEXSLT \ XalanExtensions \ XalanSourceTree \ XercesParserLiaison \ XercesParserLiaison/Deprecated \ XalanTransformer \ Harness \ XPathCAPI ALL_BINARIES = Xalan$(EXT) include $(XALANCROOT)/version.incl include ../../Makefile.incl # Using ICUBridge ifdef XALAN_USE_ICU ALL_VPATH_CPP+=:$(ICUBRIDGE_DIR) ALLSOURCE += $(wildcard $(ICUBRIDGE_DIR)/*.cpp) ALL_HEADERS_DIRS += ICUBridge XSL_INCL += -I${ICUROOT}/include XSL_BUILD_OPTIONS += -DXALAN_USE_ICU ICU_LIBI18N_LIB=$(shell cd $(ICUROOT)/lib; ls libicui18n*[0-9][0-9].[0-9]*) ICU_LIBI18N_SO_NAME=$(shell cd $(ICUROOT)/lib; ls libicui18n*[0-9][0-9] libicui18n[0-9][0-9].? 2>/dev/null) ICU_LIBI18N_LINK_NAME=libicui18n$(SHLIBSUFFIX) endif ALL_OBJECTS = $(addprefix $(XSL_OBJ_DIR)/,$(addsuffix .o,$(basename $(notdir $(ALLSOURCE))))) vpath %.cpp \ $(ALL_VPATH_CPP) ${XSL_OBJ_DIR}/%.o:%.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< ${XSL_OBJ_DIR}/%.o:%.hpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $(patsubst .hpp,.cpp,$<) all: lib testXSLT testXPath XalanExe prepare: @echo Preparing the directory structure for a build ... -${MKDIR} -p ${XSL_OBJ_DIR} -${MKDIR} -p ${XSL_LIB_DIR} -${MKDIR} -p $(XSL_BIN_DIR) $(MAKE) -C Utils $@ # Create header dependencies file -- this must be run before any objects are # built depend: $(MAKE) -f makedepends DEPFILE=$(DEPFILE) -include $(DEPFILE) compile: $(ALL_OBJECTS) ifeq (${OS390BATCH},1) XalanExe: lib "//'$(LOADSAMP)(${BATCH_XALAN_UTIL_NAME})'" "//'$(LOADSAMP)(${BATCH_XALAN_UTIL_NAME})'": ${XSL_OBJ_DIR}/XalanExe.o ${LINK} $(XSL_BUILD_OPTIONS) ${PLATFORM_LIB_LINK_OPTIONS} \ ${EXTRA_LINK_OPTIONS} $^ -o $@ $(XALAN_LIB) $(ALLLIBS) ${XSL_OBJ_DIR}/XalanExe.o: $(XALANEXE_DIR)/XalanExe.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< testXSLT: lib "//'$(LOADSAMP)(${BATCH_TEST_UTIL_NAME})'" "//'$(LOADSAMP)(${BATCH_TEST_UTIL_NAME})'": ${XSL_OBJ_DIR}/process.o ${LINK} $(XSL_BUILD_OPTIONS) ${PLATFORM_LIB_LINK_OPTIONS} \ ${EXTRA_LINK_OPTIONS} $^ -o $@ $(XALAN_LIB) $(ALLLIBS) ${XSL_OBJ_DIR}/process.o: $(TESTXSLT_DIR)/process.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< else # Not OS390BATCH XalanExe: lib $(XSL_BIN_DIR)/Xalan $(XSL_BIN_DIR)/Xalan: ${XSL_OBJ_DIR}/XalanExe.o ${LINK} $(XSL_BUILD_OPTIONS) ${PLATFORM_LIB_LINK_OPTIONS} \ ${EXTRA_LINK_OPTIONS} $^ -o $@ $(XALAN_LIB) $(ALLLIBS) $(OTHER_LINK_PARAMETERS) ${XSL_OBJ_DIR}/XalanExe.o: $(XALANEXE_DIR)/XalanExe.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< endif testXSLT: lib $(XSL_BIN_DIR)/testXSLT $(XSL_BIN_DIR)/testXSLT: ${XSL_OBJ_DIR}/process.o ${LINK} $(XSL_BUILD_OPTIONS) ${PLATFORM_LIB_LINK_OPTIONS} \ ${EXTRA_LINK_OPTIONS} $^ -o $@ $(XALAN_LIB) $(ALLLIBS) $(OTHER_LINK_PARAMETERS) ${XSL_OBJ_DIR}/process.o: $(TESTXSLT_DIR)/process.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< testXPath: lib $(XSL_BIN_DIR)/testXPath $(XSL_BIN_DIR)/testXPath: ${XSL_OBJ_DIR}/TestXPath.o ${XSL_OBJ_DIR}/NodeNameTreeWalker.o ${LINK} $(XSL_BUILD_OPTIONS) ${PLATFORM_LIB_LINK_OPTIONS} \ ${EXTRA_LINK_OPTIONS} $^ -o $@ $(XALAN_LIB) $(ALLLIBS) $(CXXFLAGS) $(OTHER_LINK_PARAMETERS) ${XSL_OBJ_DIR}/%.o:$(TESTXPATH_DIR)/%.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< ## OS390BATCH ifeq (${OS390BATCH},1) lib: prepare locale compile ${BATCH_TARGET} locale: $(MAKE) -C Utils $@ ${BATCH_TARGET}: $(ALL_OBJECTS) @echo Building ${BATCH_TARGET} $(MAKE_SHARED) $^ -o $@ $(ALLLIBS) else lib: prepare locale compile $(XSL_LIB_DIR)/$(LIB) locale: $(MAKE) -C Utils $@ $(XSL_LIB_DIR)/$(LIB): $(ALL_OBJECTS) $(MAKE_SHARED) $(PLATFORM_LIBRARIES) $(EXTRA_LINK_OPTIONS) $(LINK_SONAME) $^ -o $@ $(ALLLIBS) $(OTHER_LINK_LIB_PARAMERES) ifeq ($(PLATFORM), OS390) mv *.x ${XSL_LIB_DIR} else rm -f $(XSL_LIB_DIR)/$(LINK_NAME) && \ $(LN) -fs $(LIB) $(XSL_LIB_DIR)/$(LINK_NAME) rm -f $(XSL_LIB_DIR)/$(SO_NAME) && \ $(LN) -fs $(LIB) $(XSL_LIB_DIR)/$(SO_NAME) endif ## OS390 endif ## OS390BATCH install: lib XalanExe $(MAKE) -C Utils $@ $(MKINSTALLDIRS) $(DESTDIR)/$(bindir) for bin in $(ALL_BINARIES); do \ $(INSTALL_PROGRAM) $(XSL_BIN_DIR)/$$bin \ $(DESTDIR)/$(bindir); \ done $(MKINSTALLDIRS) $(DESTDIR)/$(libdir) $(INSTALL_PROGRAM) $(XSL_LIB_DIR)/$(LIB) $(DESTDIR)/$(libdir) ifneq ($(PLATFORM), OS390) rm -f $(DESTDIR)/$(libdir)/$(LINK_NAME) && \ $(LN) -fs $(LIB) $(DESTDIR)/$(libdir)/$(LINK_NAME) rm -f $(DESTDIR)/$(libdir)/$(SO_NAME) && \ $(LN) -fs $(LIB) $(DESTDIR)/$(libdir)/$(SO_NAME) endif ## OS390 $(MKINSTALLDIRS) $(DESTDIR)/$(includedir)/xalanc for hdir in $(ALL_HEADERS_DIRS); do \ $(MKINSTALLDIRS) $(DESTDIR)/$(includedir)/xalanc/$$hdir; \ cp $(XALANCROOT)/src/xalanc/$$hdir/*.h* \ $(DESTDIR)/$(includedir)/xalanc/$$hdir \ 2> /dev/null; \ done ifdef XALAN_USE_ICU $(INSTALL_PROGRAM) $(ICUROOT)/lib/$(ICU_LIBI18N_LIB) \ $(DESTDIR)/$(libdir) ifneq ($PLATFORM), OS390) rm -f $(DESTDIR)/$(libdir)/$(ICU_LIBI18N_LINK_NAME) && \ $(LN) -fs $(ICU_LIBI18N_LIB) \ $(DESTDIR)/$(libdir)/$(ICU_LIBI18N_LINK_NAME) rm -f $(DESTDIR)/$(libdir)/$(ICU_LIBI18N_SO_NAME) && \ $(LN) -fs $(ICU_LIBI18N_LIB) \ $(DESTDIR)/$(libdir)/$(ICU_LIBI18N_SO_NAME) endif ## OS390 endif clean: prepare doClean doClean: $(MAKE) -C Utils $@ (cd $(XSL_OBJ_DIR); rm -rf *) rm -rf $(OUTDIR)/so_locations rm -rf $(XSL_BIN_DIR)/SunWS_cache rm -rf $(XSL_LIB_DIR)/SunWS_cache rm -f $(XSL_LIB_DIR)/$(LIB) rm -f $(XSL_LIB_DIR)/$(LINK_NAME) rm -f $(XSL_LIB_DIR)/$(SO_NAME) rm -f $(XSL_LIB_DIR)/$(LIB).map1 rm -f $(XSL_BIN_DIR)/testXSLT$(EXT) rm -f $(XSL_BIN_DIR)/testXPath$(EXT) rm -f $(XSL_BIN_DIR)/Xalan$(EXT) ifeq ($(PLATFORM), OS390) rm -f $(LIBRARY_LINK_NAME) endif ## OS390 install-package: install xalan-c-1.11/c/Projects/0002775000175000000640000000000012037700125013763 5ustar stevesambaxalan-c-1.11/c/Projects/MacOS/0002775000175000000640000000000012037700125014725 5ustar stevesambaxalan-c-1.11/c/Projects/MacOS/ProjectBuilder/0002775000175000000640000000000012037700125017642 5ustar stevesambaxalan-c-1.11/c/Projects/MacOS/ProjectBuilder/XalanSamples/0002775000175000000640000000000012037700125022232 5ustar stevesambaxalan-c-1.11/c/Projects/MacOS/ProjectBuilder/XalanSamples/XPathWrapper/0002775000175000000640000000000012037700125024617 5ustar stevesambaxalan-c-1.11/c/Projects/MacOS/ProjectBuilder/XalanSamples/XPathWrapper/XPathWrapper.pbproj/0002775000175000000640000000000012037700125030477 5ustar stevesamba././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootxalan-c-1.11/c/Projects/MacOS/ProjectBuilder/XalanSamples/XPathWrapper/XPathWrapper.pbproj/project.pbxprojxalan-c-1.11/c/Projects/MacOS/ProjectBuilder/XalanSamples/XPathWrapper/XPathWrapper.pbproj/project.p0000664000175000000640000001336011731656103032335 0ustar stevesamba// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 38; objects = { 014CEA460018CE2711CA2923 = { buildRules = ( ); buildSettings = { COPY_PHASE_STRIP = NO; GCC_VERSION = 2.x; OPTIMIZATION_CFLAGS = "-O0"; }; isa = PBXBuildStyle; name = "Development GCC2"; }; 014CEA470018CE2711CA2923 = { buildRules = ( ); buildSettings = { COPY_PHASE_STRIP = YES; GCC_VERSION = 2.x; }; isa = PBXBuildStyle; name = "Deployment GCC2"; }; //010 //011 //012 //013 //014 //020 //021 //022 //023 //024 0249A660FF388D4511CA2CEA = { isa = PBXExecutableFileReference; path = XPathWrapper; refType = 3; }; 0249A662FF388D9811CA2CEA = { children = ( 2E8EC25104AF7FE600710281, 2E8EC25204AF7FE600710281, ); isa = PBXGroup; name = "External Frameworks and Libraries"; refType = 4; }; //020 //021 //022 //023 //024 //080 //081 //082 //083 //084 08FB7793FE84155DC02AAC07 = { buildStyles = ( 014CEA460018CE2711CA2923, 014CEA470018CE2711CA2923, F57843050313FA0D01A80065, F57843060313FA1301A80065, ); hasScannedForEncodings = 1; isa = PBXProject; mainGroup = 08FB7794FE84155DC02AAC07; projectDirPath = ""; targets = ( 08FB779FFE84155DC02AAC07, ); }; 08FB7794FE84155DC02AAC07 = { children = ( F52345FA03AE621701A80065, 2E8EC24804AF7F0D00710281, 0249A662FF388D9811CA2CEA, 1AB674ADFE9D54B511CA2CBB, ); isa = PBXGroup; name = IDOMPrint; refType = 4; }; 08FB779FFE84155DC02AAC07 = { buildPhases = ( 08FB77A0FE84155DC02AAC07, 08FB77A1FE84155DC02AAC07, 08FB77A3FE84155DC02AAC07, 08FB77A5FE84155DC02AAC07, ); buildSettings = { FRAMEWORK_SEARCH_PATHS = ""; HEADER_SEARCH_PATHS = "../../../../../src/ ../../../../../../../xerces-c-src_2_2_0/src"; LIBRARY_SEARCH_PATHS = ""; OTHER_CFLAGS = "-w"; OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PREBINDING = NO; PRECOMPILE_PREFIX_HEADER = YES; PREFIX_HEADER = ../xalan_sample_prefix.h; PRODUCT_NAME = XPathWrapper; REZ_EXECUTABLE = YES; SECTORDER_FLAGS = ""; USE_GCC3_PFE_SUPPORT = YES; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; }; dependencies = ( ); isa = PBXToolTarget; name = XPathWrapper; productName = IDOMPrint; productReference = 0249A660FF388D4511CA2CEA; }; 08FB77A0FE84155DC02AAC07 = { buildActionMask = 2147483647; files = ( F52345FB03AE621701A80065, 2E8EC25004AF7F0D00710281, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 08FB77A1FE84155DC02AAC07 = { buildActionMask = 2147483647; files = ( 2E8EC24E04AF7F0D00710281, 2E8EC24F04AF7F0D00710281, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 08FB77A3FE84155DC02AAC07 = { buildActionMask = 2147483647; files = ( 2E8EC25304AF7FE600710281, 2E8EC25404AF7FE600710281, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 08FB77A5FE84155DC02AAC07 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; //080 //081 //082 //083 //084 //1A0 //1A1 //1A2 //1A3 //1A4 1AB674ADFE9D54B511CA2CBB = { children = ( 0249A660FF388D4511CA2CEA, ); isa = PBXGroup; name = Products; refType = 4; }; //1A0 //1A1 //1A2 //1A3 //1A4 //2E0 //2E1 //2E2 //2E3 //2E4 2E8EC24804AF7F0D00710281 = { children = ( 2E8EC24904AF7F0D00710281, 2E8EC24A04AF7F0D00710281, 2E8EC24C04AF7F0D00710281, 2E8EC24D04AF7F0D00710281, ); isa = PBXGroup; name = XPathWrapper; path = ../../../../../samples/XPathWrapper; refType = 4; }; 2E8EC24904AF7F0D00710281 = { fileEncoding = 30; isa = PBXFileReference; path = foo.xml; refType = 4; }; 2E8EC24A04AF7F0D00710281 = { fileEncoding = 30; isa = PBXFileReference; path = TestDriver.cpp; refType = 4; }; 2E8EC24C04AF7F0D00710281 = { fileEncoding = 30; isa = PBXFileReference; path = XPathWrapper.cpp; refType = 4; }; 2E8EC24D04AF7F0D00710281 = { fileEncoding = 30; isa = PBXFileReference; path = XPathWrapper.hpp; refType = 4; }; 2E8EC24E04AF7F0D00710281 = { fileRef = 2E8EC24A04AF7F0D00710281; isa = PBXBuildFile; settings = { }; }; 2E8EC24F04AF7F0D00710281 = { fileRef = 2E8EC24C04AF7F0D00710281; isa = PBXBuildFile; settings = { }; }; 2E8EC25004AF7F0D00710281 = { fileRef = 2E8EC24D04AF7F0D00710281; isa = PBXBuildFile; settings = { }; }; 2E8EC25104AF7FE600710281 = { isa = PBXFrameworkReference; path = Xalan.framework; refType = 3; }; 2E8EC25204AF7FE600710281 = { isa = PBXFrameworkReference; path = Xerces.framework; refType = 3; }; 2E8EC25304AF7FE600710281 = { fileRef = 2E8EC25104AF7FE600710281; isa = PBXBuildFile; settings = { }; }; 2E8EC25404AF7FE600710281 = { fileRef = 2E8EC25204AF7FE600710281; isa = PBXBuildFile; settings = { }; }; //2E0 //2E1 //2E2 //2E3 //2E4 //F50 //F51 //F52 //F53 //F54 F52345FA03AE621701A80065 = { fileEncoding = 30; isa = PBXFileReference; name = xalan_sample_prefix.h; path = ../xalan_sample_prefix.h; refType = 4; }; F52345FB03AE621701A80065 = { fileRef = F52345FA03AE621701A80065; isa = PBXBuildFile; settings = { }; }; F57843050313FA0D01A80065 = { buildRules = ( ); buildSettings = { COPY_PHASE_STRIP = NO; OPTIMIZATION_CFLAGS = "-O0"; }; isa = PBXBuildStyle; name = "Development GCC3"; }; F57843060313FA1301A80065 = { buildRules = ( ); buildSettings = { COPY_PHASE_STRIP = YES; }; isa = PBXBuildStyle; name = "Deployment GCC3"; }; }; rootObject = 08FB7793FE84155DC02AAC07; } xalan-c-1.11/c/Projects/MacOS/ProjectBuilder/XalanSamples/SimpleXPathAPI/0002775000175000000640000000000012037700125024762 5ustar stevesambaxalan-c-1.11/c/Projects/MacOS/ProjectBuilder/XalanSamples/SimpleXPathAPI/SimpleXPathAPI.pbproj/0002775000175000000640000000000012037700125031005 5ustar stevesamba././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootxalan-c-1.11/c/Projects/MacOS/ProjectBuilder/XalanSamples/SimpleXPathAPI/SimpleXPathAPI.pbproj/project.pbxprojxalan-c-1.11/c/Projects/MacOS/ProjectBuilder/XalanSamples/SimpleXPathAPI/SimpleXPathAPI.pbproj/proje0000664000175000000640000001225211731656103032055 0ustar stevesamba// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 38; objects = { 0249A660FF388D4511CA2CEA = { isa = PBXExecutableFileReference; path = SimpleXPathAPI; refType = 3; }; 0249A662FF388D9811CA2CEA = { children = ( 2EFC66CA04AB85FF0010AC9C, 2EFC66CC04AB860F0010AC9C, ); isa = PBXGroup; name = "External Frameworks and Libraries"; refType = 4; }; //020 //021 //022 //023 //024 //080 //081 //082 //083 //084 08FB7793FE84155DC02AAC07 = { buildStyles = ( 32D0C9130081428B7F000001, 32D0C9140081428B7F000001, F58B304702DE343B0195DDC8, F58B304802DE34410195DDC8, ); hasScannedForEncodings = 1; isa = PBXProject; mainGroup = 08FB7794FE84155DC02AAC07; projectDirPath = ""; targets = ( 08FB779FFE84155DC02AAC07, ); }; 08FB7794FE84155DC02AAC07 = { children = ( F52345F503AE603601A80065, 2EFC66C404AB83D60010AC9C, 2EFC66C304AB83D60010AC9C, 0249A662FF388D9811CA2CEA, 1AB674ADFE9D54B511CA2CBB, ); isa = PBXGroup; name = SimpleXPathAPI; path = ../../../../../samples/SimpleXPathAPI; refType = 2; }; 08FB779FFE84155DC02AAC07 = { buildPhases = ( 08FB77A0FE84155DC02AAC07, 08FB77A1FE84155DC02AAC07, 08FB77A3FE84155DC02AAC07, 08FB77A5FE84155DC02AAC07, ); buildSettings = { FRAMEWORK_SEARCH_PATHS = ""; HEADER_SEARCH_PATHS = "../../../../../src/ ../../../../../../../xerces-c-src_2_2_0/src"; LIBRARY_SEARCH_PATHS = ""; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PREBINDING = NO; PRECOMPILE_PREFIX_HEADER = YES; PREFIX_HEADER = ../xalan_sample_prefix.h; PRODUCT_NAME = SimpleXPathAPI; REZ_EXECUTABLE = YES; SECTORDER_FLAGS = ""; USE_GCC3_PFE_SUPPORT = YES; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; }; dependencies = ( ); isa = PBXToolTarget; name = SimpleXPathAPI; productName = SimpleXPathAPI; productReference = 0249A660FF388D4511CA2CEA; }; 08FB77A0FE84155DC02AAC07 = { buildActionMask = 2147483647; files = ( F52345F603AE603601A80065, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 08FB77A1FE84155DC02AAC07 = { buildActionMask = 2147483647; files = ( 2EFC66C704AB83D60010AC9C, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 08FB77A3FE84155DC02AAC07 = { buildActionMask = 2147483647; files = ( 2EFC66CB04AB85FF0010AC9C, 2EFC66CD04AB860F0010AC9C, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 08FB77A5FE84155DC02AAC07 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; //080 //081 //082 //083 //084 //1A0 //1A1 //1A2 //1A3 //1A4 1AB674ADFE9D54B511CA2CBB = { children = ( 0249A660FF388D4511CA2CEA, ); isa = PBXGroup; name = Products; refType = 4; }; //1A0 //1A1 //1A2 //1A3 //1A4 //2E0 //2E1 //2E2 //2E3 //2E4 2EFC66C304AB83D60010AC9C = { children = ( 2EFC66C504AB83D60010AC9C, ); isa = PBXGroup; name = SimpleXPathAPI; path = ""; refType = 4; }; 2EFC66C404AB83D60010AC9C = { fileEncoding = 30; isa = PBXFileReference; path = foo.xml; refType = 4; }; 2EFC66C504AB83D60010AC9C = { fileEncoding = 30; isa = PBXFileReference; path = SimpleXPathAPI.cpp; refType = 4; }; 2EFC66C704AB83D60010AC9C = { fileRef = 2EFC66C504AB83D60010AC9C; isa = PBXBuildFile; settings = { }; }; 2EFC66CA04AB85FF0010AC9C = { isa = PBXFrameworkReference; path = Xerces.framework; refType = 3; }; 2EFC66CB04AB85FF0010AC9C = { fileRef = 2EFC66CA04AB85FF0010AC9C; isa = PBXBuildFile; settings = { }; }; 2EFC66CC04AB860F0010AC9C = { isa = PBXFrameworkReference; path = Xalan.framework; refType = 3; }; 2EFC66CD04AB860F0010AC9C = { fileRef = 2EFC66CC04AB860F0010AC9C; isa = PBXBuildFile; settings = { }; }; //2E0 //2E1 //2E2 //2E3 //2E4 //320 //321 //322 //323 //324 32D0C9130081428B7F000001 = { buildRules = ( ); buildSettings = { COPY_PHASE_STRIP = NO; GCC_VERSION = 2.x; OPTIMIZATION_CFLAGS = "-O0"; }; isa = PBXBuildStyle; name = "Development GCC2"; }; 32D0C9140081428B7F000001 = { buildRules = ( ); buildSettings = { COPY_PHASE_STRIP = YES; GCC_VERSION = 2.x; }; isa = PBXBuildStyle; name = "Deployment GCC2"; }; //320 //321 //322 //323 //324 //F50 //F51 //F52 //F53 //F54 F52345F503AE603601A80065 = { fileEncoding = 30; isa = PBXFileReference; name = xalan_sample_prefix.h; path = ../xalan_sample_prefix.h; refType = 2; }; F52345F603AE603601A80065 = { fileRef = F52345F503AE603601A80065; isa = PBXBuildFile; settings = { }; }; F58B304702DE343B0195DDC8 = { buildRules = ( ); buildSettings = { COPY_PHASE_STRIP = NO; OPTIMIZATION_CFLAGS = "-O0"; }; isa = PBXBuildStyle; name = "Development GCC3"; }; F58B304802DE34410195DDC8 = { buildRules = ( ); buildSettings = { COPY_PHASE_STRIP = YES; }; isa = PBXBuildStyle; name = "Deployment GCC3"; }; }; rootObject = 08FB7793FE84155DC02AAC07; } xalan-c-1.11/c/Projects/MacOS/ProjectBuilder/XalanSamples/xalan_sample_prefix.h0000664000175000000640000000236711731656103026440 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: xalan_sample_prefix.h 471582 2006-11-06 00:32:24Z dmitryh $ */ // Objective C only #if __OBJC__ #endif // C++ only #if defined(__cplusplus) #include #include #include #include #include #include #endif // Standard C headers #include #include #include #include // Carbon Headers #include #include xalan-c-1.11/c/Projects/MacOS/ProjectBuilder/XalanLib/0002775000175000000640000000000012037700125021334 5ustar stevesambaxalan-c-1.11/c/Projects/MacOS/ProjectBuilder/XalanLib/XalanLib.pbproj/0002775000175000000640000000000012037700125024321 5ustar stevesambaxalan-c-1.11/c/Projects/MacOS/ProjectBuilder/XalanLib/XalanLib.pbproj/project.pbxproj0000664000175000000640000075105111731656103027412 0ustar stevesamba// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 38; objects = { 034768DDFF38A45A11DB9C8B = { children = ( 034768DEFF38A45A11DB9C8B, ); isa = PBXGroup; name = Products; refType = 4; }; 034768DEFF38A45A11DB9C8B = { isa = PBXFrameworkReference; path = Xalan.framework; refType = 3; }; //030 //031 //032 //033 //034 //080 //081 //082 //083 //084 0867D690FE84028FC02AAC07 = { buildStyles = ( 4F0BB7EC011F40E904CA0E50, 4F0BB7ED011F40E904CA0E50, 2E788C7904AB4DE300028543, 2E788C7A04AB4DFC00028543, ); hasScannedForEncodings = 1; isa = PBXProject; mainGroup = 0867D691FE84028FC02AAC07; productRefGroup = 034768DDFF38A45A11DB9C8B; projectDirPath = ""; targets = ( 0867D69CFE84028FC02AAC07, ); }; 0867D691FE84028FC02AAC07 = { children = ( 08FB77ACFE841707C02AAC07, 089C1665FE841158C02AAC07, 0867D69AFE84028FC02AAC07, 034768DDFF38A45A11DB9C8B, ); isa = PBXGroup; name = XalanLib; refType = 4; }; 0867D69AFE84028FC02AAC07 = { children = ( 2EFC66C804AB85C10010AC9C, ); isa = PBXGroup; name = "External Frameworks and Libraries"; refType = 4; }; 0867D69CFE84028FC02AAC07 = { buildPhases = ( 0867D69DFE84028FC02AAC07, 0867D69EFE84028FC02AAC07, 0867D69FFE84028FC02AAC07, 0867D6A0FE84028FC02AAC07, 0867D6A2FE84028FC02AAC07, ); buildSettings = { DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; FRAMEWORK_SEARCH_PATHS = ""; FRAMEWORK_VERSION = A; HEADER_SEARCH_PATHS = "../../../../../../xerces-c-src_2_2_0/src ../../../../src"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LIBRARY_SEARCH_PATHS = ""; OTHER_CFLAGS = "-w -DXALAN_USE_XERCES_LOCAL_CODEPAGE_TRANSCODERS"; OTHER_LDFLAGS = "-seg1addr 0x35000000"; PRECOMPILE_PREFIX_HEADER = YES; PREFIX_HEADER = XalanLib_Prefix.h; PRODUCT_NAME = Xalan; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = framework; }; dependencies = ( ); isa = PBXFrameworkTarget; name = XalanLib; productInstallPath = "$(LOCAL_LIBRARY_DIR)/Frameworks"; productName = XalanLib; productReference = 034768DEFF38A45A11DB9C8B; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable Xalan CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName Xalan CFBundlePackageType FMWK CFBundleSignature ???? CFBundleVersion 1.5.0 "; }; 0867D69DFE84028FC02AAC07 = { buildActionMask = 2147483647; files = ( 32BAE0B80371A74B00C91783, 2E78896004AB489C00028543, 2E78896204AB489C00028543, 2E78896404AB489C00028543, 2E78896504AB489C00028543, 2E78896704AB489C00028543, 2E78896904AB489C00028543, 2E78896B04AB489C00028543, 2E78896D04AB489C00028543, 2E78897D04AB489C00028543, 2E78897E04AB489C00028543, 2E78898004AB489C00028543, 2E78898204AB489C00028543, 2E78898304AB489C00028543, 2E78898404AB489C00028543, 2E78898504AB489C00028543, 2E78898704AB489C00028543, 2E78898904AB489C00028543, 2E78898B04AB489C00028543, 2E78898D04AB489C00028543, 2E78898F04AB489C00028543, 2E78899104AB489C00028543, 2E78899304AB489C00028543, 2E78899404AB489C00028543, 2E78899604AB489C00028543, 2E78899804AB489C00028543, 2E78899A04AB489C00028543, 2E78899C04AB489C00028543, 2E78899D04AB489C00028543, 2E78899E04AB489C00028543, 2E7889A004AB489C00028543, 2E7889A204AB489C00028543, 2E7889A404AB489C00028543, 2E7889A604AB489C00028543, 2E7889A704AB489C00028543, 2E7889A804AB489C00028543, 2E7889AA04AB489C00028543, 2E7889AC04AB489C00028543, 2E7889AE04AB489C00028543, 2E7889B004AB489C00028543, 2E7889B204AB489C00028543, 2E7889B404AB489C00028543, 2E7889B604AB489C00028543, 2E7889B804AB489C00028543, 2E7889BA04AB489C00028543, 2E7889BB04AB489C00028543, 2E7889BC04AB489C00028543, 2E7889BE04AB489C00028543, 2E7889C004AB489C00028543, 2E7889C204AB489C00028543, 2E7889C404AB489C00028543, 2E7889C604AB489C00028543, 2E7889C804AB489C00028543, 2E7889CA04AB489C00028543, 2E7889CC04AB489C00028543, 2E7889CE04AB489C00028543, 2E7889D004AB489C00028543, 2E7889D104AB489C00028543, 2E7889D304AB489C00028543, 2E7889D504AB489C00028543, 2E7889D704AB489C00028543, 2E7889D904AB489C00028543, 2E7889DB04AB489C00028543, 2E7889DD04AB489C00028543, 2E7889DF04AB489C00028543, 2E7889E104AB489C00028543, 2E7889E304AB489C00028543, 2E7889E504AB489C00028543, 2E7889E604AB489C00028543, 2E7889E804AB489C00028543, 2E7889EA04AB489C00028543, 2E7889EC04AB489C00028543, 2E7889EE04AB489C00028543, 2E7889F004AB489C00028543, 2E7889F204AB489C00028543, 2E7889F404AB489C00028543, 2E7889F604AB489C00028543, 2E7889F804AB489C00028543, 2E7889FA04AB489C00028543, 2E7889FC04AB489C00028543, 2E7889FE04AB489C00028543, 2E788A0004AB489C00028543, 2E788A0204AB489C00028543, 2E788A0404AB489C00028543, 2E788A0604AB489C00028543, 2E788A0804AB489C00028543, 2E788A0904AB489C00028543, 2E788A0A04AB489C00028543, 2E788A0C04AB489C00028543, 2E788A0D04AB489C00028543, 2E788A0F04AB489C00028543, 2E788A1004AB489C00028543, 2E788A1204AB489C00028543, 2E788A1304AB489C00028543, 2E788A1504AB489C00028543, 2E788A1704AB489C00028543, 2E788A1904AB489C00028543, 2E788A1B04AB489C00028543, 2E788A1D04AB489C00028543, 2E788A1F04AB489C00028543, 2E788A2104AB489C00028543, 2E788A2204AB489C00028543, 2E788A2404AB489C00028543, 2E788A2604AB489C00028543, 2E788A2804AB489C00028543, 2E788A2A04AB489C00028543, 2E788A2C04AB489C00028543, 2E788A2E04AB489C00028543, 2E788A3004AB489C00028543, 2E788A3204AB489C00028543, 2E788A3304AB489C00028543, 2E788A3504AB489C00028543, 2E788A3704AB489C00028543, 2E788A3904AB489C00028543, 2E788A3B04AB489C00028543, 2E788A3D04AB489C00028543, 2E788A3F04AB489C00028543, 2E788A4104AB489C00028543, 2E788A4304AB489C00028543, 2E788A4504AB489C00028543, 2E788A4704AB489C00028543, 2E788A4904AB489C00028543, 2E788A4B04AB489C00028543, 2E788A4D04AB489C00028543, 2E788A4F04AB489C00028543, 2E788A5104AB489C00028543, 2E788A5304AB489C00028543, 2E788A5504AB489C00028543, 2E788A5704AB489C00028543, 2E788A5904AB489C00028543, 2E788A5B04AB489C00028543, 2E788A5D04AB489C00028543, 2E788A5F04AB489C00028543, 2E788A6004AB489C00028543, 2E788A6204AB489C00028543, 2E788A6404AB489C00028543, 2E788A6604AB489C00028543, 2E788A6704AB489C00028543, 2E788A6904AB489C00028543, 2E788A6B04AB489C00028543, 2E788A6D04AB489C00028543, 2E788A6E04AB489C00028543, 2E788A7004AB489C00028543, 2E788A7204AB489C00028543, 2E788A7404AB489C00028543, 2E788A7604AB489C00028543, 2E788A7804AB489C00028543, 2E788A7A04AB489C00028543, 2E788A7C04AB489C00028543, 2E788A7E04AB489C00028543, 2E788A8004AB489C00028543, 2E788A8204AB489C00028543, 2E788A8404AB489C00028543, 2E788A8604AB489C00028543, 2E788A8704AB489C00028543, 2E788A8904AB489C00028543, 2E788A8B04AB489C00028543, 2E788A8D04AB489C00028543, 2E788A8F04AB489C00028543, 2E788A9104AB489C00028543, 2E788A9304AB489C00028543, 2E788A9504AB489C00028543, 2E788A9704AB489C00028543, 2E788A9904AB489C00028543, 2E788A9B04AB489C00028543, 2E788A9D04AB489C00028543, 2E788A9F04AB489C00028543, 2E788AA104AB489C00028543, 2E788AA304AB489C00028543, 2E788AA504AB489C00028543, 2E788AA704AB489C00028543, 2E788AA904AB489C00028543, 2E788AAB04AB489C00028543, 2E788AAD04AB489C00028543, 2E788AAF04AB489C00028543, 2E788AB104AB489C00028543, 2E788AB304AB489C00028543, 2E788AB504AB489C00028543, 2E788AB704AB489C00028543, 2E788AB904AB489C00028543, 2E788ABB04AB489C00028543, 2E788ABD04AB489C00028543, 2E788ABF04AB489C00028543, 2E788AC104AB489C00028543, 2E788AC304AB489C00028543, 2E788AC504AB489C00028543, 2E788AC704AB489C00028543, 2E788AC904AB489C00028543, 2E788ACB04AB489C00028543, 2E788ACD04AB489C00028543, 2E788ACF04AB489C00028543, 2E788AD104AB489C00028543, 2E788AD204AB489C00028543, 2E788AD404AB489C00028543, 2E788AD604AB489C00028543, 2E788AD804AB489C00028543, 2E788ADA04AB489C00028543, 2E788ADC04AB489C00028543, 2E788ADE04AB489C00028543, 2E788AE004AB489C00028543, 2E788AE204AB489C00028543, 2E788AE404AB489C00028543, 2E788AE604AB489C00028543, 2E788AE804AB489C00028543, 2E788AE904AB489C00028543, 2E788AEB04AB489C00028543, 2E788AED04AB489C00028543, 2E788AEF04AB489C00028543, 2E788AF104AB489C00028543, 2E788AF304AB489C00028543, 2E788AF504AB489C00028543, 2E788AF704AB489C00028543, 2E788AF904AB489C00028543, 2E788AFA04AB489C00028543, 2E788AFC04AB489C00028543, 2E788AFE04AB489C00028543, 2E788B0004AB489C00028543, 2E788B0204AB489C00028543, 2E788B0404AB489C00028543, 2E788B0604AB489C00028543, 2E788B0804AB489C00028543, 2E788B0A04AB489C00028543, 2E788B0C04AB489C00028543, 2E788B0E04AB489C00028543, 2E788B1004AB489C00028543, 2E788B1204AB489C00028543, 2E788B1404AB489C00028543, 2E788B1604AB489C00028543, 2E788B1804AB489C00028543, 2E788B1A04AB489C00028543, 2E788B1C04AB489C00028543, 2E788B1E04AB489C00028543, 2E788B2004AB489C00028543, 2E788B2104AB489C00028543, 2E788B2304AB489C00028543, 2E788B2504AB489C00028543, 2E788B2704AB489C00028543, 2E788B2904AB489C00028543, 2E788B2B04AB489C00028543, 2E788B2D04AB489C00028543, 2E788B2F04AB489C00028543, 2E788B3104AB489C00028543, 2E788B3304AB489C00028543, 2E788B3504AB489C00028543, 2E788B3704AB489C00028543, 2E788B3904AB489C00028543, 2E788B3B04AB489C00028543, 2E788B3D04AB489C00028543, 2E788B3F04AB489C00028543, 2E788B4104AB489C00028543, 2E788B4304AB489C00028543, 2E788B4504AB489C00028543, 2E788B4704AB489C00028543, 2E788B4904AB489C00028543, 2E788B4B04AB489C00028543, 2E788B4D04AB489C00028543, 2E788B4F04AB489C00028543, 2E788B5104AB489C00028543, 2E788B5304AB489C00028543, 2E788B5504AB489C00028543, 2E788B5704AB489C00028543, 2E788B5904AB489C00028543, 2E788B5B04AB489C00028543, 2E788B5D04AB489C00028543, 2E788B5E04AB489C00028543, 2E788B6004AB489C00028543, 2E788B6204AB489C00028543, 2E788B6404AB489C00028543, 2E788B6604AB489C00028543, 2E788B6804AB489C00028543, 2E788B6A04AB489C00028543, 2E788B6C04AB489C00028543, 2E788B6E04AB489C00028543, 2E788B7004AB489C00028543, 2E788B7204AB489C00028543, 2E788B7404AB489C00028543, 2E788B7604AB489C00028543, 2E788B7804AB489C00028543, 2E788B7A04AB489C00028543, 2E788B7C04AB489C00028543, 2E788B7E04AB489C00028543, 2E788B8004AB489C00028543, 2E788B8204AB489C00028543, 2E788B8404AB489C00028543, 2E788B8604AB489C00028543, 2E788B8804AB489C00028543, 2E788B8A04AB489C00028543, 2E788B8C04AB489C00028543, 2E788B8E04AB489C00028543, 2E788B9004AB489C00028543, 2E788B9204AB489C00028543, 2E788B9404AB489C00028543, 2E788B9604AB489C00028543, 2E788B9804AB489C00028543, 2E788B9A04AB489C00028543, 2E788B9C04AB489C00028543, 2E788B9E04AB489C00028543, 2E788BA004AB489C00028543, 2E788BA204AB489C00028543, 2E788BA404AB489C00028543, 2E788BA604AB489C00028543, 2E788BA804AB489C00028543, 2E788BA904AB489C00028543, 2E788BAB04AB489C00028543, 2E788BAD04AB489C00028543, 2E788BAF04AB489C00028543, 2E788BB104AB489C00028543, 2E788BB304AB489C00028543, 2E788BB504AB489C00028543, 2E788BB704AB489C00028543, 2E788BB904AB489C00028543, 2E788BBB04AB489C00028543, 2E788BBD04AB489C00028543, 2E788BBF04AB489C00028543, 2E788BC104AB489C00028543, 2E788BC304AB489C00028543, 2E788BC504AB489C00028543, 2E788BC704AB489C00028543, 2E788BC904AB489C00028543, 2E788BCB04AB489C00028543, 2E788BCD04AB489C00028543, 2E788BCF04AB489C00028543, 2E788BD104AB489C00028543, 2E788BD304AB489C00028543, 2E788BD504AB489C00028543, 2E788BD704AB489C00028543, 2E788BD904AB489C00028543, 2E788BDB04AB489C00028543, 2E788BDD04AB489C00028543, 2E788BDF04AB489C00028543, 2E788BE104AB489C00028543, 2E788BE304AB489C00028543, 2E788BE504AB489C00028543, 2E788BE704AB489C00028543, 2E788BE904AB489C00028543, 2E788BEB04AB489C00028543, 2E788BED04AB489C00028543, 2E788BEF04AB489C00028543, 2E788BF104AB489C00028543, 2E788BF304AB489C00028543, 2E788BF504AB489C00028543, 2E788BF704AB489C00028543, 2E788BF904AB489C00028543, 2E788BFB04AB489C00028543, 2E788BFD04AB489C00028543, 2E788BFF04AB489C00028543, 2E788C0104AB489C00028543, 2E788C0204AB489C00028543, 2E788C0404AB489C00028543, 2E788C0604AB489C00028543, 2E788C0804AB489C00028543, 2E788C0A04AB489C00028543, 2E788C0C04AB489C00028543, 2E788C0E04AB489C00028543, 2E788C1004AB489C00028543, 2E788C1204AB489C00028543, 2E788C1404AB489C00028543, 2E788C1604AB489C00028543, 2E788C1804AB489C00028543, 2E788C1A04AB489C00028543, 2E788C1C04AB489C00028543, 2E788C1E04AB489C00028543, 2E788C2004AB489C00028543, 2E788C2204AB489C00028543, 2E788C2404AB489C00028543, 2E788C2604AB489C00028543, 2E788C2804AB489C00028543, 2E788C2A04AB489C00028543, 2E788C2C04AB489C00028543, 2E788C2E04AB489C00028543, 2E788C3004AB489C00028543, 2E788C3204AB489C00028543, 2E788C3404AB489C00028543, 2E788C3604AB489C00028543, 2E788C3804AB489C00028543, 2E788C3A04AB489C00028543, 2E788C3C04AB489C00028543, 2E788C3E04AB489C00028543, 2E788C4004AB489C00028543, 2E788C4204AB489C00028543, 2E788C4404AB489C00028543, 2E788C4604AB489C00028543, 2E788C4804AB489C00028543, 2E788C4A04AB489C00028543, 2E788C4C04AB489C00028543, 2E788C4E04AB489C00028543, 2E788C5004AB489C00028543, 2E788C5204AB489C00028543, 2E788C5404AB489C00028543, 2E788C5604AB489C00028543, 2E788C5904AB489C00028543, 2E788C5B04AB489C00028543, 2E788C5C04AB489C00028543, 2E788C5E04AB489C00028543, 2E788C6004AB489C00028543, 2E788C6204AB489C00028543, 2E788C6404AB489C00028543, 2E788C6604AB489C00028543, 2E788C6804AB489C00028543, 2E788C6A04AB489C00028543, 2E788C6C04AB489C00028543, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 0867D69EFE84028FC02AAC07 = { buildActionMask = 2147483647; files = ( 089C1668FE841158C02AAC07, ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 0867D69FFE84028FC02AAC07 = { buildActionMask = 2147483647; files = ( 2E78895F04AB489C00028543, 2E78896104AB489C00028543, 2E78896304AB489C00028543, 2E78896604AB489C00028543, 2E78896804AB489C00028543, 2E78896A04AB489C00028543, 2E78896C04AB489C00028543, 2E78897F04AB489C00028543, 2E78898104AB489C00028543, 2E78898604AB489C00028543, 2E78898804AB489C00028543, 2E78898A04AB489C00028543, 2E78898C04AB489C00028543, 2E78898E04AB489C00028543, 2E78899004AB489C00028543, 2E78899204AB489C00028543, 2E78899504AB489C00028543, 2E78899704AB489C00028543, 2E78899904AB489C00028543, 2E78899B04AB489C00028543, 2E78899F04AB489C00028543, 2E7889A104AB489C00028543, 2E7889A304AB489C00028543, 2E7889A504AB489C00028543, 2E7889A904AB489C00028543, 2E7889AB04AB489C00028543, 2E7889AD04AB489C00028543, 2E7889AF04AB489C00028543, 2E7889B104AB489C00028543, 2E7889B304AB489C00028543, 2E7889B504AB489C00028543, 2E7889B704AB489C00028543, 2E7889B904AB489C00028543, 2E7889BD04AB489C00028543, 2E7889BF04AB489C00028543, 2E7889C104AB489C00028543, 2E7889C304AB489C00028543, 2E7889C504AB489C00028543, 2E7889C704AB489C00028543, 2E7889C904AB489C00028543, 2E7889CB04AB489C00028543, 2E7889CD04AB489C00028543, 2E7889CF04AB489C00028543, 2E7889D204AB489C00028543, 2E7889D404AB489C00028543, 2E7889D604AB489C00028543, 2E7889D804AB489C00028543, 2E7889DA04AB489C00028543, 2E7889DC04AB489C00028543, 2E7889DE04AB489C00028543, 2E7889E004AB489C00028543, 2E7889E204AB489C00028543, 2E7889E404AB489C00028543, 2E7889E704AB489C00028543, 2E7889E904AB489C00028543, 2E7889EB04AB489C00028543, 2E7889ED04AB489C00028543, 2E7889EF04AB489C00028543, 2E7889F104AB489C00028543, 2E7889F304AB489C00028543, 2E7889F504AB489C00028543, 2E7889F704AB489C00028543, 2E7889F904AB489C00028543, 2E7889FB04AB489C00028543, 2E7889FD04AB489C00028543, 2E7889FF04AB489C00028543, 2E788A0104AB489C00028543, 2E788A0304AB489C00028543, 2E788A0504AB489C00028543, 2E788A0704AB489C00028543, 2E788A0B04AB489C00028543, 2E788A0E04AB489C00028543, 2E788A1104AB489C00028543, 2E788A1404AB489C00028543, 2E788A1604AB489C00028543, 2E788A1804AB489C00028543, 2E788A1A04AB489C00028543, 2E788A1C04AB489C00028543, 2E788A1E04AB489C00028543, 2E788A2004AB489C00028543, 2E788A2304AB489C00028543, 2E788A2504AB489C00028543, 2E788A2704AB489C00028543, 2E788A2904AB489C00028543, 2E788A2B04AB489C00028543, 2E788A2D04AB489C00028543, 2E788A2F04AB489C00028543, 2E788A3104AB489C00028543, 2E788A3404AB489C00028543, 2E788A3604AB489C00028543, 2E788A3804AB489C00028543, 2E788A3A04AB489C00028543, 2E788A3C04AB489C00028543, 2E788A3E04AB489C00028543, 2E788A4004AB489C00028543, 2E788A4204AB489C00028543, 2E788A4404AB489C00028543, 2E788A4604AB489C00028543, 2E788A4804AB489C00028543, 2E788A4A04AB489C00028543, 2E788A4C04AB489C00028543, 2E788A4E04AB489C00028543, 2E788A5004AB489C00028543, 2E788A5204AB489C00028543, 2E788A5404AB489C00028543, 2E788A5604AB489C00028543, 2E788A5804AB489C00028543, 2E788A5A04AB489C00028543, 2E788A5C04AB489C00028543, 2E788A5E04AB489C00028543, 2E788A6104AB489C00028543, 2E788A6304AB489C00028543, 2E788A6504AB489C00028543, 2E788A6804AB489C00028543, 2E788A6A04AB489C00028543, 2E788A6C04AB489C00028543, 2E788A6F04AB489C00028543, 2E788A7104AB489C00028543, 2E788A7304AB489C00028543, 2E788A7504AB489C00028543, 2E788A7704AB489C00028543, 2E788A7904AB489C00028543, 2E788A7B04AB489C00028543, 2E788A7D04AB489C00028543, 2E788A7F04AB489C00028543, 2E788A8104AB489C00028543, 2E788A8304AB489C00028543, 2E788A8504AB489C00028543, 2E788A8804AB489C00028543, 2E788A8A04AB489C00028543, 2E788A8C04AB489C00028543, 2E788A8E04AB489C00028543, 2E788A9004AB489C00028543, 2E788A9204AB489C00028543, 2E788A9404AB489C00028543, 2E788A9604AB489C00028543, 2E788A9804AB489C00028543, 2E788A9A04AB489C00028543, 2E788A9C04AB489C00028543, 2E788A9E04AB489C00028543, 2E788AA004AB489C00028543, 2E788AA204AB489C00028543, 2E788AA404AB489C00028543, 2E788AA604AB489C00028543, 2E788AA804AB489C00028543, 2E788AAA04AB489C00028543, 2E788AAC04AB489C00028543, 2E788AAE04AB489C00028543, 2E788AB004AB489C00028543, 2E788AB204AB489C00028543, 2E788AB404AB489C00028543, 2E788AB604AB489C00028543, 2E788AB804AB489C00028543, 2E788ABA04AB489C00028543, 2E788ABC04AB489C00028543, 2E788ABE04AB489C00028543, 2E788AC004AB489C00028543, 2E788AC204AB489C00028543, 2E788AC404AB489C00028543, 2E788AC604AB489C00028543, 2E788AC804AB489C00028543, 2E788ACA04AB489C00028543, 2E788ACC04AB489C00028543, 2E788ACE04AB489C00028543, 2E788AD004AB489C00028543, 2E788AD304AB489C00028543, 2E788AD504AB489C00028543, 2E788AD704AB489C00028543, 2E788AD904AB489C00028543, 2E788ADB04AB489C00028543, 2E788ADD04AB489C00028543, 2E788ADF04AB489C00028543, 2E788AE104AB489C00028543, 2E788AE304AB489C00028543, 2E788AE504AB489C00028543, 2E788AE704AB489C00028543, 2E788AEA04AB489C00028543, 2E788AEC04AB489C00028543, 2E788AEE04AB489C00028543, 2E788AF004AB489C00028543, 2E788AF204AB489C00028543, 2E788AF404AB489C00028543, 2E788AF604AB489C00028543, 2E788AF804AB489C00028543, 2E788AFB04AB489C00028543, 2E788AFD04AB489C00028543, 2E788AFF04AB489C00028543, 2E788B0104AB489C00028543, 2E788B0304AB489C00028543, 2E788B0504AB489C00028543, 2E788B0704AB489C00028543, 2E788B0904AB489C00028543, 2E788B0B04AB489C00028543, 2E788B0D04AB489C00028543, 2E788B0F04AB489C00028543, 2E788B1104AB489C00028543, 2E788B1304AB489C00028543, 2E788B1504AB489C00028543, 2E788B1704AB489C00028543, 2E788B1904AB489C00028543, 2E788B1B04AB489C00028543, 2E788B1D04AB489C00028543, 2E788B1F04AB489C00028543, 2E788B2204AB489C00028543, 2E788B2404AB489C00028543, 2E788B2604AB489C00028543, 2E788B2804AB489C00028543, 2E788B2A04AB489C00028543, 2E788B2C04AB489C00028543, 2E788B2E04AB489C00028543, 2E788B3004AB489C00028543, 2E788B3204AB489C00028543, 2E788B3404AB489C00028543, 2E788B3604AB489C00028543, 2E788B3804AB489C00028543, 2E788B3A04AB489C00028543, 2E788B3C04AB489C00028543, 2E788B3E04AB489C00028543, 2E788B4004AB489C00028543, 2E788B4204AB489C00028543, 2E788B4404AB489C00028543, 2E788B4604AB489C00028543, 2E788B4804AB489C00028543, 2E788B4A04AB489C00028543, 2E788B4C04AB489C00028543, 2E788B4E04AB489C00028543, 2E788B5004AB489C00028543, 2E788B5204AB489C00028543, 2E788B5404AB489C00028543, 2E788B5604AB489C00028543, 2E788B5804AB489C00028543, 2E788B5A04AB489C00028543, 2E788B5C04AB489C00028543, 2E788B5F04AB489C00028543, 2E788B6104AB489C00028543, 2E788B6304AB489C00028543, 2E788B6504AB489C00028543, 2E788B6704AB489C00028543, 2E788B6904AB489C00028543, 2E788B6B04AB489C00028543, 2E788B6D04AB489C00028543, 2E788B6F04AB489C00028543, 2E788B7104AB489C00028543, 2E788B7304AB489C00028543, 2E788B7504AB489C00028543, 2E788B7704AB489C00028543, 2E788B7904AB489C00028543, 2E788B7B04AB489C00028543, 2E788B7D04AB489C00028543, 2E788B7F04AB489C00028543, 2E788B8104AB489C00028543, 2E788B8304AB489C00028543, 2E788B8504AB489C00028543, 2E788B8704AB489C00028543, 2E788B8904AB489C00028543, 2E788B8B04AB489C00028543, 2E788B8D04AB489C00028543, 2E788B8F04AB489C00028543, 2E788B9104AB489C00028543, 2E788B9304AB489C00028543, 2E788B9504AB489C00028543, 2E788B9704AB489C00028543, 2E788B9904AB489C00028543, 2E788B9B04AB489C00028543, 2E788B9D04AB489C00028543, 2E788B9F04AB489C00028543, 2E788BA104AB489C00028543, 2E788BA304AB489C00028543, 2E788BA504AB489C00028543, 2E788BA704AB489C00028543, 2E788BAA04AB489C00028543, 2E788BAC04AB489C00028543, 2E788BAE04AB489C00028543, 2E788BB004AB489C00028543, 2E788BB204AB489C00028543, 2E788BB404AB489C00028543, 2E788BB604AB489C00028543, 2E788BB804AB489C00028543, 2E788BBA04AB489C00028543, 2E788BBC04AB489C00028543, 2E788BBE04AB489C00028543, 2E788BC004AB489C00028543, 2E788BC204AB489C00028543, 2E788BC404AB489C00028543, 2E788BC604AB489C00028543, 2E788BC804AB489C00028543, 2E788BCA04AB489C00028543, 2E788BCC04AB489C00028543, 2E788BCE04AB489C00028543, 2E788BD004AB489C00028543, 2E788BD204AB489C00028543, 2E788BD404AB489C00028543, 2E788BD604AB489C00028543, 2E788BD804AB489C00028543, 2E788BDA04AB489C00028543, 2E788BDC04AB489C00028543, 2E788BDE04AB489C00028543, 2E788BE004AB489C00028543, 2E788BE204AB489C00028543, 2E788BE404AB489C00028543, 2E788BE604AB489C00028543, 2E788BE804AB489C00028543, 2E788BEA04AB489C00028543, 2E788BEC04AB489C00028543, 2E788BEE04AB489C00028543, 2E788BF004AB489C00028543, 2E788BF204AB489C00028543, 2E788BF404AB489C00028543, 2E788BF604AB489C00028543, 2E788BF804AB489C00028543, 2E788BFA04AB489C00028543, 2E788BFC04AB489C00028543, 2E788BFE04AB489C00028543, 2E788C0004AB489C00028543, 2E788C0304AB489C00028543, 2E788C0504AB489C00028543, 2E788C0704AB489C00028543, 2E788C0904AB489C00028543, 2E788C0B04AB489C00028543, 2E788C0D04AB489C00028543, 2E788C0F04AB489C00028543, 2E788C1104AB489C00028543, 2E788C1304AB489C00028543, 2E788C1504AB489C00028543, 2E788C1704AB489C00028543, 2E788C1904AB489C00028543, 2E788C1B04AB489C00028543, 2E788C1D04AB489C00028543, 2E788C1F04AB489C00028543, 2E788C2104AB489C00028543, 2E788C2304AB489C00028543, 2E788C2504AB489C00028543, 2E788C2704AB489C00028543, 2E788C2904AB489C00028543, 2E788C2B04AB489C00028543, 2E788C2D04AB489C00028543, 2E788C2F04AB489C00028543, 2E788C3104AB489C00028543, 2E788C3304AB489C00028543, 2E788C3504AB489C00028543, 2E788C3704AB489C00028543, 2E788C3904AB489C00028543, 2E788C3B04AB489C00028543, 2E788C3D04AB489C00028543, 2E788C3F04AB489C00028543, 2E788C4104AB489C00028543, 2E788C4304AB489C00028543, 2E788C4504AB489C00028543, 2E788C4704AB489C00028543, 2E788C4904AB489C00028543, 2E788C4B04AB489C00028543, 2E788C4D04AB489C00028543, 2E788C4F04AB489C00028543, 2E788C5104AB489C00028543, 2E788C5304AB489C00028543, 2E788C5504AB489C00028543, 2E788C5704AB489C00028543, 2E788C5804AB489C00028543, 2E788C5A04AB489C00028543, 2E788C5D04AB489C00028543, 2E788C5F04AB489C00028543, 2E788C6104AB489C00028543, 2E788C6304AB489C00028543, 2E788C6504AB489C00028543, 2E788C6704AB489C00028543, 2E788C6904AB489C00028543, 2E788C6B04AB489C00028543, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 0867D6A0FE84028FC02AAC07 = { buildActionMask = 2147483647; files = ( 2EFC66C904AB85C10010AC9C, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 0867D6A2FE84028FC02AAC07 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 089C1665FE841158C02AAC07 = { children = ( 089C1666FE841158C02AAC07, ); isa = PBXGroup; name = Resources; refType = 4; }; 089C1666FE841158C02AAC07 = { children = ( 089C1667FE841158C02AAC07, ); isa = PBXVariantGroup; name = InfoPlist.strings; refType = 4; }; 089C1667FE841158C02AAC07 = { fileEncoding = 10; isa = PBXFileReference; name = English; path = English.lproj/InfoPlist.strings; refType = 4; }; 089C1668FE841158C02AAC07 = { fileRef = 089C1666FE841158C02AAC07; isa = PBXBuildFile; settings = { }; }; 08FB77ACFE841707C02AAC07 = { children = ( 32BAE0B70371A74B00C91783, 2E78864404AB489A00028543, 2E78866404AB489A00028543, 2E7886C004AB489B00028543, 2E7886F004AB489B00028543, 2E7886FE04AB489B00028543, 2E78870E04AB489B00028543, 2E78874A04AB489B00028543, 2E78876404AB489B00028543, 2E7887D804AB489B00028543, 2E7887EE04AB489B00028543, 2E78888B04AB489B00028543, 2E78888E04AB489B00028543, ); isa = PBXGroup; name = src; path = ../../../../src; refType = 4; }; //080 //081 //082 //083 //084 //2E0 //2E1 //2E2 //2E3 //2E4 2E78864404AB489A00028543 = { children = ( 2E78864504AB489A00028543, 2E78864604AB489A00028543, 2E78864704AB489A00028543, 2E78864804AB489A00028543, 2E78864904AB489A00028543, 2E78864A04AB489A00028543, 2E78864B04AB489A00028543, 2E78864C04AB489A00028543, 2E78864D04AB489A00028543, 2E78864E04AB489A00028543, 2E78864F04AB489A00028543, 2E78865004AB489A00028543, 2E78865104AB489A00028543, 2E78865204AB489A00028543, 2E78865304AB489A00028543, ); isa = PBXGroup; path = DOMSupport; refType = 4; }; 2E78864504AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = DOMServices.cpp; refType = 4; }; 2E78864604AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = DOMServices.hpp; refType = 4; }; 2E78864704AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = DOMSupport.cpp; refType = 4; }; 2E78864804AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = DOMSupport.hpp; refType = 4; }; 2E78864904AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = DOMSupportDefault.cpp; refType = 4; }; 2E78864A04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = DOMSupportDefault.hpp; refType = 4; }; 2E78864B04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = DOMSupportDefinitions.hpp; refType = 4; }; 2E78864C04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = DOMSupportException.cpp; refType = 4; }; 2E78864D04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = DOMSupportException.hpp; refType = 4; }; 2E78864E04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = DOMSupportInit.cpp; refType = 4; }; 2E78864F04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = DOMSupportInit.hpp; refType = 4; }; 2E78865004AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = TreeWalker.cpp; refType = 4; }; 2E78865104AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = TreeWalker.hpp; refType = 4; }; 2E78865204AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanNamespacesStack.cpp; refType = 4; }; 2E78865304AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanNamespacesStack.hpp; refType = 4; }; 2E78866404AB489A00028543 = { children = ( 2E78866504AB489A00028543, 2E78866604AB489A00028543, 2E78866704AB489A00028543, 2E78866804AB489A00028543, 2E78866904AB489A00028543, 2E78866A04AB489A00028543, 2E78866B04AB489A00028543, 2E78866C04AB489A00028543, 2E78866D04AB489A00028543, 2E78866E04AB489A00028543, 2E78866F04AB489A00028543, 2E78867004AB489A00028543, 2E78867104AB489A00028543, 2E78867204AB489A00028543, 2E78867304AB489A00028543, 2E78867404AB489A00028543, 2E78867504AB489A00028543, 2E78867604AB489A00028543, 2E78867704AB489A00028543, 2E78867804AB489A00028543, 2E78867904AB489A00028543, 2E78867A04AB489A00028543, 2E78867B04AB489A00028543, 2E78867C04AB489A00028543, 2E78867D04AB489A00028543, 2E78867E04AB489A00028543, 2E78867F04AB489A00028543, 2E78868004AB489A00028543, 2E78868104AB489A00028543, 2E78868204AB489A00028543, 2E78868304AB489A00028543, 2E78868404AB489A00028543, 2E78868504AB489A00028543, 2E78868604AB489A00028543, 2E78868704AB489A00028543, 2E78868804AB489A00028543, 2E78868904AB489A00028543, 2E78868A04AB489A00028543, 2E78868B04AB489A00028543, 2E78868C04AB489A00028543, 2E78868D04AB489A00028543, 2E78868E04AB489A00028543, 2E78868F04AB489A00028543, 2E78869004AB489A00028543, 2E78869104AB489A00028543, 2E78869204AB489A00028543, 2E78869304AB489A00028543, 2E78869404AB489A00028543, 2E78869504AB489A00028543, 2E78869604AB489A00028543, 2E78869704AB489A00028543, 2E78869804AB489A00028543, 2E78869904AB489A00028543, 2E78869A04AB489B00028543, 2E78869B04AB489B00028543, 2E78869C04AB489B00028543, 2E78869D04AB489B00028543, 2E78869E04AB489B00028543, 2E78869F04AB489B00028543, 2E7886A004AB489B00028543, 2E7886A104AB489B00028543, 2E7886A204AB489B00028543, 2E7886A304AB489B00028543, 2E7886A404AB489B00028543, 2E7886A504AB489B00028543, 2E7886A604AB489B00028543, 2E7886A704AB489B00028543, 2E7886A804AB489B00028543, 2E7886A904AB489B00028543, 2E7886AA04AB489B00028543, 2E7886AB04AB489B00028543, 2E7886AC04AB489B00028543, 2E7886AD04AB489B00028543, 2E7886AE04AB489B00028543, 2E7886AF04AB489B00028543, 2E7886B004AB489B00028543, 2E7886B104AB489B00028543, 2E7886B204AB489B00028543, 2E7886B304AB489B00028543, 2E7886B404AB489B00028543, 2E7886B504AB489B00028543, 2E7886B604AB489B00028543, 2E7886B704AB489B00028543, 2E7886B804AB489B00028543, 2E7886B904AB489B00028543, 2E7886BA04AB489B00028543, 2E7886BB04AB489B00028543, 2E7886BC04AB489B00028543, 2E7886BD04AB489B00028543, 2E7886BE04AB489B00028543, 2E7886BF04AB489B00028543, ); isa = PBXGroup; path = PlatformSupport; refType = 4; }; 2E78866504AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ArenaAllocator.hpp; refType = 4; }; 2E78866604AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ArenaBlock.hpp; refType = 4; }; 2E78866704AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = AttributeListImpl.cpp; refType = 4; }; 2E78866804AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = AttributeListImpl.hpp; refType = 4; }; 2E78866904AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = AttributesImpl.cpp; refType = 4; }; 2E78866A04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = AttributesImpl.hpp; refType = 4; }; 2E78866B04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = AttributeVectorEntry.hpp; refType = 4; }; 2E78866C04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = AttributeVectorEntryExtended.hpp; refType = 4; }; 2E78866D04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = DirectoryEnumerator.hpp; refType = 4; }; 2E78866E04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = DOMStringHelper.cpp; refType = 4; }; 2E78866F04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = DOMStringHelper.hpp; refType = 4; }; 2E78867004AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = DOMStringPrintWriter.cpp; refType = 4; }; 2E78867104AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = DOMStringPrintWriter.hpp; refType = 4; }; 2E78867204AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = DoubleSupport.cpp; refType = 4; }; 2E78867304AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = DoubleSupport.hpp; refType = 4; }; 2E78867404AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ExecutionContext.cpp; refType = 4; }; 2E78867504AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ExecutionContext.hpp; refType = 4; }; 2E78867604AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FormatterListener.cpp; refType = 4; }; 2E78867704AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FormatterListener.hpp; refType = 4; }; 2E78867804AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = NamedNodeMapAttributeList.cpp; refType = 4; }; 2E78867904AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = NamedNodeMapAttributeList.hpp; refType = 4; }; 2E78867A04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = NullPrintWriter.cpp; refType = 4; }; 2E78867B04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = NullPrintWriter.hpp; refType = 4; }; 2E78867C04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = PlatformSupportDefinitions.hpp; refType = 4; }; 2E78867D04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = PlatformSupportInit.cpp; refType = 4; }; 2E78867E04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = PlatformSupportInit.hpp; refType = 4; }; 2E78867F04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = PrefixResolver.cpp; refType = 4; }; 2E78868004AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = PrefixResolver.hpp; refType = 4; }; 2E78868104AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = PrintWriter.cpp; refType = 4; }; 2E78868204AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = PrintWriter.hpp; refType = 4; }; 2E78868304AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = Resettable.cpp; refType = 4; }; 2E78868404AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = Resettable.hpp; refType = 4; }; 2E78868504AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ReusableArenaAllocator.hpp; refType = 4; }; 2E78868604AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ReusableArenaBlock.hpp; refType = 4; }; 2E78868704AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = StdBinInputStream.cpp; refType = 4; }; 2E78868804AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = StdBinInputStream.hpp; refType = 4; }; 2E78868904AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = StringTokenizer.cpp; refType = 4; }; 2E78868A04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = StringTokenizer.hpp; refType = 4; }; 2E78868B04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = URISupport.cpp; refType = 4; }; 2E78868C04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = URISupport.hpp; refType = 4; }; 2E78868D04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = Writer.cpp; refType = 4; }; 2E78868E04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = Writer.hpp; refType = 4; }; 2E78868F04AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanAllocator.hpp; refType = 4; }; 2E78869004AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanArrayAllocator.hpp; refType = 4; }; 2E78869104AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanBitmap.cpp; refType = 4; }; 2E78869204AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanBitmap.hpp; refType = 4; }; 2E78869304AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDecimalFormat.cpp; refType = 4; }; 2E78869404AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDecimalFormat.hpp; refType = 4; }; 2E78869504AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDecimalFormatSymbols.cpp; refType = 4; }; 2E78869604AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDecimalFormatSymbols.hpp; refType = 4; }; 2E78869704AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDOMStringAllocator.cpp; refType = 4; }; 2E78869804AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDOMStringAllocator.hpp; refType = 4; }; 2E78869904AB489A00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDOMStringCache.cpp; refType = 4; }; 2E78869A04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDOMStringCache.hpp; refType = 4; }; 2E78869B04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDOMStringHashTable.cpp; refType = 4; }; 2E78869C04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDOMStringHashTable.hpp; refType = 4; }; 2E78869D04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDOMStringPool.cpp; refType = 4; }; 2E78869E04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDOMStringPool.hpp; refType = 4; }; 2E78869F04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanEncodingPropertyCache.cpp; refType = 4; }; 2E7886A004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanEncodingPropertyCache.hpp; refType = 4; }; 2E7886A104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanFileOutputStream.cpp; refType = 4; }; 2E7886A204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanFileOutputStream.hpp; refType = 4; }; 2E7886A304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanLocator.hpp; refType = 4; }; 2E7886A404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanNamespace.hpp; refType = 4; }; 2E7886A504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanNullOutputStream.cpp; refType = 4; }; 2E7886A604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanNullOutputStream.hpp; refType = 4; }; 2E7886A704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanNumberFormat.cpp; refType = 4; }; 2E7886A804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanNumberFormat.hpp; refType = 4; }; 2E7886A904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanOutputStream.cpp; refType = 4; }; 2E7886AA04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanOutputStream.hpp; refType = 4; }; 2E7886AB04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanOutputStreamPrintWriter.cpp; refType = 4; }; 2E7886AC04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanOutputStreamPrintWriter.hpp; refType = 4; }; 2E7886AD04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanParsedURI.cpp; refType = 4; }; 2E7886AE04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanParsedURI.hpp; refType = 4; }; 2E7886AF04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanReferenceCountedObject.cpp; refType = 4; }; 2E7886B004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanReferenceCountedObject.hpp; refType = 4; }; 2E7886B104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSimplePrefixResolver.cpp; refType = 4; }; 2E7886B204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSimplePrefixResolver.hpp; refType = 4; }; 2E7886B304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanStdOutputStream.cpp; refType = 4; }; 2E7886B404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanStdOutputStream.hpp; refType = 4; }; 2E7886B504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanToXercesTranscoderWrapper.cpp; refType = 4; }; 2E7886B604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanToXercesTranscoderWrapper.hpp; refType = 4; }; 2E7886B704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanTranscodingServices.cpp; refType = 4; }; 2E7886B804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanTranscodingServices.hpp; refType = 4; }; 2E7886B904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanUnicode.hpp; refType = 4; }; 2E7886BA04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanUTF16Transcoder.cpp; refType = 4; }; 2E7886BB04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanUTF16Transcoder.hpp; refType = 4; }; 2E7886BC04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanXMLChar.cpp; refType = 4; }; 2E7886BD04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanXMLChar.hpp; refType = 4; }; 2E7886BE04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XSLException.cpp; refType = 4; }; 2E7886BF04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XSLException.hpp; refType = 4; }; 2E7886C004AB489B00028543 = { children = ( 2E7886C104AB489B00028543, 2E7886C204AB489B00028543, 2E7886C304AB489B00028543, 2E7886C404AB489B00028543, 2E7886C504AB489B00028543, 2E7886C604AB489B00028543, 2E7886C704AB489B00028543, 2E7886C804AB489B00028543, 2E7886C904AB489B00028543, 2E7886CA04AB489B00028543, 2E7886CB04AB489B00028543, 2E7886CC04AB489B00028543, 2E7886CD04AB489B00028543, 2E7886CE04AB489B00028543, 2E7886CF04AB489B00028543, 2E7886D004AB489B00028543, 2E7886D104AB489B00028543, 2E7886D204AB489B00028543, 2E7886D304AB489B00028543, 2E7886D404AB489B00028543, 2E7886D504AB489B00028543, 2E7886D604AB489B00028543, 2E7886D704AB489B00028543, 2E7886D804AB489B00028543, 2E7886D904AB489B00028543, 2E7886DA04AB489B00028543, 2E7886DB04AB489B00028543, 2E7886DC04AB489B00028543, 2E7886DD04AB489B00028543, 2E7886DE04AB489B00028543, 2E7886DF04AB489B00028543, 2E7886E004AB489B00028543, 2E7886E104AB489B00028543, 2E7886E204AB489B00028543, 2E7886E304AB489B00028543, 2E7886E404AB489B00028543, 2E7886E504AB489B00028543, 2E7886E604AB489B00028543, 2E7886E704AB489B00028543, 2E7886E804AB489B00028543, 2E7886E904AB489B00028543, 2E7886EA04AB489B00028543, 2E7886EB04AB489B00028543, 2E7886EC04AB489B00028543, 2E7886ED04AB489B00028543, 2E7886EE04AB489B00028543, 2E7886EF04AB489B00028543, ); isa = PBXGroup; path = XalanDOM; refType = 4; }; 2E7886C104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanAttr.cpp; refType = 4; }; 2E7886C204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanAttr.hpp; refType = 4; }; 2E7886C304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanCDataSection.cpp; refType = 4; }; 2E7886C404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanCDATASection.hpp; refType = 4; }; 2E7886C504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanCharacterData.cpp; refType = 4; }; 2E7886C604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanCharacterData.hpp; refType = 4; }; 2E7886C704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanComment.cpp; refType = 4; }; 2E7886C804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanComment.hpp; refType = 4; }; 2E7886C904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDocument.cpp; refType = 4; }; 2E7886CA04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDocument.hpp; refType = 4; }; 2E7886CB04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDocumentFragment.cpp; refType = 4; }; 2E7886CC04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDocumentFragment.hpp; refType = 4; }; 2E7886CD04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDocumentType.cpp; refType = 4; }; 2E7886CE04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDocumentType.hpp; refType = 4; }; 2E7886CF04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDOMDefinitions.hpp; refType = 4; }; 2E7886D004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDOMException.cpp; refType = 4; }; 2E7886D104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDOMException.hpp; refType = 4; }; 2E7886D204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDOMImplementation.cpp; refType = 4; }; 2E7886D304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDOMImplementation.hpp; refType = 4; }; 2E7886D404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDOMInit.cpp; refType = 4; }; 2E7886D504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDOMInit.hpp; refType = 4; }; 2E7886D604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDOMString.cpp; refType = 4; }; 2E7886D704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDOMString.hpp; refType = 4; }; 2E7886D804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElement.cpp; refType = 4; }; 2E7886D904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElement.hpp; refType = 4; }; 2E7886DA04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanEmptyNamedNodeMap.cpp; refType = 4; }; 2E7886DB04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanEmptyNamedNodeMap.hpp; refType = 4; }; 2E7886DC04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanEntity.cpp; refType = 4; }; 2E7886DD04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanEntity.hpp; refType = 4; }; 2E7886DE04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanEntityReference.cpp; refType = 4; }; 2E7886DF04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanEntityReference.hpp; refType = 4; }; 2E7886E004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanNamedNodeMap.cpp; refType = 4; }; 2E7886E104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanNamedNodeMap.hpp; refType = 4; }; 2E7886E204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanNode.cpp; refType = 4; }; 2E7886E304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanNode.hpp; refType = 4; }; 2E7886E404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanNodeList.cpp; refType = 4; }; 2E7886E504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanNodeList.hpp; refType = 4; }; 2E7886E604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanNodeListDummy.cpp; refType = 4; }; 2E7886E704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanNodeListDummy.hpp; refType = 4; }; 2E7886E804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanNodeListSurrogate.cpp; refType = 4; }; 2E7886E904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanNodeListSurrogate.hpp; refType = 4; }; 2E7886EA04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanNotation.cpp; refType = 4; }; 2E7886EB04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanNotation.hpp; refType = 4; }; 2E7886EC04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanProcessingInstruction.cpp; refType = 4; }; 2E7886ED04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanProcessingInstruction.hpp; refType = 4; }; 2E7886EE04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanText.cpp; refType = 4; }; 2E7886EF04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanText.hpp; refType = 4; }; 2E7886F004AB489B00028543 = { children = ( 2E7886F104AB489B00028543, 2E7886F204AB489B00028543, 2E7886F304AB489B00028543, 2E7886F404AB489B00028543, 2E7886F504AB489B00028543, 2E7886F604AB489B00028543, 2E7886F704AB489B00028543, 2E7886F804AB489B00028543, 2E7886F904AB489B00028543, 2E7886FA04AB489B00028543, 2E7886FB04AB489B00028543, 2E7886FC04AB489B00028543, 2E7886FD04AB489B00028543, ); isa = PBXGroup; path = XalanEXSLT; refType = 4; }; 2E7886F104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanEXSLTCommon.cpp; refType = 4; }; 2E7886F204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanEXSLTCommon.hpp; refType = 4; }; 2E7886F304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanEXSLTCommonImpl.hpp; refType = 4; }; 2E7886F404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanEXSLTDefinitions.hpp; refType = 4; }; 2E7886F504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanEXSLTMath.cpp; refType = 4; }; 2E7886F604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanEXSLTMath.hpp; refType = 4; }; 2E7886F704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanEXSLTMathImpl.hpp; refType = 4; }; 2E7886F804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanEXSLTSet.cpp; refType = 4; }; 2E7886F904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanEXSLTSet.hpp; refType = 4; }; 2E7886FA04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanEXSLTSetImpl.hpp; refType = 4; }; 2E7886FB04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanEXSLTString.cpp; refType = 4; }; 2E7886FC04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanEXSLTString.hpp; refType = 4; }; 2E7886FD04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanEXSLTStringImpl.hpp; refType = 4; }; 2E7886FE04AB489B00028543 = { children = ( 2E7886FF04AB489B00028543, 2E78870004AB489B00028543, 2E78870104AB489B00028543, 2E78870204AB489B00028543, 2E78870304AB489B00028543, 2E78870404AB489B00028543, 2E78870504AB489B00028543, 2E78870604AB489B00028543, 2E78870704AB489B00028543, 2E78870804AB489B00028543, 2E78870904AB489B00028543, 2E78870A04AB489B00028543, 2E78870B04AB489B00028543, 2E78870C04AB489B00028543, 2E78870D04AB489B00028543, ); isa = PBXGroup; path = XalanExtensions; refType = 4; }; 2E7886FF04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionDifference.cpp; refType = 4; }; 2E78870004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionDifference.hpp; refType = 4; }; 2E78870104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionDistinct.cpp; refType = 4; }; 2E78870204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionDistinct.hpp; refType = 4; }; 2E78870304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionEvaluate.cpp; refType = 4; }; 2E78870404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionEvaluate.hpp; refType = 4; }; 2E78870504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionHasSameNodes.cpp; refType = 4; }; 2E78870604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionHasSameNodes.hpp; refType = 4; }; 2E78870704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionIntersection.cpp; refType = 4; }; 2E78870804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionIntersection.hpp; refType = 4; }; 2E78870904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionNodeSet.cpp; refType = 4; }; 2E78870A04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionNodeSet.hpp; refType = 4; }; 2E78870B04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanExtensions.cpp; refType = 4; }; 2E78870C04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanExtensions.hpp; refType = 4; }; 2E78870D04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanExtensionsDefinitions.hpp; refType = 4; }; 2E78870E04AB489B00028543 = { children = ( 2E78870F04AB489B00028543, 2E78871004AB489B00028543, 2E78871104AB489B00028543, 2E78871204AB489B00028543, 2E78871304AB489B00028543, 2E78871404AB489B00028543, 2E78871504AB489B00028543, 2E78871604AB489B00028543, 2E78871704AB489B00028543, 2E78871804AB489B00028543, 2E78871904AB489B00028543, 2E78871A04AB489B00028543, 2E78871B04AB489B00028543, 2E78871C04AB489B00028543, 2E78871D04AB489B00028543, 2E78871E04AB489B00028543, 2E78871F04AB489B00028543, 2E78872004AB489B00028543, 2E78872104AB489B00028543, 2E78872204AB489B00028543, 2E78872304AB489B00028543, 2E78872404AB489B00028543, 2E78872504AB489B00028543, 2E78872604AB489B00028543, 2E78872704AB489B00028543, 2E78872804AB489B00028543, 2E78872904AB489B00028543, 2E78872A04AB489B00028543, 2E78872B04AB489B00028543, 2E78872C04AB489B00028543, 2E78872D04AB489B00028543, 2E78872E04AB489B00028543, 2E78872F04AB489B00028543, 2E78873004AB489B00028543, 2E78873104AB489B00028543, 2E78873204AB489B00028543, 2E78873304AB489B00028543, 2E78873404AB489B00028543, 2E78873504AB489B00028543, 2E78873604AB489B00028543, 2E78873704AB489B00028543, 2E78873804AB489B00028543, 2E78873904AB489B00028543, 2E78873A04AB489B00028543, 2E78873B04AB489B00028543, 2E78873C04AB489B00028543, 2E78873D04AB489B00028543, 2E78873E04AB489B00028543, 2E78873F04AB489B00028543, 2E78874004AB489B00028543, 2E78874104AB489B00028543, 2E78874204AB489B00028543, 2E78874304AB489B00028543, 2E78874404AB489B00028543, 2E78874504AB489B00028543, 2E78874604AB489B00028543, 2E78874704AB489B00028543, 2E78874804AB489B00028543, 2E78874904AB489B00028543, ); isa = PBXGroup; path = XalanSourceTree; refType = 4; }; 2E78870F04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FormatterToSourceTree.cpp; refType = 4; }; 2E78871004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FormatterToSourceTree.hpp; refType = 4; }; 2E78871104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeAttr.cpp; refType = 4; }; 2E78871204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeAttr.hpp; refType = 4; }; 2E78871304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeAttributeAllocator.cpp; refType = 4; }; 2E78871404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeAttributeAllocator.hpp; refType = 4; }; 2E78871504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeAttributeNSAllocator.cpp; refType = 4; }; 2E78871604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeAttributeNSAllocator.hpp; refType = 4; }; 2E78871704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeAttrNS.cpp; refType = 4; }; 2E78871804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeAttrNS.hpp; refType = 4; }; 2E78871904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeComment.cpp; refType = 4; }; 2E78871A04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeComment.hpp; refType = 4; }; 2E78871B04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeCommentAllocator.cpp; refType = 4; }; 2E78871C04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeCommentAllocator.hpp; refType = 4; }; 2E78871D04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeContentHandler.cpp; refType = 4; }; 2E78871E04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeContentHandler.hpp; refType = 4; }; 2E78871F04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeDefinitions.hpp; refType = 4; }; 2E78872004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeDocument.cpp; refType = 4; }; 2E78872104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeDocument.hpp; refType = 4; }; 2E78872204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeDocumentFragment.cpp; refType = 4; }; 2E78872304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeDocumentFragment.hpp; refType = 4; }; 2E78872404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeDOMSupport.cpp; refType = 4; }; 2E78872504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeDOMSupport.hpp; refType = 4; }; 2E78872604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeElement.cpp; refType = 4; }; 2E78872704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeElement.hpp; refType = 4; }; 2E78872804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeElementA.cpp; refType = 4; }; 2E78872904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeElementA.hpp; refType = 4; }; 2E78872A04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeElementAAllocator.cpp; refType = 4; }; 2E78872B04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeElementAAllocator.hpp; refType = 4; }; 2E78872C04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeElementANS.cpp; refType = 4; }; 2E78872D04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeElementANS.hpp; refType = 4; }; 2E78872E04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeElementANSAllocator.cpp; refType = 4; }; 2E78872F04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeElementANSAllocator.hpp; refType = 4; }; 2E78873004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeElementNA.cpp; refType = 4; }; 2E78873104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeElementNA.hpp; refType = 4; }; 2E78873204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeElementNAAllocator.cpp; refType = 4; }; 2E78873304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeElementNAAllocator.hpp; refType = 4; }; 2E78873404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeElementNANS.cpp; refType = 4; }; 2E78873504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeElementNANS.hpp; refType = 4; }; 2E78873604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeElementNANSAllocator.cpp; refType = 4; }; 2E78873704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeElementNANSAllocator.hpp; refType = 4; }; 2E78873804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeHelper.cpp; refType = 4; }; 2E78873904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeHelper.hpp; refType = 4; }; 2E78873A04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeInit.cpp; refType = 4; }; 2E78873B04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeInit.hpp; refType = 4; }; 2E78873C04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeParserLiaison.cpp; refType = 4; }; 2E78873D04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeParserLiaison.hpp; refType = 4; }; 2E78873E04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeProcessingInstruction.cpp; refType = 4; }; 2E78873F04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeProcessingInstruction.hpp; refType = 4; }; 2E78874004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeProcessingInstructionAllocator.cpp; refType = 4; }; 2E78874104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeProcessingInstructionAllocator.hpp; refType = 4; }; 2E78874204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeText.cpp; refType = 4; }; 2E78874304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeText.hpp; refType = 4; }; 2E78874404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeTextAllocator.cpp; refType = 4; }; 2E78874504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeTextAllocator.hpp; refType = 4; }; 2E78874604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeTextIWS.cpp; refType = 4; }; 2E78874704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeTextIWS.hpp; refType = 4; }; 2E78874804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeTextIWSAllocator.cpp; refType = 4; }; 2E78874904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeTextIWSAllocator.hpp; refType = 4; }; 2E78874A04AB489B00028543 = { children = ( 2E78874B04AB489B00028543, 2E78874C04AB489B00028543, 2E78874D04AB489B00028543, 2E78874E04AB489B00028543, 2E78874F04AB489B00028543, 2E78875004AB489B00028543, 2E78875104AB489B00028543, 2E78875204AB489B00028543, 2E78875304AB489B00028543, 2E78875404AB489B00028543, 2E78875504AB489B00028543, 2E78875604AB489B00028543, 2E78875704AB489B00028543, 2E78875804AB489B00028543, 2E78875904AB489B00028543, 2E78875A04AB489B00028543, 2E78875B04AB489B00028543, 2E78875C04AB489B00028543, 2E78875D04AB489B00028543, 2E78875E04AB489B00028543, 2E78875F04AB489B00028543, 2E78876004AB489B00028543, 2E78876104AB489B00028543, 2E78876204AB489B00028543, 2E78876304AB489B00028543, ); isa = PBXGroup; path = XalanTransformer; refType = 4; }; 2E78874B04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanCAPI.cpp; refType = 4; }; 2E78874C04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanCAPI.h; refType = 4; }; 2E78874D04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanCompiledStylesheet.hpp; refType = 4; }; 2E78874E04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanCompiledStylesheetDefault.cpp; refType = 4; }; 2E78874F04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanCompiledStylesheetDefault.hpp; refType = 4; }; 2E78875004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDefaultDocumentBuilder.cpp; refType = 4; }; 2E78875104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDefaultDocumentBuilder.hpp; refType = 4; }; 2E78875204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDefaultParsedSource.cpp; refType = 4; }; 2E78875304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDefaultParsedSource.hpp; refType = 4; }; 2E78875404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanDocumentBuilder.hpp; refType = 4; }; 2E78875504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanParsedSource.cpp; refType = 4; }; 2E78875604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanParsedSource.hpp; refType = 4; }; 2E78875704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeWrapperParsedSource.cpp; refType = 4; }; 2E78875804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeWrapperParsedSource.hpp; refType = 4; }; 2E78875904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanTransformer.cpp; refType = 4; }; 2E78875A04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanTransformer.hpp; refType = 4; }; 2E78875B04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanTransformerDefinitions.hpp; refType = 4; }; 2E78875C04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanTransformerOutputStream.cpp; refType = 4; }; 2E78875D04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanTransformerOutputStream.hpp; refType = 4; }; 2E78875E04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanTransformerProblemListener.cpp; refType = 4; }; 2E78875F04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanTransformerProblemListener.hpp; refType = 4; }; 2E78876004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDOMParsedSource.cpp; refType = 4; }; 2E78876104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDOMParsedSource.hpp; refType = 4; }; 2E78876204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDOMWrapperParsedSource.cpp; refType = 4; }; 2E78876304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDOMWrapperParsedSource.hpp; refType = 4; }; 2E78876404AB489B00028543 = { children = ( 2E78876504AB489B00028543, 2E78876604AB489B00028543, 2E78876704AB489B00028543, 2E78876804AB489B00028543, 2E78876904AB489B00028543, 2E78876A04AB489B00028543, 2E78876B04AB489B00028543, 2E78876C04AB489B00028543, 2E78876D04AB489B00028543, 2E78876E04AB489B00028543, 2E78876F04AB489B00028543, 2E78877004AB489B00028543, 2E78877104AB489B00028543, 2E78877204AB489B00028543, 2E78877304AB489B00028543, 2E78877404AB489B00028543, 2E78877504AB489B00028543, 2E78877604AB489B00028543, 2E78877704AB489B00028543, 2E78877804AB489B00028543, 2E78877904AB489B00028543, 2E78877A04AB489B00028543, 2E78877B04AB489B00028543, 2E78877C04AB489B00028543, 2E78877D04AB489B00028543, 2E78877E04AB489B00028543, 2E78877F04AB489B00028543, 2E78878004AB489B00028543, 2E78878104AB489B00028543, 2E78878204AB489B00028543, 2E78878304AB489B00028543, 2E78878404AB489B00028543, 2E78878504AB489B00028543, 2E78878604AB489B00028543, 2E78878704AB489B00028543, 2E78878804AB489B00028543, 2E78878904AB489B00028543, 2E78878A04AB489B00028543, 2E78878B04AB489B00028543, 2E78878C04AB489B00028543, 2E78878D04AB489B00028543, 2E78878E04AB489B00028543, 2E78878F04AB489B00028543, 2E78879004AB489B00028543, 2E78879104AB489B00028543, 2E78879204AB489B00028543, 2E78879304AB489B00028543, 2E78879404AB489B00028543, 2E78879504AB489B00028543, 2E78879604AB489B00028543, 2E78879704AB489B00028543, 2E78879804AB489B00028543, 2E78879904AB489B00028543, 2E78879A04AB489B00028543, 2E78879B04AB489B00028543, 2E78879C04AB489B00028543, 2E78879D04AB489B00028543, 2E78879E04AB489B00028543, 2E78879F04AB489B00028543, 2E7887A004AB489B00028543, 2E7887A104AB489B00028543, 2E7887A204AB489B00028543, 2E7887A304AB489B00028543, 2E7887A404AB489B00028543, 2E7887A504AB489B00028543, 2E7887A604AB489B00028543, 2E7887A704AB489B00028543, 2E7887A804AB489B00028543, 2E7887A904AB489B00028543, 2E7887AA04AB489B00028543, 2E7887AB04AB489B00028543, 2E7887AC04AB489B00028543, 2E7887AD04AB489B00028543, 2E7887AE04AB489B00028543, 2E7887AF04AB489B00028543, 2E7887B004AB489B00028543, 2E7887B104AB489B00028543, 2E7887B204AB489B00028543, 2E7887B304AB489B00028543, 2E7887B404AB489B00028543, 2E7887B504AB489B00028543, 2E7887B604AB489B00028543, 2E7887B704AB489B00028543, 2E7887B804AB489B00028543, 2E7887B904AB489B00028543, 2E7887BA04AB489B00028543, 2E7887BB04AB489B00028543, 2E7887BC04AB489B00028543, 2E7887BD04AB489B00028543, 2E7887BE04AB489B00028543, 2E7887BF04AB489B00028543, 2E7887C004AB489B00028543, 2E7887C104AB489B00028543, 2E7887C204AB489B00028543, 2E7887C304AB489B00028543, 2E7887C404AB489B00028543, 2E7887C504AB489B00028543, 2E7887C604AB489B00028543, 2E7887C704AB489B00028543, 2E7887C804AB489B00028543, 2E7887C904AB489B00028543, 2E7887CA04AB489B00028543, 2E7887CB04AB489B00028543, 2E7887CC04AB489B00028543, 2E7887CD04AB489B00028543, 2E7887CE04AB489B00028543, 2E7887CF04AB489B00028543, 2E7887D004AB489B00028543, 2E7887D104AB489B00028543, 2E7887D204AB489B00028543, 2E7887D304AB489B00028543, 2E7887D404AB489B00028543, 2E7887D504AB489B00028543, 2E7887D604AB489B00028543, 2E7887D704AB489B00028543, ); isa = PBXGroup; path = XercesParserLiaison; refType = 4; }; 2E78876504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FormatterToDeprecatedXercesDOM.cpp; refType = 4; }; 2E78876604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FormatterToDeprecatedXercesDOM.hpp; refType = 4; }; 2E78876704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FormatterToXercesDOM.cpp; refType = 4; }; 2E78876804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FormatterToXercesDOM.hpp; refType = 4; }; 2E78876904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesAttrBridge.cpp; refType = 4; }; 2E78876A04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesAttrBridge.hpp; refType = 4; }; 2E78876B04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesAttributeBridgeAllocator.cpp; refType = 4; }; 2E78876C04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesAttributeBridgeAllocator.hpp; refType = 4; }; 2E78876D04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesAttrWrapper.cpp; refType = 4; }; 2E78876E04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesAttrWrapper.hpp; refType = 4; }; 2E78876F04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesAttrWrapperAllocator.cpp; refType = 4; }; 2E78877004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesAttrWrapperAllocator.hpp; refType = 4; }; 2E78877104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesBridgeHelper.cpp; refType = 4; }; 2E78877204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesBridgeHelper.hpp; refType = 4; }; 2E78877304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesBridgeNavigator.cpp; refType = 4; }; 2E78877404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesBridgeNavigator.hpp; refType = 4; }; 2E78877504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesBridgeTypes.hpp; refType = 4; }; 2E78877604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesCDATASectionBridge.cpp; refType = 4; }; 2E78877704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesCDATASectionBridge.hpp; refType = 4; }; 2E78877804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesCDATASectionWrapper.cpp; refType = 4; }; 2E78877904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesCDATASectionWrapper.hpp; refType = 4; }; 2E78877A04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesCommentBridge.cpp; refType = 4; }; 2E78877B04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesCommentBridge.hpp; refType = 4; }; 2E78877C04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesCommentWrapper.cpp; refType = 4; }; 2E78877D04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesCommentWrapper.hpp; refType = 4; }; 2E78877E04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDocumentBridge.cpp; refType = 4; }; 2E78877F04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDocumentBridge.hpp; refType = 4; }; 2E78878004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDocumentFragmentBridge.cpp; refType = 4; }; 2E78878104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDocumentFragmentBridge.hpp; refType = 4; }; 2E78878204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDocumentNamedNodeListCache.cpp; refType = 4; }; 2E78878304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDocumentNamedNodeListCache.hpp; refType = 4; }; 2E78878404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDocumentTypeBridge.cpp; refType = 4; }; 2E78878504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDocumentTypeBridge.hpp; refType = 4; }; 2E78878604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDocumentTypeWrapper.cpp; refType = 4; }; 2E78878704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDocumentTypeWrapper.hpp; refType = 4; }; 2E78878804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDocumentWrapper.cpp; refType = 4; }; 2E78878904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDocumentWrapper.hpp; refType = 4; }; 2E78878A04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDOM_NodeHack.cpp; refType = 4; }; 2E78878B04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDOM_NodeHack.hpp; refType = 4; }; 2E78878C04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDOMException.cpp; refType = 4; }; 2E78878D04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDOMException.hpp; refType = 4; }; 2E78878E04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDOMFormatterWalker.cpp; refType = 4; }; 2E78878F04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDOMFormatterWalker.hpp; refType = 4; }; 2E78879004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDOMImplementationBridge.cpp; refType = 4; }; 2E78879104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDOMImplementationBridge.hpp; refType = 4; }; 2E78879204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDOMImplementationWrapper.cpp; refType = 4; }; 2E78879304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDOMImplementationWrapper.hpp; refType = 4; }; 2E78879404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDOMSupport.cpp; refType = 4; }; 2E78879504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDOMSupport.hpp; refType = 4; }; 2E78879604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDOMWalker.cpp; refType = 4; }; 2E78879704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDOMWalker.hpp; refType = 4; }; 2E78879804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDOMWrapperException.cpp; refType = 4; }; 2E78879904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesDOMWrapperException.hpp; refType = 4; }; 2E78879A04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesElementBridge.cpp; refType = 4; }; 2E78879B04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesElementBridge.hpp; refType = 4; }; 2E78879C04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesElementBridgeAllocator.cpp; refType = 4; }; 2E78879D04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesElementBridgeAllocator.hpp; refType = 4; }; 2E78879E04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesElementNamedNodeListCache.cpp; refType = 4; }; 2E78879F04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesElementNamedNodeListCache.hpp; refType = 4; }; 2E7887A004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesElementWrapper.cpp; refType = 4; }; 2E7887A104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesElementWrapper.hpp; refType = 4; }; 2E7887A204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesElementWrapperAllocator.cpp; refType = 4; }; 2E7887A304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesElementWrapperAllocator.hpp; refType = 4; }; 2E7887A404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesEntityBridge.cpp; refType = 4; }; 2E7887A504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesEntityBridge.hpp; refType = 4; }; 2E7887A604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesEntityReferenceBridge.cpp; refType = 4; }; 2E7887A704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesEntityReferenceBridge.hpp; refType = 4; }; 2E7887A804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesEntityReferenceWrapper.cpp; refType = 4; }; 2E7887A904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesEntityReferenceWrapper.hpp; refType = 4; }; 2E7887AA04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesEntityWrapper.cpp; refType = 4; }; 2E7887AB04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesEntityWrapper.hpp; refType = 4; }; 2E7887AC04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesLiaisonXalanDOMStringPool.cpp; refType = 4; }; 2E7887AD04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesLiaisonXalanDOMStringPool.hpp; refType = 4; }; 2E7887AE04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesNamedNodeListCache.cpp; refType = 4; }; 2E7887AF04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesNamedNodeListCache.hpp; refType = 4; }; 2E7887B004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesNamedNodeMapAttributeList.cpp; refType = 4; }; 2E7887B104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesNamedNodeMapAttributeList.hpp; refType = 4; }; 2E7887B204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesNamedNodeMapBridge.cpp; refType = 4; }; 2E7887B304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesNamedNodeMapBridge.hpp; refType = 4; }; 2E7887B404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesNamedNodeMapWrapper.cpp; refType = 4; }; 2E7887B504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesNamedNodeMapWrapper.hpp; refType = 4; }; 2E7887B604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesNodeListBridge.cpp; refType = 4; }; 2E7887B704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesNodeListBridge.hpp; refType = 4; }; 2E7887B804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesNodeListWrapper.cpp; refType = 4; }; 2E7887B904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesNodeListWrapper.hpp; refType = 4; }; 2E7887BA04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesNotationBridge.cpp; refType = 4; }; 2E7887BB04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesNotationBridge.hpp; refType = 4; }; 2E7887BC04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesNotationWrapper.cpp; refType = 4; }; 2E7887BD04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesNotationWrapper.hpp; refType = 4; }; 2E7887BE04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesParserLiaison.cpp; refType = 4; }; 2E7887BF04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesParserLiaison.hpp; refType = 4; }; 2E7887C004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesParserLiaisonDefinitions.hpp; refType = 4; }; 2E7887C104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesProcessingInstructionBridge.cpp; refType = 4; }; 2E7887C204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesProcessingInstructionBridge.hpp; refType = 4; }; 2E7887C304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesProcessingInstructionWrapper.cpp; refType = 4; }; 2E7887C404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesProcessingInstructionWrapper.hpp; refType = 4; }; 2E7887C504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesTextBridge.cpp; refType = 4; }; 2E7887C604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesTextBridge.hpp; refType = 4; }; 2E7887C704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesTextBridgeAllocator.cpp; refType = 4; }; 2E7887C804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesTextBridgeAllocator.hpp; refType = 4; }; 2E7887C904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesTextWrapper.cpp; refType = 4; }; 2E7887CA04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesTextWrapper.hpp; refType = 4; }; 2E7887CB04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesTextWrapperAllocator.cpp; refType = 4; }; 2E7887CC04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesTextWrapperAllocator.hpp; refType = 4; }; 2E7887CD04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesToXalanNodeMap.cpp; refType = 4; }; 2E7887CE04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesToXalanNodeMap.hpp; refType = 4; }; 2E7887CF04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesTreeWalker.cpp; refType = 4; }; 2E7887D004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesTreeWalker.hpp; refType = 4; }; 2E7887D104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesWrapperHelper.cpp; refType = 4; }; 2E7887D204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesWrapperHelper.hpp; refType = 4; }; 2E7887D304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesWrapperNavigator.cpp; refType = 4; }; 2E7887D404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesWrapperNavigator.hpp; refType = 4; }; 2E7887D504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesWrapperToXalanNodeMap.cpp; refType = 4; }; 2E7887D604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesWrapperToXalanNodeMap.hpp; refType = 4; }; 2E7887D704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XercesWrapperTypes.hpp; refType = 4; }; 2E7887D804AB489B00028543 = { children = ( 2E7887D904AB489B00028543, 2E7887DA04AB489B00028543, 2E7887DB04AB489B00028543, 2E7887DC04AB489B00028543, 2E7887DD04AB489B00028543, 2E7887DE04AB489B00028543, 2E7887DF04AB489B00028543, 2E7887E004AB489B00028543, 2E7887E104AB489B00028543, 2E7887E204AB489B00028543, 2E7887E304AB489B00028543, 2E7887E404AB489B00028543, 2E7887E504AB489B00028543, 2E7887E604AB489B00028543, 2E7887E704AB489B00028543, 2E7887E804AB489B00028543, 2E7887E904AB489B00028543, 2E7887EA04AB489B00028543, 2E7887EB04AB489B00028543, 2E7887EC04AB489B00028543, 2E7887ED04AB489B00028543, ); isa = PBXGroup; path = XMLSupport; refType = 4; }; 2E7887D904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FormatterToDOM.cpp; refType = 4; }; 2E7887DA04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FormatterToDOM.hpp; refType = 4; }; 2E7887DB04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FormatterToHTML.cpp; refType = 4; }; 2E7887DC04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FormatterToHTML.hpp; refType = 4; }; 2E7887DD04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FormatterToNull.cpp; refType = 4; }; 2E7887DE04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FormatterToNull.hpp; refType = 4; }; 2E7887DF04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FormatterToText.cpp; refType = 4; }; 2E7887E004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FormatterToText.hpp; refType = 4; }; 2E7887E104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FormatterToXML.cpp; refType = 4; }; 2E7887E204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FormatterToXML.hpp; refType = 4; }; 2E7887E304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FormatterTreeWalker.cpp; refType = 4; }; 2E7887E404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FormatterTreeWalker.hpp; refType = 4; }; 2E7887E504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanHTMLElementsProperties.cpp; refType = 4; }; 2E7887E604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanHTMLElementsProperties.hpp; refType = 4; }; 2E7887E704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XMLParserLiaison.cpp; refType = 4; }; 2E7887E804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XMLParserLiaison.hpp; refType = 4; }; 2E7887E904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XMLSupportDefinitions.hpp; refType = 4; }; 2E7887EA04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XMLSupportException.cpp; refType = 4; }; 2E7887EB04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XMLSupportException.hpp; refType = 4; }; 2E7887EC04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XMLSupportInit.cpp; refType = 4; }; 2E7887ED04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XMLSupportInit.hpp; refType = 4; }; 2E7887EE04AB489B00028543 = { children = ( 2E7887EF04AB489B00028543, 2E7887F004AB489B00028543, 2E7887F104AB489B00028543, 2E7887F204AB489B00028543, 2E7887F304AB489B00028543, 2E7887F404AB489B00028543, 2E7887F504AB489B00028543, 2E7887F604AB489B00028543, 2E7887F704AB489B00028543, 2E7887F804AB489B00028543, 2E7887F904AB489B00028543, 2E7887FA04AB489B00028543, 2E7887FB04AB489B00028543, 2E7887FC04AB489B00028543, 2E7887FD04AB489B00028543, 2E7887FE04AB489B00028543, 2E7887FF04AB489B00028543, 2E78880004AB489B00028543, 2E78880104AB489B00028543, 2E78880204AB489B00028543, 2E78880304AB489B00028543, 2E78880404AB489B00028543, 2E78880504AB489B00028543, 2E78880604AB489B00028543, 2E78880704AB489B00028543, 2E78880804AB489B00028543, 2E78880904AB489B00028543, 2E78880A04AB489B00028543, 2E78880B04AB489B00028543, 2E78880C04AB489B00028543, 2E78880D04AB489B00028543, 2E78880E04AB489B00028543, 2E78880F04AB489B00028543, 2E78881004AB489B00028543, 2E78881104AB489B00028543, 2E78881204AB489B00028543, 2E78881304AB489B00028543, 2E78881404AB489B00028543, 2E78881504AB489B00028543, 2E78881604AB489B00028543, 2E78881704AB489B00028543, 2E78881804AB489B00028543, 2E78881904AB489B00028543, 2E78881A04AB489B00028543, 2E78881B04AB489B00028543, 2E78881C04AB489B00028543, 2E78881D04AB489B00028543, 2E78881E04AB489B00028543, 2E78881F04AB489B00028543, 2E78882004AB489B00028543, 2E78882104AB489B00028543, 2E78882204AB489B00028543, 2E78882304AB489B00028543, 2E78882404AB489B00028543, 2E78882504AB489B00028543, 2E78882604AB489B00028543, 2E78882704AB489B00028543, 2E78882804AB489B00028543, 2E78882904AB489B00028543, 2E78882A04AB489B00028543, 2E78882B04AB489B00028543, 2E78882C04AB489B00028543, 2E78882D04AB489B00028543, 2E78882E04AB489B00028543, 2E78882F04AB489B00028543, 2E78883004AB489B00028543, 2E78883104AB489B00028543, 2E78883204AB489B00028543, 2E78883304AB489B00028543, 2E78883404AB489B00028543, 2E78883504AB489B00028543, 2E78883604AB489B00028543, 2E78883704AB489B00028543, 2E78883804AB489B00028543, 2E78883904AB489B00028543, 2E78883A04AB489B00028543, 2E78883B04AB489B00028543, 2E78883C04AB489B00028543, 2E78883D04AB489B00028543, 2E78883E04AB489B00028543, 2E78883F04AB489B00028543, 2E78884004AB489B00028543, 2E78884104AB489B00028543, 2E78884204AB489B00028543, 2E78884304AB489B00028543, 2E78884404AB489B00028543, 2E78884504AB489B00028543, 2E78884604AB489B00028543, 2E78884704AB489B00028543, 2E78884804AB489B00028543, 2E78884904AB489B00028543, 2E78884A04AB489B00028543, 2E78884B04AB489B00028543, 2E78884C04AB489B00028543, 2E78884D04AB489B00028543, 2E78884E04AB489B00028543, 2E78884F04AB489B00028543, 2E78885004AB489B00028543, 2E78885104AB489B00028543, 2E78885204AB489B00028543, 2E78885304AB489B00028543, 2E78885404AB489B00028543, 2E78885504AB489B00028543, 2E78885604AB489B00028543, 2E78885704AB489B00028543, 2E78885804AB489B00028543, 2E78885904AB489B00028543, 2E78885A04AB489B00028543, 2E78885B04AB489B00028543, 2E78885C04AB489B00028543, 2E78885D04AB489B00028543, 2E78885E04AB489B00028543, 2E78885F04AB489B00028543, 2E78886004AB489B00028543, 2E78886104AB489B00028543, 2E78886204AB489B00028543, 2E78886304AB489B00028543, 2E78886404AB489B00028543, 2E78886504AB489B00028543, 2E78886604AB489B00028543, 2E78886704AB489B00028543, 2E78886804AB489B00028543, 2E78886904AB489B00028543, 2E78886A04AB489B00028543, 2E78886B04AB489B00028543, 2E78886C04AB489B00028543, 2E78886D04AB489B00028543, 2E78886E04AB489B00028543, 2E78886F04AB489B00028543, 2E78887004AB489B00028543, 2E78887104AB489B00028543, 2E78887204AB489B00028543, 2E78887304AB489B00028543, 2E78887404AB489B00028543, 2E78887504AB489B00028543, 2E78887604AB489B00028543, 2E78887704AB489B00028543, 2E78887804AB489B00028543, 2E78887904AB489B00028543, 2E78887A04AB489B00028543, 2E78887B04AB489B00028543, 2E78887C04AB489B00028543, 2E78887D04AB489B00028543, 2E78887E04AB489B00028543, 2E78887F04AB489B00028543, 2E78888004AB489B00028543, 2E78888104AB489B00028543, 2E78888204AB489B00028543, 2E78888304AB489B00028543, 2E78888404AB489B00028543, 2E78888504AB489B00028543, 2E78888604AB489B00028543, 2E78888704AB489B00028543, 2E78888804AB489B00028543, 2E78888904AB489B00028543, 2E78888A04AB489B00028543, ); isa = PBXGroup; path = XPath; refType = 4; }; 2E7887EF04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElementPrefixResolverProxy.cpp; refType = 4; }; 2E7887F004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElementPrefixResolverProxy.hpp; refType = 4; }; 2E7887F104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FormatterStringLengthCounter.cpp; refType = 4; }; 2E7887F204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FormatterStringLengthCounter.hpp; refType = 4; }; 2E7887F304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FoundIndex.cpp; refType = 4; }; 2E7887F404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FoundIndex.hpp; refType = 4; }; 2E7887F504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = Function.cpp; refType = 4; }; 2E7887F604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = Function.hpp; refType = 4; }; 2E7887F704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionConcat.cpp; refType = 4; }; 2E7887F804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionConcat.hpp; refType = 4; }; 2E7887F904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionContains.cpp; refType = 4; }; 2E7887FA04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionContains.hpp; refType = 4; }; 2E7887FB04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionID.cpp; refType = 4; }; 2E7887FC04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionID.hpp; refType = 4; }; 2E7887FD04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionLang.cpp; refType = 4; }; 2E7887FE04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionLang.hpp; refType = 4; }; 2E7887FF04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionNamespaceURI.cpp; refType = 4; }; 2E78880004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionNamespaceURI.hpp; refType = 4; }; 2E78880104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionNormalizeSpace.cpp; refType = 4; }; 2E78880204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionNormalizeSpace.hpp; refType = 4; }; 2E78880304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionStartsWith.cpp; refType = 4; }; 2E78880404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionStartsWith.hpp; refType = 4; }; 2E78880504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionString.cpp; refType = 4; }; 2E78880604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionString.hpp; refType = 4; }; 2E78880704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionSubstring.cpp; refType = 4; }; 2E78880804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionSubstring.hpp; refType = 4; }; 2E78880904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionSubstringAfter.cpp; refType = 4; }; 2E78880A04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionSubstringAfter.hpp; refType = 4; }; 2E78880B04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionSubstringBefore.cpp; refType = 4; }; 2E78880C04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionSubstringBefore.hpp; refType = 4; }; 2E78880D04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionTranslate.cpp; refType = 4; }; 2E78880E04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionTranslate.hpp; refType = 4; }; 2E78880F04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = MutableNodeRefList.cpp; refType = 4; }; 2E78881004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = MutableNodeRefList.hpp; refType = 4; }; 2E78881104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = NameSpace.hpp; refType = 4; }; 2E78881204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = NodeRefList.cpp; refType = 4; }; 2E78881304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = NodeRefList.hpp; refType = 4; }; 2E78881404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = NodeRefListBase.cpp; refType = 4; }; 2E78881504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = NodeRefListBase.hpp; refType = 4; }; 2E78881604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ResultTreeFragBase.cpp; refType = 4; }; 2E78881704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ResultTreeFragBase.hpp; refType = 4; }; 2E78881804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanQName.cpp; refType = 4; }; 2E78881904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanQName.hpp; refType = 4; }; 2E78881A04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanQNameByReference.cpp; refType = 4; }; 2E78881B04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanQNameByReference.hpp; refType = 4; }; 2E78881C04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanQNameByValue.cpp; refType = 4; }; 2E78881D04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanQNameByValue.hpp; refType = 4; }; 2E78881E04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanQNameByValueAllocator.cpp; refType = 4; }; 2E78881F04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanQNameByValueAllocator.hpp; refType = 4; }; 2E78882004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanXPathException.cpp; refType = 4; }; 2E78882104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanXPathException.hpp; refType = 4; }; 2E78882204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XBoolean.cpp; refType = 4; }; 2E78882304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XBoolean.hpp; refType = 4; }; 2E78882404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XNodeSet.cpp; refType = 4; }; 2E78882504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XNodeSet.hpp; refType = 4; }; 2E78882604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XNodeSetAllocator.cpp; refType = 4; }; 2E78882704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XNodeSetAllocator.hpp; refType = 4; }; 2E78882804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XNodeSetBase.cpp; refType = 4; }; 2E78882904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XNodeSetBase.hpp; refType = 4; }; 2E78882A04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XNodeSetNodeProxy.cpp; refType = 4; }; 2E78882B04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XNodeSetNodeProxy.hpp; refType = 4; }; 2E78882C04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XNodeSetNodeProxyAllocator.cpp; refType = 4; }; 2E78882D04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XNodeSetNodeProxyAllocator.hpp; refType = 4; }; 2E78882E04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XNodeSetResultTreeFragProxy.cpp; refType = 4; }; 2E78882F04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XNodeSetResultTreeFragProxy.hpp; refType = 4; }; 2E78883004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XNull.cpp; refType = 4; }; 2E78883104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XNull.hpp; refType = 4; }; 2E78883204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XNumber.cpp; refType = 4; }; 2E78883304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XNumber.hpp; refType = 4; }; 2E78883404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XNumberAllocator.cpp; refType = 4; }; 2E78883504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XNumberAllocator.hpp; refType = 4; }; 2E78883604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XNumberBase.cpp; refType = 4; }; 2E78883704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XNumberBase.hpp; refType = 4; }; 2E78883804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XObject.cpp; refType = 4; }; 2E78883904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XObject.hpp; refType = 4; }; 2E78883A04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XObjectFactory.cpp; refType = 4; }; 2E78883B04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XObjectFactory.hpp; refType = 4; }; 2E78883C04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XObjectFactoryDefault.cpp; refType = 4; }; 2E78883D04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XObjectFactoryDefault.hpp; refType = 4; }; 2E78883E04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XObjectResultTreeFragProxy.cpp; refType = 4; }; 2E78883F04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XObjectResultTreeFragProxy.hpp; refType = 4; }; 2E78884004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XObjectResultTreeFragProxyBase.cpp; refType = 4; }; 2E78884104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XObjectResultTreeFragProxyBase.hpp; refType = 4; }; 2E78884204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XObjectResultTreeFragProxyText.cpp; refType = 4; }; 2E78884304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XObjectResultTreeFragProxyText.hpp; refType = 4; }; 2E78884404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XObjectTypeCallback.cpp; refType = 4; }; 2E78884504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XObjectTypeCallback.hpp; refType = 4; }; 2E78884604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPath.cpp; refType = 4; }; 2E78884704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPath.hpp; refType = 4; }; 2E78884804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathAllocator.cpp; refType = 4; }; 2E78884904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathAllocator.hpp; refType = 4; }; 2E78884A04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathConstructionContext.cpp; refType = 4; }; 2E78884B04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathConstructionContext.hpp; refType = 4; }; 2E78884C04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathConstructionContextDefault.cpp; refType = 4; }; 2E78884D04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathConstructionContextDefault.hpp; refType = 4; }; 2E78884E04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathDefinitions.hpp; refType = 4; }; 2E78884F04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathEnvSupport.cpp; refType = 4; }; 2E78885004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathEnvSupport.hpp; refType = 4; }; 2E78885104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathEnvSupportDefault.cpp; refType = 4; }; 2E78885204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathEnvSupportDefault.hpp; refType = 4; }; 2E78885304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathEvaluator.cpp; refType = 4; }; 2E78885404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathEvaluator.hpp; refType = 4; }; 2E78885504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathExecutionContext.cpp; refType = 4; }; 2E78885604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathExecutionContext.hpp; refType = 4; }; 2E78885704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathExecutionContextDefault.cpp; refType = 4; }; 2E78885804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathExecutionContextDefault.hpp; refType = 4; }; 2E78885904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathExpression.cpp; refType = 4; }; 2E78885A04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathExpression.hpp; refType = 4; }; 2E78885B04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathFactory.cpp; refType = 4; }; 2E78885C04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathFactory.hpp; refType = 4; }; 2E78885D04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathFactoryBlock.cpp; refType = 4; }; 2E78885E04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathFactoryBlock.hpp; refType = 4; }; 2E78885F04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathFactoryDefault.cpp; refType = 4; }; 2E78886004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathFactoryDefault.hpp; refType = 4; }; 2E78886104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathFunctionTable.cpp; refType = 4; }; 2E78886204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathFunctionTable.hpp; refType = 4; }; 2E78886304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathInit.cpp; refType = 4; }; 2E78886404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathInit.hpp; refType = 4; }; 2E78886504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathParserException.cpp; refType = 4; }; 2E78886604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathParserException.hpp; refType = 4; }; 2E78886704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathProcessor.cpp; refType = 4; }; 2E78886804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathProcessor.hpp; refType = 4; }; 2E78886904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathProcessorImpl.cpp; refType = 4; }; 2E78886A04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathProcessorImpl.hpp; refType = 4; }; 2E78886B04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XSpan.cpp; refType = 4; }; 2E78886C04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XSpan.hpp; refType = 4; }; 2E78886D04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XString.cpp; refType = 4; }; 2E78886E04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XString.hpp; refType = 4; }; 2E78886F04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XStringAdapter.cpp; refType = 4; }; 2E78887004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XStringAdapter.hpp; refType = 4; }; 2E78887104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XStringAdapterAllocator.cpp; refType = 4; }; 2E78887204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XStringAdapterAllocator.hpp; refType = 4; }; 2E78887304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XStringAllocator.cpp; refType = 4; }; 2E78887404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XStringAllocator.hpp; refType = 4; }; 2E78887504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XStringBase.cpp; refType = 4; }; 2E78887604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XStringBase.hpp; refType = 4; }; 2E78887704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XStringCached.cpp; refType = 4; }; 2E78887804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XStringCached.hpp; refType = 4; }; 2E78887904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XStringCachedAllocator.cpp; refType = 4; }; 2E78887A04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XStringCachedAllocator.hpp; refType = 4; }; 2E78887B04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XStringReference.cpp; refType = 4; }; 2E78887C04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XStringReference.hpp; refType = 4; }; 2E78887D04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XStringReferenceAllocator.cpp; refType = 4; }; 2E78887E04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XStringReferenceAllocator.hpp; refType = 4; }; 2E78887F04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XToken.cpp; refType = 4; }; 2E78888004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XToken.hpp; refType = 4; }; 2E78888104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XTokenNumberAdapter.cpp; refType = 4; }; 2E78888204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XTokenNumberAdapter.hpp; refType = 4; }; 2E78888304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XTokenNumberAdapterAllocator.cpp; refType = 4; }; 2E78888404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XTokenNumberAdapterAllocator.hpp; refType = 4; }; 2E78888504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XTokenStringAdapter.cpp; refType = 4; }; 2E78888604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XTokenStringAdapter.hpp; refType = 4; }; 2E78888704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XTokenStringAdapterAllocator.cpp; refType = 4; }; 2E78888804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XTokenStringAdapterAllocator.hpp; refType = 4; }; 2E78888904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XUnknown.cpp; refType = 4; }; 2E78888A04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XUnknown.hpp; refType = 4; }; 2E78888B04AB489B00028543 = { children = ( 2E78888C04AB489B00028543, 2E78888D04AB489B00028543, ); isa = PBXGroup; path = XPathCAPI; refType = 4; }; 2E78888C04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathCAPI.cpp; refType = 4; }; 2E78888D04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XPathCAPI.h; refType = 4; }; 2E78888E04AB489B00028543 = { children = ( 2E78888F04AB489B00028543, 2E78889004AB489B00028543, 2E78889104AB489B00028543, 2E78889204AB489B00028543, 2E78889304AB489B00028543, 2E78889404AB489B00028543, 2E78889504AB489B00028543, 2E78889604AB489B00028543, 2E78889704AB489B00028543, 2E78889804AB489B00028543, 2E78889904AB489B00028543, 2E78889A04AB489B00028543, 2E78889B04AB489B00028543, 2E78889C04AB489B00028543, 2E78889D04AB489B00028543, 2E78889E04AB489B00028543, 2E78889F04AB489B00028543, 2E7888A004AB489B00028543, 2E7888A104AB489B00028543, 2E7888A204AB489B00028543, 2E7888A304AB489B00028543, 2E7888A404AB489B00028543, 2E7888A504AB489B00028543, 2E7888A604AB489B00028543, 2E7888A704AB489B00028543, 2E7888A804AB489B00028543, 2E7888A904AB489B00028543, 2E7888AA04AB489B00028543, 2E7888AB04AB489B00028543, 2E7888AC04AB489B00028543, 2E7888AD04AB489B00028543, 2E7888AE04AB489B00028543, 2E7888AF04AB489B00028543, 2E7888B004AB489B00028543, 2E7888B104AB489B00028543, 2E7888B204AB489B00028543, 2E7888B304AB489B00028543, 2E7888B404AB489B00028543, 2E7888B504AB489B00028543, 2E7888B604AB489B00028543, 2E7888B704AB489B00028543, 2E7888B804AB489B00028543, 2E7888B904AB489B00028543, 2E7888BA04AB489B00028543, 2E7888BB04AB489B00028543, 2E7888BC04AB489B00028543, 2E7888BD04AB489B00028543, 2E7888BE04AB489B00028543, 2E7888BF04AB489B00028543, 2E7888C004AB489B00028543, 2E7888C104AB489B00028543, 2E7888C204AB489B00028543, 2E7888C304AB489B00028543, 2E7888C404AB489B00028543, 2E7888C504AB489B00028543, 2E7888C604AB489B00028543, 2E7888C704AB489B00028543, 2E7888C804AB489B00028543, 2E7888C904AB489B00028543, 2E7888CA04AB489B00028543, 2E7888CB04AB489B00028543, 2E7888CC04AB489B00028543, 2E7888CD04AB489B00028543, 2E7888CE04AB489B00028543, 2E7888CF04AB489B00028543, 2E7888D004AB489B00028543, 2E7888D104AB489B00028543, 2E7888D204AB489B00028543, 2E7888D304AB489B00028543, 2E7888D404AB489B00028543, 2E7888D504AB489B00028543, 2E7888D604AB489B00028543, 2E7888D704AB489B00028543, 2E7888D804AB489B00028543, 2E7888D904AB489B00028543, 2E7888DA04AB489B00028543, 2E7888DB04AB489B00028543, 2E7888DC04AB489B00028543, 2E7888DD04AB489B00028543, 2E7888DE04AB489B00028543, 2E7888DF04AB489B00028543, 2E7888E004AB489B00028543, 2E7888E104AB489B00028543, 2E7888E204AB489B00028543, 2E7888E304AB489B00028543, 2E7888E404AB489B00028543, 2E7888E504AB489B00028543, 2E7888E604AB489B00028543, 2E7888E704AB489B00028543, 2E7888E804AB489B00028543, 2E7888E904AB489B00028543, 2E7888EA04AB489B00028543, 2E7888EB04AB489B00028543, 2E7888EC04AB489B00028543, 2E7888ED04AB489B00028543, 2E7888EE04AB489B00028543, 2E7888EF04AB489B00028543, 2E7888F004AB489B00028543, 2E7888F104AB489B00028543, 2E7888F204AB489B00028543, 2E7888F304AB489B00028543, 2E7888F404AB489B00028543, 2E7888F504AB489B00028543, 2E7888F604AB489B00028543, 2E7888F704AB489B00028543, 2E7888F804AB489C00028543, 2E7888F904AB489C00028543, 2E7888FA04AB489C00028543, 2E7888FB04AB489C00028543, 2E7888FC04AB489C00028543, 2E7888FD04AB489C00028543, 2E7888FE04AB489C00028543, 2E7888FF04AB489C00028543, 2E78890004AB489C00028543, 2E78890104AB489C00028543, 2E78890204AB489C00028543, 2E78890304AB489C00028543, 2E78890404AB489C00028543, 2E78890504AB489C00028543, 2E78890604AB489C00028543, 2E78890704AB489C00028543, 2E78890804AB489C00028543, 2E78890904AB489C00028543, 2E78890A04AB489C00028543, 2E78890B04AB489C00028543, 2E78890C04AB489C00028543, 2E78890D04AB489C00028543, 2E78890E04AB489C00028543, 2E78890F04AB489C00028543, 2E78891004AB489C00028543, 2E78891104AB489C00028543, 2E78891204AB489C00028543, 2E78891304AB489C00028543, 2E78891404AB489C00028543, 2E78891504AB489C00028543, 2E78891604AB489C00028543, 2E78891704AB489C00028543, 2E78891804AB489C00028543, 2E78891904AB489C00028543, 2E78891A04AB489C00028543, 2E78891B04AB489C00028543, 2E78891C04AB489C00028543, 2E78891D04AB489C00028543, 2E78891E04AB489C00028543, 2E78891F04AB489C00028543, 2E78892004AB489C00028543, 2E78892104AB489C00028543, 2E78892204AB489C00028543, 2E78892304AB489C00028543, 2E78892404AB489C00028543, 2E78892504AB489C00028543, 2E78892604AB489C00028543, 2E78892704AB489C00028543, 2E78892804AB489C00028543, 2E78892904AB489C00028543, 2E78892A04AB489C00028543, 2E78892B04AB489C00028543, 2E78892C04AB489C00028543, 2E78892D04AB489C00028543, 2E78892E04AB489C00028543, 2E78892F04AB489C00028543, 2E78893004AB489C00028543, 2E78893104AB489C00028543, 2E78893204AB489C00028543, 2E78893304AB489C00028543, 2E78893404AB489C00028543, 2E78893504AB489C00028543, 2E78893604AB489C00028543, 2E78893704AB489C00028543, 2E78893804AB489C00028543, 2E78893904AB489C00028543, 2E78893A04AB489C00028543, 2E78893B04AB489C00028543, 2E78893C04AB489C00028543, 2E78893D04AB489C00028543, 2E78893E04AB489C00028543, 2E78893F04AB489C00028543, 2E78894004AB489C00028543, 2E78894104AB489C00028543, 2E78894204AB489C00028543, 2E78894304AB489C00028543, 2E78894404AB489C00028543, 2E78894504AB489C00028543, 2E78894604AB489C00028543, 2E78894704AB489C00028543, 2E78894804AB489C00028543, 2E78894904AB489C00028543, 2E78894A04AB489C00028543, 2E78894B04AB489C00028543, 2E78894C04AB489C00028543, 2E78894D04AB489C00028543, 2E78894E04AB489C00028543, 2E78894F04AB489C00028543, 2E78895004AB489C00028543, 2E78895104AB489C00028543, 2E78895204AB489C00028543, 2E78895304AB489C00028543, 2E78895404AB489C00028543, 2E78895504AB489C00028543, 2E78895604AB489C00028543, 2E78895704AB489C00028543, 2E78895804AB489C00028543, 2E78895904AB489C00028543, 2E78895A04AB489C00028543, 2E78895B04AB489C00028543, 2E78895C04AB489C00028543, 2E78895D04AB489C00028543, 2E78895E04AB489C00028543, ); isa = PBXGroup; path = XSLT; refType = 4; }; 2E78888F04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = AVT.cpp; refType = 4; }; 2E78889004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = AVT.hpp; refType = 4; }; 2E78889104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = AVTPart.cpp; refType = 4; }; 2E78889204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = AVTPart.hpp; refType = 4; }; 2E78889304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = AVTPartSimple.cpp; refType = 4; }; 2E78889404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = AVTPartSimple.hpp; refType = 4; }; 2E78889504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = AVTPartXPath.cpp; refType = 4; }; 2E78889604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = AVTPartXPath.hpp; refType = 4; }; 2E78889704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = Constants.cpp; refType = 4; }; 2E78889804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = Constants.hpp; refType = 4; }; 2E78889904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = CountersTable.cpp; refType = 4; }; 2E78889A04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = CountersTable.hpp; refType = 4; }; 2E78889B04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = DecimalToRoman.hpp; refType = 4; }; 2E78889C04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemApplyImport.cpp; refType = 4; }; 2E78889D04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemApplyImport.hpp; refType = 4; }; 2E78889E04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemApplyTemplates.cpp; refType = 4; }; 2E78889F04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemApplyTemplates.hpp; refType = 4; }; 2E7888A004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemAttribute.cpp; refType = 4; }; 2E7888A104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemAttribute.hpp; refType = 4; }; 2E7888A204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemAttributeSet.cpp; refType = 4; }; 2E7888A304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemAttributeSet.hpp; refType = 4; }; 2E7888A404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemCallTemplate.cpp; refType = 4; }; 2E7888A504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemCallTemplate.hpp; refType = 4; }; 2E7888A604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemChoose.cpp; refType = 4; }; 2E7888A704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemChoose.hpp; refType = 4; }; 2E7888A804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemComment.cpp; refType = 4; }; 2E7888A904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemComment.hpp; refType = 4; }; 2E7888AA04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemCopy.cpp; refType = 4; }; 2E7888AB04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemCopy.hpp; refType = 4; }; 2E7888AC04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemCopyOf.cpp; refType = 4; }; 2E7888AD04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemCopyOf.hpp; refType = 4; }; 2E7888AE04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemDecimalFormat.cpp; refType = 4; }; 2E7888AF04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemDecimalFormat.hpp; refType = 4; }; 2E7888B004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemElement.cpp; refType = 4; }; 2E7888B104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemElement.hpp; refType = 4; }; 2E7888B204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemEmpty.cpp; refType = 4; }; 2E7888B304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemEmpty.hpp; refType = 4; }; 2E7888B404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemExtensionCall.cpp; refType = 4; }; 2E7888B504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemExtensionCall.hpp; refType = 4; }; 2E7888B604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemFallback.cpp; refType = 4; }; 2E7888B704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemFallback.hpp; refType = 4; }; 2E7888B804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemForEach.cpp; refType = 4; }; 2E7888B904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemForEach.hpp; refType = 4; }; 2E7888BA04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemIf.cpp; refType = 4; }; 2E7888BB04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemIf.hpp; refType = 4; }; 2E7888BC04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemLiteralResult.cpp; refType = 4; }; 2E7888BD04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemLiteralResult.hpp; refType = 4; }; 2E7888BE04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemMessage.cpp; refType = 4; }; 2E7888BF04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemMessage.hpp; refType = 4; }; 2E7888C004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemNumber.cpp; refType = 4; }; 2E7888C104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemNumber.hpp; refType = 4; }; 2E7888C204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemOtherwise.cpp; refType = 4; }; 2E7888C304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemOtherwise.hpp; refType = 4; }; 2E7888C404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemParam.cpp; refType = 4; }; 2E7888C504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemParam.hpp; refType = 4; }; 2E7888C604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemPI.cpp; refType = 4; }; 2E7888C704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemPI.hpp; refType = 4; }; 2E7888C804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemSort.cpp; refType = 4; }; 2E7888C904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemSort.hpp; refType = 4; }; 2E7888CA04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemTemplate.cpp; refType = 4; }; 2E7888CB04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemTemplate.hpp; refType = 4; }; 2E7888CC04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemTemplateElement.cpp; refType = 4; }; 2E7888CD04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemTemplateElement.hpp; refType = 4; }; 2E7888CE04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemText.cpp; refType = 4; }; 2E7888CF04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemText.hpp; refType = 4; }; 2E7888D004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemTextLiteral.cpp; refType = 4; }; 2E7888D104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemTextLiteral.hpp; refType = 4; }; 2E7888D204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemUse.cpp; refType = 4; }; 2E7888D304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemUse.hpp; refType = 4; }; 2E7888D404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemValueOf.cpp; refType = 4; }; 2E7888D504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemValueOf.hpp; refType = 4; }; 2E7888D604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemVariable.cpp; refType = 4; }; 2E7888D704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemVariable.hpp; refType = 4; }; 2E7888D804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemWhen.cpp; refType = 4; }; 2E7888D904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemWhen.hpp; refType = 4; }; 2E7888DA04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemWithParam.cpp; refType = 4; }; 2E7888DB04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ElemWithParam.hpp; refType = 4; }; 2E7888DC04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ExtensionFunctionHandler.cpp; refType = 4; }; 2E7888DD04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ExtensionFunctionHandler.hpp; refType = 4; }; 2E7888DE04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ExtensionNSHandler.cpp; refType = 4; }; 2E7888DF04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ExtensionNSHandler.hpp; refType = 4; }; 2E7888E004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionCurrent.cpp; refType = 4; }; 2E7888E104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionCurrent.hpp; refType = 4; }; 2E7888E204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionDocument.cpp; refType = 4; }; 2E7888E304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionDocument.hpp; refType = 4; }; 2E7888E404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionElementAvailable.cpp; refType = 4; }; 2E7888E504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionElementAvailable.hpp; refType = 4; }; 2E7888E604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionFormatNumber.cpp; refType = 4; }; 2E7888E704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionFormatNumber.hpp; refType = 4; }; 2E7888E804AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionFunctionAvailable.cpp; refType = 4; }; 2E7888E904AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionFunctionAvailable.hpp; refType = 4; }; 2E7888EA04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionGenerateID.cpp; refType = 4; }; 2E7888EB04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionGenerateID.hpp; refType = 4; }; 2E7888EC04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionKey.cpp; refType = 4; }; 2E7888ED04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionKey.hpp; refType = 4; }; 2E7888EE04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionSystemProperty.cpp; refType = 4; }; 2E7888EF04AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionSystemProperty.hpp; refType = 4; }; 2E7888F004AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionUnparsedEntityURI.cpp; refType = 4; }; 2E7888F104AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = FunctionUnparsedEntityURI.hpp; refType = 4; }; 2E7888F204AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = GenerateEvent.cpp; refType = 4; }; 2E7888F304AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = GenerateEvent.hpp; refType = 4; }; 2E7888F404AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = KeyDeclaration.hpp; refType = 4; }; 2E7888F504AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = KeyTable.cpp; refType = 4; }; 2E7888F604AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = KeyTable.hpp; refType = 4; }; 2E7888F704AB489B00028543 = { fileEncoding = 30; isa = PBXFileReference; path = NamespacesHandler.cpp; refType = 4; }; 2E7888F804AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = NamespacesHandler.hpp; refType = 4; }; 2E7888F904AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = NodeSorter.cpp; refType = 4; }; 2E7888FA04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = NodeSorter.hpp; refType = 4; }; 2E7888FB04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = NodeSortKey.cpp; refType = 4; }; 2E7888FC04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = NodeSortKey.hpp; refType = 4; }; 2E7888FD04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = OutputContextStack.cpp; refType = 4; }; 2E7888FE04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = OutputContextStack.hpp; refType = 4; }; 2E7888FF04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ProblemListener.cpp; refType = 4; }; 2E78890004AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ProblemListener.hpp; refType = 4; }; 2E78890104AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ProblemListenerDefault.cpp; refType = 4; }; 2E78890204AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ProblemListenerDefault.hpp; refType = 4; }; 2E78890304AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ResultNamespacesStack.cpp; refType = 4; }; 2E78890404AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ResultNamespacesStack.hpp; refType = 4; }; 2E78890504AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ResultTreeFrag.cpp; refType = 4; }; 2E78890604AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ResultTreeFrag.hpp; refType = 4; }; 2E78890704AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ResultTreeFragAllocator.cpp; refType = 4; }; 2E78890804AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ResultTreeFragAllocator.hpp; refType = 4; }; 2E78890904AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ResultTreeFragBaseNodeRefListBaseProxy.cpp; refType = 4; }; 2E78890A04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = ResultTreeFragBaseNodeRefListBaseProxy.hpp; refType = 4; }; 2E78890B04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = SelectionEvent.cpp; refType = 4; }; 2E78890C04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = SelectionEvent.hpp; refType = 4; }; 2E78890D04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = Stylesheet.cpp; refType = 4; }; 2E78890E04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = Stylesheet.hpp; refType = 4; }; 2E78890F04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = StylesheetConstructionContext.cpp; refType = 4; }; 2E78891004AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = StylesheetConstructionContext.hpp; refType = 4; }; 2E78891104AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = StylesheetConstructionContextDefault.cpp; refType = 4; }; 2E78891204AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = StylesheetConstructionContextDefault.hpp; refType = 4; }; 2E78891304AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = StylesheetExecutionContext.cpp; refType = 4; }; 2E78891404AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = StylesheetExecutionContext.hpp; refType = 4; }; 2E78891504AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = StylesheetExecutionContextDefault.cpp; refType = 4; }; 2E78891604AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = StylesheetExecutionContextDefault.hpp; refType = 4; }; 2E78891704AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = StylesheetHandler.cpp; refType = 4; }; 2E78891804AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = StylesheetHandler.hpp; refType = 4; }; 2E78891904AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = StylesheetRoot.cpp; refType = 4; }; 2E78891A04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = StylesheetRoot.hpp; refType = 4; }; 2E78891B04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = TopLevelArg.cpp; refType = 4; }; 2E78891C04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = TopLevelArg.hpp; refType = 4; }; 2E78891D04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = TraceListener.cpp; refType = 4; }; 2E78891E04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = TraceListener.hpp; refType = 4; }; 2E78891F04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = TraceListenerDefault.cpp; refType = 4; }; 2E78892004AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = TraceListenerDefault.hpp; refType = 4; }; 2E78892104AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = TracerEvent.cpp; refType = 4; }; 2E78892204AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = TracerEvent.hpp; refType = 4; }; 2E78892304AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = VariablesStack.cpp; refType = 4; }; 2E78892404AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = VariablesStack.hpp; refType = 4; }; 2E78892504AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanAVTAllocator.cpp; refType = 4; }; 2E78892604AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanAVTAllocator.hpp; refType = 4; }; 2E78892704AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanAVTPartSimpleAllocator.cpp; refType = 4; }; 2E78892804AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanAVTPartSimpleAllocator.hpp; refType = 4; }; 2E78892904AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanAVTPartXPathAllocator.cpp; refType = 4; }; 2E78892A04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanAVTPartXPathAllocator.hpp; refType = 4; }; 2E78892B04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemApplyTemplatesAllocator.cpp; refType = 4; }; 2E78892C04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemApplyTemplatesAllocator.hpp; refType = 4; }; 2E78892D04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemAttributeAllocator.cpp; refType = 4; }; 2E78892E04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemAttributeAllocator.hpp; refType = 4; }; 2E78892F04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemAttributeSetAllocator.cpp; refType = 4; }; 2E78893004AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemAttributeSetAllocator.hpp; refType = 4; }; 2E78893104AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemCallTemplateAllocator.cpp; refType = 4; }; 2E78893204AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemCallTemplateAllocator.hpp; refType = 4; }; 2E78893304AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemElementAllocator.cpp; refType = 4; }; 2E78893404AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemElementAllocator.hpp; refType = 4; }; 2E78893504AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemEmptyAllocator.cpp; refType = 4; }; 2E78893604AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemEmptyAllocator.hpp; refType = 4; }; 2E78893704AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemLiteralResultAllocator.cpp; refType = 4; }; 2E78893804AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemLiteralResultAllocator.hpp; refType = 4; }; 2E78893904AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemTemplateAllocator.cpp; refType = 4; }; 2E78893A04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemTemplateAllocator.hpp; refType = 4; }; 2E78893B04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemTextAllocator.cpp; refType = 4; }; 2E78893C04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemTextAllocator.hpp; refType = 4; }; 2E78893D04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemTextLiteralAllocator.cpp; refType = 4; }; 2E78893E04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemTextLiteralAllocator.hpp; refType = 4; }; 2E78893F04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemValueOfAllocator.cpp; refType = 4; }; 2E78894004AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemValueOfAllocator.hpp; refType = 4; }; 2E78894104AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemVariableAllocator.cpp; refType = 4; }; 2E78894204AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanElemVariableAllocator.hpp; refType = 4; }; 2E78894304AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanNumberingResourceBundle.cpp; refType = 4; }; 2E78894404AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanNumberingResourceBundle.hpp; refType = 4; }; 2E78894504AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeDocumentAllocator.cpp; refType = 4; }; 2E78894604AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeDocumentAllocator.hpp; refType = 4; }; 2E78894704AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeDocumentFragmentAllocator.cpp; refType = 4; }; 2E78894804AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanSourceTreeDocumentFragmentAllocator.hpp; refType = 4; }; 2E78894904AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XalanTemplate.cpp; refType = 4; }; 2E78894A04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XResultTreeFrag.cpp; refType = 4; }; 2E78894B04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XResultTreeFrag.hpp; refType = 4; }; 2E78894C04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XResultTreeFragAllocator.cpp; refType = 4; }; 2E78894D04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XResultTreeFragAllocator.hpp; refType = 4; }; 2E78894E04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XSLTDefinitions.hpp; refType = 4; }; 2E78894F04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XSLTEngineImpl.cpp; refType = 4; }; 2E78895004AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XSLTEngineImpl.hpp; refType = 4; }; 2E78895104AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XSLTInit.cpp; refType = 4; }; 2E78895204AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XSLTInit.hpp; refType = 4; }; 2E78895304AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XSLTInputSource.cpp; refType = 4; }; 2E78895404AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XSLTInputSource.hpp; refType = 4; }; 2E78895504AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XSLTProcessor.cpp; refType = 4; }; 2E78895604AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XSLTProcessor.hpp; refType = 4; }; 2E78895704AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XSLTProcessorEnvSupport.cpp; refType = 4; }; 2E78895804AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XSLTProcessorEnvSupport.hpp; refType = 4; }; 2E78895904AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XSLTProcessorEnvSupportDefault.cpp; refType = 4; }; 2E78895A04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XSLTProcessorEnvSupportDefault.hpp; refType = 4; }; 2E78895B04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XSLTProcessorException.cpp; refType = 4; }; 2E78895C04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XSLTProcessorException.hpp; refType = 4; }; 2E78895D04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XSLTResultTarget.cpp; refType = 4; }; 2E78895E04AB489C00028543 = { fileEncoding = 30; isa = PBXFileReference; path = XSLTResultTarget.hpp; refType = 4; }; 2E78895F04AB489C00028543 = { fileRef = 2E78864504AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78896004AB489C00028543 = { fileRef = 2E78864604AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78896104AB489C00028543 = { fileRef = 2E78864704AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78896204AB489C00028543 = { fileRef = 2E78864804AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78896304AB489C00028543 = { fileRef = 2E78864904AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78896404AB489C00028543 = { fileRef = 2E78864A04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78896504AB489C00028543 = { fileRef = 2E78864B04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78896604AB489C00028543 = { fileRef = 2E78864C04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78896704AB489C00028543 = { fileRef = 2E78864D04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78896804AB489C00028543 = { fileRef = 2E78864E04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78896904AB489C00028543 = { fileRef = 2E78864F04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78896A04AB489C00028543 = { fileRef = 2E78865004AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78896B04AB489C00028543 = { fileRef = 2E78865104AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78896C04AB489C00028543 = { fileRef = 2E78865204AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78896D04AB489C00028543 = { fileRef = 2E78865304AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78897D04AB489C00028543 = { fileRef = 2E78866504AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78897E04AB489C00028543 = { fileRef = 2E78866604AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78897F04AB489C00028543 = { fileRef = 2E78866704AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78898004AB489C00028543 = { fileRef = 2E78866804AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78898104AB489C00028543 = { fileRef = 2E78866904AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78898204AB489C00028543 = { fileRef = 2E78866A04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78898304AB489C00028543 = { fileRef = 2E78866B04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78898404AB489C00028543 = { fileRef = 2E78866C04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78898504AB489C00028543 = { fileRef = 2E78866D04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78898604AB489C00028543 = { fileRef = 2E78866E04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78898704AB489C00028543 = { fileRef = 2E78866F04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78898804AB489C00028543 = { fileRef = 2E78867004AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78898904AB489C00028543 = { fileRef = 2E78867104AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78898A04AB489C00028543 = { fileRef = 2E78867204AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78898B04AB489C00028543 = { fileRef = 2E78867304AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78898C04AB489C00028543 = { fileRef = 2E78867404AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78898D04AB489C00028543 = { fileRef = 2E78867504AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78898E04AB489C00028543 = { fileRef = 2E78867604AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78898F04AB489C00028543 = { fileRef = 2E78867704AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78899004AB489C00028543 = { fileRef = 2E78867804AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78899104AB489C00028543 = { fileRef = 2E78867904AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78899204AB489C00028543 = { fileRef = 2E78867A04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78899304AB489C00028543 = { fileRef = 2E78867B04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78899404AB489C00028543 = { fileRef = 2E78867C04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78899504AB489C00028543 = { fileRef = 2E78867D04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78899604AB489C00028543 = { fileRef = 2E78867E04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78899704AB489C00028543 = { fileRef = 2E78867F04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78899804AB489C00028543 = { fileRef = 2E78868004AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78899904AB489C00028543 = { fileRef = 2E78868104AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78899A04AB489C00028543 = { fileRef = 2E78868204AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78899B04AB489C00028543 = { fileRef = 2E78868304AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78899C04AB489C00028543 = { fileRef = 2E78868404AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78899D04AB489C00028543 = { fileRef = 2E78868504AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78899E04AB489C00028543 = { fileRef = 2E78868604AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E78899F04AB489C00028543 = { fileRef = 2E78868704AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E7889A004AB489C00028543 = { fileRef = 2E78868804AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E7889A104AB489C00028543 = { fileRef = 2E78868904AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E7889A204AB489C00028543 = { fileRef = 2E78868A04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E7889A304AB489C00028543 = { fileRef = 2E78868B04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E7889A404AB489C00028543 = { fileRef = 2E78868C04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E7889A504AB489C00028543 = { fileRef = 2E78868D04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E7889A604AB489C00028543 = { fileRef = 2E78868E04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E7889A704AB489C00028543 = { fileRef = 2E78868F04AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E7889A804AB489C00028543 = { fileRef = 2E78869004AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E7889A904AB489C00028543 = { fileRef = 2E78869104AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E7889AA04AB489C00028543 = { fileRef = 2E78869204AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E7889AB04AB489C00028543 = { fileRef = 2E78869304AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E7889AC04AB489C00028543 = { fileRef = 2E78869404AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E7889AD04AB489C00028543 = { fileRef = 2E78869504AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E7889AE04AB489C00028543 = { fileRef = 2E78869604AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E7889AF04AB489C00028543 = { fileRef = 2E78869704AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E7889B004AB489C00028543 = { fileRef = 2E78869804AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E7889B104AB489C00028543 = { fileRef = 2E78869904AB489A00028543; isa = PBXBuildFile; settings = { }; }; 2E7889B204AB489C00028543 = { fileRef = 2E78869A04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889B304AB489C00028543 = { fileRef = 2E78869B04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889B404AB489C00028543 = { fileRef = 2E78869C04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889B504AB489C00028543 = { fileRef = 2E78869D04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889B604AB489C00028543 = { fileRef = 2E78869E04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889B704AB489C00028543 = { fileRef = 2E78869F04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889B804AB489C00028543 = { fileRef = 2E7886A004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889B904AB489C00028543 = { fileRef = 2E7886A104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889BA04AB489C00028543 = { fileRef = 2E7886A204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889BB04AB489C00028543 = { fileRef = 2E7886A304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889BC04AB489C00028543 = { fileRef = 2E7886A404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889BD04AB489C00028543 = { fileRef = 2E7886A504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889BE04AB489C00028543 = { fileRef = 2E7886A604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889BF04AB489C00028543 = { fileRef = 2E7886A704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889C004AB489C00028543 = { fileRef = 2E7886A804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889C104AB489C00028543 = { fileRef = 2E7886A904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889C204AB489C00028543 = { fileRef = 2E7886AA04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889C304AB489C00028543 = { fileRef = 2E7886AB04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889C404AB489C00028543 = { fileRef = 2E7886AC04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889C504AB489C00028543 = { fileRef = 2E7886AD04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889C604AB489C00028543 = { fileRef = 2E7886AE04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889C704AB489C00028543 = { fileRef = 2E7886AF04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889C804AB489C00028543 = { fileRef = 2E7886B004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889C904AB489C00028543 = { fileRef = 2E7886B104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889CA04AB489C00028543 = { fileRef = 2E7886B204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889CB04AB489C00028543 = { fileRef = 2E7886B304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889CC04AB489C00028543 = { fileRef = 2E7886B404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889CD04AB489C00028543 = { fileRef = 2E7886B504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889CE04AB489C00028543 = { fileRef = 2E7886B604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889CF04AB489C00028543 = { fileRef = 2E7886B704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889D004AB489C00028543 = { fileRef = 2E7886B804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889D104AB489C00028543 = { fileRef = 2E7886B904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889D204AB489C00028543 = { fileRef = 2E7886BA04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889D304AB489C00028543 = { fileRef = 2E7886BB04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889D404AB489C00028543 = { fileRef = 2E7886BC04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889D504AB489C00028543 = { fileRef = 2E7886BD04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889D604AB489C00028543 = { fileRef = 2E7886BE04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889D704AB489C00028543 = { fileRef = 2E7886BF04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889D804AB489C00028543 = { fileRef = 2E7886C104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889D904AB489C00028543 = { fileRef = 2E7886C204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889DA04AB489C00028543 = { fileRef = 2E7886C304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889DB04AB489C00028543 = { fileRef = 2E7886C404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889DC04AB489C00028543 = { fileRef = 2E7886C504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889DD04AB489C00028543 = { fileRef = 2E7886C604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889DE04AB489C00028543 = { fileRef = 2E7886C704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889DF04AB489C00028543 = { fileRef = 2E7886C804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889E004AB489C00028543 = { fileRef = 2E7886C904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889E104AB489C00028543 = { fileRef = 2E7886CA04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889E204AB489C00028543 = { fileRef = 2E7886CB04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889E304AB489C00028543 = { fileRef = 2E7886CC04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889E404AB489C00028543 = { fileRef = 2E7886CD04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889E504AB489C00028543 = { fileRef = 2E7886CE04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889E604AB489C00028543 = { fileRef = 2E7886CF04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889E704AB489C00028543 = { fileRef = 2E7886D004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889E804AB489C00028543 = { fileRef = 2E7886D104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889E904AB489C00028543 = { fileRef = 2E7886D204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889EA04AB489C00028543 = { fileRef = 2E7886D304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889EB04AB489C00028543 = { fileRef = 2E7886D404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889EC04AB489C00028543 = { fileRef = 2E7886D504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889ED04AB489C00028543 = { fileRef = 2E7886D604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889EE04AB489C00028543 = { fileRef = 2E7886D704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889EF04AB489C00028543 = { fileRef = 2E7886D804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889F004AB489C00028543 = { fileRef = 2E7886D904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889F104AB489C00028543 = { fileRef = 2E7886DA04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889F204AB489C00028543 = { fileRef = 2E7886DB04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889F304AB489C00028543 = { fileRef = 2E7886DC04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889F404AB489C00028543 = { fileRef = 2E7886DD04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889F504AB489C00028543 = { fileRef = 2E7886DE04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889F604AB489C00028543 = { fileRef = 2E7886DF04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889F704AB489C00028543 = { fileRef = 2E7886E004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889F804AB489C00028543 = { fileRef = 2E7886E104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889F904AB489C00028543 = { fileRef = 2E7886E204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889FA04AB489C00028543 = { fileRef = 2E7886E304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889FB04AB489C00028543 = { fileRef = 2E7886E404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889FC04AB489C00028543 = { fileRef = 2E7886E504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889FD04AB489C00028543 = { fileRef = 2E7886E604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889FE04AB489C00028543 = { fileRef = 2E7886E704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E7889FF04AB489C00028543 = { fileRef = 2E7886E804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A0004AB489C00028543 = { fileRef = 2E7886E904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A0104AB489C00028543 = { fileRef = 2E7886EA04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A0204AB489C00028543 = { fileRef = 2E7886EB04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A0304AB489C00028543 = { fileRef = 2E7886EC04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A0404AB489C00028543 = { fileRef = 2E7886ED04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A0504AB489C00028543 = { fileRef = 2E7886EE04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A0604AB489C00028543 = { fileRef = 2E7886EF04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A0704AB489C00028543 = { fileRef = 2E7886F104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A0804AB489C00028543 = { fileRef = 2E7886F204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A0904AB489C00028543 = { fileRef = 2E7886F304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A0A04AB489C00028543 = { fileRef = 2E7886F404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A0B04AB489C00028543 = { fileRef = 2E7886F504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A0C04AB489C00028543 = { fileRef = 2E7886F604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A0D04AB489C00028543 = { fileRef = 2E7886F704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A0E04AB489C00028543 = { fileRef = 2E7886F804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A0F04AB489C00028543 = { fileRef = 2E7886F904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A1004AB489C00028543 = { fileRef = 2E7886FA04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A1104AB489C00028543 = { fileRef = 2E7886FB04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A1204AB489C00028543 = { fileRef = 2E7886FC04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A1304AB489C00028543 = { fileRef = 2E7886FD04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A1404AB489C00028543 = { fileRef = 2E7886FF04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A1504AB489C00028543 = { fileRef = 2E78870004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A1604AB489C00028543 = { fileRef = 2E78870104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A1704AB489C00028543 = { fileRef = 2E78870204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A1804AB489C00028543 = { fileRef = 2E78870304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A1904AB489C00028543 = { fileRef = 2E78870404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A1A04AB489C00028543 = { fileRef = 2E78870504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A1B04AB489C00028543 = { fileRef = 2E78870604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A1C04AB489C00028543 = { fileRef = 2E78870704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A1D04AB489C00028543 = { fileRef = 2E78870804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A1E04AB489C00028543 = { fileRef = 2E78870904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A1F04AB489C00028543 = { fileRef = 2E78870A04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A2004AB489C00028543 = { fileRef = 2E78870B04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A2104AB489C00028543 = { fileRef = 2E78870C04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A2204AB489C00028543 = { fileRef = 2E78870D04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A2304AB489C00028543 = { fileRef = 2E78870F04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A2404AB489C00028543 = { fileRef = 2E78871004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A2504AB489C00028543 = { fileRef = 2E78871104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A2604AB489C00028543 = { fileRef = 2E78871204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A2704AB489C00028543 = { fileRef = 2E78871304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A2804AB489C00028543 = { fileRef = 2E78871404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A2904AB489C00028543 = { fileRef = 2E78871504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A2A04AB489C00028543 = { fileRef = 2E78871604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A2B04AB489C00028543 = { fileRef = 2E78871704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A2C04AB489C00028543 = { fileRef = 2E78871804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A2D04AB489C00028543 = { fileRef = 2E78871904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A2E04AB489C00028543 = { fileRef = 2E78871A04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A2F04AB489C00028543 = { fileRef = 2E78871B04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A3004AB489C00028543 = { fileRef = 2E78871C04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A3104AB489C00028543 = { fileRef = 2E78871D04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A3204AB489C00028543 = { fileRef = 2E78871E04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A3304AB489C00028543 = { fileRef = 2E78871F04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A3404AB489C00028543 = { fileRef = 2E78872004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A3504AB489C00028543 = { fileRef = 2E78872104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A3604AB489C00028543 = { fileRef = 2E78872204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A3704AB489C00028543 = { fileRef = 2E78872304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A3804AB489C00028543 = { fileRef = 2E78872404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A3904AB489C00028543 = { fileRef = 2E78872504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A3A04AB489C00028543 = { fileRef = 2E78872604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A3B04AB489C00028543 = { fileRef = 2E78872704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A3C04AB489C00028543 = { fileRef = 2E78872804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A3D04AB489C00028543 = { fileRef = 2E78872904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A3E04AB489C00028543 = { fileRef = 2E78872A04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A3F04AB489C00028543 = { fileRef = 2E78872B04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A4004AB489C00028543 = { fileRef = 2E78872C04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A4104AB489C00028543 = { fileRef = 2E78872D04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A4204AB489C00028543 = { fileRef = 2E78872E04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A4304AB489C00028543 = { fileRef = 2E78872F04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A4404AB489C00028543 = { fileRef = 2E78873004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A4504AB489C00028543 = { fileRef = 2E78873104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A4604AB489C00028543 = { fileRef = 2E78873204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A4704AB489C00028543 = { fileRef = 2E78873304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A4804AB489C00028543 = { fileRef = 2E78873404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A4904AB489C00028543 = { fileRef = 2E78873504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A4A04AB489C00028543 = { fileRef = 2E78873604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A4B04AB489C00028543 = { fileRef = 2E78873704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A4C04AB489C00028543 = { fileRef = 2E78873804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A4D04AB489C00028543 = { fileRef = 2E78873904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A4E04AB489C00028543 = { fileRef = 2E78873A04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A4F04AB489C00028543 = { fileRef = 2E78873B04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A5004AB489C00028543 = { fileRef = 2E78873C04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A5104AB489C00028543 = { fileRef = 2E78873D04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A5204AB489C00028543 = { fileRef = 2E78873E04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A5304AB489C00028543 = { fileRef = 2E78873F04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A5404AB489C00028543 = { fileRef = 2E78874004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A5504AB489C00028543 = { fileRef = 2E78874104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A5604AB489C00028543 = { fileRef = 2E78874204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A5704AB489C00028543 = { fileRef = 2E78874304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A5804AB489C00028543 = { fileRef = 2E78874404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A5904AB489C00028543 = { fileRef = 2E78874504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A5A04AB489C00028543 = { fileRef = 2E78874604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A5B04AB489C00028543 = { fileRef = 2E78874704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A5C04AB489C00028543 = { fileRef = 2E78874804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A5D04AB489C00028543 = { fileRef = 2E78874904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A5E04AB489C00028543 = { fileRef = 2E78874B04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A5F04AB489C00028543 = { fileRef = 2E78874C04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A6004AB489C00028543 = { fileRef = 2E78874D04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A6104AB489C00028543 = { fileRef = 2E78874E04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A6204AB489C00028543 = { fileRef = 2E78874F04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A6304AB489C00028543 = { fileRef = 2E78875004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A6404AB489C00028543 = { fileRef = 2E78875104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A6504AB489C00028543 = { fileRef = 2E78875204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A6604AB489C00028543 = { fileRef = 2E78875304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A6704AB489C00028543 = { fileRef = 2E78875404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A6804AB489C00028543 = { fileRef = 2E78875504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A6904AB489C00028543 = { fileRef = 2E78875604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A6A04AB489C00028543 = { fileRef = 2E78875704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A6B04AB489C00028543 = { fileRef = 2E78875804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A6C04AB489C00028543 = { fileRef = 2E78875904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A6D04AB489C00028543 = { fileRef = 2E78875A04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A6E04AB489C00028543 = { fileRef = 2E78875B04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A6F04AB489C00028543 = { fileRef = 2E78875C04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A7004AB489C00028543 = { fileRef = 2E78875D04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A7104AB489C00028543 = { fileRef = 2E78875E04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A7204AB489C00028543 = { fileRef = 2E78875F04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A7304AB489C00028543 = { fileRef = 2E78876004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A7404AB489C00028543 = { fileRef = 2E78876104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A7504AB489C00028543 = { fileRef = 2E78876204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A7604AB489C00028543 = { fileRef = 2E78876304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A7704AB489C00028543 = { fileRef = 2E78876504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A7804AB489C00028543 = { fileRef = 2E78876604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A7904AB489C00028543 = { fileRef = 2E78876704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A7A04AB489C00028543 = { fileRef = 2E78876804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A7B04AB489C00028543 = { fileRef = 2E78876904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A7C04AB489C00028543 = { fileRef = 2E78876A04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A7D04AB489C00028543 = { fileRef = 2E78876B04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A7E04AB489C00028543 = { fileRef = 2E78876C04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A7F04AB489C00028543 = { fileRef = 2E78876D04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A8004AB489C00028543 = { fileRef = 2E78876E04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A8104AB489C00028543 = { fileRef = 2E78876F04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A8204AB489C00028543 = { fileRef = 2E78877004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A8304AB489C00028543 = { fileRef = 2E78877104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A8404AB489C00028543 = { fileRef = 2E78877204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A8504AB489C00028543 = { fileRef = 2E78877304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A8604AB489C00028543 = { fileRef = 2E78877404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A8704AB489C00028543 = { fileRef = 2E78877504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A8804AB489C00028543 = { fileRef = 2E78877604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A8904AB489C00028543 = { fileRef = 2E78877704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A8A04AB489C00028543 = { fileRef = 2E78877804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A8B04AB489C00028543 = { fileRef = 2E78877904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A8C04AB489C00028543 = { fileRef = 2E78877A04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A8D04AB489C00028543 = { fileRef = 2E78877B04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A8E04AB489C00028543 = { fileRef = 2E78877C04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A8F04AB489C00028543 = { fileRef = 2E78877D04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A9004AB489C00028543 = { fileRef = 2E78877E04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A9104AB489C00028543 = { fileRef = 2E78877F04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A9204AB489C00028543 = { fileRef = 2E78878004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A9304AB489C00028543 = { fileRef = 2E78878104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A9404AB489C00028543 = { fileRef = 2E78878204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A9504AB489C00028543 = { fileRef = 2E78878304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A9604AB489C00028543 = { fileRef = 2E78878404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A9704AB489C00028543 = { fileRef = 2E78878504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A9804AB489C00028543 = { fileRef = 2E78878604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A9904AB489C00028543 = { fileRef = 2E78878704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A9A04AB489C00028543 = { fileRef = 2E78878804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A9B04AB489C00028543 = { fileRef = 2E78878904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A9C04AB489C00028543 = { fileRef = 2E78878A04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A9D04AB489C00028543 = { fileRef = 2E78878B04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A9E04AB489C00028543 = { fileRef = 2E78878C04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788A9F04AB489C00028543 = { fileRef = 2E78878D04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AA004AB489C00028543 = { fileRef = 2E78878E04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AA104AB489C00028543 = { fileRef = 2E78878F04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AA204AB489C00028543 = { fileRef = 2E78879004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AA304AB489C00028543 = { fileRef = 2E78879104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AA404AB489C00028543 = { fileRef = 2E78879204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AA504AB489C00028543 = { fileRef = 2E78879304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AA604AB489C00028543 = { fileRef = 2E78879404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AA704AB489C00028543 = { fileRef = 2E78879504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AA804AB489C00028543 = { fileRef = 2E78879604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AA904AB489C00028543 = { fileRef = 2E78879704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AAA04AB489C00028543 = { fileRef = 2E78879804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AAB04AB489C00028543 = { fileRef = 2E78879904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AAC04AB489C00028543 = { fileRef = 2E78879A04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AAD04AB489C00028543 = { fileRef = 2E78879B04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AAE04AB489C00028543 = { fileRef = 2E78879C04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AAF04AB489C00028543 = { fileRef = 2E78879D04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AB004AB489C00028543 = { fileRef = 2E78879E04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AB104AB489C00028543 = { fileRef = 2E78879F04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AB204AB489C00028543 = { fileRef = 2E7887A004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AB304AB489C00028543 = { fileRef = 2E7887A104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AB404AB489C00028543 = { fileRef = 2E7887A204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AB504AB489C00028543 = { fileRef = 2E7887A304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AB604AB489C00028543 = { fileRef = 2E7887A404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AB704AB489C00028543 = { fileRef = 2E7887A504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AB804AB489C00028543 = { fileRef = 2E7887A604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AB904AB489C00028543 = { fileRef = 2E7887A704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788ABA04AB489C00028543 = { fileRef = 2E7887A804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788ABB04AB489C00028543 = { fileRef = 2E7887A904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788ABC04AB489C00028543 = { fileRef = 2E7887AA04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788ABD04AB489C00028543 = { fileRef = 2E7887AB04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788ABE04AB489C00028543 = { fileRef = 2E7887AC04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788ABF04AB489C00028543 = { fileRef = 2E7887AD04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AC004AB489C00028543 = { fileRef = 2E7887AE04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AC104AB489C00028543 = { fileRef = 2E7887AF04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AC204AB489C00028543 = { fileRef = 2E7887B004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AC304AB489C00028543 = { fileRef = 2E7887B104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AC404AB489C00028543 = { fileRef = 2E7887B204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AC504AB489C00028543 = { fileRef = 2E7887B304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AC604AB489C00028543 = { fileRef = 2E7887B404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AC704AB489C00028543 = { fileRef = 2E7887B504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AC804AB489C00028543 = { fileRef = 2E7887B604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AC904AB489C00028543 = { fileRef = 2E7887B704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788ACA04AB489C00028543 = { fileRef = 2E7887B804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788ACB04AB489C00028543 = { fileRef = 2E7887B904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788ACC04AB489C00028543 = { fileRef = 2E7887BA04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788ACD04AB489C00028543 = { fileRef = 2E7887BB04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788ACE04AB489C00028543 = { fileRef = 2E7887BC04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788ACF04AB489C00028543 = { fileRef = 2E7887BD04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AD004AB489C00028543 = { fileRef = 2E7887BE04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AD104AB489C00028543 = { fileRef = 2E7887BF04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AD204AB489C00028543 = { fileRef = 2E7887C004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AD304AB489C00028543 = { fileRef = 2E7887C104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AD404AB489C00028543 = { fileRef = 2E7887C204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AD504AB489C00028543 = { fileRef = 2E7887C304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AD604AB489C00028543 = { fileRef = 2E7887C404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AD704AB489C00028543 = { fileRef = 2E7887C504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AD804AB489C00028543 = { fileRef = 2E7887C604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AD904AB489C00028543 = { fileRef = 2E7887C704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788ADA04AB489C00028543 = { fileRef = 2E7887C804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788ADB04AB489C00028543 = { fileRef = 2E7887C904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788ADC04AB489C00028543 = { fileRef = 2E7887CA04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788ADD04AB489C00028543 = { fileRef = 2E7887CB04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788ADE04AB489C00028543 = { fileRef = 2E7887CC04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788ADF04AB489C00028543 = { fileRef = 2E7887CD04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AE004AB489C00028543 = { fileRef = 2E7887CE04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AE104AB489C00028543 = { fileRef = 2E7887CF04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AE204AB489C00028543 = { fileRef = 2E7887D004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AE304AB489C00028543 = { fileRef = 2E7887D104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AE404AB489C00028543 = { fileRef = 2E7887D204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AE504AB489C00028543 = { fileRef = 2E7887D304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AE604AB489C00028543 = { fileRef = 2E7887D404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AE704AB489C00028543 = { fileRef = 2E7887D504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AE804AB489C00028543 = { fileRef = 2E7887D604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AE904AB489C00028543 = { fileRef = 2E7887D704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AEA04AB489C00028543 = { fileRef = 2E7887D904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AEB04AB489C00028543 = { fileRef = 2E7887DA04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AEC04AB489C00028543 = { fileRef = 2E7887DB04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AED04AB489C00028543 = { fileRef = 2E7887DC04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AEE04AB489C00028543 = { fileRef = 2E7887DD04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AEF04AB489C00028543 = { fileRef = 2E7887DE04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AF004AB489C00028543 = { fileRef = 2E7887DF04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AF104AB489C00028543 = { fileRef = 2E7887E004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AF204AB489C00028543 = { fileRef = 2E7887E104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AF304AB489C00028543 = { fileRef = 2E7887E204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AF404AB489C00028543 = { fileRef = 2E7887E304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AF504AB489C00028543 = { fileRef = 2E7887E404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AF604AB489C00028543 = { fileRef = 2E7887E504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AF704AB489C00028543 = { fileRef = 2E7887E604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AF804AB489C00028543 = { fileRef = 2E7887E704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AF904AB489C00028543 = { fileRef = 2E7887E804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AFA04AB489C00028543 = { fileRef = 2E7887E904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AFB04AB489C00028543 = { fileRef = 2E7887EA04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AFC04AB489C00028543 = { fileRef = 2E7887EB04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AFD04AB489C00028543 = { fileRef = 2E7887EC04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AFE04AB489C00028543 = { fileRef = 2E7887ED04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788AFF04AB489C00028543 = { fileRef = 2E7887EF04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B0004AB489C00028543 = { fileRef = 2E7887F004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B0104AB489C00028543 = { fileRef = 2E7887F104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B0204AB489C00028543 = { fileRef = 2E7887F204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B0304AB489C00028543 = { fileRef = 2E7887F304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B0404AB489C00028543 = { fileRef = 2E7887F404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B0504AB489C00028543 = { fileRef = 2E7887F504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B0604AB489C00028543 = { fileRef = 2E7887F604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B0704AB489C00028543 = { fileRef = 2E7887F704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B0804AB489C00028543 = { fileRef = 2E7887F804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B0904AB489C00028543 = { fileRef = 2E7887F904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B0A04AB489C00028543 = { fileRef = 2E7887FA04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B0B04AB489C00028543 = { fileRef = 2E7887FB04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B0C04AB489C00028543 = { fileRef = 2E7887FC04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B0D04AB489C00028543 = { fileRef = 2E7887FD04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B0E04AB489C00028543 = { fileRef = 2E7887FE04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B0F04AB489C00028543 = { fileRef = 2E7887FF04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B1004AB489C00028543 = { fileRef = 2E78880004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B1104AB489C00028543 = { fileRef = 2E78880104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B1204AB489C00028543 = { fileRef = 2E78880204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B1304AB489C00028543 = { fileRef = 2E78880304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B1404AB489C00028543 = { fileRef = 2E78880404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B1504AB489C00028543 = { fileRef = 2E78880504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B1604AB489C00028543 = { fileRef = 2E78880604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B1704AB489C00028543 = { fileRef = 2E78880704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B1804AB489C00028543 = { fileRef = 2E78880804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B1904AB489C00028543 = { fileRef = 2E78880904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B1A04AB489C00028543 = { fileRef = 2E78880A04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B1B04AB489C00028543 = { fileRef = 2E78880B04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B1C04AB489C00028543 = { fileRef = 2E78880C04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B1D04AB489C00028543 = { fileRef = 2E78880D04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B1E04AB489C00028543 = { fileRef = 2E78880E04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B1F04AB489C00028543 = { fileRef = 2E78880F04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B2004AB489C00028543 = { fileRef = 2E78881004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B2104AB489C00028543 = { fileRef = 2E78881104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B2204AB489C00028543 = { fileRef = 2E78881204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B2304AB489C00028543 = { fileRef = 2E78881304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B2404AB489C00028543 = { fileRef = 2E78881404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B2504AB489C00028543 = { fileRef = 2E78881504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B2604AB489C00028543 = { fileRef = 2E78881604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B2704AB489C00028543 = { fileRef = 2E78881704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B2804AB489C00028543 = { fileRef = 2E78881804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B2904AB489C00028543 = { fileRef = 2E78881904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B2A04AB489C00028543 = { fileRef = 2E78881A04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B2B04AB489C00028543 = { fileRef = 2E78881B04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B2C04AB489C00028543 = { fileRef = 2E78881C04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B2D04AB489C00028543 = { fileRef = 2E78881D04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B2E04AB489C00028543 = { fileRef = 2E78881E04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B2F04AB489C00028543 = { fileRef = 2E78881F04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B3004AB489C00028543 = { fileRef = 2E78882004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B3104AB489C00028543 = { fileRef = 2E78882104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B3204AB489C00028543 = { fileRef = 2E78882204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B3304AB489C00028543 = { fileRef = 2E78882304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B3404AB489C00028543 = { fileRef = 2E78882404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B3504AB489C00028543 = { fileRef = 2E78882504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B3604AB489C00028543 = { fileRef = 2E78882604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B3704AB489C00028543 = { fileRef = 2E78882704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B3804AB489C00028543 = { fileRef = 2E78882804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B3904AB489C00028543 = { fileRef = 2E78882904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B3A04AB489C00028543 = { fileRef = 2E78882A04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B3B04AB489C00028543 = { fileRef = 2E78882B04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B3C04AB489C00028543 = { fileRef = 2E78882C04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B3D04AB489C00028543 = { fileRef = 2E78882D04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B3E04AB489C00028543 = { fileRef = 2E78882E04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B3F04AB489C00028543 = { fileRef = 2E78882F04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B4004AB489C00028543 = { fileRef = 2E78883004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B4104AB489C00028543 = { fileRef = 2E78883104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B4204AB489C00028543 = { fileRef = 2E78883204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B4304AB489C00028543 = { fileRef = 2E78883304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B4404AB489C00028543 = { fileRef = 2E78883404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B4504AB489C00028543 = { fileRef = 2E78883504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B4604AB489C00028543 = { fileRef = 2E78883604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B4704AB489C00028543 = { fileRef = 2E78883704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B4804AB489C00028543 = { fileRef = 2E78883804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B4904AB489C00028543 = { fileRef = 2E78883904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B4A04AB489C00028543 = { fileRef = 2E78883A04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B4B04AB489C00028543 = { fileRef = 2E78883B04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B4C04AB489C00028543 = { fileRef = 2E78883C04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B4D04AB489C00028543 = { fileRef = 2E78883D04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B4E04AB489C00028543 = { fileRef = 2E78883E04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B4F04AB489C00028543 = { fileRef = 2E78883F04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B5004AB489C00028543 = { fileRef = 2E78884004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B5104AB489C00028543 = { fileRef = 2E78884104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B5204AB489C00028543 = { fileRef = 2E78884204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B5304AB489C00028543 = { fileRef = 2E78884304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B5404AB489C00028543 = { fileRef = 2E78884404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B5504AB489C00028543 = { fileRef = 2E78884504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B5604AB489C00028543 = { fileRef = 2E78884604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B5704AB489C00028543 = { fileRef = 2E78884704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B5804AB489C00028543 = { fileRef = 2E78884804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B5904AB489C00028543 = { fileRef = 2E78884904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B5A04AB489C00028543 = { fileRef = 2E78884A04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B5B04AB489C00028543 = { fileRef = 2E78884B04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B5C04AB489C00028543 = { fileRef = 2E78884C04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B5D04AB489C00028543 = { fileRef = 2E78884D04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B5E04AB489C00028543 = { fileRef = 2E78884E04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B5F04AB489C00028543 = { fileRef = 2E78884F04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B6004AB489C00028543 = { fileRef = 2E78885004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B6104AB489C00028543 = { fileRef = 2E78885104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B6204AB489C00028543 = { fileRef = 2E78885204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B6304AB489C00028543 = { fileRef = 2E78885304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B6404AB489C00028543 = { fileRef = 2E78885404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B6504AB489C00028543 = { fileRef = 2E78885504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B6604AB489C00028543 = { fileRef = 2E78885604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B6704AB489C00028543 = { fileRef = 2E78885704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B6804AB489C00028543 = { fileRef = 2E78885804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B6904AB489C00028543 = { fileRef = 2E78885904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B6A04AB489C00028543 = { fileRef = 2E78885A04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B6B04AB489C00028543 = { fileRef = 2E78885B04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B6C04AB489C00028543 = { fileRef = 2E78885C04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B6D04AB489C00028543 = { fileRef = 2E78885D04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B6E04AB489C00028543 = { fileRef = 2E78885E04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B6F04AB489C00028543 = { fileRef = 2E78885F04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B7004AB489C00028543 = { fileRef = 2E78886004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B7104AB489C00028543 = { fileRef = 2E78886104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B7204AB489C00028543 = { fileRef = 2E78886204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B7304AB489C00028543 = { fileRef = 2E78886304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B7404AB489C00028543 = { fileRef = 2E78886404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B7504AB489C00028543 = { fileRef = 2E78886504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B7604AB489C00028543 = { fileRef = 2E78886604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B7704AB489C00028543 = { fileRef = 2E78886704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B7804AB489C00028543 = { fileRef = 2E78886804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B7904AB489C00028543 = { fileRef = 2E78886904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B7A04AB489C00028543 = { fileRef = 2E78886A04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B7B04AB489C00028543 = { fileRef = 2E78886B04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B7C04AB489C00028543 = { fileRef = 2E78886C04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B7D04AB489C00028543 = { fileRef = 2E78886D04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B7E04AB489C00028543 = { fileRef = 2E78886E04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B7F04AB489C00028543 = { fileRef = 2E78886F04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B8004AB489C00028543 = { fileRef = 2E78887004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B8104AB489C00028543 = { fileRef = 2E78887104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B8204AB489C00028543 = { fileRef = 2E78887204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B8304AB489C00028543 = { fileRef = 2E78887304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B8404AB489C00028543 = { fileRef = 2E78887404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B8504AB489C00028543 = { fileRef = 2E78887504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B8604AB489C00028543 = { fileRef = 2E78887604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B8704AB489C00028543 = { fileRef = 2E78887704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B8804AB489C00028543 = { fileRef = 2E78887804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B8904AB489C00028543 = { fileRef = 2E78887904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B8A04AB489C00028543 = { fileRef = 2E78887A04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B8B04AB489C00028543 = { fileRef = 2E78887B04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B8C04AB489C00028543 = { fileRef = 2E78887C04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B8D04AB489C00028543 = { fileRef = 2E78887D04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B8E04AB489C00028543 = { fileRef = 2E78887E04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B8F04AB489C00028543 = { fileRef = 2E78887F04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B9004AB489C00028543 = { fileRef = 2E78888004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B9104AB489C00028543 = { fileRef = 2E78888104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B9204AB489C00028543 = { fileRef = 2E78888204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B9304AB489C00028543 = { fileRef = 2E78888304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B9404AB489C00028543 = { fileRef = 2E78888404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B9504AB489C00028543 = { fileRef = 2E78888504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B9604AB489C00028543 = { fileRef = 2E78888604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B9704AB489C00028543 = { fileRef = 2E78888704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B9804AB489C00028543 = { fileRef = 2E78888804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B9904AB489C00028543 = { fileRef = 2E78888904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B9A04AB489C00028543 = { fileRef = 2E78888A04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B9B04AB489C00028543 = { fileRef = 2E78888C04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B9C04AB489C00028543 = { fileRef = 2E78888D04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B9D04AB489C00028543 = { fileRef = 2E78888F04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B9E04AB489C00028543 = { fileRef = 2E78889004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788B9F04AB489C00028543 = { fileRef = 2E78889104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BA004AB489C00028543 = { fileRef = 2E78889204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BA104AB489C00028543 = { fileRef = 2E78889304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BA204AB489C00028543 = { fileRef = 2E78889404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BA304AB489C00028543 = { fileRef = 2E78889504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BA404AB489C00028543 = { fileRef = 2E78889604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BA504AB489C00028543 = { fileRef = 2E78889704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BA604AB489C00028543 = { fileRef = 2E78889804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BA704AB489C00028543 = { fileRef = 2E78889904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BA804AB489C00028543 = { fileRef = 2E78889A04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BA904AB489C00028543 = { fileRef = 2E78889B04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BAA04AB489C00028543 = { fileRef = 2E78889C04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BAB04AB489C00028543 = { fileRef = 2E78889D04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BAC04AB489C00028543 = { fileRef = 2E78889E04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BAD04AB489C00028543 = { fileRef = 2E78889F04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BAE04AB489C00028543 = { fileRef = 2E7888A004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BAF04AB489C00028543 = { fileRef = 2E7888A104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BB004AB489C00028543 = { fileRef = 2E7888A204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BB104AB489C00028543 = { fileRef = 2E7888A304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BB204AB489C00028543 = { fileRef = 2E7888A404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BB304AB489C00028543 = { fileRef = 2E7888A504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BB404AB489C00028543 = { fileRef = 2E7888A604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BB504AB489C00028543 = { fileRef = 2E7888A704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BB604AB489C00028543 = { fileRef = 2E7888A804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BB704AB489C00028543 = { fileRef = 2E7888A904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BB804AB489C00028543 = { fileRef = 2E7888AA04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BB904AB489C00028543 = { fileRef = 2E7888AB04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BBA04AB489C00028543 = { fileRef = 2E7888AC04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BBB04AB489C00028543 = { fileRef = 2E7888AD04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BBC04AB489C00028543 = { fileRef = 2E7888AE04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BBD04AB489C00028543 = { fileRef = 2E7888AF04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BBE04AB489C00028543 = { fileRef = 2E7888B004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BBF04AB489C00028543 = { fileRef = 2E7888B104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BC004AB489C00028543 = { fileRef = 2E7888B204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BC104AB489C00028543 = { fileRef = 2E7888B304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BC204AB489C00028543 = { fileRef = 2E7888B404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BC304AB489C00028543 = { fileRef = 2E7888B504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BC404AB489C00028543 = { fileRef = 2E7888B604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BC504AB489C00028543 = { fileRef = 2E7888B704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BC604AB489C00028543 = { fileRef = 2E7888B804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BC704AB489C00028543 = { fileRef = 2E7888B904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BC804AB489C00028543 = { fileRef = 2E7888BA04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BC904AB489C00028543 = { fileRef = 2E7888BB04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BCA04AB489C00028543 = { fileRef = 2E7888BC04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BCB04AB489C00028543 = { fileRef = 2E7888BD04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BCC04AB489C00028543 = { fileRef = 2E7888BE04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BCD04AB489C00028543 = { fileRef = 2E7888BF04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BCE04AB489C00028543 = { fileRef = 2E7888C004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BCF04AB489C00028543 = { fileRef = 2E7888C104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BD004AB489C00028543 = { fileRef = 2E7888C204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BD104AB489C00028543 = { fileRef = 2E7888C304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BD204AB489C00028543 = { fileRef = 2E7888C404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BD304AB489C00028543 = { fileRef = 2E7888C504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BD404AB489C00028543 = { fileRef = 2E7888C604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BD504AB489C00028543 = { fileRef = 2E7888C704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BD604AB489C00028543 = { fileRef = 2E7888C804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BD704AB489C00028543 = { fileRef = 2E7888C904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BD804AB489C00028543 = { fileRef = 2E7888CA04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BD904AB489C00028543 = { fileRef = 2E7888CB04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BDA04AB489C00028543 = { fileRef = 2E7888CC04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BDB04AB489C00028543 = { fileRef = 2E7888CD04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BDC04AB489C00028543 = { fileRef = 2E7888CE04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BDD04AB489C00028543 = { fileRef = 2E7888CF04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BDE04AB489C00028543 = { fileRef = 2E7888D004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BDF04AB489C00028543 = { fileRef = 2E7888D104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BE004AB489C00028543 = { fileRef = 2E7888D204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BE104AB489C00028543 = { fileRef = 2E7888D304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BE204AB489C00028543 = { fileRef = 2E7888D404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BE304AB489C00028543 = { fileRef = 2E7888D504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BE404AB489C00028543 = { fileRef = 2E7888D604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BE504AB489C00028543 = { fileRef = 2E7888D704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BE604AB489C00028543 = { fileRef = 2E7888D804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BE704AB489C00028543 = { fileRef = 2E7888D904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BE804AB489C00028543 = { fileRef = 2E7888DA04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BE904AB489C00028543 = { fileRef = 2E7888DB04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BEA04AB489C00028543 = { fileRef = 2E7888DC04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BEB04AB489C00028543 = { fileRef = 2E7888DD04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BEC04AB489C00028543 = { fileRef = 2E7888DE04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BED04AB489C00028543 = { fileRef = 2E7888DF04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BEE04AB489C00028543 = { fileRef = 2E7888E004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BEF04AB489C00028543 = { fileRef = 2E7888E104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BF004AB489C00028543 = { fileRef = 2E7888E204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BF104AB489C00028543 = { fileRef = 2E7888E304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BF204AB489C00028543 = { fileRef = 2E7888E404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BF304AB489C00028543 = { fileRef = 2E7888E504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BF404AB489C00028543 = { fileRef = 2E7888E604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BF504AB489C00028543 = { fileRef = 2E7888E704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BF604AB489C00028543 = { fileRef = 2E7888E804AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BF704AB489C00028543 = { fileRef = 2E7888E904AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BF804AB489C00028543 = { fileRef = 2E7888EA04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BF904AB489C00028543 = { fileRef = 2E7888EB04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BFA04AB489C00028543 = { fileRef = 2E7888EC04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BFB04AB489C00028543 = { fileRef = 2E7888ED04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BFC04AB489C00028543 = { fileRef = 2E7888EE04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BFD04AB489C00028543 = { fileRef = 2E7888EF04AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BFE04AB489C00028543 = { fileRef = 2E7888F004AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788BFF04AB489C00028543 = { fileRef = 2E7888F104AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788C0004AB489C00028543 = { fileRef = 2E7888F204AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788C0104AB489C00028543 = { fileRef = 2E7888F304AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788C0204AB489C00028543 = { fileRef = 2E7888F404AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788C0304AB489C00028543 = { fileRef = 2E7888F504AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788C0404AB489C00028543 = { fileRef = 2E7888F604AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788C0504AB489C00028543 = { fileRef = 2E7888F704AB489B00028543; isa = PBXBuildFile; settings = { }; }; 2E788C0604AB489C00028543 = { fileRef = 2E7888F804AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C0704AB489C00028543 = { fileRef = 2E7888F904AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C0804AB489C00028543 = { fileRef = 2E7888FA04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C0904AB489C00028543 = { fileRef = 2E7888FB04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C0A04AB489C00028543 = { fileRef = 2E7888FC04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C0B04AB489C00028543 = { fileRef = 2E7888FD04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C0C04AB489C00028543 = { fileRef = 2E7888FE04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C0D04AB489C00028543 = { fileRef = 2E7888FF04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C0E04AB489C00028543 = { fileRef = 2E78890004AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C0F04AB489C00028543 = { fileRef = 2E78890104AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C1004AB489C00028543 = { fileRef = 2E78890204AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C1104AB489C00028543 = { fileRef = 2E78890304AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C1204AB489C00028543 = { fileRef = 2E78890404AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C1304AB489C00028543 = { fileRef = 2E78890504AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C1404AB489C00028543 = { fileRef = 2E78890604AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C1504AB489C00028543 = { fileRef = 2E78890704AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C1604AB489C00028543 = { fileRef = 2E78890804AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C1704AB489C00028543 = { fileRef = 2E78890904AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C1804AB489C00028543 = { fileRef = 2E78890A04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C1904AB489C00028543 = { fileRef = 2E78890B04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C1A04AB489C00028543 = { fileRef = 2E78890C04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C1B04AB489C00028543 = { fileRef = 2E78890D04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C1C04AB489C00028543 = { fileRef = 2E78890E04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C1D04AB489C00028543 = { fileRef = 2E78890F04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C1E04AB489C00028543 = { fileRef = 2E78891004AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C1F04AB489C00028543 = { fileRef = 2E78891104AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C2004AB489C00028543 = { fileRef = 2E78891204AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C2104AB489C00028543 = { fileRef = 2E78891304AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C2204AB489C00028543 = { fileRef = 2E78891404AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C2304AB489C00028543 = { fileRef = 2E78891504AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C2404AB489C00028543 = { fileRef = 2E78891604AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C2504AB489C00028543 = { fileRef = 2E78891704AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C2604AB489C00028543 = { fileRef = 2E78891804AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C2704AB489C00028543 = { fileRef = 2E78891904AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C2804AB489C00028543 = { fileRef = 2E78891A04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C2904AB489C00028543 = { fileRef = 2E78891B04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C2A04AB489C00028543 = { fileRef = 2E78891C04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C2B04AB489C00028543 = { fileRef = 2E78891D04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C2C04AB489C00028543 = { fileRef = 2E78891E04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C2D04AB489C00028543 = { fileRef = 2E78891F04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C2E04AB489C00028543 = { fileRef = 2E78892004AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C2F04AB489C00028543 = { fileRef = 2E78892104AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C3004AB489C00028543 = { fileRef = 2E78892204AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C3104AB489C00028543 = { fileRef = 2E78892304AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C3204AB489C00028543 = { fileRef = 2E78892404AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C3304AB489C00028543 = { fileRef = 2E78892504AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C3404AB489C00028543 = { fileRef = 2E78892604AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C3504AB489C00028543 = { fileRef = 2E78892704AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C3604AB489C00028543 = { fileRef = 2E78892804AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C3704AB489C00028543 = { fileRef = 2E78892904AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C3804AB489C00028543 = { fileRef = 2E78892A04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C3904AB489C00028543 = { fileRef = 2E78892B04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C3A04AB489C00028543 = { fileRef = 2E78892C04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C3B04AB489C00028543 = { fileRef = 2E78892D04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C3C04AB489C00028543 = { fileRef = 2E78892E04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C3D04AB489C00028543 = { fileRef = 2E78892F04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C3E04AB489C00028543 = { fileRef = 2E78893004AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C3F04AB489C00028543 = { fileRef = 2E78893104AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C4004AB489C00028543 = { fileRef = 2E78893204AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C4104AB489C00028543 = { fileRef = 2E78893304AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C4204AB489C00028543 = { fileRef = 2E78893404AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C4304AB489C00028543 = { fileRef = 2E78893504AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C4404AB489C00028543 = { fileRef = 2E78893604AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C4504AB489C00028543 = { fileRef = 2E78893704AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C4604AB489C00028543 = { fileRef = 2E78893804AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C4704AB489C00028543 = { fileRef = 2E78893904AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C4804AB489C00028543 = { fileRef = 2E78893A04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C4904AB489C00028543 = { fileRef = 2E78893B04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C4A04AB489C00028543 = { fileRef = 2E78893C04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C4B04AB489C00028543 = { fileRef = 2E78893D04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C4C04AB489C00028543 = { fileRef = 2E78893E04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C4D04AB489C00028543 = { fileRef = 2E78893F04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C4E04AB489C00028543 = { fileRef = 2E78894004AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C4F04AB489C00028543 = { fileRef = 2E78894104AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C5004AB489C00028543 = { fileRef = 2E78894204AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C5104AB489C00028543 = { fileRef = 2E78894304AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C5204AB489C00028543 = { fileRef = 2E78894404AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C5304AB489C00028543 = { fileRef = 2E78894504AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C5404AB489C00028543 = { fileRef = 2E78894604AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C5504AB489C00028543 = { fileRef = 2E78894704AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C5604AB489C00028543 = { fileRef = 2E78894804AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C5704AB489C00028543 = { fileRef = 2E78894904AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C5804AB489C00028543 = { fileRef = 2E78894A04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C5904AB489C00028543 = { fileRef = 2E78894B04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C5A04AB489C00028543 = { fileRef = 2E78894C04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C5B04AB489C00028543 = { fileRef = 2E78894D04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C5C04AB489C00028543 = { fileRef = 2E78894E04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C5D04AB489C00028543 = { fileRef = 2E78894F04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C5E04AB489C00028543 = { fileRef = 2E78895004AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C5F04AB489C00028543 = { fileRef = 2E78895104AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C6004AB489C00028543 = { fileRef = 2E78895204AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C6104AB489C00028543 = { fileRef = 2E78895304AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C6204AB489C00028543 = { fileRef = 2E78895404AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C6304AB489C00028543 = { fileRef = 2E78895504AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C6404AB489C00028543 = { fileRef = 2E78895604AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C6504AB489C00028543 = { fileRef = 2E78895704AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C6604AB489C00028543 = { fileRef = 2E78895804AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C6704AB489C00028543 = { fileRef = 2E78895904AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C6804AB489C00028543 = { fileRef = 2E78895A04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C6904AB489C00028543 = { fileRef = 2E78895B04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C6A04AB489C00028543 = { fileRef = 2E78895C04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C6B04AB489C00028543 = { fileRef = 2E78895D04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C6C04AB489C00028543 = { fileRef = 2E78895E04AB489C00028543; isa = PBXBuildFile; settings = { }; }; 2E788C7904AB4DE300028543 = { buildRules = ( ); buildSettings = { COPY_PHASE_STRIP = NO; OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = "\U0001-DDEBUG"; }; isa = PBXBuildStyle; name = "Development GCC3"; }; 2E788C7A04AB4DFC00028543 = { buildRules = ( ); buildSettings = { COPY_PHASE_STRIP = YES; }; isa = PBXBuildStyle; name = "Deployment GCC3"; }; 2EFC66C804AB85C10010AC9C = { isa = PBXFrameworkReference; path = Xerces.framework; refType = 3; }; 2EFC66C904AB85C10010AC9C = { fileRef = 2EFC66C804AB85C10010AC9C; isa = PBXBuildFile; settings = { }; }; //2E0 //2E1 //2E2 //2E3 //2E4 //320 //321 //322 //323 //324 32BAE0B70371A74B00C91783 = { fileEncoding = 4; isa = PBXFileReference; path = XalanLib_Prefix.h; refType = 2; }; 32BAE0B80371A74B00C91783 = { fileRef = 32BAE0B70371A74B00C91783; isa = PBXBuildFile; settings = { }; }; //320 //321 //322 //323 //324 //4F0 //4F1 //4F2 //4F3 //4F4 4F0BB7EC011F40E904CA0E50 = { buildRules = ( ); buildSettings = { COPY_PHASE_STRIP = NO; GCC_VERSION = 2.x; OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = "\U0001-DDEBUG"; }; isa = PBXBuildStyle; name = "Development GCC2"; }; 4F0BB7ED011F40E904CA0E50 = { buildRules = ( ); buildSettings = { COPY_PHASE_STRIP = YES; GCC_VERSION = 2.x; }; isa = PBXBuildStyle; name = "Deployment GCC2"; }; }; rootObject = 0867D690FE84028FC02AAC07; } xalan-c-1.11/c/Projects/MacOS/ProjectBuilder/XalanLib/English.lproj/0002775000175000000640000000000012037700125024052 5ustar stevesambaxalan-c-1.11/c/Projects/MacOS/ProjectBuilder/XalanLib/English.lproj/InfoPlist.strings0000664000175000000640000000043411731656103027401 0ustar stevesamba/* Localized versions of Info.plist keys */ CFBundleName = "XalanLib"; CFBundleShortVersionString = "XalanLib version 1.7.0"; CFBundleGetInfoString = "XalanLib version 1.7.0"; NSHumanReadableCopyright = "Copyright (c) 1999-2004 The Apache Software Foundation. All rights reserved."; xalan-c-1.11/c/Projects/MacOS/ProjectBuilder/XalanLib/XalanLib_Prefix.h0000664000175000000640000000241411731656103024521 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Prefix header for all source files of the 'XalanLib' target in the 'XalanLib' project. // // Objective C only #if __OBJC__ #endif // C++ only #if defined(__cplusplus) #include #include #include #include #include #include #endif // Standard C headers #include #include #include #include // Carbon Headers #include #include xalan-c-1.11/c/Projects/Win32/0002775000175000000640000000000012037700125014665 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/0002775000175000000640000000000012037700125015265 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/ParsedSourceWrappers/0002775000175000000640000000000012037700125021410 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/ParsedSourceWrappers/ParsedSourceWrappers.vcproj0000664000175000000640000004042411731656103026770 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/TestXPath/0002775000175000000640000000000012037700125017151 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/TestXPath/TestXPath.vcproj0000664000175000000640000004066511731656103022301 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/Conf/0002775000175000000640000000000012037700125016152 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/Conf/conf.vcproj0000664000175000000640000004153211731656103020335 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/DocumentBuilder/0002775000175000000640000000000012037700125020352 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/DocumentBuilder/DocumentBuilder.vcproj0000664000175000000640000004040011731656103024666 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/SimpleTransform/0002775000175000000640000000000012037700125020412 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/SimpleTransform/SimpleTransform.vcproj0000664000175000000640000004040011731656103024766 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/UseStylesheetParam/0002775000175000000640000000000012037700125021054 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/UseStylesheetParam/UseStylesheetParam.vcproj0000664000175000000640000004041411731656103026077 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/StreamTransform/0002775000175000000640000000000012037700125020414 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/StreamTransform/StreamTransform.vcproj0000664000175000000640000004040011731656103024772 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/TransformToXercesDOM/0002775000175000000640000000000012037700125021255 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/TransformToXercesDOM/TransformToXercesDOM.vcproj0000664000175000000640000004042411731656103026502 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/ExternalFunction/0002775000175000000640000000000012037700125020555 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/ExternalFunction/ExternalFunction.vcproj0000664000175000000640000004040411731656103025300 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/SimpleXPathAPI/0002775000175000000640000000000012037700125020015 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/SimpleXPathAPI/SimpleXPathAPI.vcproj0000664000175000000640000004037411731656103024006 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/TestXSLT/0002775000175000000640000000000012037700125016717 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/TestXSLT/TestXSLT.vcproj0000664000175000000640000004127711731656103021615 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/SimpleXPathCAPI/0002775000175000000640000000000012037700125020120 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/SimpleXPathCAPI/SimpleXPathCAPI.vcproj0000664000175000000640000004037611731656103024216 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/EntityResolver/0002775000175000000640000000000012037700125020263 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/EntityResolver/EntityResolver.vcproj0000664000175000000640000004173011731656103024517 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/XalanTransform/0002775000175000000640000000000012037700125020224 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/XalanTransform/XalanTransform.vcproj0000664000175000000640000004037411731656103024424 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/Utils/0002775000175000000640000000000012037700125016365 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/Utils/XalanMsgLib/0002775000175000000640000000000012037700125020526 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/Utils/XalanMsgLib/XalanMsgLib.vcproj0000664000175000000640000003616411731656103024132 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/Utils/XalanMsgLib/XalanMsgLibICU.vcproj0000664000175000000640000002520511731656103024465 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/Utils/XalanMsgLib/XalanMsgLib.rules0000664000175000000640000000104211731656103023744 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/Utils/XalanMsgLib/XalanMsgLibICU.rules0000664000175000000640000000331411731656103024311 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/Utils/MsgCreator/0002775000175000000640000000000012037700125020433 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/Utils/MsgCreator/MsgCreator.vcproj0000664000175000000640000004154211731656103023740 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/Performance/0002775000175000000640000000000012037700125017526 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/Performance/perf.vcproj0000664000175000000640000004005711731656103021721 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/AllInOne/0002775000175000000640000000000012037700125016726 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/AllInOne/AllInOneWithICU.vcproj0000664000175000000640000025735311731656103023034 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/AllInOne/AllInOne.vcproj0000664000175000000640000032253711731656103021634 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/CompileStylesheet/0002775000175000000640000000000012037700125020727 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/CompileStylesheet/CompileStylesheet.vcproj0000664000175000000640000004041011731656103025621 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/XalanTransformerCallback/0002775000175000000640000000000012037700125022170 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/XalanTransformerCallback/XalanTransformerCallback.vcproj0000664000175000000640000004044411731656103030332 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/XalanExe/0002775000175000000640000000000012037700125016772 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/XalanExe/XalanExe.vcproj0000664000175000000640000004471011731656103021736 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/ThreadSafe/0002775000175000000640000000000012037700125017273 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/ThreadSafe/ThreadSafe.vcproj0000664000175000000640000004035411731656103022540 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/ThreadTest/0002775000175000000640000000000012037700125017334 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/ThreadTest/ThreadTest.vcproj0000664000175000000640000004034711731656103022644 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/All/0002775000175000000640000000000012037700125015775 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/All/AllWithICU.vcproj0000664000175000000640000000420611731656103021135 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/All/All.vcproj0000664000175000000640000000721411731656103017742 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/SerializeNodeSet/0002775000175000000640000000000012037700125020476 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/SerializeNodeSet/SerializeNodeSet.vcproj0000664000175000000640000004040411731656103025142 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/TraceListen/0002775000175000000640000000000012037700125017502 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC8/TraceListen/TraceListen.vcproj0000664000175000000640000004036011731656103023153 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC8/Xalan.sln0000664000175000000640000012562011731656103017060 0ustar stevesambaMicrosoft Visual Studio Solution File, Format Version 9.00 # Visual Studio 2005 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MsgCreator", "Utils\MsgCreator\MsgCreator.vcproj", "{D3EADA85-50F9-4A1D-A2F7-18612358B436}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanMsgLib", "Utils\XalanMsgLib\XalanMsgLib.vcproj", "{E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}" ProjectSection(ProjectDependencies) = postProject {D3EADA85-50F9-4A1D-A2F7-18612358B436} = {D3EADA85-50F9-4A1D-A2F7-18612358B436} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AllInOne", "AllInOne\AllInOne.vcproj", "{E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}" ProjectSection(ProjectDependencies) = postProject {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092} = {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "conf", "conf\conf.vcproj", "{36DA52E4-C5FD-4BA7-9A58-945EF75865F7}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanExe", "XalanExe\XalanExe.vcproj", "{865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CompileStylesheet", "CompileStylesheet\CompileStylesheet.vcproj", "{5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DocumentBuilder", "DocumentBuilder\DocumentBuilder.vcproj", "{F41473DF-6208-4A84-9DEC-AEEA3B4185F2}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ExternalFunction", "ExternalFunction\ExternalFunction.vcproj", "{CB863D89-F181-4E81-9E48-E7690937C58C}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ParsedSourceWrappers", "ParsedSourceWrappers\ParsedSourceWrappers.vcproj", "{451D3F58-1480-4D96-ABD5-A01BC535CE43}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SerializeNodeSet", "SerializeNodeSet\SerializeNodeSet.vcproj", "{CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleTransform", "SimpleTransform\SimpleTransform.vcproj", "{36FBD6C9-AA46-4B4E-A168-82274DA2A01E}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleXPathAPI", "SimpleXPathAPI\SimpleXPathAPI.vcproj", "{811E8D52-A70D-46E8-A041-6EB6414D419C}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleXPathCAPI", "SimpleXPathCAPI\SimpleXPathCAPI.vcproj", "{3DDBE733-0C6D-4C78-BED3-9BBA327754BD}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StreamTransform", "StreamTransform\StreamTransform.vcproj", "{065C0817-2A3F-4B0A-93D2-DB891A451B35}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestXPath", "TestXPath\TestXPath.vcproj", "{67103626-AC3F-49B8-98C1-C78FB1A9F510}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestXSLT", "TestXSLT\TestXSLT.vcproj", "{06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ThreadSafe", "ThreadSafe\ThreadSafe.vcproj", "{1D902586-5B5E-41CA-B74C-E9A1A9817527}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ThreadTest", "ThreadTest\ThreadTest.vcproj", "{9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TraceListen", "TraceListen\TraceListen.vcproj", "{66BE596B-7BB8-4C96-87DB-714AC31D4A39}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TransformToXercesDOM", "TransformToXercesDOM\TransformToXercesDOM.vcproj", "{FFF75001-7B36-47E8-99DC-ABA8BE82F996}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UseStylesheetParam", "UseStylesheetParam\UseStylesheetParam.vcproj", "{9C7FB0A8-138B-4732-905F-3EDC00C0D52F}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanTransform", "XalanTransform\XalanTransform.vcproj", "{16AD2005-39BA-4E52-A2C6-F5C3C56901FC}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanTransformerCallback", "XalanTransformerCallback\XalanTransformerCallback.vcproj", "{8C50630B-96F5-46EC-B867-BABB36146AE8}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "All", "All\All.vcproj", "{C5513096-5115-434E-9785-4D1DEC12EB2B}" ProjectSection(ProjectDependencies) = postProject {36DA52E4-C5FD-4BA7-9A58-945EF75865F7} = {36DA52E4-C5FD-4BA7-9A58-945EF75865F7} {F41473DF-6208-4A84-9DEC-AEEA3B4185F2} = {F41473DF-6208-4A84-9DEC-AEEA3B4185F2} {36FBD6C9-AA46-4B4E-A168-82274DA2A01E} = {36FBD6C9-AA46-4B4E-A168-82274DA2A01E} {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2} = {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2} {9C7FB0A8-138B-4732-905F-3EDC00C0D52F} = {9C7FB0A8-138B-4732-905F-3EDC00C0D52F} {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808} = {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808} {CB863D89-F181-4E81-9E48-E7690937C58C} = {CB863D89-F181-4E81-9E48-E7690937C58C} {1D902586-5B5E-41CA-B74C-E9A1A9817527} = {1D902586-5B5E-41CA-B74C-E9A1A9817527} {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5} = {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5} {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929} = {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929} {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} {66BE596B-7BB8-4C96-87DB-714AC31D4A39} = {66BE596B-7BB8-4C96-87DB-714AC31D4A39} {451D3F58-1480-4D96-ABD5-A01BC535CE43} = {451D3F58-1480-4D96-ABD5-A01BC535CE43} {811E8D52-A70D-46E8-A041-6EB6414D419C} = {811E8D52-A70D-46E8-A041-6EB6414D419C} {3DDBE733-0C6D-4C78-BED3-9BBA327754BD} = {3DDBE733-0C6D-4C78-BED3-9BBA327754BD} {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B} = {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B} {67103626-AC3F-49B8-98C1-C78FB1A9F510} = {67103626-AC3F-49B8-98C1-C78FB1A9F510} {065C0817-2A3F-4B0A-93D2-DB891A451B35} = {065C0817-2A3F-4B0A-93D2-DB891A451B35} {8C50630B-96F5-46EC-B867-BABB36146AE8} = {8C50630B-96F5-46EC-B867-BABB36146AE8} {16AD2005-39BA-4E52-A2C6-F5C3C56901FC} = {16AD2005-39BA-4E52-A2C6-F5C3C56901FC} {FFF75001-7B36-47E8-99DC-ABA8BE82F996} = {FFF75001-7B36-47E8-99DC-ABA8BE82F996} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EntityResolver", "EntityResolver\EntityResolver.vcproj", "{9271D145-FC64-45B1-A1AF-2BF92C83E65C}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug with ICU|Win32 = Debug with ICU|Win32 Debug with ICU|x64 = Debug with ICU|x64 Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Release with ICU|Win32 = Release with ICU|Win32 Release with ICU|x64 = Release with ICU|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug|Win32.ActiveCfg = Debug|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug|Win32.Build.0 = Debug|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug|x64.ActiveCfg = Debug|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug|x64.Build.0 = Debug|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release with ICU|x64.Build.0 = Release with ICU|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release|Win32.ActiveCfg = Release|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release|Win32.Build.0 = Release|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release|x64.ActiveCfg = Release|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release|x64.Build.0 = Release|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug|Win32.ActiveCfg = Debug|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug|Win32.Build.0 = Debug|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug|x64.ActiveCfg = Debug|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug|x64.Build.0 = Debug|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release with ICU|x64.Build.0 = Release with ICU|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release|Win32.ActiveCfg = Release|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release|Win32.Build.0 = Release|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release|x64.ActiveCfg = Release|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release|x64.Build.0 = Release|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug|Win32.ActiveCfg = Debug|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug|Win32.Build.0 = Debug|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug|x64.ActiveCfg = Debug|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug|x64.Build.0 = Debug|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release with ICU|x64.Build.0 = Release with ICU|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release|Win32.ActiveCfg = Release|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release|Win32.Build.0 = Release|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release|x64.ActiveCfg = Release|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release|x64.Build.0 = Release|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug|Win32.ActiveCfg = Debug|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug|Win32.Build.0 = Debug|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug|x64.ActiveCfg = Debug|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug|x64.Build.0 = Debug|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release with ICU|x64.Build.0 = Release with ICU|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release|Win32.ActiveCfg = Release|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release|Win32.Build.0 = Release|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release|x64.ActiveCfg = Release|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release|x64.Build.0 = Release|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug|Win32.ActiveCfg = Debug|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug|Win32.Build.0 = Debug|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug|x64.ActiveCfg = Debug|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug|x64.Build.0 = Debug|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release with ICU|x64.Build.0 = Release with ICU|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release|Win32.ActiveCfg = Release|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release|Win32.Build.0 = Release|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release|x64.ActiveCfg = Release|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release|x64.Build.0 = Release|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug|Win32.ActiveCfg = Debug|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug|Win32.Build.0 = Debug|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug|x64.ActiveCfg = Debug|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug|x64.Build.0 = Debug|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release with ICU|x64.Build.0 = Release with ICU|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release|Win32.ActiveCfg = Release|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release|Win32.Build.0 = Release|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release|x64.ActiveCfg = Release|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release|x64.Build.0 = Release|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug|Win32.ActiveCfg = Debug|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug|Win32.Build.0 = Debug|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug|x64.ActiveCfg = Debug|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug|x64.Build.0 = Debug|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release with ICU|x64.Build.0 = Release with ICU|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release|Win32.ActiveCfg = Release|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release|Win32.Build.0 = Release|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release|x64.ActiveCfg = Release|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release|x64.Build.0 = Release|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug|Win32.ActiveCfg = Debug|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug|Win32.Build.0 = Debug|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug|x64.ActiveCfg = Debug|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug|x64.Build.0 = Debug|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release with ICU|x64.Build.0 = Release with ICU|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release|Win32.ActiveCfg = Release|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release|Win32.Build.0 = Release|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release|x64.ActiveCfg = Release|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release|x64.Build.0 = Release|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug|Win32.ActiveCfg = Debug|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug|Win32.Build.0 = Debug|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug|x64.ActiveCfg = Debug|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug|x64.Build.0 = Debug|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release with ICU|x64.Build.0 = Release with ICU|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release|Win32.ActiveCfg = Release|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release|Win32.Build.0 = Release|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release|x64.ActiveCfg = Release|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release|x64.Build.0 = Release|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug|Win32.ActiveCfg = Debug|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug|Win32.Build.0 = Debug|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug|x64.ActiveCfg = Debug|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug|x64.Build.0 = Debug|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release with ICU|x64.Build.0 = Release with ICU|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release|Win32.ActiveCfg = Release|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release|Win32.Build.0 = Release|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release|x64.ActiveCfg = Release|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release|x64.Build.0 = Release|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug|Win32.ActiveCfg = Debug|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug|Win32.Build.0 = Debug|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug|x64.ActiveCfg = Debug|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug|x64.Build.0 = Debug|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release with ICU|x64.Build.0 = Release with ICU|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release|Win32.ActiveCfg = Release|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release|Win32.Build.0 = Release|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release|x64.ActiveCfg = Release|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release|x64.Build.0 = Release|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug|Win32.ActiveCfg = Debug|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug|Win32.Build.0 = Debug|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug|x64.ActiveCfg = Debug|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug|x64.Build.0 = Debug|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release with ICU|x64.Build.0 = Release with ICU|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release|Win32.ActiveCfg = Release|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release|Win32.Build.0 = Release|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release|x64.ActiveCfg = Release|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release|x64.Build.0 = Release|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug|Win32.ActiveCfg = Debug|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug|Win32.Build.0 = Debug|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug|x64.ActiveCfg = Debug|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug|x64.Build.0 = Debug|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release with ICU|x64.Build.0 = Release with ICU|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release|Win32.ActiveCfg = Release|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release|Win32.Build.0 = Release|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release|x64.ActiveCfg = Release|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release|x64.Build.0 = Release|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug|Win32.ActiveCfg = Debug|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug|Win32.Build.0 = Debug|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug|x64.ActiveCfg = Debug|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug|x64.Build.0 = Debug|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release with ICU|x64.Build.0 = Release with ICU|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release|Win32.ActiveCfg = Release|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release|Win32.Build.0 = Release|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release|x64.ActiveCfg = Release|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release|x64.Build.0 = Release|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug|Win32.ActiveCfg = Debug|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug|Win32.Build.0 = Debug|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug|x64.ActiveCfg = Debug|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug|x64.Build.0 = Debug|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release with ICU|x64.Build.0 = Release with ICU|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release|Win32.ActiveCfg = Release|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release|Win32.Build.0 = Release|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release|x64.ActiveCfg = Release|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release|x64.Build.0 = Release|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug|Win32.ActiveCfg = Debug|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug|Win32.Build.0 = Debug|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug|x64.ActiveCfg = Debug|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug|x64.Build.0 = Debug|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release with ICU|x64.Build.0 = Release with ICU|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release|Win32.ActiveCfg = Release|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release|Win32.Build.0 = Release|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release|x64.ActiveCfg = Release|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release|x64.Build.0 = Release|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug|Win32.ActiveCfg = Debug|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug|Win32.Build.0 = Debug|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug|x64.ActiveCfg = Debug|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug|x64.Build.0 = Debug|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release with ICU|x64.Build.0 = Release with ICU|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release|Win32.ActiveCfg = Release|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release|Win32.Build.0 = Release|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release|x64.ActiveCfg = Release|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release|x64.Build.0 = Release|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug|Win32.ActiveCfg = Debug|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug|Win32.Build.0 = Debug|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug|x64.ActiveCfg = Debug|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug|x64.Build.0 = Debug|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release with ICU|x64.Build.0 = Release with ICU|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release|Win32.ActiveCfg = Release|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release|Win32.Build.0 = Release|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release|x64.ActiveCfg = Release|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release|x64.Build.0 = Release|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug|Win32.ActiveCfg = Debug|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug|Win32.Build.0 = Debug|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug|x64.ActiveCfg = Debug|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug|x64.Build.0 = Debug|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release with ICU|x64.Build.0 = Release with ICU|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release|Win32.ActiveCfg = Release|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release|Win32.Build.0 = Release|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release|x64.ActiveCfg = Release|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release|x64.Build.0 = Release|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug|Win32.ActiveCfg = Debug|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug|Win32.Build.0 = Debug|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug|x64.ActiveCfg = Debug|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug|x64.Build.0 = Debug|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release with ICU|x64.Build.0 = Release with ICU|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release|Win32.ActiveCfg = Release|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release|Win32.Build.0 = Release|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release|x64.ActiveCfg = Release|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release|x64.Build.0 = Release|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug|Win32.ActiveCfg = Debug|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug|Win32.Build.0 = Debug|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug|x64.ActiveCfg = Debug|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug|x64.Build.0 = Debug|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release with ICU|x64.Build.0 = Release with ICU|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release|Win32.ActiveCfg = Release|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release|Win32.Build.0 = Release|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release|x64.ActiveCfg = Release|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release|x64.Build.0 = Release|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug|Win32.ActiveCfg = Debug|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug|Win32.Build.0 = Debug|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug|x64.ActiveCfg = Debug|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug|x64.Build.0 = Debug|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release with ICU|x64.Build.0 = Release with ICU|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release|Win32.ActiveCfg = Release|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release|Win32.Build.0 = Release|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release|x64.ActiveCfg = Release|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release|x64.Build.0 = Release|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug|Win32.ActiveCfg = Debug|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug|Win32.Build.0 = Debug|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug|x64.ActiveCfg = Debug|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug|x64.Build.0 = Debug|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release with ICU|x64.Build.0 = Release with ICU|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release|Win32.ActiveCfg = Release|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release|Win32.Build.0 = Release|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release|x64.ActiveCfg = Release|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release|x64.Build.0 = Release|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug|Win32.ActiveCfg = Debug|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug|Win32.Build.0 = Debug|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug|x64.ActiveCfg = Debug|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug|x64.Build.0 = Debug|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release with ICU|x64.Build.0 = Release with ICU|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release|Win32.ActiveCfg = Release|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release|Win32.Build.0 = Release|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release|x64.ActiveCfg = Release|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release|x64.Build.0 = Release|x64 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Debug|Win32.ActiveCfg = Debug|Win32 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Debug|Win32.Build.0 = Debug|Win32 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Debug|x64.ActiveCfg = Debug|x64 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Debug|x64.Build.0 = Debug|x64 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Release with ICU|x64.Build.0 = Release with ICU|x64 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Release|Win32.ActiveCfg = Release|Win32 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Release|Win32.Build.0 = Release|Win32 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Release|x64.ActiveCfg = Release|x64 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal xalan-c-1.11/c/Projects/Win32/VC8/XalanICU.sln0000664000175000000640000006265211731656103017426 0ustar stevesambaMicrosoft Visual Studio Solution File, Format Version 9.00 # Visual Studio 2005 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MsgCreator", "Utils\MsgCreator\MsgCreator.vcproj", "{D3EADA85-50F9-4A1D-A2F7-18612358B436}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "conf", "conf\conf.vcproj", "{36DA52E4-C5FD-4BA7-9A58-945EF75865F7}" ProjectSection(ProjectDependencies) = postProject {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} = {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanExe", "XalanExe\XalanExe.vcproj", "{865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}" ProjectSection(ProjectDependencies) = postProject {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} = {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CompileStylesheet", "CompileStylesheet\CompileStylesheet.vcproj", "{5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}" ProjectSection(ProjectDependencies) = postProject {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} = {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DocumentBuilder", "DocumentBuilder\DocumentBuilder.vcproj", "{F41473DF-6208-4A84-9DEC-AEEA3B4185F2}" ProjectSection(ProjectDependencies) = postProject {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} = {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ExternalFunction", "ExternalFunction\ExternalFunction.vcproj", "{CB863D89-F181-4E81-9E48-E7690937C58C}" ProjectSection(ProjectDependencies) = postProject {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} = {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ParsedSourceWrappers", "ParsedSourceWrappers\ParsedSourceWrappers.vcproj", "{451D3F58-1480-4D96-ABD5-A01BC535CE43}" ProjectSection(ProjectDependencies) = postProject {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} = {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SerializeNodeSet", "SerializeNodeSet\SerializeNodeSet.vcproj", "{CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}" ProjectSection(ProjectDependencies) = postProject {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} = {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleTransform", "SimpleTransform\SimpleTransform.vcproj", "{36FBD6C9-AA46-4B4E-A168-82274DA2A01E}" ProjectSection(ProjectDependencies) = postProject {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} = {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleXPathAPI", "SimpleXPathAPI\SimpleXPathAPI.vcproj", "{811E8D52-A70D-46E8-A041-6EB6414D419C}" ProjectSection(ProjectDependencies) = postProject {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} = {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleXPathCAPI", "SimpleXPathCAPI\SimpleXPathCAPI.vcproj", "{3DDBE733-0C6D-4C78-BED3-9BBA327754BD}" ProjectSection(ProjectDependencies) = postProject {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} = {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StreamTransform", "StreamTransform\StreamTransform.vcproj", "{065C0817-2A3F-4B0A-93D2-DB891A451B35}" ProjectSection(ProjectDependencies) = postProject {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} = {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestXPath", "TestXPath\TestXPath.vcproj", "{67103626-AC3F-49B8-98C1-C78FB1A9F510}" ProjectSection(ProjectDependencies) = postProject {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} = {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestXSLT", "TestXSLT\TestXSLT.vcproj", "{06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}" ProjectSection(ProjectDependencies) = postProject {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} = {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ThreadSafe", "ThreadSafe\ThreadSafe.vcproj", "{1D902586-5B5E-41CA-B74C-E9A1A9817527}" ProjectSection(ProjectDependencies) = postProject {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} = {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ThreadTest", "ThreadTest\ThreadTest.vcproj", "{9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}" ProjectSection(ProjectDependencies) = postProject {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} = {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TraceListen", "TraceListen\TraceListen.vcproj", "{66BE596B-7BB8-4C96-87DB-714AC31D4A39}" ProjectSection(ProjectDependencies) = postProject {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} = {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TransformToXercesDOM", "TransformToXercesDOM\TransformToXercesDOM.vcproj", "{FFF75001-7B36-47E8-99DC-ABA8BE82F996}" ProjectSection(ProjectDependencies) = postProject {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} = {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UseStylesheetParam", "UseStylesheetParam\UseStylesheetParam.vcproj", "{9C7FB0A8-138B-4732-905F-3EDC00C0D52F}" ProjectSection(ProjectDependencies) = postProject {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} = {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanTransform", "XalanTransform\XalanTransform.vcproj", "{16AD2005-39BA-4E52-A2C6-F5C3C56901FC}" ProjectSection(ProjectDependencies) = postProject {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} = {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanTransformerCallback", "XalanTransformerCallback\XalanTransformerCallback.vcproj", "{8C50630B-96F5-46EC-B867-BABB36146AE8}" ProjectSection(ProjectDependencies) = postProject {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} = {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AllInOneWithICU", "AllInOne\AllInOneWithICU.vcproj", "{755AD11C-80B9-4E33-9D3D-9A68884A3EC8}" ProjectSection(ProjectDependencies) = postProject {A76258B4-BAE5-4FAA-B5E3-DB7BE7B43760} = {A76258B4-BAE5-4FAA-B5E3-DB7BE7B43760} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanMsgLibICU", "Utils\XalanMsgLib\XalanMsgLibICU.vcproj", "{A76258B4-BAE5-4FAA-B5E3-DB7BE7B43760}" ProjectSection(ProjectDependencies) = postProject {D3EADA85-50F9-4A1D-A2F7-18612358B436} = {D3EADA85-50F9-4A1D-A2F7-18612358B436} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "perf", "Performance\perf.vcproj", "{DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}" ProjectSection(ProjectDependencies) = postProject {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} = {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "All", "All\AllWithICU.vcproj", "{FDDF7AB6-F714-4C89-869C-8919D26403AA}" ProjectSection(ProjectDependencies) = postProject {36DA52E4-C5FD-4BA7-9A58-945EF75865F7} = {36DA52E4-C5FD-4BA7-9A58-945EF75865F7} {F41473DF-6208-4A84-9DEC-AEEA3B4185F2} = {F41473DF-6208-4A84-9DEC-AEEA3B4185F2} {36FBD6C9-AA46-4B4E-A168-82274DA2A01E} = {36FBD6C9-AA46-4B4E-A168-82274DA2A01E} {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2} = {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2} {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761} = {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761} {9C7FB0A8-138B-4732-905F-3EDC00C0D52F} = {9C7FB0A8-138B-4732-905F-3EDC00C0D52F} {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808} = {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808} {CB863D89-F181-4E81-9E48-E7690937C58C} = {CB863D89-F181-4E81-9E48-E7690937C58C} {1D902586-5B5E-41CA-B74C-E9A1A9817527} = {1D902586-5B5E-41CA-B74C-E9A1A9817527} {D3EADA85-50F9-4A1D-A2F7-18612358B436} = {D3EADA85-50F9-4A1D-A2F7-18612358B436} {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5} = {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5} {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929} = {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929} {66BE596B-7BB8-4C96-87DB-714AC31D4A39} = {66BE596B-7BB8-4C96-87DB-714AC31D4A39} {451D3F58-1480-4D96-ABD5-A01BC535CE43} = {451D3F58-1480-4D96-ABD5-A01BC535CE43} {811E8D52-A70D-46E8-A041-6EB6414D419C} = {811E8D52-A70D-46E8-A041-6EB6414D419C} {3DDBE733-0C6D-4C78-BED3-9BBA327754BD} = {3DDBE733-0C6D-4C78-BED3-9BBA327754BD} {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B} = {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B} {67103626-AC3F-49B8-98C1-C78FB1A9F510} = {67103626-AC3F-49B8-98C1-C78FB1A9F510} {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} = {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} {065C0817-2A3F-4B0A-93D2-DB891A451B35} = {065C0817-2A3F-4B0A-93D2-DB891A451B35} {8C50630B-96F5-46EC-B867-BABB36146AE8} = {8C50630B-96F5-46EC-B867-BABB36146AE8} {16AD2005-39BA-4E52-A2C6-F5C3C56901FC} = {16AD2005-39BA-4E52-A2C6-F5C3C56901FC} {FFF75001-7B36-47E8-99DC-ABA8BE82F996} = {FFF75001-7B36-47E8-99DC-ABA8BE82F996} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EntityResolver", "EntityResolver\EntityResolver.vcproj", "{9271D145-FC64-45B1-A1AF-2BF92C83E65C}" ProjectSection(ProjectDependencies) = postProject {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} = {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug|Win32.ActiveCfg = Debug|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug|Win32.Build.0 = Debug|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug|x64.ActiveCfg = Debug|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug|x64.Build.0 = Debug|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release|Win32.ActiveCfg = Release|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release|Win32.Build.0 = Release|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release|x64.ActiveCfg = Release|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release|x64.Build.0 = Release|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug|Win32.ActiveCfg = Debug|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug|Win32.Build.0 = Debug|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug|x64.ActiveCfg = Debug|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug|x64.Build.0 = Debug|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release|Win32.ActiveCfg = Release|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release|Win32.Build.0 = Release|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release|x64.ActiveCfg = Release|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release|x64.Build.0 = Release|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug|Win32.ActiveCfg = Debug|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug|Win32.Build.0 = Debug|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug|x64.ActiveCfg = Debug|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug|x64.Build.0 = Debug|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release|Win32.ActiveCfg = Release|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release|Win32.Build.0 = Release|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release|x64.ActiveCfg = Release|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release|x64.Build.0 = Release|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug|Win32.ActiveCfg = Debug|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug|Win32.Build.0 = Debug|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug|x64.ActiveCfg = Debug|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug|x64.Build.0 = Debug|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release|Win32.ActiveCfg = Release|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release|Win32.Build.0 = Release|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release|x64.ActiveCfg = Release|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release|x64.Build.0 = Release|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug|Win32.ActiveCfg = Debug|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug|Win32.Build.0 = Debug|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug|x64.ActiveCfg = Debug|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug|x64.Build.0 = Debug|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release|Win32.ActiveCfg = Release|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release|Win32.Build.0 = Release|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release|x64.ActiveCfg = Release|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release|x64.Build.0 = Release|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug|Win32.ActiveCfg = Debug|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug|Win32.Build.0 = Debug|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug|x64.ActiveCfg = Debug|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug|x64.Build.0 = Debug|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release|Win32.ActiveCfg = Release|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release|Win32.Build.0 = Release|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release|x64.ActiveCfg = Release|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release|x64.Build.0 = Release|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug|Win32.ActiveCfg = Debug|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug|Win32.Build.0 = Debug|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug|x64.ActiveCfg = Debug|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug|x64.Build.0 = Debug|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release|Win32.ActiveCfg = Release|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release|Win32.Build.0 = Release|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release|x64.ActiveCfg = Release|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release|x64.Build.0 = Release|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug|Win32.ActiveCfg = Debug|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug|Win32.Build.0 = Debug|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug|x64.ActiveCfg = Debug|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug|x64.Build.0 = Debug|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release|Win32.ActiveCfg = Release|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release|Win32.Build.0 = Release|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release|x64.ActiveCfg = Release|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release|x64.Build.0 = Release|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug|Win32.ActiveCfg = Debug|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug|Win32.Build.0 = Debug|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug|x64.ActiveCfg = Debug|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug|x64.Build.0 = Debug|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release|Win32.ActiveCfg = Release|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release|Win32.Build.0 = Release|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release|x64.ActiveCfg = Release|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release|x64.Build.0 = Release|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug|Win32.ActiveCfg = Debug|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug|Win32.Build.0 = Debug|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug|x64.ActiveCfg = Debug|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug|x64.Build.0 = Debug|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release|Win32.ActiveCfg = Release|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release|Win32.Build.0 = Release|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release|x64.ActiveCfg = Release|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release|x64.Build.0 = Release|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug|Win32.ActiveCfg = Debug|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug|Win32.Build.0 = Debug|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug|x64.ActiveCfg = Debug|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug|x64.Build.0 = Debug|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release|Win32.ActiveCfg = Release|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release|Win32.Build.0 = Release|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release|x64.ActiveCfg = Release|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release|x64.Build.0 = Release|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug|Win32.ActiveCfg = Debug|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug|Win32.Build.0 = Debug|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug|x64.ActiveCfg = Debug|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug|x64.Build.0 = Debug|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release|Win32.ActiveCfg = Release|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release|Win32.Build.0 = Release|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release|x64.ActiveCfg = Release|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release|x64.Build.0 = Release|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug|Win32.ActiveCfg = Debug|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug|Win32.Build.0 = Debug|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug|x64.ActiveCfg = Debug|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug|x64.Build.0 = Debug|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release|Win32.ActiveCfg = Release|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release|Win32.Build.0 = Release|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release|x64.ActiveCfg = Release|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release|x64.Build.0 = Release|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug|Win32.ActiveCfg = Debug|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug|Win32.Build.0 = Debug|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug|x64.ActiveCfg = Debug|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug|x64.Build.0 = Debug|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release|Win32.ActiveCfg = Release|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release|Win32.Build.0 = Release|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release|x64.ActiveCfg = Release|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release|x64.Build.0 = Release|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug|Win32.ActiveCfg = Debug|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug|Win32.Build.0 = Debug|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug|x64.ActiveCfg = Debug|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug|x64.Build.0 = Debug|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release|Win32.ActiveCfg = Release|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release|Win32.Build.0 = Release|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release|x64.ActiveCfg = Release|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release|x64.Build.0 = Release|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug|Win32.ActiveCfg = Debug|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug|Win32.Build.0 = Debug|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug|x64.ActiveCfg = Debug|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug|x64.Build.0 = Debug|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release|Win32.ActiveCfg = Release|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release|Win32.Build.0 = Release|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release|x64.ActiveCfg = Release|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release|x64.Build.0 = Release|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug|Win32.ActiveCfg = Debug|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug|Win32.Build.0 = Debug|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug|x64.ActiveCfg = Debug|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug|x64.Build.0 = Debug|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release|Win32.ActiveCfg = Release|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release|Win32.Build.0 = Release|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release|x64.ActiveCfg = Release|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release|x64.Build.0 = Release|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug|Win32.ActiveCfg = Debug|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug|Win32.Build.0 = Debug|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug|x64.ActiveCfg = Debug|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug|x64.Build.0 = Debug|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release|Win32.ActiveCfg = Release|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release|Win32.Build.0 = Release|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release|x64.ActiveCfg = Release|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release|x64.Build.0 = Release|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug|Win32.ActiveCfg = Debug|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug|Win32.Build.0 = Debug|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug|x64.ActiveCfg = Debug|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug|x64.Build.0 = Debug|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release|Win32.ActiveCfg = Release|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release|Win32.Build.0 = Release|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release|x64.ActiveCfg = Release|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release|x64.Build.0 = Release|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug|Win32.ActiveCfg = Debug|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug|Win32.Build.0 = Debug|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug|x64.ActiveCfg = Debug|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug|x64.Build.0 = Debug|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release|Win32.ActiveCfg = Release|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release|Win32.Build.0 = Release|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release|x64.ActiveCfg = Release|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release|x64.Build.0 = Release|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug|Win32.ActiveCfg = Debug|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug|Win32.Build.0 = Debug|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug|x64.ActiveCfg = Debug|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug|x64.Build.0 = Debug|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release|Win32.ActiveCfg = Release|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release|Win32.Build.0 = Release|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release|x64.ActiveCfg = Release|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release|x64.Build.0 = Release|x64 {755AD11C-80B9-4E33-9D3D-9A68884A3EC8}.Debug|Win32.ActiveCfg = Debug|Win32 {755AD11C-80B9-4E33-9D3D-9A68884A3EC8}.Debug|Win32.Build.0 = Debug|Win32 {755AD11C-80B9-4E33-9D3D-9A68884A3EC8}.Debug|x64.ActiveCfg = Debug|x64 {755AD11C-80B9-4E33-9D3D-9A68884A3EC8}.Debug|x64.Build.0 = Debug|x64 {755AD11C-80B9-4E33-9D3D-9A68884A3EC8}.Release|Win32.ActiveCfg = Release|Win32 {755AD11C-80B9-4E33-9D3D-9A68884A3EC8}.Release|Win32.Build.0 = Release|Win32 {755AD11C-80B9-4E33-9D3D-9A68884A3EC8}.Release|x64.ActiveCfg = Release|x64 {755AD11C-80B9-4E33-9D3D-9A68884A3EC8}.Release|x64.Build.0 = Release|x64 {A76258B4-BAE5-4FAA-B5E3-DB7BE7B43760}.Debug|Win32.ActiveCfg = Debug|Win32 {A76258B4-BAE5-4FAA-B5E3-DB7BE7B43760}.Debug|Win32.Build.0 = Debug|Win32 {A76258B4-BAE5-4FAA-B5E3-DB7BE7B43760}.Debug|x64.ActiveCfg = Debug|x64 {A76258B4-BAE5-4FAA-B5E3-DB7BE7B43760}.Debug|x64.Build.0 = Debug|x64 {A76258B4-BAE5-4FAA-B5E3-DB7BE7B43760}.Release|Win32.ActiveCfg = Release|Win32 {A76258B4-BAE5-4FAA-B5E3-DB7BE7B43760}.Release|Win32.Build.0 = Release|Win32 {A76258B4-BAE5-4FAA-B5E3-DB7BE7B43760}.Release|x64.ActiveCfg = Release|x64 {A76258B4-BAE5-4FAA-B5E3-DB7BE7B43760}.Release|x64.Build.0 = Release|x64 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Debug|Win32.ActiveCfg = Debug|Win32 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Debug|Win32.Build.0 = Debug|Win32 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Debug|x64.ActiveCfg = Debug|x64 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Debug|x64.Build.0 = Debug|x64 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Release|Win32.ActiveCfg = Release|Win32 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Release|Win32.Build.0 = Release|Win32 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Release|x64.ActiveCfg = Release|x64 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Release|x64.Build.0 = Release|x64 {FDDF7AB6-F714-4C89-869C-8919D26403AA}.Debug|Win32.ActiveCfg = Debug|Win32 {FDDF7AB6-F714-4C89-869C-8919D26403AA}.Debug|Win32.Build.0 = Debug|Win32 {FDDF7AB6-F714-4C89-869C-8919D26403AA}.Debug|x64.ActiveCfg = Debug|x64 {FDDF7AB6-F714-4C89-869C-8919D26403AA}.Debug|x64.Build.0 = Debug|x64 {FDDF7AB6-F714-4C89-869C-8919D26403AA}.Release|Win32.ActiveCfg = Release|Win32 {FDDF7AB6-F714-4C89-869C-8919D26403AA}.Release|Win32.Build.0 = Release|Win32 {FDDF7AB6-F714-4C89-869C-8919D26403AA}.Release|x64.ActiveCfg = Release|x64 {FDDF7AB6-F714-4C89-869C-8919D26403AA}.Release|x64.Build.0 = Release|x64 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Debug|Win32.ActiveCfg = Debug|Win32 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Debug|Win32.Build.0 = Debug|Win32 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Debug|x64.ActiveCfg = Debug|x64 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Debug|x64.Build.0 = Debug|x64 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Release|Win32.ActiveCfg = Release|Win32 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Release|Win32.Build.0 = Release|Win32 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Release|x64.ActiveCfg = Release|x64 {9271D145-FC64-45B1-A1AF-2BF92C83E65C}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal xalan-c-1.11/c/Projects/Win32/VC9/0002775000175000000640000000000012037700125015266 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/ParsedSourceWrappers/0002775000175000000640000000000012037700125021411 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/ParsedSourceWrappers/ParsedSourceWrappers.vcproj0000664000175000000640000004266211731656103026777 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/TestXPath/0002775000175000000640000000000012037700125017152 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/TestXPath/TestXPath.vcproj0000664000175000000640000004313311731656103022273 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/Conf/0002775000175000000640000000000012037700125016153 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/Conf/conf.vcproj0000664000175000000640000004401411731656103020334 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/DocumentBuilder/0002775000175000000640000000000012037700125020353 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/DocumentBuilder/DocumentBuilder.vcproj0000664000175000000640000004263611731656103024704 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/SimpleTransform/0002775000175000000640000000000012037700125020413 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/SimpleTransform/SimpleTransform.vcproj0000664000175000000640000004263611731656103025004 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/UseStylesheetParam/0002775000175000000640000000000012037700125021055 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/UseStylesheetParam/UseStylesheetParam.vcproj0000664000175000000640000004265211731656103026106 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/StreamTransform/0002775000175000000640000000000012037700125020415 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/StreamTransform/StreamTransform.vcproj0000664000175000000640000004216611731656103025006 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/TransformToXercesDOM/0002775000175000000640000000000012037700125021256 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/TransformToXercesDOM/TransformToXercesDOM.vcproj0000664000175000000640000004266211731656103026511 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/ExternalFunction/0002775000175000000640000000000012037700125020556 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/ExternalFunction/ExternalFunction.vcproj0000664000175000000640000004264211731656103025307 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/SimpleXPathAPI/0002775000175000000640000000000012037700125020016 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/SimpleXPathAPI/SimpleXPathAPI.vcproj0000664000175000000640000004263211731656103024006 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/TestXSLT/0002775000175000000640000000000012037700125016720 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/TestXSLT/TestXSLT.vcproj0000664000175000000640000004273211731656103021613 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/SimpleXPathCAPI/0002775000175000000640000000000012037700125020121 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/SimpleXPathCAPI/SimpleXPathCAPI.vcproj0000664000175000000640000004266411731656103024221 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/EntityResolver/0002775000175000000640000000000012037700125020264 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/EntityResolver/EntityResolver.vcproj0000664000175000000640000004263211731656103024522 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/XalanTransform/0002775000175000000640000000000012037700125020225 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/XalanTransform/XalanTransform.vcproj0000664000175000000640000004262011731656103024421 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/Utils/0002775000175000000640000000000012037700125016366 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/Utils/XalanMsgLib/0002775000175000000640000000000012037700125020527 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/Utils/XalanMsgLib/XalanMsgLib.vcproj0000664000175000000640000003744711731656103024140 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/Utils/XalanMsgLib/XalanMsgLibICU.vcproj0000664000175000000640000002765511731656103024501 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/Utils/XalanMsgLib/XalanMsgLib.rules0000664000175000000640000000106511731656103023752 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/Utils/XalanMsgLib/XalanMsgLibICU.rules0000664000175000000640000000340011731656103024306 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/Utils/MsgCreator/0002775000175000000640000000000012037700125020434 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/Utils/MsgCreator/MsgCreator.vcproj0000664000175000000640000004342011731656103023736 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/Performance/0002775000175000000640000000000012037700125017527 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/Performance/perf.vcproj0000664000175000000640000005253711731656103021730 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/AllInOne/0002775000175000000640000000000012037700125016727 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/AllInOne/AllInOneWithICU.vcproj0000664000175000000640000025733211731656103023032 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/AllInOne/AllInOne.vcproj0000664000175000000640000032311011731656103021621 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/CompileStylesheet/0002775000175000000640000000000012037700125020730 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/CompileStylesheet/CompileStylesheet.vcproj0000664000175000000640000004264611731656103025637 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/XalanTransformerCallback/0002775000175000000640000000000012037700125022171 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/XalanTransformerCallback/XalanTransformerCallback.vcproj0000664000175000000640000004267011731656103030336 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/XalanExe/0002775000175000000640000000000012037700125016773 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/XalanExe/XalanExe.vcproj0000664000175000000640000004764711731656103021753 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/ThreadSafe/0002775000175000000640000000000012037700125017274 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/ThreadSafe/ThreadSafe.vcproj0000664000175000000640000004261211731656103022540 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/ThreadTest/0002775000175000000640000000000012037700125017335 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/ThreadTest/ThreadTest.vcproj0000664000175000000640000004260511731656103022644 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/All/0002775000175000000640000000000012037700125015776 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/All/AllWithICU.vcproj0000664000175000000640000000421711731656103021140 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/All/All.vcproj0000664000175000000640000000755611731656103017754 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/SerializeNodeSet/0002775000175000000640000000000012037700125020477 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/SerializeNodeSet/SerializeNodeSet.vcproj0000664000175000000640000004264211731656103025151 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/TraceListen/0002775000175000000640000000000012037700125017503 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC9/TraceListen/TraceListen.vcproj0000664000175000000640000004261611731656103023162 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC9/Xalan.sln0000664000175000000640000013211211731656103017053 0ustar stevesambaMicrosoft Visual Studio Solution File, Format Version 10.00 # Visual Studio 2008 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MsgCreator", "Utils\MsgCreator\MsgCreator.vcproj", "{D3EADA85-50F9-4A1D-A2F7-18612358B436}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanMsgLib", "Utils\XalanMsgLib\XalanMsgLib.vcproj", "{E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}" ProjectSection(ProjectDependencies) = postProject {D3EADA85-50F9-4A1D-A2F7-18612358B436} = {D3EADA85-50F9-4A1D-A2F7-18612358B436} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AllInOne", "AllInOne\AllInOne.vcproj", "{E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}" ProjectSection(ProjectDependencies) = postProject {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092} = {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "conf", "conf\conf.vcproj", "{36DA52E4-C5FD-4BA7-9A58-945EF75865F7}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanExe", "XalanExe\XalanExe.vcproj", "{865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CompileStylesheet", "CompileStylesheet\CompileStylesheet.vcproj", "{5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DocumentBuilder", "DocumentBuilder\DocumentBuilder.vcproj", "{F41473DF-6208-4A84-9DEC-AEEA3B4185F2}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ExternalFunction", "ExternalFunction\ExternalFunction.vcproj", "{CB863D89-F181-4E81-9E48-E7690937C58C}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ParsedSourceWrappers", "ParsedSourceWrappers\ParsedSourceWrappers.vcproj", "{451D3F58-1480-4D96-ABD5-A01BC535CE43}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SerializeNodeSet", "SerializeNodeSet\SerializeNodeSet.vcproj", "{CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleTransform", "SimpleTransform\SimpleTransform.vcproj", "{36FBD6C9-AA46-4B4E-A168-82274DA2A01E}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleXPathAPI", "SimpleXPathAPI\SimpleXPathAPI.vcproj", "{811E8D52-A70D-46E8-A041-6EB6414D419C}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleXPathCAPI", "SimpleXPathCAPI\SimpleXPathCAPI.vcproj", "{3DDBE733-0C6D-4C78-BED3-9BBA327754BD}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StreamTransform", "StreamTransform\StreamTransform.vcproj", "{065C0817-2A3F-4B0A-93D2-DB891A451B35}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestXPath", "TestXPath\TestXPath.vcproj", "{67103626-AC3F-49B8-98C1-C78FB1A9F510}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestXSLT", "TestXSLT\TestXSLT.vcproj", "{06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ThreadSafe", "ThreadSafe\ThreadSafe.vcproj", "{1D902586-5B5E-41CA-B74C-E9A1A9817527}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ThreadTest", "ThreadTest\ThreadTest.vcproj", "{9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TraceListen", "TraceListen\TraceListen.vcproj", "{66BE596B-7BB8-4C96-87DB-714AC31D4A39}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TransformToXercesDOM", "TransformToXercesDOM\TransformToXercesDOM.vcproj", "{FFF75001-7B36-47E8-99DC-ABA8BE82F996}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UseStylesheetParam", "UseStylesheetParam\UseStylesheetParam.vcproj", "{9C7FB0A8-138B-4732-905F-3EDC00C0D52F}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanTransform", "XalanTransform\XalanTransform.vcproj", "{16AD2005-39BA-4E52-A2C6-F5C3C56901FC}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanTransformerCallback", "XalanTransformerCallback\XalanTransformerCallback.vcproj", "{8C50630B-96F5-46EC-B867-BABB36146AE8}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "All", "All\All.vcproj", "{C5513096-5115-434E-9785-4D1DEC12EB2B}" ProjectSection(ProjectDependencies) = postProject {FFF75001-7B36-47E8-99DC-ABA8BE82F996} = {FFF75001-7B36-47E8-99DC-ABA8BE82F996} {16AD2005-39BA-4E52-A2C6-F5C3C56901FC} = {16AD2005-39BA-4E52-A2C6-F5C3C56901FC} {8C50630B-96F5-46EC-B867-BABB36146AE8} = {8C50630B-96F5-46EC-B867-BABB36146AE8} {065C0817-2A3F-4B0A-93D2-DB891A451B35} = {065C0817-2A3F-4B0A-93D2-DB891A451B35} {67103626-AC3F-49B8-98C1-C78FB1A9F510} = {67103626-AC3F-49B8-98C1-C78FB1A9F510} {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B} = {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B} {3DDBE733-0C6D-4C78-BED3-9BBA327754BD} = {3DDBE733-0C6D-4C78-BED3-9BBA327754BD} {811E8D52-A70D-46E8-A041-6EB6414D419C} = {811E8D52-A70D-46E8-A041-6EB6414D419C} {451D3F58-1480-4D96-ABD5-A01BC535CE43} = {451D3F58-1480-4D96-ABD5-A01BC535CE43} {66BE596B-7BB8-4C96-87DB-714AC31D4A39} = {66BE596B-7BB8-4C96-87DB-714AC31D4A39} {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929} = {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929} {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5} = {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5} {1D902586-5B5E-41CA-B74C-E9A1A9817527} = {1D902586-5B5E-41CA-B74C-E9A1A9817527} {CB863D89-F181-4E81-9E48-E7690937C58C} = {CB863D89-F181-4E81-9E48-E7690937C58C} {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808} = {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808} {9C7FB0A8-138B-4732-905F-3EDC00C0D52F} = {9C7FB0A8-138B-4732-905F-3EDC00C0D52F} {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2} = {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2} {36FBD6C9-AA46-4B4E-A168-82274DA2A01E} = {36FBD6C9-AA46-4B4E-A168-82274DA2A01E} {F41473DF-6208-4A84-9DEC-AEEA3B4185F2} = {F41473DF-6208-4A84-9DEC-AEEA3B4185F2} {36DA52E4-C5FD-4BA7-9A58-945EF75865F7} = {36DA52E4-C5FD-4BA7-9A58-945EF75865F7} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "perf", "Performance\perf.vcproj", "{DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EntityResolver", "EntityResolver\EntityResolver.vcproj", "{5008A0C4-7F75-4C41-BB25-D6DF75713A80}" ProjectSection(ProjectDependencies) = postProject {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} = {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug with ICU|Win32 = Debug with ICU|Win32 Debug with ICU|x64 = Debug with ICU|x64 Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Release with ICU|Win32 = Release with ICU|Win32 Release with ICU|x64 = Release with ICU|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug|Win32.ActiveCfg = Debug|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug|Win32.Build.0 = Debug|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug|x64.ActiveCfg = Debug|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug|x64.Build.0 = Debug|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release with ICU|x64.Build.0 = Release with ICU|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release|Win32.ActiveCfg = Release|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release|Win32.Build.0 = Release|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release|x64.ActiveCfg = Release|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release|x64.Build.0 = Release|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug|Win32.ActiveCfg = Debug|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug|Win32.Build.0 = Debug|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug|x64.ActiveCfg = Debug|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug|x64.Build.0 = Debug|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release with ICU|x64.Build.0 = Release with ICU|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release|Win32.ActiveCfg = Release|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release|Win32.Build.0 = Release|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release|x64.ActiveCfg = Release|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release|x64.Build.0 = Release|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug|Win32.ActiveCfg = Debug|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug|Win32.Build.0 = Debug|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug|x64.ActiveCfg = Debug|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug|x64.Build.0 = Debug|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release with ICU|x64.Build.0 = Release with ICU|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release|Win32.ActiveCfg = Release|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release|Win32.Build.0 = Release|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release|x64.ActiveCfg = Release|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release|x64.Build.0 = Release|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug|Win32.ActiveCfg = Debug|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug|Win32.Build.0 = Debug|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug|x64.ActiveCfg = Debug|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug|x64.Build.0 = Debug|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release with ICU|x64.Build.0 = Release with ICU|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release|Win32.ActiveCfg = Release|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release|Win32.Build.0 = Release|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release|x64.ActiveCfg = Release|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release|x64.Build.0 = Release|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug|Win32.ActiveCfg = Debug|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug|Win32.Build.0 = Debug|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug|x64.ActiveCfg = Debug|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug|x64.Build.0 = Debug|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release with ICU|x64.Build.0 = Release with ICU|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release|Win32.ActiveCfg = Release|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release|Win32.Build.0 = Release|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release|x64.ActiveCfg = Release|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release|x64.Build.0 = Release|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug|Win32.ActiveCfg = Debug|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug|Win32.Build.0 = Debug|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug|x64.ActiveCfg = Debug|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug|x64.Build.0 = Debug|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release with ICU|x64.Build.0 = Release with ICU|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release|Win32.ActiveCfg = Release|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release|Win32.Build.0 = Release|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release|x64.ActiveCfg = Release|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release|x64.Build.0 = Release|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug|Win32.ActiveCfg = Debug|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug|Win32.Build.0 = Debug|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug|x64.ActiveCfg = Debug|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug|x64.Build.0 = Debug|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release with ICU|x64.Build.0 = Release with ICU|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release|Win32.ActiveCfg = Release|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release|Win32.Build.0 = Release|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release|x64.ActiveCfg = Release|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release|x64.Build.0 = Release|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug|Win32.ActiveCfg = Debug|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug|Win32.Build.0 = Debug|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug|x64.ActiveCfg = Debug|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug|x64.Build.0 = Debug|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release with ICU|x64.Build.0 = Release with ICU|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release|Win32.ActiveCfg = Release|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release|Win32.Build.0 = Release|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release|x64.ActiveCfg = Release|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release|x64.Build.0 = Release|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug|Win32.ActiveCfg = Debug|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug|Win32.Build.0 = Debug|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug|x64.ActiveCfg = Debug|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug|x64.Build.0 = Debug|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release with ICU|x64.Build.0 = Release with ICU|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release|Win32.ActiveCfg = Release|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release|Win32.Build.0 = Release|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release|x64.ActiveCfg = Release|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release|x64.Build.0 = Release|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug|Win32.ActiveCfg = Debug|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug|Win32.Build.0 = Debug|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug|x64.ActiveCfg = Debug|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug|x64.Build.0 = Debug|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release with ICU|x64.Build.0 = Release with ICU|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release|Win32.ActiveCfg = Release|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release|Win32.Build.0 = Release|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release|x64.ActiveCfg = Release|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release|x64.Build.0 = Release|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug|Win32.ActiveCfg = Debug|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug|Win32.Build.0 = Debug|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug|x64.ActiveCfg = Debug|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug|x64.Build.0 = Debug|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release with ICU|x64.Build.0 = Release with ICU|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release|Win32.ActiveCfg = Release|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release|Win32.Build.0 = Release|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release|x64.ActiveCfg = Release|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release|x64.Build.0 = Release|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug|Win32.ActiveCfg = Debug|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug|Win32.Build.0 = Debug|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug|x64.ActiveCfg = Debug|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug|x64.Build.0 = Debug|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release with ICU|x64.Build.0 = Release with ICU|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release|Win32.ActiveCfg = Release|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release|Win32.Build.0 = Release|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release|x64.ActiveCfg = Release|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release|x64.Build.0 = Release|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug|Win32.ActiveCfg = Debug|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug|Win32.Build.0 = Debug|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug|x64.ActiveCfg = Debug|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug|x64.Build.0 = Debug|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release with ICU|x64.Build.0 = Release with ICU|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release|Win32.ActiveCfg = Release|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release|Win32.Build.0 = Release|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release|x64.ActiveCfg = Release|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release|x64.Build.0 = Release|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug|Win32.ActiveCfg = Debug|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug|Win32.Build.0 = Debug|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug|x64.ActiveCfg = Debug|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug|x64.Build.0 = Debug|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release with ICU|x64.Build.0 = Release with ICU|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release|Win32.ActiveCfg = Release|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release|Win32.Build.0 = Release|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release|x64.ActiveCfg = Release|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release|x64.Build.0 = Release|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug|Win32.ActiveCfg = Debug|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug|Win32.Build.0 = Debug|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug|x64.ActiveCfg = Debug|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug|x64.Build.0 = Debug|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release with ICU|x64.Build.0 = Release with ICU|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release|Win32.ActiveCfg = Release|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release|Win32.Build.0 = Release|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release|x64.ActiveCfg = Release|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release|x64.Build.0 = Release|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug|Win32.ActiveCfg = Debug|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug|Win32.Build.0 = Debug|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug|x64.ActiveCfg = Debug|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug|x64.Build.0 = Debug|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release with ICU|x64.Build.0 = Release with ICU|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release|Win32.ActiveCfg = Release|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release|Win32.Build.0 = Release|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release|x64.ActiveCfg = Release|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release|x64.Build.0 = Release|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug|Win32.ActiveCfg = Debug|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug|Win32.Build.0 = Debug|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug|x64.ActiveCfg = Debug|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug|x64.Build.0 = Debug|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release with ICU|x64.Build.0 = Release with ICU|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release|Win32.ActiveCfg = Release|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release|Win32.Build.0 = Release|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release|x64.ActiveCfg = Release|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release|x64.Build.0 = Release|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug|Win32.ActiveCfg = Debug|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug|Win32.Build.0 = Debug|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug|x64.ActiveCfg = Debug|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug|x64.Build.0 = Debug|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release with ICU|x64.Build.0 = Release with ICU|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release|Win32.ActiveCfg = Release|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release|Win32.Build.0 = Release|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release|x64.ActiveCfg = Release|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release|x64.Build.0 = Release|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug|Win32.ActiveCfg = Debug|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug|Win32.Build.0 = Debug|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug|x64.ActiveCfg = Debug|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug|x64.Build.0 = Debug|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release with ICU|x64.Build.0 = Release with ICU|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release|Win32.ActiveCfg = Release|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release|Win32.Build.0 = Release|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release|x64.ActiveCfg = Release|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release|x64.Build.0 = Release|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug|Win32.ActiveCfg = Debug|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug|Win32.Build.0 = Debug|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug|x64.ActiveCfg = Debug|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug|x64.Build.0 = Debug|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release with ICU|x64.Build.0 = Release with ICU|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release|Win32.ActiveCfg = Release|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release|Win32.Build.0 = Release|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release|x64.ActiveCfg = Release|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release|x64.Build.0 = Release|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug|Win32.ActiveCfg = Debug|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug|Win32.Build.0 = Debug|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug|x64.ActiveCfg = Debug|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug|x64.Build.0 = Debug|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release with ICU|x64.Build.0 = Release with ICU|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release|Win32.ActiveCfg = Release|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release|Win32.Build.0 = Release|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release|x64.ActiveCfg = Release|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release|x64.Build.0 = Release|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug|Win32.ActiveCfg = Debug|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug|Win32.Build.0 = Debug|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug|x64.ActiveCfg = Debug|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug|x64.Build.0 = Debug|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release with ICU|x64.Build.0 = Release with ICU|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release|Win32.ActiveCfg = Release|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release|Win32.Build.0 = Release|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release|x64.ActiveCfg = Release|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release|x64.Build.0 = Release|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug|Win32.ActiveCfg = Debug|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug|Win32.Build.0 = Debug|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug|x64.ActiveCfg = Debug|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug|x64.Build.0 = Debug|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release with ICU|x64.Build.0 = Release with ICU|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release|Win32.ActiveCfg = Release|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release|Win32.Build.0 = Release|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release|x64.ActiveCfg = Release|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release|x64.Build.0 = Release|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug|Win32.ActiveCfg = Debug|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug|Win32.Build.0 = Debug|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug|x64.ActiveCfg = Debug|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug|x64.Build.0 = Debug|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release with ICU|x64.Build.0 = Release with ICU|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release|Win32.ActiveCfg = Release|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release|Win32.Build.0 = Release|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release|x64.ActiveCfg = Release|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release|x64.Build.0 = Release|x64 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Debug|Win32.ActiveCfg = Debug|Win32 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Debug|Win32.Build.0 = Debug|Win32 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Debug|x64.ActiveCfg = Debug|x64 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Debug|x64.Build.0 = Debug|x64 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Release with ICU|x64.Build.0 = Release with ICU|x64 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Release|Win32.ActiveCfg = Release|Win32 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Release|Win32.Build.0 = Release|Win32 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Release|x64.ActiveCfg = Release|x64 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Release|x64.Build.0 = Release|x64 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Debug|Win32.ActiveCfg = Debug|Win32 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Debug|Win32.Build.0 = Debug|Win32 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Debug|x64.ActiveCfg = Debug|x64 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Debug|x64.Build.0 = Debug|x64 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Release with ICU|x64.Build.0 = Release with ICU|x64 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Release|Win32.ActiveCfg = Release|Win32 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Release|Win32.Build.0 = Release|Win32 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Release|x64.ActiveCfg = Release|x64 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal xalan-c-1.11/c/Projects/Win32/Res/0002775000175000000640000000000012037700125015416 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/Res/AllInOne/0002775000175000000640000000000012037700125017057 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/Res/AllInOne/AllInOne.rc0000664000175000000640000000461611731656103021061 0ustar stevesamba// Microsoft Visual C++ generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "afxres.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 ///////////////////////////////////////////////////////////////////////////// // // Version // VS_VERSION_INFO VERSIONINFO FILEVERSION 1,11,0,0 PRODUCTVERSION 1,11,0,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x2L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904b0" BEGIN VALUE "Comments", "Dynamic linked library for Xalan-C++" VALUE "CompanyName", "Apache Software Foundation" VALUE "FileDescription", "Dynamic Link Library for Xalan-C++ Version 1.11.0" VALUE "FileVersion", "1, 11, 0, 0" VALUE "InternalName", "Xalan-C_1_11_0.dll" VALUE "LegalCopyright", "Copyright Apache Software Foundation 1999-2008. Subject to licensing terms" VALUE "OriginalFilename", "Xalan-C_1_11_0.dll" VALUE "ProductName", "Xalan-C++ Version 1.11.0" VALUE "ProductVersion", "1, 11, 0, 0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1200 END END #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE BEGIN "resource.h\0" END 2 TEXTINCLUDE BEGIN "#include ""afxres.h""\r\n" "\r\n" "\0" END 3 TEXTINCLUDE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED xalan-c-1.11/c/Projects/Win32/Res/AllInOne/resource.h0000664000175000000640000000066711731656103021074 0ustar stevesamba//{{NO_DEPENDENCIES}} // Microsoft Developer Studio generated include file. // Used by AllInOne.rc // #define DummyString 1 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 102 #define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_CONTROL_VALUE 1000 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif xalan-c-1.11/c/Projects/Win32/Res/Localization/0002775000175000000640000000000012037700125020046 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/Res/Localization/Localization.rc0000664000175000000640000000501011731656103023024 0ustar stevesamba// Microsoft Visual C++ 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 ///////////////////////////////////////////////////////////////////////////// // // Version // VS_VERSION_INFO VERSIONINFO FILEVERSION 1,11,0,0 PRODUCTVERSION 1,11,0,0 FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x2L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "080004b0" BEGIN VALUE "Comments", "Dynamic linked library with messages for Xalan-C++" VALUE "CompanyName", "Apache Software Foundation" VALUE "FileDescription", "Dynamic Link Library for Xalan-C++ Messages Version 1.11.0" VALUE "FileVersion", "1, 11, 0, 0" VALUE "InternalName", "XalanMessages_1_11.dll" VALUE "LegalCopyright", "Copyright Apache Software Foundation 1999-2008. Subject to licensing terms" VALUE "OriginalFilename", "XalanMessages_1_11.dll" VALUE "ProductName", "Xalan-C++ Version 1.11.0" VALUE "ProductVersion", "1, 11, 0, 0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x800, 1200 END END #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE BEGIN "resource.h\0" END 2 TEXTINCLUDE BEGIN "#include ""winres.h""\r\n" "\0" END 3 TEXTINCLUDE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED xalan-c-1.11/c/Projects/Win32/Res/Localization/resource.h0000664000175000000640000000062611731656103022056 0ustar stevesamba//{{NO_DEPENDENCIES}} // Microsoft Visual C++ generated include file. // Used by Localization.rc // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 101 #define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_CONTROL_VALUE 1001 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif xalan-c-1.11/c/Projects/Win32/VC10/0002775000175000000640000000000012037700125015336 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/ParsedSourceWrappers/0002775000175000000640000000000012037700125021461 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/ParsedSourceWrappers/ParsedSourceWrappers.vcxproj.filters0000664000175000000640000000174511731656103030703 0ustar stevesamba {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files xalan-c-1.11/c/Projects/Win32/VC10/ParsedSourceWrappers/ParsedSourceWrappers.vcxproj0000664000175000000640000006565611731656103027247 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43} ParsedSourceWrappers Win32Proj Application NotSet Application NotSet true Application NotSet true Application NotSet Application NotSet Application NotSet true Application NotSet true Application NotSet <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false {e1d6306e-4ff8-474a-be7f-45dcba4888b6} false {755ad11c-80b9-4e33-9d3d-9a68884a3ec8} false xalan-c-1.11/c/Projects/Win32/VC10/TestXPath/0002775000175000000640000000000012037700125017222 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/TestXPath/TestXPath.vcxproj.filters0000664000175000000640000000240511731656103024177 0ustar stevesamba {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Header Files xalan-c-1.11/c/Projects/Win32/VC10/TestXPath/TestXPath.vcxproj0000664000175000000640000006613111731656103022536 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510} TestXPath Win32Proj Application NotSet Application NotSet true Application NotSet true Application NotSet Application NotSet Application NotSet true Application NotSet true Application NotSet <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false {e1d6306e-4ff8-474a-be7f-45dcba4888b6} false {755ad11c-80b9-4e33-9d3d-9a68884a3ec8} false xalan-c-1.11/c/Projects/Win32/VC10/Conf/0002775000175000000640000000000012037700125016223 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/Conf/conf.vcxproj0000664000175000000640000007011011731656103020570 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7} conf Win32Proj Application NotSet Application Unicode true Application Unicode true Application NotSet Application NotSet Application Unicode true Application Unicode true Application NotSet <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Precise true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Precise true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false Full AnySuitable true Speed true false $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) true MultiThreadedDLL true Strict true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true false $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) true MultiThreadedDLL true Strict true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Full AnySuitable true Speed true false $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) true MultiThreadedDLL true Strict true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true false $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) true MultiThreadedDLL true Strict true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Precise true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Precise true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false {e1d6306e-4ff8-474a-be7f-45dcba4888b6} false {755ad11c-80b9-4e33-9d3d-9a68884a3ec8} false xalan-c-1.11/c/Projects/Win32/VC10/Conf/conf.vcxproj.filters0000664000175000000640000000170311731656103022241 0ustar stevesamba {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files xalan-c-1.11/c/Projects/Win32/VC10/DocumentBuilder/0002775000175000000640000000000012037700125020423 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/DocumentBuilder/DocumentBuilder.vcxproj0000664000175000000640000006563711731656103025152 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2} DocumentBuilder Win32Proj Application NotSet Application NotSet true Application NotSet true Application NotSet Application NotSet Application NotSet true Application NotSet true Application NotSet <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) false Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false {e1d6306e-4ff8-474a-be7f-45dcba4888b6} false {755ad11c-80b9-4e33-9d3d-9a68884a3ec8} false xalan-c-1.11/c/Projects/Win32/VC10/DocumentBuilder/DocumentBuilder.vcxproj.filters0000664000175000000640000000173311731656103026604 0ustar stevesamba {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files xalan-c-1.11/c/Projects/Win32/VC10/SimpleTransform/0002775000175000000640000000000012037700125020463 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/SimpleTransform/SimpleTransform.vcxproj0000664000175000000640000006563711731656103025252 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E} SimpleTransform Win32Proj Application NotSet Application NotSet true Application NotSet true Application NotSet Application NotSet Application NotSet true Application NotSet true Application NotSet <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false {e1d6306e-4ff8-474a-be7f-45dcba4888b6} false {755ad11c-80b9-4e33-9d3d-9a68884a3ec8} false xalan-c-1.11/c/Projects/Win32/VC10/SimpleTransform/SimpleTransform.vcxproj.filters0000664000175000000640000000173311731656103026704 0ustar stevesamba {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files xalan-c-1.11/c/Projects/Win32/VC10/UseStylesheetParam/0002775000175000000640000000000012037700125021125 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/UseStylesheetParam/UseStylesheetParam.vcxproj0000664000175000000640000006565011731656103026351 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F} UseStylesheetParam Win32Proj Application NotSet Application NotSet true Application NotSet true Application NotSet Application NotSet Application NotSet true Application NotSet true Application NotSet <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false {e1d6306e-4ff8-474a-be7f-45dcba4888b6} false {755ad11c-80b9-4e33-9d3d-9a68884a3ec8} false xalan-c-1.11/c/Projects/Win32/VC10/UseStylesheetParam/UseStylesheetParam.vcxproj.filters0000664000175000000640000000174111731656103030007 0ustar stevesamba {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files xalan-c-1.11/c/Projects/Win32/VC10/StreamTransform/0002775000175000000640000000000012037700125020465 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/StreamTransform/StreamTransform.vcxproj0000664000175000000640000006563711731656103025256 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35} StreamTransform Win32Proj Application NotSet Application NotSet true Application NotSet true Application NotSet Application NotSet Application NotSet true Application NotSet true Application NotSet <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false {e1d6306e-4ff8-474a-be7f-45dcba4888b6} false {755ad11c-80b9-4e33-9d3d-9a68884a3ec8} false xalan-c-1.11/c/Projects/Win32/VC10/StreamTransform/StreamTransform.vcxproj.filters0000664000175000000640000000173311731656103026710 0ustar stevesamba {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files xalan-c-1.11/c/Projects/Win32/VC10/TransformToXercesDOM/0002775000175000000640000000000012037700125021326 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/TransformToXercesDOM/TransformToXercesDOM.vcxproj0000664000175000000640000006565611731656103026761 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996} TransformToXercesDOM Win32Proj Application NotSet Application NotSet true Application NotSet true Application NotSet Application NotSet Application NotSet true Application NotSet true Application NotSet <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false {e1d6306e-4ff8-474a-be7f-45dcba4888b6} false {755ad11c-80b9-4e33-9d3d-9a68884a3ec8} false xalan-c-1.11/c/Projects/Win32/VC10/TransformToXercesDOM/TransformToXercesDOM.vcxproj.filters0000664000175000000640000000174511731656103030415 0ustar stevesamba {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files xalan-c-1.11/c/Projects/Win32/VC10/ExternalFunction/0002775000175000000640000000000012037700125020626 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/ExternalFunction/ExternalFunction.vcxproj0000664000175000000640000006564211731656103025554 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {CB863D89-F181-4E81-9E48-E7690937C58C} ExternalFunction Win32Proj Application NotSet Application NotSet true Application NotSet true Application NotSet Application NotSet Application NotSet true Application NotSet true Application NotSet <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false {e1d6306e-4ff8-474a-be7f-45dcba4888b6} false {755ad11c-80b9-4e33-9d3d-9a68884a3ec8} false xalan-c-1.11/c/Projects/Win32/VC10/ExternalFunction/ExternalFunction.vcxproj.filters0000664000175000000640000000173511731656103027214 0ustar stevesamba {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files xalan-c-1.11/c/Projects/Win32/VC10/SimpleXPathAPI/0002775000175000000640000000000012037700125020066 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/SimpleXPathAPI/SimpleXPathAPI.vcxproj0000664000175000000640000006563411731656103024255 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {811E8D52-A70D-46E8-A041-6EB6414D419C} SimpleXPathAPI Win32Proj Application NotSet Application NotSet true Application NotSet true Application NotSet Application NotSet Application NotSet true Application NotSet true Application NotSet <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false {e1d6306e-4ff8-474a-be7f-45dcba4888b6} false {755ad11c-80b9-4e33-9d3d-9a68884a3ec8} false xalan-c-1.11/c/Projects/Win32/VC10/SimpleXPathAPI/SimpleXPathAPI.vcxproj.filters0000664000175000000640000000173111731656103025710 0ustar stevesamba {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files xalan-c-1.11/c/Projects/Win32/VC10/TestXSLT/0002775000175000000640000000000012037700125016770 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/TestXSLT/TestXSLT.vcxproj0000664000175000000640000006625511731656103022061 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929} TestXSLT Win32Proj Application NotSet Application NotSet true Application NotSet true Application NotSet Application NotSet Application NotSet true Application NotSet true Application NotSet <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;$(ICUROOT)\include;%(AdditionalIncludeDirectories) NDEBUG;XALAN_USE_ICU;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);$(ICUROOT)\lib;%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;$(ICUROOT64)\include;$(ICUROOT)\include;%(AdditionalIncludeDirectories) NDEBUG;XALAN_USE_ICU;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;$(ICUROOT)\include;%(AdditionalIncludeDirectories) XALAN_USE_ICU;%(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);$(ICUROOT)\lib;%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;$(ICUROOT64)\include;$(ICUROOT)\include;%(AdditionalIncludeDirectories) XALAN_USE_ICU;%(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false {e1d6306e-4ff8-474a-be7f-45dcba4888b6} false {755ad11c-80b9-4e33-9d3d-9a68884a3ec8} false xalan-c-1.11/c/Projects/Win32/VC10/TestXSLT/TestXSLT.vcxproj.filters0000664000175000000640000000171711731656103023520 0ustar stevesamba {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files xalan-c-1.11/c/Projects/Win32/VC10/SimpleXPathCAPI/0002775000175000000640000000000012037700125020171 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/SimpleXPathCAPI/SimpleXPathCAPI.vcxproj0000664000175000000640000006563511731656103024464 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD} SimpleXPathCAPI Win32Proj Application NotSet Application NotSet true Application NotSet true Application NotSet Application NotSet Application NotSet true Application NotSet true Application NotSet <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false {e1d6306e-4ff8-474a-be7f-45dcba4888b6} false {755ad11c-80b9-4e33-9d3d-9a68884a3ec8} false xalan-c-1.11/c/Projects/Win32/VC10/SimpleXPathCAPI/SimpleXPathCAPI.vcxproj.filters0000664000175000000640000000173111731656103026116 0ustar stevesamba {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files xalan-c-1.11/c/Projects/Win32/VC10/EntityResolver/0002775000175000000640000000000012037700125020334 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/EntityResolver/EntityResolver.vcxproj.filters0000664000175000000640000000173111731656103026424 0ustar stevesamba {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files xalan-c-1.11/c/Projects/Win32/VC10/EntityResolver/EntityResolver.vcxproj0000664000175000000640000006563411731656103024771 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {5008A0C4-7F75-4C41-BB25-D6DF75713A80} EntityResolver Win32Proj Application NotSet Application NotSet true Application NotSet true Application NotSet Application NotSet Application NotSet true Application NotSet true Application NotSet <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false {e1d6306e-4ff8-474a-be7f-45dcba4888b6} false {755ad11c-80b9-4e33-9d3d-9a68884a3ec8} false xalan-c-1.11/c/Projects/Win32/VC10/XalanTransform/0002775000175000000640000000000012037700125020275 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/XalanTransform/XalanTransform.vcxproj.filters0000664000175000000640000000173111731656103026326 0ustar stevesamba {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files xalan-c-1.11/c/Projects/Win32/VC10/XalanTransform/XalanTransform.vcxproj0000664000175000000640000006563411731656103024673 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC} XalanTransform Win32Proj Application NotSet Application NotSet true Application NotSet true Application NotSet Application NotSet Application NotSet true Application NotSet true Application NotSet <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false {e1d6306e-4ff8-474a-be7f-45dcba4888b6} false {755ad11c-80b9-4e33-9d3d-9a68884a3ec8} false xalan-c-1.11/c/Projects/Win32/VC10/Utils/0002775000175000000640000000000012037700125016436 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/Utils/XalanMsgLib/0002775000175000000640000000000012037700125020577 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/Utils/XalanMsgLib/XalanMsgLib.xml0000664000175000000640000001046611731656103023475 0ustar stevesamba General Command Line Execute Before Specifies the targets for the build customization to run before. Execute After Specifies the targets for the build customization to run after. Additional Options Additional Options xalan-c-1.11/c/Projects/Win32/VC10/Utils/XalanMsgLib/XalanMsgLibICU.xml0000664000175000000640000004021311731656103024027 0ustar stevesamba General Command Line Execute Before Specifies the targets for the build customization to run before. Execute After Specifies the targets for the build customization to run after. Additional Options Additional Options General Command Line Execute Before Specifies the targets for the build customization to run before. Execute After Specifies the targets for the build customization to run after. Additional Options Additional Options General Command Line Execute Before Specifies the targets for the build customization to run before. Execute After Specifies the targets for the build customization to run after. Additional Options Additional Options General Command Line Execute Before Specifies the targets for the build customization to run before. Execute After Specifies the targets for the build customization to run after. Additional Options Additional Options xalan-c-1.11/c/Projects/Win32/VC10/Utils/XalanMsgLib/XalanMsgLib.vcxproj.filters0000664000175000000640000000271311731656103026033 0ustar stevesamba {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Header Files Header Files xalan-c-1.11/c/Projects/Win32/VC10/Utils/XalanMsgLib/XalanMsgLib.props0000664000175000000640000000172511731656103024036 0ustar stevesamba Midl CustomBuild _SelectedFiles;$(XLF_ruleDependsOn) $(OutDir)MsgCreator [inputs] -TYPE inmem -LOCALE en_US -OUTDIR $(OutDir)Nls\Include $(OutDir)Nls\Include\LocalMsgData.hpp; $(OutDir)Nls\Include\LocalMsgIndex.hpp Processing XLIFF file xalan-c-1.11/c/Projects/Win32/VC10/Utils/XalanMsgLib/XalanMsgLibICU.vcxproj.filters0000664000175000000640000000572611731656103026403 0ustar stevesamba {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx false {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files xalan-c-1.11/c/Projects/Win32/VC10/Utils/XalanMsgLib/XalanMsgLibICU.props0000664000175000000640000000674711731656103024410 0ustar stevesamba Midl CustomBuild _SelectedFiles;$(XLF_ruleDependsOn) $(OutDir)MsgCreator [inputs] -TYPE icu -LOCALE en_US -OUTDIR $(OutDir)Nls\Include $(OutDir)Nls\Include\en_US.txt; $(OutDir)Nls\Include\LocalMsgIndex.hpp Processing XLIFF file Midl CustomBuild _SelectedFiles;$(TXT_ruleDependsOn) $(ICUROOT)\bin\genrb --verbose --package-name XalanMessages_1_11 --destdir $(IntDir) $(OutDir)Nls\Include\en_US.txt $(IntDir)XalanMessages_1_11_en_US.res Processing ICU resource file Midl CustomBuild _SelectedFiles;$(RES_ruleDependsOn) echo $(IntDir)%(Filename).res >$(IntDir)%(Filename).lst $(IntDir)%(Filename).lst Creating resource list Midl CustomBuild _SelectedFiles;$(LST_ruleDependsOn) $(ICUROOT)\bin\pkgdata --name XalanMessages_1_11 -T $(IntDir) -v -O R:$(ICUROOT) --mode dll -d $(OutDir) $(IntDir)%(Filename).lst $(OutDir)XalanMessages_1_11.dll,$(OutDir)XalanMessages_1_11.lib,$(OutDir)XalanMessages_1_11.dat,$(OutDir)XalanMessages_1_11.exp Building resource DLL xalan-c-1.11/c/Projects/Win32/VC10/Utils/XalanMsgLib/XalanMsgLib.targets0000664000175000000640000000631011731656103024337 0ustar stevesamba _XLF_rule $(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml @(XLF_rule, '|') $(ComputeLinkInputsTargets); ComputeXLF_ruleOutput; $(ComputeLibInputsTargets); ComputeXLF_ruleOutput; xalan-c-1.11/c/Projects/Win32/VC10/Utils/XalanMsgLib/XalanMsgLib.rules0000664000175000000640000000106511731656103024022 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC10/Utils/XalanMsgLib/XalanMsgLibICU.targets0000664000175000000640000003003111731656103024675 0ustar stevesamba _XLF_rule _TXT_rule _RES_rule _LST_rule $(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml $(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml $(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml $(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml @(XLF_rule, '|') $(ComputeLinkInputsTargets); ComputeXLF_ruleOutput; $(ComputeLibInputsTargets); ComputeXLF_ruleOutput; @(TXT_rule, '|') $(ComputeLinkInputsTargets); ComputeTXT_ruleOutput; $(ComputeLibInputsTargets); ComputeTXT_ruleOutput; @(RES_rule, '|') $(ComputeLinkInputsTargets); ComputeRES_ruleOutput; $(ComputeLibInputsTargets); ComputeRES_ruleOutput; @(LST_rule, '|') $(ComputeLinkInputsTargets); ComputeLST_ruleOutput; $(ComputeLibInputsTargets); ComputeLST_ruleOutput; xalan-c-1.11/c/Projects/Win32/VC10/Utils/XalanMsgLib/XalanMsgLib.vcxproj0000664000175000000640000005471711731656103024377 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092} XalanMsgLib DynamicLibrary true DynamicLibrary DynamicLibrary DynamicLibrary true DynamicLibrary true DynamicLibrary DynamicLibrary DynamicLibrary true <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)Utils\$(ProjectName)\ ..\..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)Utils\$(ProjectName)\ ..\..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)Utils\$(ProjectName)\ ..\..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)Utils\$(ProjectName)\ ..\..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)Utils\$(ProjectName)\ ..\..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)Utils\$(ProjectName)\ ..\..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)Utils\$(ProjectName)\ ..\..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)Utils\$(ProjectName)\ AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled false $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\..\src;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) XALAN_XALANMSGLIB_BUILD_DLL;%(PreprocessorDefinitions) true EnableFastChecks true MultiThreadedDebugDLL true true $(OutDir)XalanMessages_1_11D.dll false X64 Disabled false $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\..\src;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) XALAN_XALANMSGLIB_BUILD_DLL;%(PreprocessorDefinitions) true EnableFastChecks true MultiThreadedDebugDLL true true $(OutDir)XalanMessages_1_11D.dll false MachineX64 AnySuitable true true false $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\..\src;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;XALAN_XALANMSGLIB_BUILD_DLL;%(PreprocessorDefinitions) true Default false MultiThreadedDLL true true Level4 ProgramDatabase $(OutDir)XalanMessages_1_11.dll $(IntDir)$(TargetFileName).intermediate.manifest true false X64 AnySuitable true true false $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\..\src;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;XALAN_XALANMSGLIB_BUILD_DLL;%(PreprocessorDefinitions) true Default false MultiThreadedDLL true true Level4 ProgramDatabase $(OutDir)XalanMessages_1_11.dll $(IntDir)$(TargetFileName).intermediate.manifest true false MachineX64 AnySuitable true true false $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\..\src;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;XALAN_XALANMSGLIB_BUILD_DLL;%(PreprocessorDefinitions) true Default false MultiThreadedDLL true true Level4 ProgramDatabase $(OutDir)XalanMessages_1_11.dll $(IntDir)$(TargetFileName).intermediate.manifest true false X64 AnySuitable true true false $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\..\src;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;XALAN_XALANMSGLIB_BUILD_DLL;%(PreprocessorDefinitions) true Default false MultiThreadedDLL true true Level4 ProgramDatabase $(OutDir)XalanMessages_1_11.dll $(IntDir)$(TargetFileName).intermediate.manifest true false MachineX64 Disabled false $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\..\src;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) XALAN_XALANMSGLIB_BUILD_DLL;%(PreprocessorDefinitions) true EnableFastChecks true MultiThreadedDebugDLL true true $(OutDir)XalanMessages_1_11D.dll false X64 Disabled false $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\..\src;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) XALAN_XALANMSGLIB_BUILD_DLL;%(PreprocessorDefinitions) true EnableFastChecks true MultiThreadedDebugDLL true true $(OutDir)XalanMessages_1_11D.dll false MachineX64 {d3eada85-50f9-4a1d-a2f7-18612358b436} false xalan-c-1.11/c/Projects/Win32/VC10/Utils/XalanMsgLib/XalanMsgLibICU.rules0000664000175000000640000000340011731656103024356 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC10/Utils/XalanMsgLib/XalanMsgLibICU.vcxproj0000664000175000000640000002722211731656103024727 0ustar stevesamba Debug Win32 Debug x64 Release Win32 Release x64 {A76258B4-BAE5-4FAA-B5E3-DB7BE7B43760} XalanMsgLibICU Win32Proj Utility Unicode true PreBuildEvent _XLF_rule _RES_rule Utility Unicode PreBuildEvent _XLF_rule _RES_rule Utility Unicode true Utility Unicode <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)Utils\$(ProjectName)\ *.obj%3b*.ilk%3b*.tlb%3b*.tli%3b*.tlh%3b*.tmp%3b*.rsp%3b*.pgc%3b*.pgd%3b*.mak%3b$(TargetPath) ..\..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)Utils\$(ProjectName)\ *.obj%3b*.ilk%3b*.tlb%3b*.tli%3b*.tlh%3b*.tmp%3b*.rsp%3b*.pgc%3b*.pgd%3b*.mak%3b$(TargetPath) ..\..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)Utils\$(ProjectName)\ *.obj%3b*.ilk%3b*.tlb%3b*.tli%3b*.tlh%3b*.tmp%3b*.rsp%3b*.pgc%3b*.pgd%3b*.mak%3b$(TargetPath) ..\..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)Utils\$(ProjectName)\ *.obj%3b*.ilk%3b*.tlb%3b*.tli%3b*.tlh%3b*.tmp%3b*.rsp%3b*.pgc%3b*.pgd%3b*.mak%3b$(TargetPath) X64 X64 true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true {d3eada85-50f9-4a1d-a2f7-18612358b436} false xalan-c-1.11/c/Projects/Win32/VC10/Utils/MsgCreator/0002775000175000000640000000000012037700125020504 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/Utils/MsgCreator/MsgCreator.vcxproj0000664000175000000640000006366511731656103024213 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436} MsgCreator Win32Proj Application NotSet Application NotSet true Application NotSet true Application NotSet Application NotSet Application NotSet true Application NotSet true Application NotSet <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)Utils\$(ProjectName)\ true ..\..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)Utils\$(ProjectName)\ true ..\..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)Utils\$(ProjectName)\ false ..\..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)Utils\$(ProjectName)\ false ..\..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)Utils\$(ProjectName)\ false ..\..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)Utils\$(ProjectName)\ false ..\..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)Utils\$(ProjectName)\ true ..\..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)Utils\$(ProjectName)\ true AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\..\src;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true true Level4 ProgramDatabase 4996;4351;%(DisableSpecificWarnings) xerces-c_3D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\..\src;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true true Level4 ProgramDatabase 4996;4351;%(DisableSpecificWarnings) xerces-c_3D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;%(AdditionalLibraryDirectories) true Console false MachineX64 AnySuitable $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase 4996;4351;%(DisableSpecificWarnings) xerces-c_3.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 X64 AnySuitable $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase 4996;4351;%(DisableSpecificWarnings) xerces-c_3.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;%(AdditionalLibraryDirectories) true Console true true false MachineX64 AnySuitable $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase 4996;4351;%(DisableSpecificWarnings) xerces-c_3.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 X64 AnySuitable $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase 4996;4351;%(DisableSpecificWarnings) xerces-c_3.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;%(AdditionalLibraryDirectories) true Console true true false MachineX64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\..\src;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true true Level4 ProgramDatabase 4996;4351;%(DisableSpecificWarnings) xerces-c_3D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\..\src;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true true Level4 ProgramDatabase 4996;4351;%(DisableSpecificWarnings) xerces-c_3D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;%(AdditionalLibraryDirectories) true Console false MachineX64 xalan-c-1.11/c/Projects/Win32/VC10/Utils/MsgCreator/MsgCreator.vcxproj.filters0000664000175000000640000000611511731656103025645 0ustar stevesamba {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Source Files Source Files Source Files Source Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files xalan-c-1.11/c/Projects/Win32/VC10/Performance/0002775000175000000640000000000012037700125017577 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/Performance/perf.vcxproj0000664000175000000640000010314511731656103022160 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761} perf Application false MultiByte Application false MultiByte Application false MultiByte Application false MultiByte Application false MultiByte Application false MultiByte Application false MultiByte Application false MultiByte <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ false AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset .\..\..\Build\Win32\VC7.1\Release/perf.tlb Full AnySuitable true Speed true true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src;$(OutDir)\NLS\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir) $(IntDir) Level4 true ProgramDatabase Default 4996;%(DisableSpecificWarnings) NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(OutDir)$(ProjectName).exe true $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console 2048000 UseLinkTimeCodeGeneration false false X64 .\..\..\Build\Win32\VC7.1\Release/perf.tlb Full AnySuitable true Speed true true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src;$(OutDir)\NLS\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) true MultiThreadedDLL true true Level4 true Default 4996;%(DisableSpecificWarnings) NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(OutDir)$(ProjectName).exe true $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console 2048000 UseLinkTimeCodeGeneration false MachineX64 false .\..\..\Build\Win32\VC7.1\Debug/perf.tlb Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src;$(OutDir)\NLS\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true true $(IntDir) $(IntDir) $(IntDir) Level4 true ProgramDatabase Default 4996;%(DisableSpecificWarnings) _DEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(OutDir)$(ProjectName).exe true $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true $(TargetDir)$(TargetName).pdb Console 2048000 false false X64 .\..\..\Build\Win32\VC7.1\Debug/perf.tlb Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src;$(OutDir)\NLS\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true true $(IntDir) Level4 true ProgramDatabase Default 4996;%(DisableSpecificWarnings) _DEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(OutDir)$(ProjectName).exe true $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true $(TargetDir)$(TargetName).pdb Console 2048000 false MachineX64 false .\..\..\Build\Win32\VC7.1\Release/perf.tlb Full AnySuitable true Speed true true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src;$(OutDir)\NLS\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) true MultiThreadedDLL true true Level4 true ProgramDatabase Default 4996;%(DisableSpecificWarnings) NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(OutDir)$(ProjectName).exe true $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console 2048000 UseLinkTimeCodeGeneration false false X64 .\..\..\Build\Win32\VC7.1\Release/perf.tlb Full AnySuitable true Speed true true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src;$(OutDir)\NLS\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) true MultiThreadedDLL true true Level4 true Default 4996;%(DisableSpecificWarnings) NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(OutDir)$(ProjectName).exe true $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console 2048000 UseLinkTimeCodeGeneration false MachineX64 false .\..\..\Build\Win32\VC7.1\Debug/perf.tlb Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src;$(OutDir)\NLS\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true true $(IntDir) $(IntDir) $(IntDir) Level4 true ProgramDatabase Default 4996;%(DisableSpecificWarnings) _DEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(OutDir)$(ProjectName).exe true $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true $(TargetDir)$(TargetName).pdb Console 2048000 false false X64 .\..\..\Build\Win32\VC7.1\Debug/perf.tlb Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src;$(OutDir)\NLS\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true true $(IntDir) Level4 true ProgramDatabase Default 4996;%(DisableSpecificWarnings) _DEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(OutDir)$(ProjectName).exe true $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true $(TargetDir)$(TargetName).pdb Console 2048000 false MachineX64 false {e1d6306e-4ff8-474a-be7f-45dcba4888b6} false {755ad11c-80b9-4e33-9d3d-9a68884a3ec8} false xalan-c-1.11/c/Projects/Win32/VC10/AllInOne/0002775000175000000640000000000012037700125016777 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/AllInOne/AllInOneWithICU.vcxproj.filters0000664000175000000640000032363411731656104024741 0ustar stevesamba {33df3afe-f33a-41bb-9376-bb021c3d8fcf} {6acbb5aa-04a1-4c0f-9f15-1c033690ab6c} {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {7eabf6ba-7231-4b56-b716-762fe5787cfc} {6f487667-73c3-41ab-819c-a9bcf6640f7d} {4dc8ba8c-e93c-4afc-8611-5c7f7b31f3f1} {31862955-4de0-4a0a-85a6-8f60fee33e74} {23dc806d-86f1-4cb7-9a76-d69ff4ed6e4e} {b57cf2b0-2d02-4090-9ce8-5d9a48d78c83} {a4c2fe43-2815-4c7d-b46d-cc9cb190be69} {4a48b6de-d754-4192-aef8-42c777eba4b4} {9a291acf-c71c-48b5-a48a-05b4346715d0} {98a459eb-cc92-4fec-9a79-0e8b6de70c12} {5a9aed63-45b1-43cc-94ad-d115fc08b514} {cc261424-337a-4237-8840-ac62e3850a62} {bdab164a-1dc5-4cca-9259-579256d77402} Include Include Include Include Include Include Include Include Include Include Include Include Include Include XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM Resource Files PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport DOMSupport DOMSupport DOMSupport DOMSupport DOMSupport DOMSupport DOMSupport DOMSupport DOMSupport XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPathCAPI XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XalanExtensions XalanExtensions XalanExtensions XalanExtensions XalanExtensions XalanExtensions XalanExtensions XalanExtensions XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer Harness Harness Harness Harness ICUBridge ICUBridge ICUBridge ICUBridge ICUBridge ICUBridge ICUBridge ICUBridge XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport DOMSupport DOMSupport DOMSupport DOMSupport DOMSupport DOMSupport DOMSupport DOMSupport XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPathCAPI XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XalanExtensions XalanExtensions XalanExtensions XalanExtensions XalanExtensions XalanExtensions XalanExtensions XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer Harness Harness Harness ICUBridge ICUBridge ICUBridge ICUBridge ICUBridge ICUBridge ICUBridge Resource Files xalan-c-1.11/c/Projects/Win32/VC10/AllInOne/AllInOne.vcxproj.filters0000664000175000000640000032404511731656104023541 0ustar stevesamba {3579411a-ad0b-44dd-bd56-cd2a19fc5495} {f7e1d116-bd72-408c-8bcb-cbb0e1b50116} {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {5d339dbb-0886-48dc-a0b3-6ce257cc7d16} {27c7aeaf-f92c-4204-9575-7388fc5e50e6} {75ac9195-6962-402d-aac1-35d23a92705e} {131f5069-f888-4c52-b136-31a889ab1c71} {a5ad59af-2d36-47a2-8ba9-f39c860b2353} {6ef84ed5-abe0-4a0e-97b2-663992ebec15} {689d72a0-d56c-4848-a461-c092bf0a2eff} {06883b6e-37dc-44d9-b2ed-a4fbdbcf746d} {5a0daae7-a7db-4870-8708-70665ec0c0f4} {6bd9bf93-21d1-4fe9-8121-39e86c01fde4} {6c32d3b2-e3ed-479d-a726-5439457fb745} {b3da1c6d-0750-4701-9dd9-4cac01e422a3} {e28a39ff-8fdb-4b96-a90e-a3ebcfda152f} Include Include Include Include Include Include Include Include Include Include Include Include Include Include XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM Resource Files PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport DOMSupport DOMSupport DOMSupport DOMSupport DOMSupport DOMSupport DOMSupport DOMSupport DOMSupport XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPathCAPI XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XalanExtensions XalanExtensions XalanExtensions XalanExtensions XalanExtensions XalanExtensions XalanExtensions XalanExtensions XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer Harness Harness Harness Harness XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM XalanDOM PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport PlatformSupport DOMSupport DOMSupport DOMSupport DOMSupport DOMSupport DOMSupport DOMSupport DOMSupport XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPath XPathCAPI XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XMLSupport XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XercesParserLiaison XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XalanSourceTree XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XSLT XalanExtensions XalanExtensions XalanExtensions XalanExtensions XalanExtensions XalanExtensions XalanExtensions XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanEXSLT XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer XalanTransformer Harness Harness Harness ICUBridge ICUBridge ICUBridge ICUBridge ICUBridge ICUBridge ICUBridge Resource Files ICUBridge ICUBridge ICUBridge ICUBridge ICUBridge ICUBridge ICUBridge ICUBridge xalan-c-1.11/c/Projects/Win32/VC10/AllInOne/AllInOneWithICU.vcxproj0000664000175000000640000024034711731656104023271 0ustar stevesamba Debug Win32 Debug x64 Release Win32 Release x64 {755AD11C-80B9-4E33-9D3D-9A68884A3EC8} AllInOneWithICU Win32Proj DynamicLibrary NotSet true DynamicLibrary NotSet DynamicLibrary NotSet true DynamicLibrary NotSet <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;$(ICUROOT)\include;%(AdditionalIncludeDirectories) XALAN_BUILD_DLL;XALAN_USE_ICU;XALAN_ICU_MSG_LOADER;%(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;XalanMessages_1_11.lib;icuucd.lib;icuind.lib;%(AdditionalDependencies) $(OutDir)Xalan-C_1_11D.dll $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);$(ICUROOT)\lib;%(AdditionalLibraryDirectories) true Console false $(TargetDir)\Xalan-C_1D.lib MachineX86 X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;$(ICUROOT)\include;%(AdditionalIncludeDirectories) XALAN_BUILD_DLL;XALAN_USE_ICU;XALAN_ICU_MSG_LOADER;%(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;XalanMessages_1_11.lib;icuucd.lib;icuind.lib;%(AdditionalDependencies) $(OutDir)Xalan-C_1_11D.dll $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);$(ICUROOT64)\lib;$(ICUROOT)\lib;%(AdditionalLibraryDirectories) true Console false $(TargetDir)\Xalan-C_1D.lib MachineX64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;$(ICUROOT)\include;%(AdditionalIncludeDirectories) NDEBUG;XALAN_BUILD_DLL;XALAN_USE_ICU;XALAN_ICU_MSG_LOADER;_SECURE_SCL=0;%(PreprocessorDefinitions) true MultiThreadedDLL false true true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;XalanMessages_1_11.lib;icuuc.lib;icuin.lib;%(AdditionalDependencies) $(OutDir)Xalan-C_1_11.dll $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);$(ICUROOT)\lib;%(AdditionalLibraryDirectories) true Console true true false $(TargetDir)\Xalan-C_1.lib MachineX86 X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;$(ICUROOT)\include;%(AdditionalIncludeDirectories) NDEBUG;XALAN_BUILD_DLL;XALAN_USE_ICU;XALAN_ICU_MSG_LOADER;_SECURE_SCL=0;%(PreprocessorDefinitions) true MultiThreadedDLL false true true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;XalanMessages_1_11.lib;icuuc.lib;icuin.lib;%(AdditionalDependencies) $(OutDir)Xalan-C_1_11.dll $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);$(ICUROOT64)\lib;$(ICUROOT)\lib;%(AdditionalLibraryDirectories) true Console true true false $(TargetDir)\Xalan-C_1.lib MachineX64 {a76258b4-bae5-4faa-b5e3-db7be7b43760} false xalan-c-1.11/c/Projects/Win32/VC10/AllInOne/AllInOne.vcxproj0000664000175000000640000031141511731656104022067 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6} AllInOne Win32Proj DynamicLibrary NotSet DynamicLibrary NotSet true DynamicLibrary NotSet true DynamicLibrary NotSet DynamicLibrary NotSet DynamicLibrary NotSet true DynamicLibrary NotSet true DynamicLibrary NotSet <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) XALAN_BUILD_DLL;XALAN_INMEM_MSG_LOADER;%(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;%(AdditionalDependencies) $(OutDir)Xalan-C_1_11D.dll $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false $(TargetDir)\Xalan-C_1D.lib MachineX86 X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) XALAN_BUILD_DLL;XALAN_INMEM_MSG_LOADER;%(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;%(AdditionalDependencies) $(OutDir)Xalan-C_1_11D.dll $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false $(TargetDir)\Xalan-C_1D.lib MachineX64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;XALAN_BUILD_DLL;XALAN_INMEM_MSG_LOADER;_SECURE_SCL=0;%(PreprocessorDefinitions) true MultiThreadedDLL false true true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;%(AdditionalDependencies) $(OutDir)Xalan-C_1_11.dll $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false $(TargetDir)\Xalan-C_1.lib MachineX86 X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;XALAN_BUILD_DLL;XALAN_INMEM_MSG_LOADER;_SECURE_SCL=0;%(PreprocessorDefinitions) true MultiThreadedDLL false true true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;%(AdditionalDependencies) $(OutDir)Xalan-C_1_11.dll $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false $(TargetDir)\Xalan-C_1.lib MachineX64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;$(ICUROOT)\include;%(AdditionalIncludeDirectories) NDEBUG;XALAN_BUILD_DLL;XALAN_INMEM_MSG_LOADER;XALAN_USE_ICU;_SECURE_SCL=0;%(PreprocessorDefinitions) true MultiThreadedDLL false true true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;icuuc.lib;icuin.lib;%(AdditionalDependencies) $(OutDir)Xalan-C_1_11.dll $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);$(ICUROOT)\lib;%(AdditionalLibraryDirectories) true Console true true false $(TargetDir)\Xalan-C_1.lib MachineX86 X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;$(ICUROOT64)\include;$(ICUROOT)\include;%(AdditionalIncludeDirectories) NDEBUG;XALAN_BUILD_DLL;XALAN_INMEM_MSG_LOADER;XALAN_USE_ICU;_SECURE_SCL=0;%(PreprocessorDefinitions) true MultiThreadedDLL false true true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;icuuc.lib;icuin.lib;%(AdditionalDependencies) $(OutDir)Xalan-C_1_11.dll $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);$(ICUROOT64)\lib;$(ICUROOT)\lib;%(AdditionalLibraryDirectories) true Console true true false $(TargetDir)\Xalan-C_1.lib MachineX64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;$(ICUROOT)\include;%(AdditionalIncludeDirectories) XALAN_BUILD_DLL;XALAN_INMEM_MSG_LOADER;XALAN_USE_ICU;%(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;icuucd.lib;icuind.lib;%(AdditionalDependencies) $(OutDir)Xalan-C_1_11D.dll $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);$(ICUROOT)\lib;%(AdditionalLibraryDirectories) true Console false $(TargetDir)\Xalan-C_1D.lib MachineX86 X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;$(ICUROOT64)\include;$(ICUROOT)\include;%(AdditionalIncludeDirectories) XALAN_BUILD_DLL;XALAN_INMEM_MSG_LOADER;XALAN_USE_ICU;%(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;icuucd.lib;icuind.lib;%(AdditionalDependencies) $(OutDir)Xalan-C_1_11D.dll $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);$(ICUROOT64)\lib;$(ICUROOT)\lib;%(AdditionalLibraryDirectories) true Console false $(TargetDir)\Xalan-C_1D.lib MachineX64 true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true {e16eb6c5-a40a-4acc-a9a0-d4db5c551092} false xalan-c-1.11/c/Projects/Win32/VC10/CompileStylesheet/0002775000175000000640000000000012037700125021000 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/CompileStylesheet/CompileStylesheet.vcxproj.filters0000664000175000000640000000173711731656104027543 0ustar stevesamba {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files xalan-c-1.11/c/Projects/Win32/VC10/CompileStylesheet/CompileStylesheet.vcxproj0000664000175000000640000006564511731656104026104 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808} CompileStylesheet Win32Proj Application NotSet Application NotSet true Application NotSet true Application NotSet Application NotSet Application NotSet true Application NotSet true Application NotSet <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false {e1d6306e-4ff8-474a-be7f-45dcba4888b6} false {755ad11c-80b9-4e33-9d3d-9a68884a3ec8} false xalan-c-1.11/c/Projects/Win32/VC10/XalanTransformerCallback/0002775000175000000640000000000012037700125022241 5ustar stevesamba././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootxalan-c-1.11/c/Projects/Win32/VC10/XalanTransformerCallback/XalanTransformerCallback.vcxproj.filtersxalan-c-1.11/c/Projects/Win32/VC10/XalanTransformerCallback/XalanTransformerCallback.vcxproj.filters0000664000175000000640000000175511731656104032245 0ustar stevesamba {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files xalan-c-1.11/c/Projects/Win32/VC10/XalanTransformerCallback/XalanTransformerCallback.vcxproj0000664000175000000640000006567211731656104030606 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {8C50630B-96F5-46EC-B867-BABB36146AE8} XalanTransformerCallback Win32Proj Application NotSet Application NotSet true Application NotSet true Application NotSet Application NotSet Application NotSet true Application NotSet true Application NotSet <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false {e1d6306e-4ff8-474a-be7f-45dcba4888b6} false {755ad11c-80b9-4e33-9d3d-9a68884a3ec8} false xalan-c-1.11/c/Projects/Win32/VC10/XalanExe/0002775000175000000640000000000012037700125017043 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/XalanExe/XalanExe.vcxproj0000664000175000000640000010123111731656104022170 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B} Application false NotSet Application false NotSet true Application false NotSet Application false NotSet true Application false NotSet Application false NotSet true Application false NotSet Application false NotSet true <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset .\..\..\..\..\Build\Win32\VC10\Release/XalanExe.tlb AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) true MultiThreadedDLL false true NotSet true true $(IntDir) Level4 true ProgramDatabase Default 4996;%(DisableSpecificWarnings) NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(OutDir)Xalan.exe true $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) %(IgnoreSpecificDefaultLibraries) true 3096576 false false X64 .\..\..\..\..\Build\Win32\VC10\Release/XalanExe.tlb AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) true MultiThreadedDLL false true NotSet true true $(IntDir) Level4 true ProgramDatabase Default 4996;%(DisableSpecificWarnings) NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(OutDir)Xalan.exe true $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) %(IgnoreSpecificDefaultLibraries) true 3096576 false MachineX64 false .\..\..\..\..\Build\Win32\VC10\Debug/XalanExe.tlb Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) EnableFastChecks MultiThreadedDebugDLL NotSet true true $(IntDir) Level4 true ProgramDatabase Default 4996;%(DisableSpecificWarnings) _DEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(OutDir)Xalan.exe true $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) %(IgnoreSpecificDefaultLibraries) true .\..\..\..\..\Build\Win32\VC10\Debug/Xalan.pdb 3096576 false false X64 .\..\..\..\..\Build\Win32\VC10\Debug/XalanExe.tlb Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL NotSet true true $(IntDir) Level4 true ProgramDatabase Default 4996;%(DisableSpecificWarnings) _DEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(OutDir)Xalan.exe true $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) %(IgnoreSpecificDefaultLibraries) true $(TargetDir)$(TargetName).pdb 3096576 false MachineX64 false .\..\..\..\..\Build\Win32\VC10\Release/XalanExe.tlb AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) true MultiThreadedDLL false true NotSet true true $(IntDir) Level4 true ProgramDatabase Default 4996;%(DisableSpecificWarnings) NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(OutDir)Xalan.exe true $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) %(IgnoreSpecificDefaultLibraries) true 3096576 false false X64 .\..\..\..\..\Build\Win32\VC10\Release/XalanExe.tlb AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) true MultiThreadedDLL false true NotSet true true $(IntDir) Level4 true ProgramDatabase Default 4996;%(DisableSpecificWarnings) NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(OutDir)Xalan.exe true $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) %(IgnoreSpecificDefaultLibraries) true 3096576 false MachineX64 false .\..\..\..\..\Build\Win32\VC10\Debug/XalanExe.tlb Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) EnableFastChecks MultiThreadedDebugDLL NotSet true true $(IntDir) Level4 true ProgramDatabase Default 4996;%(DisableSpecificWarnings) _DEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(OutDir)Xalan.exe true $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) %(IgnoreSpecificDefaultLibraries) true 3096576 false false X64 .\..\..\..\..\Build\Win32\VC10\Debug/XalanExe.tlb Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL NotSet true true $(IntDir) Level4 true ProgramDatabase Default 4996;%(DisableSpecificWarnings) _DEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(OutDir)Xalan.exe true $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) %(IgnoreSpecificDefaultLibraries) true 3096576 false MachineX64 false {e1d6306e-4ff8-474a-be7f-45dcba4888b6} false {755ad11c-80b9-4e33-9d3d-9a68884a3ec8} false xalan-c-1.11/c/Projects/Win32/VC10/XalanExe/XalanExe.vcxproj.filters0000664000175000000640000000136011731656104023641 0ustar stevesamba {b204e304-0e2f-413b-ad65-a1ac81693a29} cpp;c;cxx;rc;def;r;odl;idl;hpj;bat {ea248eaa-bf1d-42e8-ab09-9ce434a25a1c} ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe Source Files xalan-c-1.11/c/Projects/Win32/VC10/ThreadSafe/0002775000175000000640000000000012037700125017344 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/ThreadSafe/ThreadSafe.vcxproj0000664000175000000640000006562011731656104023005 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527} ThreadSafe Win32Proj Application NotSet Application NotSet true Application NotSet true Application NotSet Application NotSet Application NotSet true Application NotSet true Application NotSet <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false {e1d6306e-4ff8-474a-be7f-45dcba4888b6} false {755ad11c-80b9-4e33-9d3d-9a68884a3ec8} false xalan-c-1.11/c/Projects/Win32/VC10/ThreadSafe/ThreadSafe.vcxproj.filters0000664000175000000640000000172111731656104024444 0ustar stevesamba {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files xalan-c-1.11/c/Projects/Win32/VC10/ThreadTest/0002775000175000000640000000000012037700125017405 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/ThreadTest/ThreadTest.vcxproj0000664000175000000640000006561311731656104023111 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2} ThreadTest Win32Proj Application NotSet Application NotSet true Application NotSet true Application NotSet Application NotSet Application NotSet true Application NotSet true Application NotSet <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false {e1d6306e-4ff8-474a-be7f-45dcba4888b6} false {755ad11c-80b9-4e33-9d3d-9a68884a3ec8} false xalan-c-1.11/c/Projects/Win32/VC10/ThreadTest/ThreadTest.vcxproj.filters0000664000175000000640000000171411731656104024550 0ustar stevesamba {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files xalan-c-1.11/c/Projects/Win32/VC10/All/0002775000175000000640000000000012037700125016046 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/All/AllWithICU.vcxproj0000664000175000000640000002353611731656104021406 0ustar stevesamba Debug Win32 Debug x64 Release Win32 Release x64 All {FDDF7AB6-F714-4C89-869C-8919D26403AA} All MakeFileProj Utility false Utility false Utility false Utility false <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ X64 X64 {755ad11c-80b9-4e33-9d3d-9a68884a3ec8} false {5fe5ce96-f3cf-45f8-8b49-1a6efe1f0808} false {36da52e4-c5fd-4ba7-9a58-945ef75865f7} false {f41473df-6208-4a84-9dec-aeea3b4185f2} false {cb863d89-f181-4e81-9e48-e7690937c58c} false {451d3f58-1480-4d96-abd5-a01bc535ce43} false {da7d35bc-f602-4aac-bf4e-0bf5ed3b9761} false {ccc9a082-5bb8-4ae4-8d1b-242357b1bfd5} false {36fbd6c9-aa46-4b4e-a168-82274da2a01e} false {811e8d52-a70d-46e8-a041-6eb6414d419c} false {3ddbe733-0c6d-4c78-bed3-9bba327754bd} false {065c0817-2a3f-4b0a-93d2-db891a451b35} false {67103626-ac3f-49b8-98c1-c78fb1a9f510} false {06d7ea7f-3b1b-46e0-bbaa-4d7e41dec929} false {1d902586-5b5e-41ca-b74c-e9a1a9817527} false {9878ffc6-cc96-40b6-bea0-29a4ea4a24e2} false {66be596b-7bb8-4c96-87db-714ac31d4a39} false {fff75001-7b36-47e8-99dc-aba8be82f996} false {9c7fb0a8-138b-4732-905f-3edc00c0d52f} false {d3eada85-50f9-4a1d-a2f7-18612358b436} false {865e1333-c4fd-4f6d-ad22-bd93bff0ef4b} false {8c50630b-96f5-46ec-b867-babb36146ae8} false {16ad2005-39ba-4e52-a2c6-f5c3c56901fc} false xalan-c-1.11/c/Projects/Win32/VC10/All/All.vcxproj0000664000175000000640000003263411731656104020210 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {C5513096-5115-434E-9785-4D1DEC12EB2B} All MakeFileProj Utility false Utility false Utility false Utility false Utility false Utility false Utility false Utility false <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ X64 X64 X64 X64 {e1d6306e-4ff8-474a-be7f-45dcba4888b6} false {5fe5ce96-f3cf-45f8-8b49-1a6efe1f0808} false {36da52e4-c5fd-4ba7-9a58-945ef75865f7} false {f41473df-6208-4a84-9dec-aeea3b4185f2} false {cb863d89-f181-4e81-9e48-e7690937c58c} false {451d3f58-1480-4d96-abd5-a01bc535ce43} false {ccc9a082-5bb8-4ae4-8d1b-242357b1bfd5} false {36fbd6c9-aa46-4b4e-a168-82274da2a01e} false {811e8d52-a70d-46e8-a041-6eb6414d419c} false {3ddbe733-0c6d-4c78-bed3-9bba327754bd} false {065c0817-2a3f-4b0a-93d2-db891a451b35} false {67103626-ac3f-49b8-98c1-c78fb1a9f510} false {06d7ea7f-3b1b-46e0-bbaa-4d7e41dec929} false {1d902586-5b5e-41ca-b74c-e9a1a9817527} false {9878ffc6-cc96-40b6-bea0-29a4ea4a24e2} false {66be596b-7bb8-4c96-87db-714ac31d4a39} false {fff75001-7b36-47e8-99dc-aba8be82f996} false {9c7fb0a8-138b-4732-905f-3edc00c0d52f} false {865e1333-c4fd-4f6d-ad22-bd93bff0ef4b} false {8c50630b-96f5-46ec-b867-babb36146ae8} false {16ad2005-39ba-4e52-a2c6-f5c3c56901fc} false xalan-c-1.11/c/Projects/Win32/VC10/SerializeNodeSet/0002775000175000000640000000000012037700125020547 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/SerializeNodeSet/SerializeNodeSet.vcxproj0000664000175000000640000006564211731656104025417 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5} SerializeNodeSet Win32Proj Application NotSet Application NotSet true Application NotSet true Application NotSet Application NotSet Application NotSet true Application NotSet true Application NotSet <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false {e1d6306e-4ff8-474a-be7f-45dcba4888b6} false {755ad11c-80b9-4e33-9d3d-9a68884a3ec8} false xalan-c-1.11/c/Projects/Win32/VC10/SerializeNodeSet/SerializeNodeSet.vcxproj.filters0000664000175000000640000000173511731656104027057 0ustar stevesamba {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files xalan-c-1.11/c/Projects/Win32/VC10/TraceListen/0002775000175000000640000000000012037700125017553 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC10/TraceListen/TraceListen.vcxproj0000664000175000000640000006562311731656104023426 0ustar stevesamba Debug with ICU Win32 Debug with ICU x64 Debug Win32 Debug x64 Release with ICU Win32 Release with ICU x64 Release Win32 Release x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39} TraceListen Win32Proj Application NotSet Application NotSet true Application NotSet true Application NotSet Application NotSet Application NotSet true Application NotSet true Application NotSet <_ProjectFileVersion>10.0.40219.1 ..\..\..\..\Build\Win32\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win32\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win64\VC10\Release.ICU\ $(OutDir)$(ProjectName)\ false ..\..\..\..\Build\Win32\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true ..\..\..\..\Build\Win64\VC10\Debug.ICU\ $(OutDir)$(ProjectName)\ true AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 false X64 Full AnySuitable true Speed true $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL false true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3.lib;Xalan-C_1.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Release;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 false Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win32\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 false X64 Disabled $(XERCESCROOT)\include;$(XERCESCROOT)\src;..\..\..\..\src\;$(OutDir)Nls\Include;%(AdditionalIncludeDirectories) %(PreprocessorDefinitions) true true EnableFastChecks true MultiThreadedDebugDLL true Level4 ProgramDatabase Default 4996;%(DisableSpecificWarnings) xerces-c_3D.lib;Xalan-C_1D.lib;%(AdditionalDependencies) $(XERCESCROOT)\Build\Win64\VC10\Debug;$(XERCESCROOT)\lib;$(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 false {e1d6306e-4ff8-474a-be7f-45dcba4888b6} false {755ad11c-80b9-4e33-9d3d-9a68884a3ec8} false xalan-c-1.11/c/Projects/Win32/VC10/TraceListen/TraceListen.vcxproj.filters0000664000175000000640000000172311731656104025064 0ustar stevesamba {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files xalan-c-1.11/c/Projects/Win32/VC10/Xalan.sln0000664000175000000640000011730511731656104017133 0ustar stevesambaMicrosoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MsgCreator", "Utils\MsgCreator\MsgCreator.vcxproj", "{D3EADA85-50F9-4A1D-A2F7-18612358B436}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanMsgLib", "Utils\XalanMsgLib\XalanMsgLib.vcxproj", "{E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AllInOne", "AllInOne\AllInOne.vcxproj", "{E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "conf", "Conf\conf.vcxproj", "{36DA52E4-C5FD-4BA7-9A58-945EF75865F7}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanExe", "XalanExe\XalanExe.vcxproj", "{865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CompileStylesheet", "CompileStylesheet\CompileStylesheet.vcxproj", "{5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DocumentBuilder", "DocumentBuilder\DocumentBuilder.vcxproj", "{F41473DF-6208-4A84-9DEC-AEEA3B4185F2}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ExternalFunction", "ExternalFunction\ExternalFunction.vcxproj", "{CB863D89-F181-4E81-9E48-E7690937C58C}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ParsedSourceWrappers", "ParsedSourceWrappers\ParsedSourceWrappers.vcxproj", "{451D3F58-1480-4D96-ABD5-A01BC535CE43}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SerializeNodeSet", "SerializeNodeSet\SerializeNodeSet.vcxproj", "{CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleTransform", "SimpleTransform\SimpleTransform.vcxproj", "{36FBD6C9-AA46-4B4E-A168-82274DA2A01E}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleXPathAPI", "SimpleXPathAPI\SimpleXPathAPI.vcxproj", "{811E8D52-A70D-46E8-A041-6EB6414D419C}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleXPathCAPI", "SimpleXPathCAPI\SimpleXPathCAPI.vcxproj", "{3DDBE733-0C6D-4C78-BED3-9BBA327754BD}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StreamTransform", "StreamTransform\StreamTransform.vcxproj", "{065C0817-2A3F-4B0A-93D2-DB891A451B35}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestXPath", "TestXPath\TestXPath.vcxproj", "{67103626-AC3F-49B8-98C1-C78FB1A9F510}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestXSLT", "TestXSLT\TestXSLT.vcxproj", "{06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ThreadSafe", "ThreadSafe\ThreadSafe.vcxproj", "{1D902586-5B5E-41CA-B74C-E9A1A9817527}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ThreadTest", "ThreadTest\ThreadTest.vcxproj", "{9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TraceListen", "TraceListen\TraceListen.vcxproj", "{66BE596B-7BB8-4C96-87DB-714AC31D4A39}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TransformToXercesDOM", "TransformToXercesDOM\TransformToXercesDOM.vcxproj", "{FFF75001-7B36-47E8-99DC-ABA8BE82F996}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UseStylesheetParam", "UseStylesheetParam\UseStylesheetParam.vcxproj", "{9C7FB0A8-138B-4732-905F-3EDC00C0D52F}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanTransform", "XalanTransform\XalanTransform.vcxproj", "{16AD2005-39BA-4E52-A2C6-F5C3C56901FC}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanTransformerCallback", "XalanTransformerCallback\XalanTransformerCallback.vcxproj", "{8C50630B-96F5-46EC-B867-BABB36146AE8}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "All", "All\All.vcxproj", "{C5513096-5115-434E-9785-4D1DEC12EB2B}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "perf", "Performance\perf.vcxproj", "{DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EntityResolver", "EntityResolver\EntityResolver.vcxproj", "{5008A0C4-7F75-4C41-BB25-D6DF75713A80}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug with ICU|Win32 = Debug with ICU|Win32 Debug with ICU|x64 = Debug with ICU|x64 Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Release with ICU|Win32 = Release with ICU|Win32 Release with ICU|x64 = Release with ICU|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug|Win32.ActiveCfg = Debug|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug|Win32.Build.0 = Debug|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug|x64.ActiveCfg = Debug|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Debug|x64.Build.0 = Debug|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release with ICU|x64.Build.0 = Release with ICU|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release|Win32.ActiveCfg = Release|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release|Win32.Build.0 = Release|Win32 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release|x64.ActiveCfg = Release|x64 {D3EADA85-50F9-4A1D-A2F7-18612358B436}.Release|x64.Build.0 = Release|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug|Win32.ActiveCfg = Debug|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug|Win32.Build.0 = Debug|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug|x64.ActiveCfg = Debug|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Debug|x64.Build.0 = Debug|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release with ICU|x64.Build.0 = Release with ICU|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release|Win32.ActiveCfg = Release|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release|Win32.Build.0 = Release|Win32 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release|x64.ActiveCfg = Release|x64 {E16EB6C5-A40A-4ACC-A9A0-D4DB5C551092}.Release|x64.Build.0 = Release|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug|Win32.ActiveCfg = Debug|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug|Win32.Build.0 = Debug|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug|x64.ActiveCfg = Debug|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Debug|x64.Build.0 = Debug|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release with ICU|x64.Build.0 = Release with ICU|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release|Win32.ActiveCfg = Release|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release|Win32.Build.0 = Release|Win32 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release|x64.ActiveCfg = Release|x64 {E1D6306E-4FF8-474A-BE7F-45DCBA4888B6}.Release|x64.Build.0 = Release|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug|Win32.ActiveCfg = Debug|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug|Win32.Build.0 = Debug|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug|x64.ActiveCfg = Debug|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Debug|x64.Build.0 = Debug|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release with ICU|x64.Build.0 = Release with ICU|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release|Win32.ActiveCfg = Release|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release|Win32.Build.0 = Release|Win32 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release|x64.ActiveCfg = Release|x64 {36DA52E4-C5FD-4BA7-9A58-945EF75865F7}.Release|x64.Build.0 = Release|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug|Win32.ActiveCfg = Debug|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug|Win32.Build.0 = Debug|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug|x64.ActiveCfg = Debug|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug|x64.Build.0 = Debug|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release with ICU|x64.Build.0 = Release with ICU|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release|Win32.ActiveCfg = Release|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release|Win32.Build.0 = Release|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release|x64.ActiveCfg = Release|x64 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release|x64.Build.0 = Release|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug|Win32.ActiveCfg = Debug|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug|Win32.Build.0 = Debug|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug|x64.ActiveCfg = Debug|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Debug|x64.Build.0 = Debug|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release with ICU|x64.Build.0 = Release with ICU|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release|Win32.ActiveCfg = Release|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release|Win32.Build.0 = Release|Win32 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release|x64.ActiveCfg = Release|x64 {5FE5CE96-F3CF-45F8-8B49-1A6EFE1F0808}.Release|x64.Build.0 = Release|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug|Win32.ActiveCfg = Debug|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug|Win32.Build.0 = Debug|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug|x64.ActiveCfg = Debug|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Debug|x64.Build.0 = Debug|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release with ICU|x64.Build.0 = Release with ICU|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release|Win32.ActiveCfg = Release|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release|Win32.Build.0 = Release|Win32 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release|x64.ActiveCfg = Release|x64 {F41473DF-6208-4A84-9DEC-AEEA3B4185F2}.Release|x64.Build.0 = Release|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug|Win32.ActiveCfg = Debug|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug|Win32.Build.0 = Debug|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug|x64.ActiveCfg = Debug|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Debug|x64.Build.0 = Debug|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release with ICU|x64.Build.0 = Release with ICU|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release|Win32.ActiveCfg = Release|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release|Win32.Build.0 = Release|Win32 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release|x64.ActiveCfg = Release|x64 {CB863D89-F181-4E81-9E48-E7690937C58C}.Release|x64.Build.0 = Release|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug|Win32.ActiveCfg = Debug|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug|Win32.Build.0 = Debug|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug|x64.ActiveCfg = Debug|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Debug|x64.Build.0 = Debug|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release with ICU|x64.Build.0 = Release with ICU|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release|Win32.ActiveCfg = Release|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release|Win32.Build.0 = Release|Win32 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release|x64.ActiveCfg = Release|x64 {451D3F58-1480-4D96-ABD5-A01BC535CE43}.Release|x64.Build.0 = Release|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug|Win32.ActiveCfg = Debug|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug|Win32.Build.0 = Debug|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug|x64.ActiveCfg = Debug|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Debug|x64.Build.0 = Debug|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release with ICU|x64.Build.0 = Release with ICU|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release|Win32.ActiveCfg = Release|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release|Win32.Build.0 = Release|Win32 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release|x64.ActiveCfg = Release|x64 {CCC9A082-5BB8-4AE4-8D1B-242357B1BFD5}.Release|x64.Build.0 = Release|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug|Win32.ActiveCfg = Debug|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug|Win32.Build.0 = Debug|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug|x64.ActiveCfg = Debug|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Debug|x64.Build.0 = Debug|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release with ICU|x64.Build.0 = Release with ICU|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release|Win32.ActiveCfg = Release|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release|Win32.Build.0 = Release|Win32 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release|x64.ActiveCfg = Release|x64 {36FBD6C9-AA46-4B4E-A168-82274DA2A01E}.Release|x64.Build.0 = Release|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug|Win32.ActiveCfg = Debug|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug|Win32.Build.0 = Debug|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug|x64.ActiveCfg = Debug|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Debug|x64.Build.0 = Debug|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release with ICU|x64.Build.0 = Release with ICU|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release|Win32.ActiveCfg = Release|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release|Win32.Build.0 = Release|Win32 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release|x64.ActiveCfg = Release|x64 {811E8D52-A70D-46E8-A041-6EB6414D419C}.Release|x64.Build.0 = Release|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug|Win32.ActiveCfg = Debug|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug|Win32.Build.0 = Debug|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug|x64.ActiveCfg = Debug|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Debug|x64.Build.0 = Debug|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release with ICU|x64.Build.0 = Release with ICU|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release|Win32.ActiveCfg = Release|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release|Win32.Build.0 = Release|Win32 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release|x64.ActiveCfg = Release|x64 {3DDBE733-0C6D-4C78-BED3-9BBA327754BD}.Release|x64.Build.0 = Release|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug|Win32.ActiveCfg = Debug|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug|Win32.Build.0 = Debug|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug|x64.ActiveCfg = Debug|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Debug|x64.Build.0 = Debug|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release with ICU|x64.Build.0 = Release with ICU|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release|Win32.ActiveCfg = Release|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release|Win32.Build.0 = Release|Win32 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release|x64.ActiveCfg = Release|x64 {065C0817-2A3F-4B0A-93D2-DB891A451B35}.Release|x64.Build.0 = Release|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug|Win32.ActiveCfg = Debug|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug|Win32.Build.0 = Debug|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug|x64.ActiveCfg = Debug|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Debug|x64.Build.0 = Debug|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release with ICU|x64.Build.0 = Release with ICU|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release|Win32.ActiveCfg = Release|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release|Win32.Build.0 = Release|Win32 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release|x64.ActiveCfg = Release|x64 {67103626-AC3F-49B8-98C1-C78FB1A9F510}.Release|x64.Build.0 = Release|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug|Win32.ActiveCfg = Debug|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug|Win32.Build.0 = Debug|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug|x64.ActiveCfg = Debug|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Debug|x64.Build.0 = Debug|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release with ICU|x64.Build.0 = Release with ICU|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release|Win32.ActiveCfg = Release|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release|Win32.Build.0 = Release|Win32 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release|x64.ActiveCfg = Release|x64 {06D7EA7F-3B1B-46E0-BBAA-4D7E41DEC929}.Release|x64.Build.0 = Release|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug|Win32.ActiveCfg = Debug|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug|Win32.Build.0 = Debug|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug|x64.ActiveCfg = Debug|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Debug|x64.Build.0 = Debug|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release with ICU|x64.Build.0 = Release with ICU|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release|Win32.ActiveCfg = Release|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release|Win32.Build.0 = Release|Win32 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release|x64.ActiveCfg = Release|x64 {1D902586-5B5E-41CA-B74C-E9A1A9817527}.Release|x64.Build.0 = Release|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug|Win32.ActiveCfg = Debug|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug|Win32.Build.0 = Debug|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug|x64.ActiveCfg = Debug|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Debug|x64.Build.0 = Debug|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release with ICU|x64.Build.0 = Release with ICU|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release|Win32.ActiveCfg = Release|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release|Win32.Build.0 = Release|Win32 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release|x64.ActiveCfg = Release|x64 {9878FFC6-CC96-40B6-BEA0-29A4EA4A24E2}.Release|x64.Build.0 = Release|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug|Win32.ActiveCfg = Debug|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug|Win32.Build.0 = Debug|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug|x64.ActiveCfg = Debug|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Debug|x64.Build.0 = Debug|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release with ICU|x64.Build.0 = Release with ICU|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release|Win32.ActiveCfg = Release|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release|Win32.Build.0 = Release|Win32 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release|x64.ActiveCfg = Release|x64 {66BE596B-7BB8-4C96-87DB-714AC31D4A39}.Release|x64.Build.0 = Release|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug|Win32.ActiveCfg = Debug|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug|Win32.Build.0 = Debug|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug|x64.ActiveCfg = Debug|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Debug|x64.Build.0 = Debug|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release with ICU|x64.Build.0 = Release with ICU|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release|Win32.ActiveCfg = Release|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release|Win32.Build.0 = Release|Win32 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release|x64.ActiveCfg = Release|x64 {FFF75001-7B36-47E8-99DC-ABA8BE82F996}.Release|x64.Build.0 = Release|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug|Win32.ActiveCfg = Debug|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug|Win32.Build.0 = Debug|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug|x64.ActiveCfg = Debug|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Debug|x64.Build.0 = Debug|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release with ICU|x64.Build.0 = Release with ICU|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release|Win32.ActiveCfg = Release|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release|Win32.Build.0 = Release|Win32 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release|x64.ActiveCfg = Release|x64 {9C7FB0A8-138B-4732-905F-3EDC00C0D52F}.Release|x64.Build.0 = Release|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug|Win32.ActiveCfg = Debug|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug|Win32.Build.0 = Debug|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug|x64.ActiveCfg = Debug|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Debug|x64.Build.0 = Debug|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release with ICU|x64.Build.0 = Release with ICU|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release|Win32.ActiveCfg = Release|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release|Win32.Build.0 = Release|Win32 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release|x64.ActiveCfg = Release|x64 {16AD2005-39BA-4E52-A2C6-F5C3C56901FC}.Release|x64.Build.0 = Release|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug|Win32.ActiveCfg = Debug|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug|Win32.Build.0 = Debug|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug|x64.ActiveCfg = Debug|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Debug|x64.Build.0 = Debug|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release with ICU|x64.Build.0 = Release with ICU|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release|Win32.ActiveCfg = Release|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release|Win32.Build.0 = Release|Win32 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release|x64.ActiveCfg = Release|x64 {8C50630B-96F5-46EC-B867-BABB36146AE8}.Release|x64.Build.0 = Release|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug|Win32.ActiveCfg = Debug|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug|Win32.Build.0 = Debug|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug|x64.ActiveCfg = Debug|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Debug|x64.Build.0 = Debug|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release with ICU|x64.Build.0 = Release with ICU|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release|Win32.ActiveCfg = Release|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release|Win32.Build.0 = Release|Win32 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release|x64.ActiveCfg = Release|x64 {C5513096-5115-434E-9785-4D1DEC12EB2B}.Release|x64.Build.0 = Release|x64 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Debug|Win32.ActiveCfg = Debug|Win32 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Debug|Win32.Build.0 = Debug|Win32 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Debug|x64.ActiveCfg = Debug|x64 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Debug|x64.Build.0 = Debug|x64 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Release with ICU|x64.Build.0 = Release with ICU|x64 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Release|Win32.ActiveCfg = Release|Win32 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Release|Win32.Build.0 = Release|Win32 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Release|x64.ActiveCfg = Release|x64 {DA7D35BC-F602-4AAC-BF4E-0BF5ED3B9761}.Release|x64.Build.0 = Release|x64 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Debug with ICU|Win32.ActiveCfg = Debug with ICU|Win32 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Debug with ICU|Win32.Build.0 = Debug with ICU|Win32 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Debug with ICU|x64.ActiveCfg = Debug with ICU|x64 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Debug with ICU|x64.Build.0 = Debug with ICU|x64 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Debug|Win32.ActiveCfg = Debug|Win32 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Debug|Win32.Build.0 = Debug|Win32 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Debug|x64.ActiveCfg = Debug|x64 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Debug|x64.Build.0 = Debug|x64 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Release with ICU|Win32.ActiveCfg = Release with ICU|Win32 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Release with ICU|Win32.Build.0 = Release with ICU|Win32 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Release with ICU|x64.ActiveCfg = Release with ICU|x64 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Release with ICU|x64.Build.0 = Release with ICU|x64 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Release|Win32.ActiveCfg = Release|Win32 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Release|Win32.Build.0 = Release|Win32 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Release|x64.ActiveCfg = Release|x64 {5008A0C4-7F75-4C41-BB25-D6DF75713A80}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal xalan-c-1.11/c/Projects/Win32/VC6/0002775000175000000640000000000012037700125015263 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/ParsedSourceWrappers/0002775000175000000640000000000012037700125021406 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/ParsedSourceWrappers/ParsedSourceWrappers.dsp0000664000175000000640000001611211731656104026247 0ustar stevesamba# Microsoft Developer Studio Project File - Name="ParsedSourceWrappers" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=ParsedSourceWrappers - Win32 Debug !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 "ParsedSourceWrappers.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 "ParsedSourceWrappers.mak" CFG="ParsedSourceWrappers - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ParsedSourceWrappers - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "ParsedSourceWrappers - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "ParsedSourceWrappers - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "ParsedSourceWrappers - Win64 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)" == "ParsedSourceWrappers - 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 "..\..\..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Release\ParsedSourceWrappers" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "ParsedSourceWrappers - 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 "..\..\..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Debug\ParsedSourceWrappers" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "ParsedSourceWrappers - Win64 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 "..\..\..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Release\ParsedSourceWrappers" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IX86 /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "ParsedSourceWrappers - Win64 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 "..\..\..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Debug\ParsedSourceWrappers" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "ParsedSourceWrappers - Win32 Release" # Name "ParsedSourceWrappers - Win32 Debug" # Name "ParsedSourceWrappers - Win64 Release" # Name "ParsedSourceWrappers - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\..\..\..\..\samples\ParsedSourceWrappers\ParsedSourceWrappers.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/TestXPath/0002775000175000000640000000000012037700125017147 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/TestXPath/TestXPath.dsp0000664000175000000640000001733711731656104021563 0ustar stevesamba# Microsoft Developer Studio Project File - Name="TestXPath" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=TestXPath - Win32 Debug !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 "TestXPath.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 "TestXPath.mak" CFG="TestXPath - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "TestXPath - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "TestXPath - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "TestXPath - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "TestXPath - Win64 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)" == "TestXPath - 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 "..\..\..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Release\TestXPath" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\Build\Win32\VC6\Release\Nls\Include" /I "..\..\..\..\..\..\xml-xerces\c\src" /I "..\..\..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"..\..\..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" # SUBTRACT LINK32 /pdb:none /map !ELSEIF "$(CFG)" == "TestXPath - 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 "..\..\..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Debug\TestXPath" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\Build\Win32\VC6\Debug\Nls\Include" /I "..\..\..\..\..\..\xml-xerces\c\src" /I "..\..\..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\..\..\xml-xerces\c\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "TestXPath - Win64 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 "..\..\..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Release\TestXPath" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\Build\Win64\VC6\Release\Nls\Include" /I "..\..\..\..\..\..\xml-xerces\c\src" /I "..\..\..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /pdb:none /machine:IX86 /libpath:"..\..\..\..\..\..\xml-xerces\c\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 # SUBTRACT LINK32 /map /debug !ELSEIF "$(CFG)" == "TestXPath - Win64 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 "..\..\..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Debug\TestXPath" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\Build\Win64\VC6\Debug\Nls\Include" /I "..\..\..\..\..\..\xml-xerces\c\src" /I "..\..\..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"..\..\..\..\..\..\xml-xerces\c\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "TestXPath - Win32 Release" # Name "TestXPath - Win32 Debug" # Name "TestXPath - Win64 Release" # Name "TestXPath - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\..\src\xalanc\TestXPath\NodeNameTreeWalker.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\TestXPath\TestXPath.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=..\..\..\..\src\xalanc\TestXPath\NodeNameTreeWalker.hpp # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/XPathWrapper/0002775000175000000640000000000012037700125017650 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/XPathWrapper/XPathWrapper.dsp0000664000175000000640000001631511731656104022760 0ustar stevesamba# Microsoft Developer Studio Project File - Name="XPathWrapper" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=XPathWrapper - Win32 Debug !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 "XPathWrapper.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 "XPathWrapper.mak" CFG="XPathWrapper - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "XPathWrapper - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "XPathWrapper - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "XPathWrapper - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "XPathWrapper - Win64 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)" == "XPathWrapper - 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 "..\..\..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Release\XPathWrapper" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\Build\Win32\VC6\Release\Nls\Include" /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:I386 /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "XPathWrapper - 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 "..\..\..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Debug\XPathWrapper" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\Build\Win32\VC6\Release\Nls\Include" /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "XPathWrapper - Win64 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 "..\..\..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Release\XPathWrapper" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\Build\Win32\VC6\Release\Nls\Include" /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IX86 /machine:IA64 !ELSEIF "$(CFG)" == "XPathWrapper - Win64 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 "..\..\..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Debug\XPathWrapper" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\Build\Win32\VC6\Release\Nls\Include" /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "XPathWrapper - Win32 Release" # Name "XPathWrapper - Win32 Debug" # Name "XPathWrapper - Win64 Release" # Name "XPathWrapper - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\..\..\..\..\samples\XPathWrapper\TestDriver.cpp # End Source File # Begin Source File SOURCE=.\..\..\..\..\samples\XPathWrapper\XPathWrapper.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\..\..\..\..\samples\XPathWrapper\XPathWrapper.hpp # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/DocumentBuilder/0002775000175000000640000000000012037700125020350 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/DocumentBuilder/DocumentBuilder.dsp0000664000175000000640000001572711731656104024166 0ustar stevesamba# Microsoft Developer Studio Project File - Name="DocumentBuilder" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=DocumentBuilder - Win32 Debug !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 "DocumentBuilder.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 "DocumentBuilder.mak" CFG="DocumentBuilder - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "DocumentBuilder - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "DocumentBuilder - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "DocumentBuilder - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "DocumentBuilder - Win64 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)" == "DocumentBuilder - 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 "..\..\..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Release\DocumentBuilder" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "DocumentBuilder - 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 "..\..\..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Debug\DocumentBuilder" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "DocumentBuilder - Win64 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 "..\..\..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Release\DocumentBuilder" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IX86 /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "DocumentBuilder - Win64 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 "..\..\..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Debug\DocumentBuilder" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "DocumentBuilder - Win32 Release" # Name "DocumentBuilder - Win32 Debug" # Name "DocumentBuilder - Win64 Release" # Name "DocumentBuilder - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\..\..\..\..\samples\DocumentBuilder\DocumentBuilder.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/SimpleTransform/0002775000175000000640000000000012037700125020410 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/SimpleTransform/SimpleTransform.dsp0000664000175000000640000001572711731656104024266 0ustar stevesamba# Microsoft Developer Studio Project File - Name="SimpleTransform" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=SimpleTransform - Win32 Debug !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 "SimpleTransform.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 "SimpleTransform.mak" CFG="SimpleTransform - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "SimpleTransform - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "SimpleTransform - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "SimpleTransform - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "SimpleTransform - Win64 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)" == "SimpleTransform - 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 "..\..\..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Release\SimpleTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "SimpleTransform - 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 "..\..\..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Debug\SimpleTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "SimpleTransform - Win64 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 "..\..\..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Release\SimpleTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IX86 /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "SimpleTransform - Win64 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 "..\..\..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Debug\SimpleTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "SimpleTransform - Win32 Release" # Name "SimpleTransform - Win32 Debug" # Name "SimpleTransform - Win64 Release" # Name "SimpleTransform - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\..\..\..\..\samples\SimpleTransform\SimpleTransform.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/UseStylesheetParam/0002775000175000000640000000000012037700125021052 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/UseStylesheetParam/UseStylesheetParam.dsp0000664000175000000640000001603411731656104025362 0ustar stevesamba# Microsoft Developer Studio Project File - Name="UseStylesheetParam" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=UseStylesheetParam - Win32 Debug !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 "UseStylesheetParam.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 "UseStylesheetParam.mak" CFG="UseStylesheetParam - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "UseStylesheetParam - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "UseStylesheetParam - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "UseStylesheetParam - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "UseStylesheetParam - Win64 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)" == "UseStylesheetParam - 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 "..\..\..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Release\UseStylesheetParam" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "UseStylesheetParam - 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 "..\..\..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Debug\UseStylesheetParam" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "UseStylesheetParam - Win64 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 "..\..\..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Release\UseStylesheetParam" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IX86 /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "UseStylesheetParam - Win64 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 "..\..\..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Debug\UseStylesheetParam" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "UseStylesheetParam - Win32 Release" # Name "UseStylesheetParam - Win32 Debug" # Name "UseStylesheetParam - Win64 Release" # Name "UseStylesheetParam - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\..\..\..\..\samples\UseStylesheetParam\UseStylesheetParam.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/StreamTransform/0002775000175000000640000000000012037700125020412 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/StreamTransform/StreamTransform.dsp0000664000175000000640000001572711731656104024272 0ustar stevesamba# Microsoft Developer Studio Project File - Name="StreamTransform" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=StreamTransform - Win32 Debug !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 "StreamTransform.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 "StreamTransform.mak" CFG="StreamTransform - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "StreamTransform - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "StreamTransform - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "StreamTransform - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "StreamTransform - Win64 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)" == "StreamTransform - 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 "..\..\..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Release\StreamTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "StreamTransform - 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 "..\..\..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Debug\StreamTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "StreamTransform - Win64 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 "..\..\..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Release\StreamTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IX86 /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "StreamTransform - Win64 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 "..\..\..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Debug\StreamTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "StreamTransform - Win32 Release" # Name "StreamTransform - Win32 Debug" # Name "StreamTransform - Win64 Release" # Name "StreamTransform - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\..\..\..\..\samples\StreamTransform\StreamTransform.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/ExternalFunction/0002775000175000000640000000000012037700125020553 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/ExternalFunction/ExternalFunction.dsp0000664000175000000640000001627611731656104024574 0ustar stevesamba# Microsoft Developer Studio Project File - Name="ExternalFunction" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=ExternalFunction - Win32 Debug !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 "ExternalFunction.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 "ExternalFunction.mak" CFG="ExternalFunction - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ExternalFunction - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "ExternalFunction - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "ExternalFunction - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "ExternalFunction - Win64 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)" == "ExternalFunction - 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 "..\..\..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Release\ExternalFunction" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\Build\Win32\VC6\Release\Nls\Include" /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "ExternalFunction - 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 "..\..\..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Debug\ExternalFunction" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\Build\Win32\VC6\Debug\Nls\Include" /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "ExternalFunction - Win64 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 "..\..\..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Release\ExternalFunction" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\Build\Win64\VC6\Release\Nls\Include" /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IX86 /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "ExternalFunction - Win64 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 "..\..\..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Debug\ExternalFunction" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\Build\Win64\VC6\Debug\Nls\Include" /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "ExternalFunction - Win32 Release" # Name "ExternalFunction - Win32 Debug" # Name "ExternalFunction - Win64 Release" # Name "ExternalFunction - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\..\..\..\..\samples\ExternalFunction\ExternalFunction.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/SimpleXPathAPI/0002775000175000000640000000000012037700125020013 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/SimpleXPathAPI/SimpleXPathAPI.dsp0000664000175000000640000001622011731656104023261 0ustar stevesamba# Microsoft Developer Studio Project File - Name="SimpleXPathAPI" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=SimpleXPathAPI - Win32 Debug !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 "SimpleXPathAPI.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 "SimpleXPathAPI.mak" CFG="SimpleXPathAPI - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "SimpleXPathAPI - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "SimpleXPathAPI - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "SimpleXPathAPI - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "SimpleXPathAPI - Win64 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)" == "SimpleXPathAPI - 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 "..\..\..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Release\SimpleXPathAPI" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\Build\Win32\VC6\Release\Nls\Include" /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "SimpleXPathAPI - 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 "..\..\..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Debug\SimpleXPathAPI" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\Build\Win32\VC6\Debug\Nls\Include" /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "SimpleXPathAPI - Win64 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 "..\..\..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Release\SimpleXPathAPI" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\Build\Win64\VC6\Release\Nls\Include" /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IX86 /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "SimpleXPathAPI - Win64 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 "..\..\..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Debug\SimpleXPathAPI" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\Build\Win64\VC6\Debug\Nls\Include" /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "SimpleXPathAPI - Win32 Release" # Name "SimpleXPathAPI - Win32 Debug" # Name "SimpleXPathAPI - Win64 Release" # Name "SimpleXPathAPI - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\..\..\..\..\samples\SimpleXPathAPI\SimpleXPathAPI.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/TransformToXercesDOM/0002775000175000000640000000000012037700125021253 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/TransformToXercesDOM/TransformToXercesDOM.dsp0000664000175000000640000001611211731656104025761 0ustar stevesamba# Microsoft Developer Studio Project File - Name="TransformToXercesDOM" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=TransformToXercesDOM - Win32 Debug !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 "TransformToXercesDOM.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 "TransformToXercesDOM.mak" CFG="TransformToXercesDOM - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "TransformToXercesDOM - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "TransformToXercesDOM - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "TransformToXercesDOM - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "TransformToXercesDOM - Win64 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)" == "TransformToXercesDOM - 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 "..\..\..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Release\TransformToXercesDOM" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "TransformToXercesDOM - 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 "..\..\..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Debug\TransformToXercesDOM" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "TransformToXercesDOM - Win64 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 "..\..\..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Release\TransformToXercesDOM" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IX86 /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "TransformToXercesDOM - Win64 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 "..\..\..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Debug\TransformToXercesDOM" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "TransformToXercesDOM - Win32 Release" # Name "TransformToXercesDOM - Win32 Debug" # Name "TransformToXercesDOM - Win64 Release" # Name "TransformToXercesDOM - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\..\..\..\..\samples\TransformToXercesDOM\TransformToXercesDOM.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/TestXSLT/0002775000175000000640000000000012037700125016715 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/TestXSLT/TestXSLT.dsp0000664000175000000640000001572711731656104021100 0ustar stevesamba# Microsoft Developer Studio Project File - Name="TestXSLT" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=TestXSLT - Win32 Debug !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 "TestXSLT.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 "TestXSLT.mak" CFG="TestXSLT - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "TestXSLT - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "TestXSLT - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "TestXSLT - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "TestXSLT - Win64 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)" == "TestXSLT - 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 "..\..\..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Release\TestXSLT" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\Build\Win32\VC6\Release\Nls\Include" /I "..\..\..\..\..\..\xml-xerces\c\src" /I "..\..\..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /Zm250 /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x1f4000 /debug /machine:I386 /libpath:"..\..\..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" # SUBTRACT LINK32 /pdb:none !ELSEIF "$(CFG)" == "TestXSLT - 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 "..\..\..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Debug\TestXSLT" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\Build\Win32\VC6\Debug\Nls\Include" /I "..\..\..\..\..\..\xml-xerces\c\src" /I "..\..\..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /Zm250 /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /debug /machine:I386 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\..\..\xml-xerces\c\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" # SUBTRACT LINK32 /pdb:none /incremental:no !ELSEIF "$(CFG)" == "TestXSLT - Win64 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 "..\..\..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Release\TestXSLT" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\Build\Win64\VC6\Release\Nls\Include" /I "..\..\..\..\..\..\xml-xerces\c\src" /I "..\..\..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x1f4000 /pdb:none /machine:IX86 /libpath:"..\..\..\..\..\..\xml-xerces\c\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "TestXSLT - Win64 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 "..\..\..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Debug\TestXSLT" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\Build\Win64\VC6\Debug\Nls\Include" /I "..\..\..\..\..\..\xml-xerces\c\src" /I "..\..\..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # SUBTRACT CPP /Fr # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /debug /machine:I386 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /debug /machine:IX86 /pdbtype:sept /libpath:"..\..\..\..\..\..\xml-xerces\c\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 # SUBTRACT LINK32 /pdb:none /incremental:no !ENDIF # Begin Target # Name "TestXSLT - Win32 Release" # Name "TestXSLT - Win32 Debug" # Name "TestXSLT - Win64 Release" # Name "TestXSLT - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Source File SOURCE=..\..\..\..\src\xalanc\TestXSLT\process.cpp # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/SimpleXPathCAPI/0002775000175000000640000000000012037700125020116 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/SimpleXPathCAPI/SimpleXPathCAPI.dsp0000664000175000000640000001540511731656104023473 0ustar stevesamba# Microsoft Developer Studio Project File - Name="SimpleXPathCAPI" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=SimpleXPathCAPI - Win32 Debug !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 "SimpleXPathCAPI.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 "SimpleXPathCAPI.mak" CFG="SimpleXPathCAPI - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "SimpleXPathCAPI - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "SimpleXPathCAPI - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "SimpleXPathCAPI - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "SimpleXPathCAPI - Win64 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)" == "SimpleXPathCAPI - 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 "..\..\..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Release\SimpleXPathCAPI" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\src" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "SimpleXPathCAPI - 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 "..\..\..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Debug\SimpleXPathCAPI" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "SimpleXPathCAPI - Win64 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 "..\..\..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Release\SimpleXPathCAPI" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\src" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IX86 /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "SimpleXPathCAPI - Win64 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 "..\..\..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Debug\SimpleXPathCAPI" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "SimpleXPathCAPI - Win32 Release" # Name "SimpleXPathCAPI - Win32 Debug" # Name "SimpleXPathCAPI - Win64 Release" # Name "SimpleXPathCAPI - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\..\..\..\..\samples\SimpleXPathCAPI\SimpleXPathCAPI.c # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/XalanTransform/0002775000175000000640000000000012037700125020222 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/XalanTransform/XalanTransform.dsp0000664000175000000640000001570011731656104023701 0ustar stevesamba# Microsoft Developer Studio Project File - Name="XalanTransform" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=XalanTransform - Win32 Debug !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 "XalanTransform.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 "XalanTransform.mak" CFG="XalanTransform - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "XalanTransform - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "XalanTransform - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "XalanTransform - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "XalanTransform - Win64 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)" == "XalanTransform - 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 "..\..\..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Release\XalanTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "XalanTransform - 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 "..\..\..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Debug\XalanTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "XalanTransform - Win64 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 "..\..\..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Release\XalanTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IX86 /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "XalanTransform - Win64 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 "..\..\..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Debug\XalanTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "XalanTransform - Win32 Release" # Name "XalanTransform - Win32 Debug" # Name "XalanTransform - Win64 Release" # Name "XalanTransform - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\..\..\..\..\samples\XalanTransform\XalanTransform.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/Utils/0002775000175000000640000000000012037700125016363 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/Utils/XalanMsgLib/0002775000175000000640000000000012037700125020524 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/Utils/XalanMsgLib/XalanMsgLib.mak0000664000175000000640000002266611731656104023400 0ustar stevesamba# Microsoft Developer Studio Generated NMAKE File, Based on XalanMsgLib.dsp !IF "$(CFG)" == "" CFG=XalanMsgLib - Win32 Debug !MESSAGE No configuration specified. Defaulting to XalanMsgLib - Win32 Debug. !ENDIF !IF "$(CFG)" != "XalanMsgLib - Win32 Release" && "$(CFG)" != "XalanMsgLib - Win32 Debug" && "$(CFG)" != "XalanMsgLib - Win32 Release.symbols" && "$(CFG)" != "XalanMsgLib - Win64 Release" && "$(CFG)" != "XalanMsgLib - Win64 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !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 "XalanMsgLib.mak" CFG="XalanMsgLib - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "XalanMsgLib - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "XalanMsgLib - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "XalanMsgLib - Win32 Release.symbols" (based on "Win64 (x86) Console Application") !MESSAGE "XalanMsgLib - Win64 Release" (based on "Win64 (x86) Console Application") !MESSAGE "XalanMsgLib - Win64 Debug" (based on "Win64 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF NO_EXTERNAL_DEPS=1 CPP=cl.exe MTL=midl.exe RSC=rc.exe XERCESINCLUDE=/I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" XERCESLIB=/libpath:"$(XERCESCROOT)\lib" XERCESLIBDEBUG=$(XERCESLIB) /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" XERCESLIBRELEASE=$(XERCESLIB) /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" !IFNDEF DLLNAME ! ERROR Name of dll should be provided in the command line. !ENDIF !IF "$(CFG)" == "XalanMsgLib - Win32 Release.symbols" BUILDRESDIR=.\..\..\..\..\..\Build\Win32\VC6\Release.symbols OUTDIR=$(BUILDRESDIR)\Util\XalanMsgLib INTDIR=$(BUILDRESDIR)\Util\XalanMsgLib ALL : "$(BUILDRESDIR)\$(DLLNAME).dll" CLEAN : -@erase "$(INTDIR)\VC60.idb" -@erase "$(INTDIR)\XalanMsgLib.obj" -@erase "$(BUILDRESDIR)\$(DLLNAME).dll" -@erase "$(BUILDRESDIR)\$(DLLNAME).exp" -@erase "$(BUILDRESDIR)\$(DLLNAME).lib" -@erase "$(BUILDRESDIR)\$(DLLNAME).pdb" -@erase "$(INTDIR)\VC60.pdb" -@erase "$(INTDIR)\VC60.idb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MD /W4 /GX /Zi /O2 $(XERCESINCLUDE) /I "..\..\..\..\..\src" /I ".\$(BUILDRESDIR)\Nls\Include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XALANMSGLIB_EXPORTS" /D "XALAN_XALANMSGLIB_BUILD_DLL" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\$(DLLNAME).bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS= /nologo /dll /incremental:no /pdb:"$(OUTDIR)\XalanMsgLib.pdb" /debug /machine:I386 /out:"$(BUILDRESDIR)\$(DLLNAME).dll" /implib:"$(BUILDRESDIR)\$(DLLNAME).lib" $(XERCESLIBRELEASE) LINK32_OBJS= \ "$(INTDIR)\XalanMsgLib.obj" "$(BUILDRESDIR)\$(DLLNAME).dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "XalanMsgLib - Win32 Release" BUILDRESDIR=.\..\..\..\..\..\Build\Win32\VC6\Release OUTDIR=.\$(BUILDRESDIR)\Util\XalanMsgLib INTDIR=.\$(BUILDRESDIR)\Util\XalanMsgLib ALL : "$(BUILDRESDIR)\$(DLLNAME).dll" CLEAN : -@erase "$(INTDIR)\VC60.idb" -@erase "$(INTDIR)\XalanMsgLib.obj" -@erase "$(BUILDRESDIR)\$(DLLNAME).dll" -@erase "$(BUILDRESDIR)\$(DLLNAME).exp" -@erase "$(BUILDRESDIR)\$(DLLNAME).lib" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MD /W4 /GX /O2 $(XERCESINCLUDE) /I "..\..\..\..\..\src" /I ".\$(BUILDRESDIR)\Nls\Include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XALANMSGLIB_EXPORTS" /D "XALAN_XALANMSGLIB_BUILD_DLL" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\$(DLLNAME).bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=/nologo /dll /incremental:no /pdb:none /machine:I386 /out:"$(BUILDRESDIR)\$(DLLNAME).dll" /implib:"$(BUILDRESDIR)\$(DLLNAME).lib" $(XERCESLIBRELEASE) LINK32_OBJS= \ "$(INTDIR)\XalanMsgLib.obj" "$(BUILDRESDIR)\$(DLLNAME).dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "XalanMsgLib - Win32 Debug" BUILDRESDIR=.\..\..\..\..\..\Build\Win32\VC6\Debug OUTDIR=.\$(BUILDRESDIR)\Util\XalanMsgLib INTDIR=.\$(BUILDRESDIR)\Util\XalanMsgLib # Begin Custom Macros OutDir=.\$(BUILDRESDIR)\Util\XalanMsgLib # End Custom Macros ALL : "$(BUILDRESDIR)\$(DLLNAME).dll" CLEAN : -@erase "$(INTDIR)\VC60.idb" -@erase "$(INTDIR)\VC60.pdb" -@erase "$(INTDIR)\XalanMsgLib.obj" -@erase "$(INTDIR)\XalanMsgLib.sbr" -@erase "$(OUTDIR)\XalanMsgLib.bsc" -@erase "$(OUTDIR)\XalanMsgLib.exp" -@erase "$(OUTDIR)\$(DLLNAME).lib" -@erase "$(BUILDRESDIR)\$(DLLNAME).dll" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MDd /W4 /Gm /GX /ZI /Od $(XERCESINCLUDE) /I "..\..\..\..\..\src" /I ".\$(BUILDRESDIR)\Nls\Include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XALANMSGLIB_EXPORTS" /D "XALAN_XALANMSGLIB_BUILD_DLL" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c MTL_PROJ=/D "_DEBUG" /win32 LINK32=link.exe LINK32_FLAGS= /nologo /dll /pdb:none /debug /machine:I386 /out:"$(BUILDRESDIR)\$(DLLNAME).dll" /implib:"$(BUILDRESDIR)\$(DLLNAME).lib" $(XERCESLIBDEBUG) LINK32_OBJS= \ "$(INTDIR)\XalanMsgLib.obj" "$(BUILDRESDIR)\$(DLLNAME).dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "XalanMsgLib - Win64 Release" BUILDRESDIR=.\..\..\..\..\..\Build\Win64\VC6\Release OUTDIR=.\$(BUILDRESDIR)\Util\XalanMsgLib INTDIR=.\$(BUILDRESDIR)\Util\XalanMsgLib ALL : "$(BUILDRESDIR)\$(DLLNAME).dll" CLEAN : -@erase "$(INTDIR)\VC60.idb" -@erase "$(INTDIR)\XalanMsgLib.obj" -@erase "$(BUILDRESDIR)\$(DLLNAME).dll" -@erase "$(BUILDRESDIR)\$(DLLNAME).exp" -@erase "$(BUILDRESDIR)\$(DLLNAME).lib" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MD /W4 /GX /O2 $(XERCESINCLUDE) /I "..\..\..\..\..\src" /I ".\$(BUILDRESDIR)\Nls\Include" /D "WIN64" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XALANMSGLIB_EXPORTS" /D "XALAN_XALANMSGLIB_BUILD_DLL" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 LINK32=link.exe LINK32_FLAGS=/nologo /dll /incremental:no /pdb:none /machine:IX86 /out:"$(BUILDRESDIR)\$(DLLNAME).dll" /implib:"$(BUILDRESDIR)\$(DLLNAME).lib" /machine:IA64 $(XERCESLIBRELEASE) LINK32_OBJS= \ "$(INTDIR)\XalanMsgLib.obj" "$(BUILDRESDIR)\$(DLLNAME).dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "XalanMsgLib - Win64 Debug" BUILDRESDIR=.\..\..\..\..\..\Build\Win32\VC6\Debug OUTDIR=.\$(BUILDRESDIR)\Util\XalanMsgLib INTDIR=.\$(BUILDRESDIR)\Util\XalanMsgLib # Begin Custom Macros OutDir=.\$(BUILDRESDIR)\Util\XalanMsgLib # End Custom Macros ALL : "$(BUILDRESDIR)\$(DLLNAME).dll" CLEAN : -@erase "$(INTDIR)\VC60.idb" -@erase "$(INTDIR)\VC60.pdb" -@erase "$(INTDIR)\XalanMsgLib.obj" -@erase "$(OUTDIR)\XalanMsgLib.exp" -@erase "$(OUTDIR)\$(DLLNAME).lib" -@erase "$(BUILDRESDIR)\$(DLLNAME).dll" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MDd /W4 /Gm /GX /ZI /Od $(XERCESINCLUDE) /I "..\..\..\..\..\src" /I ".\$(BUILDRESDIR)\Nls\Include" /D "WIN64" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XALANMSGLIB_EXPORTS" /D "XALAN_XALANMSGLIB_BUILD_DLL" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c MTL_PROJ=/D "_DEBUG" /win32 LINK32=link.exe LINK32_FLAGS= /nologo /dll /pdb:none /debug /machine:IX86 /out:"$(BUILDRESDIR)\$(DLLNAME).dll" /implib:"$(BUILDRESDIR)\$(DLLNAME).lib" /machine:IA64 $(XERCESLIBDEBUG) LINK32_OBJS= \ "$(INTDIR)\XalanMsgLib.obj" "$(BUILDRESDIR)\$(DLLNAME).dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("XalanMsgLib.dep") !INCLUDE "XalanMsgLib.dep" !ELSE !MESSAGE Warning: cannot find "XalanMsgLib.dep" !ENDIF !ENDIF SOURCE=..\..\..\..\..\src\xalanc\Utils\XalanMsgLib\XalanMsgLib.cpp !IF "$(CFG)" == "XalanMsgLib - Win32 Release" || "$(CFG)" == "XalanMsgLib - Win32 Release.symbols" || "$(CFG)" == "XalanMsgLib - Win64 Release" !IF ! EXIST( "$(BUILDRESDIR)\Nls\Include\LocalMsgIndex.hpp" ) !ERROR Can't find a file: $(BUILDRESDIR)\ls\include\LocalMsgIndex.hpp , it should be created by the build process, after running MsgCreator.exe application !ENDIF "$(INTDIR)\XalanMsgLib.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "XalanMsgLib - Win32 Debug" || "$(CFG)" == "XalanMsgLib - Win64 Debug" !IF ! EXIST( "$(BUILDRESDIR)\Nls\Include\LocalMsgIndex.hpp" ) !ERROR Can't find a file: $(BUILDRESDIR)\ls\include\LocalMsgIndex.hpp , it should be created by the build process, after running MsgCreator.exe application !ENDIF "$(INTDIR)\XalanMsgLib.obj" "$(INTDIR)\XalanMsgLib.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF xalan-c-1.11/c/Projects/Win32/VC6/Utils/MsgCreator/0002775000175000000640000000000012037700125020431 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/Utils/MsgCreator/MsgCreator.mak0000664000175000000640000003134211731656104023201 0ustar stevesamba# Microsoft Developer Studio Generated NMAKE File, Based on MsgCreator.dsp !IF "$(CFG)" == "" CFG=MsgCreator - Win32 Debug !MESSAGE No configuration specified. Defaulting to MsgCreator - Win32 Debug. !ENDIF !IF "$(CFG)" != "MsgCreator - Win32 Release" && "$(CFG)" != "MsgCreator - Win32 Debug" && "$(CFG)" != "MsgCreator - Win32 Release.symbols" && "$(CFG)" != "MsgCreator - Win64 Release" && "$(CFG)" != "MsgCreator - Win64 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !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 "MsgCreator.mak" CFG="MsgCreator - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "MsgCreator - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "MsgCreator - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "MsgCreator - Win32 Release.symbols" (based on "Win64 (x86) Console Application") !MESSAGE "MsgCreator - Win64 Release" (based on "Win64 (x86) Console Application") !MESSAGE "MsgCreator - Win64 Debug" (based on "Win64 (x86) Console Application") !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe XALANINCLUDE=.\..\..\..\..\..\src XERCESINCLUDE=/I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" XERCESLIB=/libpath:"$(XERCESCROOT)\lib" XERCESLIBDEBUG=$(XERCESLIB) /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" XERCESLIBRELEASE=$(XERCESLIB) /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" NO_EXTERNAL_DEPS=1 !IF "$(CFG)" == "MsgCreator - Win32 Release" || "$(CFG)" == "MsgCreator - Win32 Release.symbols" !IF "$(CFG)" == "MsgCreator - Win32 Release" RELEASE=Release !ELSE RELEASE=Release.symbols !ENDIF OUTDIR=.\..\..\..\..\..\Build\Win32\VC6\$(RELEASE)\Util\MsgCreator INTDIR=.\..\..\..\..\..\Build\Win32\VC6\$(RELEASE)\Util\MsgCreator ALL : "..\..\..\..\..\Build\Win32\VC6\$(RELEASE)\MsgCreator.exe" CLEAN : -@erase "$(INTDIR)\ICUResHandler.obj" -@erase "$(INTDIR)\InMemHandler.obj" -@erase "$(INTDIR)\MsgCreator.obj" -@erase "$(INTDIR)\MsgFileOutputStream.obj" -@erase "$(INTDIR)\NLSHandler.obj" -@erase "$(INTDIR)\SAX2Handler.obj" -@erase "$(INTDIR)\VC60.idb" -@erase "..\..\..\..\..\Build\Win32\VC6\$(RELEASE)\MsgCreator.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W4 /GX /O2 /I ".\\" /I $(XALANINCLUDE) $(XERCESINCLUDE) /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\MsgCreator.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\MsgCreator.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib xerces-c_3.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\MsgCreator.pdb" /machine:I386 $(XERCESLIBRELEASE) /out:"..\..\..\..\..\Build\Win32\VC6\$(RELEASE)\MsgCreator.exe" LINK32_OBJS= \ "$(INTDIR)\ICUResHandler.obj" \ "$(INTDIR)\InMemHandler.obj" \ "$(INTDIR)\MsgCreator.obj" \ "$(INTDIR)\NLSHandler.obj" \ "$(INTDIR)\SAX2Handler.obj" \ "$(INTDIR)\MsgFileOutputStream.obj" "..\..\..\..\..\Build\Win32\VC6\$(RELEASE)\MsgCreator.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "MsgCreator - Win32 Debug" OUTDIR=.\..\..\..\..\..\Build\Win32\VC6\Debug\Util\MsgCreator INTDIR=.\..\..\..\..\..\Build\Win32\VC6\Debug\Util\MsgCreator # Begin Custom Macros OutDir=.\..\..\..\..\..\Build\Win32\VC6\Debug\Util\MsgCreator # End Custom Macros ALL : "..\..\..\..\..\Build\Win32\VC6\Debug\MsgCreator.exe" "$(OUTDIR)\MsgCreator.bsc" CLEAN : -@erase "$(INTDIR)\ICUResHandler.obj" -@erase "$(INTDIR)\ICUResHandler.sbr" -@erase "$(INTDIR)\InMemHandler.obj" -@erase "$(INTDIR)\InMemHandler.sbr" -@erase "$(INTDIR)\MsgCreator.obj" -@erase "$(INTDIR)\MsgCreator.sbr" -@erase "$(INTDIR)\MsgFileOutputStream.obj" -@erase "$(INTDIR)\MsgFileOutputStream.sbr" -@erase "$(INTDIR)\NLSHandler.obj" -@erase "$(INTDIR)\NLSHandler.sbr" -@erase "$(INTDIR)\SAX2Handler.obj" -@erase "$(INTDIR)\SAX2Handler.sbr" -@erase "$(INTDIR)\VC60.idb" -@erase "$(INTDIR)\VC60.pdb" -@erase "$(OUTDIR)\MsgCreator.bsc" -@erase "$(OUTDIR)\MsgCreator.pdb" -@erase "..\..\..\..\..\Build\Win32\VC6\Debug\MsgCreator.exe" -@erase "..\..\..\..\..\Build\Win32\VC6\Debug\MsgCreator.ilk" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W4 /Gm /GX /ZI /Od /I ".\\" /I $(XALANINCLUDE) $(XERCESINCLUDE) /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fr"$(INTDIR)\\" /Fp"$(INTDIR)\MsgCreator.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\MsgCreator.bsc" BSC32_SBRS= \ "$(INTDIR)\ICUResHandler.sbr" \ "$(INTDIR)\InMemHandler.sbr" \ "$(INTDIR)\MsgCreator.sbr" \ "$(INTDIR)\NLSHandler.sbr" \ "$(INTDIR)\SAX2Handler.sbr" \ "$(INTDIR)\MsgFileOutputStream.sbr" "$(OUTDIR)\MsgCreator.bsc" : "$(OUTDIR)" $(BSC32_SBRS) $(BSC32) @<< $(BSC32_FLAGS) $(BSC32_SBRS) << LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib xerces-c_3D.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\MsgCreator.pdb" /debug /machine:I386 $(XERCESLIBDEBUG) /out:"..\..\..\..\..\Build\Win32\VC6\Debug\MsgCreator.exe" /pdbtype:sept LINK32_OBJS= \ "$(INTDIR)\ICUResHandler.obj" \ "$(INTDIR)\InMemHandler.obj" \ "$(INTDIR)\MsgCreator.obj" \ "$(INTDIR)\NLSHandler.obj" \ "$(INTDIR)\SAX2Handler.obj" \ "$(INTDIR)\MsgFileOutputStream.obj" "..\..\..\..\..\Build\Win32\VC6\Debug\MsgCreator.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "MsgCreator - Win64 Debug" OUTDIR=.\..\..\..\..\..\Build\Win64\VC6\Debug\Util\MsgCreator INTDIR=.\..\..\..\..\..\Build\Win64\VC6\Debug\Util\MsgCreator # Begin Custom Macros OutDir=.\..\..\..\..\..\Build\Win64\VC6\Debug\Util\MsgCreator # End Custom Macros ALL : "..\..\..\..\..\Build\Win64\VC6\Debug\MsgCreator.exe" "$(OUTDIR)\MsgCreator.bsc" CLEAN : -@erase "$(INTDIR)\ICUResHandler.obj" -@erase "$(INTDIR)\ICUResHandler.sbr" -@erase "$(INTDIR)\InMemHandler.obj" -@erase "$(INTDIR)\InMemHandler.sbr" -@erase "$(INTDIR)\MsgCreator.obj" -@erase "$(INTDIR)\MsgCreator.sbr" -@erase "$(INTDIR)\MsgFileOutputStream.obj" -@erase "$(INTDIR)\MsgFileOutputStream.sbr" -@erase "$(INTDIR)\NLSHandler.obj" -@erase "$(INTDIR)\NLSHandler.sbr" -@erase "$(INTDIR)\SAX2Handler.obj" -@erase "$(INTDIR)\SAX2Handler.sbr" -@erase "$(INTDIR)\VC60.idb" -@erase "$(INTDIR)\VC60.pdb" -@erase "$(OUTDIR)\MsgCreator.bsc" -@erase "$(OUTDIR)\MsgCreator.pdb" -@erase "..\..\..\..\..\Build\Win64\VC6\Debug\MsgCreator.exe" -@erase "..\..\..\..\..\Build\Win64\VC6\Debug\MsgCreator.ilk" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W4 /Gm /GX /ZI /Od /I ".\\" /I $(XALANINCLUDE) $(XERCESINCLUDE) /D "WIN32" /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fr"$(INTDIR)\\" /Fp"$(INTDIR)\MsgCreator.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\MsgCreator.bsc" BSC32_SBRS= \ "$(INTDIR)\ICUResHandler.sbr" \ "$(INTDIR)\InMemHandler.sbr" \ "$(INTDIR)\MsgCreator.sbr" \ "$(INTDIR)\NLSHandler.sbr" \ "$(INTDIR)\SAX2Handler.sbr" \ "$(INTDIR)\MsgFileOutputStream.sbr" "$(OUTDIR)\MsgCreator.bsc" : "$(OUTDIR)" $(BSC32_SBRS) $(BSC32) @<< $(BSC32_FLAGS) $(BSC32_SBRS) << LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib xerces-c_3D.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\MsgCreator.pdb" /debug /machine:IX86 $(XERCESLIBDEBUG) /out:"..\..\..\..\..\Build\Win64\VC6\Debug\MsgCreator.exe" /pdbtype:sept /machine:IA64 LINK32_OBJS= \ "$(INTDIR)\ICUResHandler.obj" \ "$(INTDIR)\InMemHandler.obj" \ "$(INTDIR)\MsgCreator.obj" \ "$(INTDIR)\NLSHandler.obj" \ "$(INTDIR)\SAX2Handler.obj" \ "$(INTDIR)\MsgFileOutputStream.obj" "..\..\..\..\..\Build\Win64\VC6\Debug\MsgCreator.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "MsgCreator - Win64 Release" OUTDIR=.\..\..\..\..\..\Build\Win64\VC6\Release\Util\MsgCreator INTDIR=.\..\..\..\..\..\Build\Win64\VC6\Release\Util\MsgCreator ALL : "..\..\..\..\..\Build\Win64\VC6\Release\MsgCreator.exe" CLEAN : -@erase "$(INTDIR)\ICUResHandler.obj" -@erase "$(INTDIR)\InMemHandler.obj" -@erase "$(INTDIR)\MsgCreator.obj" -@erase "$(INTDIR)\MsgFileOutputStream.obj" -@erase "$(INTDIR)\NLSHandler.obj" -@erase "$(INTDIR)\SAX2Handler.obj" -@erase "$(INTDIR)\VC60.idb" -@erase "..\..\..\..\..\Build\Win64\VC6\Release\MsgCreator.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W4 /GX /O2 /I ".\\" /I $(XALANINCLUDE) $(XERCESINCLUDE) /D "WIN64" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\MsgCreator.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\MsgCreator.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib xerces-c_3.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\MsgCreator.pdb" /machine:IX86 $(XERCESLIBRELEASE) /out:"..\..\..\..\..\Build\Win64\VC6\Release\MsgCreator.exe" /machine:IA64 LINK32_OBJS= \ "$(INTDIR)\ICUResHandler.obj" \ "$(INTDIR)\InMemHandler.obj" \ "$(INTDIR)\MsgCreator.obj" \ "$(INTDIR)\NLSHandler.obj" \ "$(INTDIR)\SAX2Handler.obj" \ "$(INTDIR)\MsgFileOutputStream.obj" "..\..\..\..\..\Build\Win64\VC6\Release\MsgCreator.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("MsgCreator.dep") !INCLUDE "MsgCreator.dep" !ELSE !MESSAGE Warning: cannot find "MsgCreator.dep" !ENDIF !ENDIF SOURCE=..\..\..\..\..\src\xalanc\Utils\MsgCreator\ICUResHandler.cpp !IF "$(CFG)" == "MsgCreator - Win32 $(RELEASE)" || "$(CFG)" == "MsgCreator - Win64 Release" "$(INTDIR)\ICUResHandler.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "MsgCreator - Win32 Debug" || "$(CFG)" == "MsgCreator - Win64 Debug" "$(INTDIR)\ICUResHandler.obj" "$(INTDIR)\ICUResHandler.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=..\..\..\..\..\src\xalanc\Utils\MsgCreator\InMemHandler.cpp !IF "$(CFG)" == "MsgCreator - Win32 $(RELEASE)" || "$(CFG)" == "MsgCreator - Win64 Release" "$(INTDIR)\InMemHandler.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "MsgCreator - Win32 Debug" || "$(CFG)" == "MsgCreator - Win64 Debug" "$(INTDIR)\InMemHandler.obj" "$(INTDIR)\InMemHandler.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=..\..\..\..\..\src\xalanc\Utils\MsgCreator\MsgCreator.cpp !IF "$(CFG)" == "MsgCreator - Win32 $(RELEASE)" || "$(CFG)" == "MsgCreator - Win64 Release" "$(INTDIR)\MsgCreator.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "MsgCreator - Win32 Debug" || "$(CFG)" == "MsgCreator - Win64 Debug" "$(INTDIR)\MsgCreator.obj" "$(INTDIR)\MsgCreator.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=..\..\..\..\..\src\xalanc\Utils\MsgCreator\MsgFileOutputStream.cpp !IF "$(CFG)" == "MsgCreator - Win32 $(RELEASE)" || "$(CFG)" == "MsgCreator - Win64 Release" "$(INTDIR)\MsgFileOutputStream.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "MsgCreator - Win32 Debug" || "$(CFG)" == "MsgCreator - Win64 Debug" "$(INTDIR)\MsgFileOutputStream.obj" "$(INTDIR)\MsgFileOutputStream.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=..\..\..\..\..\src\xalanc\Utils\MsgCreator\NLSHandler.cpp !IF "$(CFG)" == "MsgCreator - Win32 $(RELEASE)" || "$(CFG)" == "MsgCreator - Win64 Release" "$(INTDIR)\NLSHandler.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "MsgCreator - Win32 Debug" || "$(CFG)" == "MsgCreator - Win64 Debug" "$(INTDIR)\NLSHandler.obj" "$(INTDIR)\NLSHandler.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=..\..\..\..\..\src\xalanc\Utils\MsgCreator\SAX2Handler.cpp !IF "$(CFG)" == "MsgCreator - Win32 $(RELEASE)" || "$(CFG)" == "MsgCreator - Win64 Release" "$(INTDIR)\SAX2Handler.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "MsgCreator - Win32 Debug" || "$(CFG)" == "MsgCreator - Win64 Debug" "$(INTDIR)\SAX2Handler.obj" "$(INTDIR)\SAX2Handler.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF xalan-c-1.11/c/Projects/Win32/VC6/Utils/Localization/0002775000175000000640000000000012037700125021013 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/Utils/Localization/LocalizationWithICU.dsp0000664000175000000640000000656211731656104025366 0ustar stevesamba# Microsoft Developer Studio Project File - Name="LocalizationWithICU" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) External Target" 0x0106 CFG=LocalizationWithICU - 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 "LocalizationWithICU.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 "LocalizationWithICU.mak" CFG="LocalizationWithICU - Win32 Release" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "LocalizationWithICU - Win32 Release" (based on "Win32 (x86) External Target") !MESSAGE "LocalizationWithICU - Win32 Debug" (based on "Win32 (x86) External Target") !MESSAGE "LocalizationWithICU - Win64 Release" (based on "Win64 (x86) External Target") !MESSAGE "LocalizationWithICU - Win64 Debug" (based on "Win64 (x86) External Target") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" !IF "$(CFG)" == "LocalizationWithICU - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Cmd_Line "NMAKE /f BuildMessages.mak" # PROP BASE Rebuild_Opt "/a" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Cmd_Line "nmake /f "BuildMessages.mak" TYPE=icu LOCALE=en_US" # PROP Rebuild_Opt "/a" # PROP Target_File "LocalizationWithICU" !ELSEIF "$(CFG)" == "LocalizationWithICU - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Cmd_Line "NMAKE /f BuildMessages.mak" # PROP BASE Rebuild_Opt "/a" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Cmd_Line "nmake /f "BuildMessages.mak" /NOLOGO CFG=Debug TYPE=icu LOCALE=en_US" # PROP Rebuild_Opt "/a" # PROP Target_File "LocalizationWithICU" !ELSEIF "$(CFG)" == "LocalizationWithICU - Win64 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Cmd_Line "nmake /f "BuildMessages.mak" TYPE=icu LOCALE=en_US" # PROP BASE Rebuild_Opt "/a" # PROP BASE Target_File "LocalizationWithICU" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Cmd_Line "nmake /f "BuildMessages.mak" TYPE=icu BITS=Win64 LOCALE=en_US" # PROP Rebuild_Opt "/a" # PROP Target_File "LocalizationWithICU" !ELSEIF "$(CFG)" == "LocalizationWithICU - Win64 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Cmd_Line "nmake /f "BuildMessages.mak" /NOLOGO CFG=Debug TYPE=icu LOCALE=en_US" # PROP BASE Rebuild_Opt "/a" # PROP BASE Target_File "LocalizationWithICU" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Cmd_Line "nmake /f "BuildMessages.mak" /NOLOGO CFG=Debug TYPE=icu BITS=Win64 LOCALE=en_US" # PROP Rebuild_Opt "/a" # PROP Target_File "LocalizationWithICU" !ENDIF # Begin Target # Name "LocalizationWithICU - Win32 Release" # Name "LocalizationWithICU - Win32 Debug" # Name "LocalizationWithICU - Win64 Release" # Name "LocalizationWithICU - Win64 Debug" !IF "$(CFG)" == "LocalizationWithICU - Win32 Release" !ELSEIF "$(CFG)" == "LocalizationWithICU - Win32 Debug" !ENDIF # Begin Source File SOURCE=..\..\..\..\..\src\xalanc\NLS\en_US\XalanMsg_en_US.xlf # End Source File # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/Utils/Localization/Localization.dsp0000664000175000000640000000631711731656104024167 0ustar stevesamba# Microsoft Developer Studio Project File - Name="Localization" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) External Target" 0x0106 CFG=Localization - 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 "Localization.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 "Localization.mak" CFG="Localization - Win32 Release" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "Localization - Win32 Release" (based on "Win32 (x86) External Target") !MESSAGE "Localization - Win32 Debug" (based on "Win32 (x86) External Target") !MESSAGE "Localization - Win64 Release" (based on "Win64 (x86) External Target") !MESSAGE "Localization - Win64 Debug" (based on "Win64 (x86) External Target") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" !IF "$(CFG)" == "Localization - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Cmd_Line "NMAKE /f BuildMessages.mak" # PROP BASE Rebuild_Opt "/a" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Cmd_Line "nmake /f "BuildMessages.mak" TYPE=inmem LOCALE=en_US" # PROP Rebuild_Opt "/a" # PROP Target_File "Localization" !ELSEIF "$(CFG)" == "Localization - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Cmd_Line "NMAKE /f BuildMessages.mak" # PROP BASE Rebuild_Opt "/a" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Cmd_Line "nmake /f "BuildMessages.mak" /NOLOGO CFG=Debug TYPE=inmem LOCALE=en_US" # PROP Rebuild_Opt "/a" # PROP Target_File "Localization" !ELSEIF "$(CFG)" == "Localization - Win64 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Cmd_Line "nmake /f "BuildMessages.mak" TYPE=inmem LOCALE=en_US" # PROP BASE Rebuild_Opt "/a" # PROP BASE Target_File "Localization" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Cmd_Line "nmake /f "BuildMessages.mak" TYPE=inmem BITS=Win64 LOCALE=en_US" # PROP Rebuild_Opt "/a" # PROP Target_File "Localization" !ELSEIF "$(CFG)" == "Localization - Win64 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Cmd_Line "nmake /f "BuildMessages.mak" /NOLOGO CFG=Debug TYPE=inmem LOCALE=en_US" # PROP BASE Rebuild_Opt "/a" # PROP BASE Target_File "Localization" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Cmd_Line "nmake /f "BuildMessages.mak" /NOLOGO CFG=Debug TYPE=inmem BITS=Win64 LOCALE=en_US" # PROP Rebuild_Opt "/a" # PROP Target_File "Localization" !ENDIF # Begin Target # Name "Localization - Win32 Release" # Name "Localization - Win32 Debug" # Name "Localization - Win64 Release" # Name "Localization - Win64 Debug" !IF "$(CFG)" == "Localization - Win32 Release" !ELSEIF "$(CFG)" == "Localization - Win32 Debug" !ENDIF # Begin Source File SOURCE=..\..\..\..\..\src\xalanc\NLS\en_US\XalanMsg_en_US.xlf # End Source File # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/Utils/Localization/BuildMessages.mak0000664000175000000640000001321611731656104024244 0ustar stevesamba# This makefike requires Tools.ini file with settings # # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Check parameters: # Should be defined: # LOCALE, in form of "en" or "en_US" # TYPE, possible values are "inmem" and "icu" !IF "$(BITS)" != "Win32" && "$(BITS)" != "Win64" ! ERROR Invalid configuration BITS="$(BITS)" specified. !ELSE !MESSAGE Used BITS = $(BITS) !ENDIF !IF "$(CFG)" != "Debug" && "$(CFG)" != "Release" && "$(CFG)" != "Release.symbols" ! ERROR Invalid configuration CFG="$(CFG)" specified. !ELSE !MESSAGE Used CFG = $(CFG) !ENDIF !IF "$(LOCALE)" == "" ! MESSAGE Locale is not defined. The locale can be defined in the command line or in Tools.ini file ! ERROR Locale must be defined !ELSE ! MESSAGE Used LOCALE = $(LOCALE) !ENDIF !IF "$(TYPE)" == "" ! ERROR Localization type must be defined.Possible values are "inmem" and "icu" !ENDIF !IF "$(TYPE)" != "inmem" && "$(TYPE)" != "icu" ! ERROR Invalid configuration TYPE="$(TYPE)" specified. !ELSE ! MESSAGE Used TYPE = $(TYPE) !ENDIF !IF "$(TYPE)" == "icu" && "$(ICUROOT)"=="" !ERROR Please define ICUROOT in xml-xalan\c\Projects\Win32\VC6\Utils\Localization\tools.ini file !ENDIF !IF EXIST ($(NLSDIR)\$(LOCALE)\$(MSGFILENAME)$(LOCALE)$(XIFFEXT)) ! MESSAGE Used XLIFF file: "$(MSGFILENAME)$(LOCALE)$(XIFFEXT)" !ELSE ! ERROR File "$(NLSDIR)\$(LOCALE)\$(MSGFILENAME)$(LOCALE)$(XIFFEXT)" is required !ENDIF include ..\..\..\..\..\version.incl #== Commmon tools MKDIR=mkdir MOVE=move !IF "$(CFG)" == "Debug" PKGNAME=$(LIBNAME)_$(MS_VER)D !ELSEIF "$(CFG)" == "Release.symbols" PKGNAME=$(LIBNAME)_$(MS_VER)S !ELSE PKGNAME=$(LIBNAME)_$(MS_VER) !ENDIF XERCESPATH=$(XERCESCROOT)\bin;$(XERCESCROOT)\Build\Win32\VC6\Release;$(XERCESCROOT)\Build\Win32\VC6\Debug;$(XERCESCROOT)\Build\Win64\VC6\Release;$(XERCESCROOT)\Build\Win64\VC6\Debug ICUPATH=$(ICUROOT)\bin #====================== INMEM part ================================================================= !IF "$(TYPE)" == "inmem" ALL : PREPARE $(TMPINCLUDESDIR)\LocalMsgData.hpp $(OUTPUTDIR)\$(PKGNAME).dll $(OUTPUTDIR)\$(PKGNAME).dll : $(TMPINCLUDESDIR)\LocalMsgData.hpp $(MAKE) /$(MAKEFLAGS) /NOLOGO /f ..\XalanMsgLib\XalanMsgLib.mak CFG="XalanMsgLib - $(BITS) $(CFG)" DLLNAME=$(PKGNAME) $(MAKE_PARAMS) $(TMPINCLUDESDIR)\LocalMsgData.hpp : $(NLSDIR)\$(LOCALE)\$(MSGFILENAME)$(LOCALE)$(XIFFEXT) @set PATH=$(ICUPATH);$(XERCESPATH);$(PATH) @if not exist $(OUTPUTDIR)\MsgCreator.exe ( $(MAKE) /f ..\MsgCreator\MsgCreator.mak CFG="MsgCreator - $(BITS) $(CFG)" $(MAKE_PARAMS)) $(OUTPUTDIR)\MsgCreator.exe $(NLSDIR)\$(LOCALE)\$(MSGFILENAME)$(LOCALE)$(XIFFEXT) -TYPE $(TYPE) -LOCALE $(LOCALE) @$(MOVE) LocalMsgIndex.hpp $(TMPINCLUDESDIR) @$(MOVE) LocalMsgData.hpp $(TMPINCLUDESDIR) PREPARE: @if not exist $(TMPINCLUDESDIR) ( $(MKDIR) $(TMPINCLUDESDIR) ) #====================== End of INMEM part ============================================================= #====================== ICU part ====================================================================== !ELSEIF "$(TYPE)" == "icu" GENRB = genrb.exe PKGDATA = pkgdata.exe ALL : PREPARE $(INTDIR)\Icu\$(LOCALE).txt $(OUTPUTDIR)\$(PKGNAME).dll $(OUTPUTDIR)\$(PKGNAME).dll : $(INTDIR)\Icu\$(LOCALE).txt $(ICUPATH)\$(GENRB) --package-name $(PKGNAME) -d $(INTDIR)\Icu $(INTDIR)\Icu\$(LOCALE).txt echo $(INTDIR)\Icu\$(PKGNAME)_$(LOCALE).res > $(INTDIR)\Icu\res-file-list.txt $(ICUPATH)\$(PKGDATA) --name $(PKGNAME) -T $(INTDIR)\Icu -v --mode dll -d $(OUTPUTDIR) $(INTDIR)\Icu\res-file-list.txt $(INTDIR)\Icu\$(LOCALE).txt : $(NLSDIR)\$(LOCALE)\$(MSGFILENAME)$(LOCALE)$(XIFFEXT) @set PATH=$(ICUPATH);$(XERCESPATH);$(PATH) if not exist $(OUTPUTDIR)\MsgCreator.exe ( $(MAKE) /f ..\MsgCreator\MsgCreator.mak CFG="MsgCreator - $(BITS) $(CFG)" $(MAKE_PARAMS)) $(OUTPUTDIR)\MsgCreator.exe $(NLSDIR)\$(LOCALE)\$(MSGFILENAME)$(LOCALE)$(XIFFEXT) -TYPE $(TYPE) -LOCALE $(LOCALE) @$(MOVE) LocalMsgIndex.hpp $(TMPINCLUDESDIR) @$(MOVE) $(LOCALE).txt $(INTDIR)\Icu PREPARE: @if not exist $(INTDIR)\Icu ( $(MKDIR) $(INTDIR)\Icu ) @if not exist $(TMPINCLUDESDIR) ( $(MKDIR) $(TMPINCLUDESDIR) ) #====================== End of ICU part ================================================================== !ENDIF #====================== Commom part ================================================================= CLEAN : $(MAKE) /f ..\MsgCreator\MsgCreator.mak CFG="MsgCreator - $(BITS) $(CFG)" CLEAN $(MAKE) /NOLOGO /f ..\XalanMsgLib\XalanMsgLib.mak CFG="XalanMsgLib - $(BITS) $(CFG)" CLEAN -@erase $(TMPINCLUDESDIR)\LocalMsgIndex.hpp -@erase $(TMPINCLUDESDIR)\LocalMsgData.hpp !IF "$(TYPE)" == "icu" $(ICUPATH)\$(PKGDATA) --name $(PKGNAME) -T $(INTDIR)\Icu -v -k --mode dll -d $(OUTPUTDIR) $(INTDIR)\Icu\res-file-list.txt !ENDIF -@erase $(INTDIR)\Icu\$(LOCALE).txt -@del $(NLSDIR)\ICU\$(PKGNAME)_$(LOCALE).res -@erase $(INTDIR)\Icu\res-file-list.txt -@erase $(OUTPUTDIR)\$(PKGNAME)* PREPARE: #====================== End of commom part ========================================================== xalan-c-1.11/c/Projects/Win32/VC6/Utils/Localization/tools.ini0000664000175000000640000000237211731656104022665 0ustar stevesamba# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # [NMAKE] CFG=Release # can be Win32 or Win64 BITS=Win32 LIBNAME=XalanMessages # ICU root should be defined by user #ICUROOT=UNDEFINED XALANROOT=..\..\..\..\.. NLSDIR=$(XALANROOT)\src\xalanc\NLS MSGFILENAME=XalanMsg_ XIFFEXT=.xlf OUTPUTDIR=$(XALANROOT)\Build\$(BITS)\VC6\$(CFG) INTDIR=$(OUTPUTDIR)\Nls TMPINCLUDESDIR=$(OUTPUTDIR)\Nls\Include XALANMSGLIB_SRC=$(XALANROOT)\src\xalanc\Utils\XalanMsgLib #for another compiler can be MAKE_PARAMS=CPP=ecl.exe MAKE_PARAMS= LOCALE=en_US TYPE=inmem xalan-c-1.11/c/Projects/Win32/VC6/AllInOne/0002775000175000000640000000000012037700125016724 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/AllInOne/AllInOneWithICU.dsp0000664000175000000640000027404711731656104022315 0ustar stevesamba# Microsoft Developer Studio Project File - Name="AllInOneWithICU" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 CFG=AllInOneWithICU - 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 "AllInOneWithICU.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 "AllInOneWithICU.mak" CFG="AllInOneWithICU - Win32 Release" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "AllInOneWithICU - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "AllInOneWithICU - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "AllInOneWithICU - Win64 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "AllInOneWithICU - Win64 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)" == "AllInOneWithICU - 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 "..\..\..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Release\AllInOne" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\Build\Win32\VC6\Release\Nls\Include" /I "..\..\..\..\..\..\xml-xerces\c\src" /I "..\..\..\..\src\\" /I "..\..\..\..\..\..\icu\include" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /I "$(ICUROOT)\include" /D "NDEBUG" /D "XALAN_BUILD_DLL" /D "_MBCS" /D "XALAN_USE_ICU" /D "XALAN_ICU_MSG_LOADER" /FD /Zm250 /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 /dll /machine:I386 # ADD LINK32 xerces-c_3.lib XalanMessages_1_11.lib icuuc.lib icuin.lib /nologo /dll /debug /machine:I386 /out:"..\..\..\..\Build\Win32\VC6\Release/Xalan-C_1_11.dll" /implib:"..\..\..\..\Build\Win32\VC6\Release/Xalan-C_1.lib" /libpath:"..\..\..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"..\..\..\..\..\..\icu\lib" /libpath:"..\..\..\..\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /libpath:"$(ICUROOT)\lib" # SUBTRACT LINK32 /pdb:none !ELSEIF "$(CFG)" == "AllInOneWithICU - 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 "..\..\..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Debug\AllInOne" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\Build\Win32\VC6\Debug\Nls\Include" /I "..\..\..\..\..\..\xml-xerces\c\src" /I "..\..\..\..\src\\" /I "..\..\..\..\..\..\icu\include" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /I "$(ICUROOT)\include" /D "XALAN_BUILD_DLL" /D "_MBCS" /D "XALAN_USE_ICU" /D "XALAN_ICU_MSG_LOADER" /YX /FD /GZ /Zm250 /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /dll /debug /machine:I386 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib XalanMessages_1_11D.lib icuucd.lib icuind.lib /nologo /dll /debug /machine:I386 /out:"..\..\..\..\Build\Win32\VC6\Debug/Xalan-C_1_11D.dll" /implib:"..\..\..\..\Build\Win32\VC6\Debug/Xalan-C_1D.lib" /pdbtype:sept /libpath:"..\..\..\..\..\..\xml-xerces\c\Build\Win32\VC6\Debug" /libpath:"..\..\..\..\..\..\icu\lib" /libpath:"..\..\..\..\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /libpath:"$(ICUROOT)\lib" # SUBTRACT LINK32 /pdb:none !ELSEIF "$(CFG)" == "AllInOneWithICU - Win64 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 "..\..\..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Release\AllInOne" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\Build\Win64\VC6\Release\Nls\Include" /I "..\..\..\..\..\..\xml-xerces\c\src" /I "..\..\..\..\src\\" /I "..\..\..\..\..\..\icu\include" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /I "$(ICUROOT)\include" /D "NDEBUG" /D "XALAN_BUILD_DLL" /D "_MBCS" /D "XALAN_USE_ICU" /D "XALAN_ICU_MSG_LOADER" /D "ITERATIVE_EXECUTION" /FD /c # SUBTRACT CPP /YX # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 /dll /machine:I386 # ADD LINK32 xerces-c_3.lib XalanMessages_1_11.lib icuuc.lib icuin.lib /nologo /dll /pdb:none /machine:IX86 /nodefaultlib:"libmmd.lib" /out:"..\..\..\..\Build\Win64\VC6\Release/Xalan-C_1_11.dll" /implib:"..\..\..\..\Build\Win64\VC6\Release/Xalan-C_1.lib" /libpath:"..\..\..\..\..\..\xml-xerces\c\Build\Win64\VC6\Release" /libpath:"..\..\..\..\..\..\icu\lib" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /libpath:"$(ICUROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "AllInOneWithICU - Win64 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 "..\..\..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Debug\AllInOne" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\Build\Win64\VC6\Debug\Nls\Include" /I "..\..\..\..\..\..\xml-xerces\c\src" /I "..\..\..\..\src\\" /I "..\..\..\..\..\..\icu\include" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /I "$(ICUROOT)\include" /D "XALAN_BUILD_DLL" /D "_MBCS" /D "XALAN_USE_ICU" /D "XALAN_ICU_MSG_LOADER" /D "ITERATIVE_EXECUTION" /YX /FD /GZ /Zm125 /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /dll /debug /machine:I386 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib XalanMessages_1_11D.lib icuucd.lib icuind.lib /nologo /dll /debug /machine:IX86 /nodefaultlib:"libmmdd.lib" /out:"..\..\..\..\Build\Win64\VC6\Debug/Xalan-C_1_11D.dll" /implib:"..\..\..\..\Build\Win64\VC6\Debug/Xalan-C_1D.lib" /pdbtype:sept /libpath:"..\..\..\..\..\..\xml-xerces\c\Build\Win64\VC6\Debug" /libpath:"..\..\..\..\..\..\icu\lib" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /libpath:"$(ICUROOT)\lib" /machine:IA64 # SUBTRACT LINK32 /pdb:none !ENDIF # Begin Target # Name "AllInOneWithICU - Win32 Release" # Name "AllInOneWithICU - Win32 Debug" # Name "AllInOneWithICU - Win64 Release" # Name "AllInOneWithICU - Win64 Debug" # Begin Group "Include" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\PlatformDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\STLHelper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\VCPPDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\XalanAutoPtr.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\XalanDeque.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\XalanList.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\XalanMap.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\XalanMemMgrAutoPtr.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\XalanMemoryManagement.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\XalanObjectCache.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\XalanObjectStackCache.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\XalanSet.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\XalanVector.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\XalanVersion.hpp # End Source File # End Group # Begin Group "XalanDOM" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanAttr.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanAttr.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanCDataSection.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanCDATASection.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanCharacterData.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanCharacterData.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanComment.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanComment.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDocument.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDocument.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDocumentFragment.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDocumentFragment.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDocumentType.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDocumentType.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDOMDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDOMException.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDOMException.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDOMImplementation.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDOMImplementation.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDOMInit.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDOMInit.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDOMString.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDOMString.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanElement.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanElement.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanEmptyNamedNodeMap.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanEmptyNamedNodeMap.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanEntity.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanEntity.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanEntityReference.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanEntityReference.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanNamedNodeMap.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanNamedNodeMap.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanNode.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanNode.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanNodeList.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanNodeList.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanNodeListDummy.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanNodeListDummy.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanNotation.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanNotation.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanProcessingInstruction.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanProcessingInstruction.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanText.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanText.hpp # End Source File # End Group # Begin Group "PlatformSupport" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\ArenaAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\ArenaBlock.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\ArenaBlockBase.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\AttributeListImpl.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\AttributeListImpl.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\AttributesImpl.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\AttributesImpl.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\AttributeVectorEntry.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\AttributeVectorEntryExtended.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\DirectoryEnumerator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\DOMStringHelper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\DOMStringHelper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\DOMStringPrintWriter.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\DOMStringPrintWriter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\DoubleSupport.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\DoubleSupport.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\ExecutionContext.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\ExecutionContext.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\FormatterListener.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\FormatterListener.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\NamedNodeMapAttributeList.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\NamedNodeMapAttributeList.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\NullPrintWriter.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\NullPrintWriter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\PlatformSupportDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\PlatformSupportInit.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\PlatformSupportInit.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\PrefixResolver.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\PrefixResolver.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\PrintWriter.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\PrintWriter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\ProblemListenerBase.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\ProblemListenerBase.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\ReusableArenaAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\ReusableArenaBlock.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\StdBinInputStream.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\StdBinInputStream.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\StringTokenizer.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\StringTokenizer.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\URISupport.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\URISupport.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\Writer.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\Writer.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanArrayAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanBitmap.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanBitmap.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanCollationServices.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDecimalFormatSymbols.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDecimalFormatSymbols.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDOMStringAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDOMStringAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDOMStringCache.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDOMStringCache.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDOMStringHashTable.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDOMStringHashTable.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDOMStringPool.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDOMStringPool.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDOMStringReusableAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDOMStringReusableAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanEncodingPropertyCache.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanEncodingPropertyCache.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanFileOutputStream.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanFileOutputStream.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanFStreamOutputStream.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanFStreamOutputStream.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanICUMessageLoader.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanICUMessageLoader.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanInMemoryMessageLoader.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanInMemoryMessageLoader.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanLocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanMemoryManagement.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanMemoryManagerDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanMemoryManagerDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanMessageLoader.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanMessageLoader.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanNamespace.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanNullOutputStream.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanNullOutputStream.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanNumberFormat.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanNumberFormat.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanOutputStream.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanOutputStream.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanOutputStreamPrintWriter.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanOutputStreamPrintWriter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanParsedURI.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanParsedURI.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanReferenceCountedObject.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanReferenceCountedObject.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanSimplePrefixResolver.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanSimplePrefixResolver.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanStdOutputStream.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanStdOutputStream.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanToXercesTranscoderWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanToXercesTranscoderWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanTranscodingServices.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanTranscodingServices.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanUnicode.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanUTF16Transcoder.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanUTF16Transcoder.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanXMLChar.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanXMLChar.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XSLException.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XSLException.hpp # End Source File # End Group # Begin Group "DOMSupport" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\DOMServices.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\DOMServices.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\DOMSupport.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\DOMSupport.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\DOMSupportDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\DOMSupportDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\DOMSupportDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\DOMSupportException.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\DOMSupportException.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\DOMSupportInit.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\DOMSupportInit.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\TreeWalker.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\TreeWalker.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\XalanDocumentPrefixResolver.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\XalanDocumentPrefixResolver.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\XalanNamespacesStack.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\XalanNamespacesStack.hpp # End Source File # End Group # Begin Group "XPath" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\ElementPrefixResolverProxy.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\ElementPrefixResolverProxy.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FormatterStringLengthCounter.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FormatterStringLengthCounter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\Function.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\Function.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionConcat.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionConcat.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionContains.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionContains.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionID.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionID.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionLang.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionLang.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionNamespaceURI.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionNamespaceURI.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionNormalizeSpace.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionNormalizeSpace.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionStartsWith.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionStartsWith.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionString.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionString.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionSubstring.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionSubstring.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionSubstringAfter.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionSubstringAfter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionSubstringBefore.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionSubstringBefore.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionTranslate.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionTranslate.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\MutableNodeRefList.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\MutableNodeRefList.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\NameSpace.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\NodeRefList.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\NodeRefList.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\NodeRefListBase.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\NodeRefListBase.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanDocumentFragmentNodeRefListBaseProxy.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanDocumentFragmentNodeRefListBaseProxy.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanQName.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanQName.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanQNameByReference.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanQNameByReference.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanQNameByValue.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanQNameByValue.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanQNameByValueAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanQNameByValueAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanXPathException.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanXPathException.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XBoolean.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XBoolean.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSet.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSet.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSetAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSetAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSetBase.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSetBase.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSetNodeProxy.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSetNodeProxy.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSetNodeProxyAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSetNodeProxyAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSetResultTreeFragProxy.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSetResultTreeFragProxy.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNumber.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNumber.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNumberAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNumberAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNumberBase.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNumberBase.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObject.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObject.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectFactory.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectFactory.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectFactoryDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectFactoryDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectResultTreeFragProxy.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectResultTreeFragProxy.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectResultTreeFragProxyBase.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectResultTreeFragProxyBase.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectResultTreeFragProxyText.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectResultTreeFragProxyText.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectTypeCallback.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectTypeCallback.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPath.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPath.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathConstructionContext.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathConstructionContext.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathConstructionContextDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathConstructionContextDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathEnvSupport.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathEnvSupport.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathEnvSupportDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathEnvSupportDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathEvaluator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathEvaluator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathExecutionContext.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathExecutionContext.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathExecutionContextDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathExecutionContextDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathExpression.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathExpression.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathFactory.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathFactory.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathFactoryBlock.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathFactoryBlock.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathFactoryDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathFactoryDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathFunctionTable.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathFunctionTable.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathInit.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathInit.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathParserException.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathParserException.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathProcessor.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathProcessor.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathProcessorImpl.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathProcessorImpl.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XString.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XString.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringAdapter.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringAdapter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringAdapterAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringAdapterAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringBase.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringBase.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringCached.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringCached.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringCachedAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringCachedAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringReference.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringReference.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringReferenceAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringReferenceAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XToken.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XToken.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XTokenNumberAdapter.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XTokenNumberAdapter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XTokenNumberAdapterAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XTokenNumberAdapterAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XTokenStringAdapter.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XTokenStringAdapter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XTokenStringAdapterAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XTokenStringAdapterAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XUnknown.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XUnknown.hpp # End Source File # End Group # Begin Group "XPathCAPI" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPathCAPI\XPathCAPI.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPathCAPI\XPathCAPI.h # End Source File # End Group # Begin Group "XMLSupport" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\FormatterToHTML.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\FormatterToHTML.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\FormatterToNull.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\FormatterToNull.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\FormatterToText.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\FormatterToText.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\FormatterToXML.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\FormatterToXML.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\FormatterToXMLUnicode.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\FormatterTreeWalker.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\FormatterTreeWalker.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanDummyIndentWriter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanFormatterWriter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanHTMLElementsProperties.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanHTMLElementsProperties.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanIndentWriter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanOtherEncodingWriter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanUTF16Writer.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanUTF16Writer.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanUTF8Writer.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanUTF8Writer.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanXMLSerializerBase.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanXMLSerializerBase.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanXMLSerializerFactory.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanXMLSerializerFactory.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XMLParserLiaison.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XMLParserLiaison.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XMLSupportDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XMLSupportException.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XMLSupportException.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XMLSupportInit.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XMLSupportInit.hpp # End Source File # End Group # Begin Group "XalanSourceTree" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\FormatterToSourceTree.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\FormatterToSourceTree.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeAttr.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeAttr.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeAttributeAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeAttributeAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeAttributeNSAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeAttributeNSAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeAttrNS.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeAttrNS.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeComment.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeComment.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeCommentAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeCommentAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeContentHandler.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeContentHandler.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeDocument.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeDocument.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeDocumentFragment.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeDocumentFragment.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeDOMSupport.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeDOMSupport.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElement.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElement.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementA.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementA.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementAAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementAAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementANS.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementANS.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementANSAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementANSAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementNA.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementNA.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementNAAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementNAAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementNANS.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementNANS.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementNANSAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementNANSAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeHelper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeHelper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeInit.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeInit.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeParserLiaison.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeParserLiaison.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeProcessingInstruction.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeProcessingInstruction.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeProcessingInstructionAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeProcessingInstructionAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeText.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeText.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeTextAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeTextAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeTextIWS.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeTextIWS.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeTextIWSAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeTextIWSAllocator.hpp # End Source File # End Group # Begin Group "XSLT" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\AVT.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\AVT.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\AVTPart.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\AVTPart.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\AVTPartSimple.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\AVTPartSimple.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\AVTPartXPath.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\AVTPartXPath.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\Constants.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\Constants.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\CountersTable.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\CountersTable.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\DecimalToRoman.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemApplyImport.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemApplyImport.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemApplyTemplates.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemApplyTemplates.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemAttribute.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemAttribute.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemAttributeSet.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemAttributeSet.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemCallTemplate.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemCallTemplate.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemChoose.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemChoose.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemComment.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemComment.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemCopy.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemCopy.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemCopyOf.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemCopyOf.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemDecimalFormat.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemDecimalFormat.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemElement.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemElement.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemEmpty.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemEmpty.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemExtensionCall.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemExtensionCall.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemFallback.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemFallback.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemForEach.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemForEach.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemForwardCompatible.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemForwardCompatible.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemIf.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemIf.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemLiteralResult.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemLiteralResult.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemMessage.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemMessage.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemNumber.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemNumber.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemOtherwise.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemOtherwise.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemParam.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemParam.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemPI.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemPI.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemSort.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemSort.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemTemplate.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemTemplate.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemTemplateElement.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemTemplateElement.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemText.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemText.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemTextLiteral.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemTextLiteral.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemUse.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemUse.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemValueOf.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemValueOf.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemVariable.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemVariable.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemWhen.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemWhen.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemWithParam.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemWithParam.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ExtensionFunctionHandler.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ExtensionFunctionHandler.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ExtensionNSHandler.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ExtensionNSHandler.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionCurrent.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionCurrent.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionDocument.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionDocument.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionElementAvailable.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionElementAvailable.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionFormatNumber.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionFormatNumber.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionFunctionAvailable.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionFunctionAvailable.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionGenerateID.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionGenerateID.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionKey.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionKey.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionSystemProperty.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionSystemProperty.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionUnparsedEntityURI.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionUnparsedEntityURI.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\GenerateEvent.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\GenerateEvent.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\KeyDeclaration.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\KeyTable.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\KeyTable.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\NamespacesHandler.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\NamespacesHandler.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\NodeSorter.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\NodeSorter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\NodeSortKey.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\NodeSortKey.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\OutputContextStack.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\OutputContextStack.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ProblemListener.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ProblemListener.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ProblemListenerDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ProblemListenerDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ResultNamespacesStack.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ResultNamespacesStack.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\SelectionEvent.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\SelectionEvent.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\Stylesheet.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\Stylesheet.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetConstructionContext.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetConstructionContext.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetConstructionContextDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetConstructionContextDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetExecutionContext.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetExecutionContext.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetExecutionContextDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetExecutionContextDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetHandler.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetHandler.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetRoot.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetRoot.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\TopLevelArg.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\TopLevelArg.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\TraceListener.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\TraceListener.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\TraceListenerDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\TraceListenerDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\TracerEvent.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\TracerEvent.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\VariablesStack.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\VariablesStack.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanAVTAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanAVTAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanAVTPartSimpleAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanAVTPartSimpleAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanAVTPartXPathAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanAVTPartXPathAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemApplyTemplatesAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemApplyTemplatesAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemAttributeAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemAttributeAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemAttributeSetAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemAttributeSetAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemCallTemplateAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemCallTemplateAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemElementAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemElementAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemEmptyAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemEmptyAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemLiteralResultAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemLiteralResultAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemTemplateAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemTemplateAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemTextAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemTextAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemTextLiteralAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemTextLiteralAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemValueOfAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemValueOfAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemVariableAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemVariableAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanMatchPatternData.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanMatchPatternData.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanMatchPatternDataAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanMatchPatternDataAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanNumberingResourceBundle.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanNumberingResourceBundle.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanParamHolder.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanSourceTreeDocumentAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanSourceTreeDocumentAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanSourceTreeDocumentFragmentAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanSourceTreeDocumentFragmentAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanSpaceNodeTester.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanSpaceNodeTester.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XResultTreeFrag.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XResultTreeFrag.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XResultTreeFragAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XResultTreeFragAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTEngineImpl.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTEngineImpl.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTInit.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTInit.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTInputSource.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTInputSource.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTProcessor.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTProcessor.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTProcessorEnvSupport.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTProcessorEnvSupport.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTProcessorEnvSupportDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTProcessorEnvSupportDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTProcessorException.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTProcessorException.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTResultTarget.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTResultTarget.hpp # End Source File # End Group # Begin Group "ICUBridge" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\ICUBridge\ICUBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\ICUBridge\ICUBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\ICUBridge\ICUBridgeCleanup.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\ICUBridge\ICUBridgeCleanup.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\ICUBridge\ICUBridgeCollationCompareFunctor.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\ICUBridge\ICUBridgeCollationCompareFunctor.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\ICUBridge\ICUBridgeCollationCompareFunctorImpl.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\ICUBridge\ICUBridgeCollationCompareFunctorImpl.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\ICUBridge\ICUBridgeDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\ICUBridge\ICUFormatNumberFunctor.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\ICUBridge\ICUFormatNumberFunctor.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\ICUBridge\ICUXalanNumberFormatFactory.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\ICUBridge\ICUXalanNumberFormatFactory.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\ICUBridge\ICUXalanNumberFormatProxy.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\ICUBridge\ICUXalanNumberFormatProxy.hpp # End Source File # End Group # Begin Group "XalanExtensions" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionDifference.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionDifference.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionDistinct.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionDistinct.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionEvaluate.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionEvaluate.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionHasSameNodes.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionHasSameNodes.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionIntersection.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionIntersection.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionNodeSet.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionNodeSet.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\XalanExtensions.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\XalanExtensions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\XalanExtensionsDefinitions.hpp # End Source File # End Group # Begin Group "XalanEXSLT" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTCommon.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTCommon.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTCommonImpl.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTDateTime.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTDateTime.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTDateTimeImpl.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTDynamic.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTDynamic.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTDynamicImpl.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTMath.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTMath.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTMathImpl.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTSet.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTSet.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTSetImpl.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTString.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTString.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTStringImpl.hpp # End Source File # End Group # Begin Group "XalanTransformer" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanCAPI.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanCAPI.h # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanCompiledStylesheet.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanCompiledStylesheetDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanCompiledStylesheetDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanDefaultDocumentBuilder.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanDefaultDocumentBuilder.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanDefaultParsedSource.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanDefaultParsedSource.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanDocumentBuilder.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanParsedSource.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanParsedSource.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanSourceTreeWrapperParsedSource.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanSourceTreeWrapperParsedSource.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanTransformer.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanTransformer.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanTransformerDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanTransformerOutputStream.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanTransformerOutputStream.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanTransformerProblemListener.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanTransformerProblemListener.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XercesDOMParsedSource.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XercesDOMParsedSource.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XercesDOMWrapperParsedSource.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XercesDOMWrapperParsedSource.hpp # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # Begin Source File SOURCE=..\..\Res\AllInOne\AllInOne.rc # End Source File # Begin Source File SOURCE=..\..\Res\AllInOne\resource.h # End Source File # End Group # Begin Group "XercesParserLiaison" # PROP Default_Filter "" # Begin Group "Deprecated" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\FormatterToDeprecatedXercesDOM.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\FormatterToDeprecatedXercesDOM.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesAttrBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesAttrBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesAttributeBridgeAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesAttributeBridgeAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesBridgeHelper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesBridgeHelper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesBridgeNavigator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesBridgeNavigator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesBridgeTypes.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesCDATASectionBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesCDATASectionBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesCommentBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesCommentBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesDocumentBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesDocumentBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesDocumentFragmentBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesDocumentFragmentBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesDocumentTypeBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesDocumentTypeBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesDOM_NodeHack.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesDOM_NodeHack.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesDOMImplementationBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesDOMImplementationBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesElementBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesElementBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesElementBridgeAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesElementBridgeAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesEntityBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesEntityBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesEntityReferenceBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesEntityReferenceBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesNamedNodeMapBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesNamedNodeMapBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesNodeListBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesNodeListBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesNotationBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesNotationBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesProcessingInstructionBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesProcessingInstructionBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesTextBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesTextBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesTextBridgeAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesTextBridgeAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesToXalanNodeMap.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesToXalanNodeMap.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesTreeWalker.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesTreeWalker.hpp # End Source File # End Group # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\FormatterToXercesDOM.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\FormatterToXercesDOM.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesAttrWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesAttrWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesAttrWrapperAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesAttrWrapperAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesCDATASectionWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesCDATASectionWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesCommentWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesCommentWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDocumentTypeWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDocumentTypeWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDocumentWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDocumentWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMException.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMException.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMFormatterWalker.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMFormatterWalker.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMImplementationWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMImplementationWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMSupport.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMSupport.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMWalker.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMWalker.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMWrapperException.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMWrapperException.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesElementWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesElementWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesElementWrapperAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesElementWrapperAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesEntityReferenceWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesEntityReferenceWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesEntityWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesEntityWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesLiaisonXalanDOMStringPool.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesLiaisonXalanDOMStringPool.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesNamedNodeMapAttributeList.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesNamedNodeMapAttributeList.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesNamedNodeMapWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesNamedNodeMapWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesNodeListWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesNodeListWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesNotationWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesNotationWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesParserLiaison.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesParserLiaison.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesParserLiaisonDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesProcessingInstructionWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesProcessingInstructionWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesTextWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesTextWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesTextWrapperAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesTextWrapperAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesWrapperHelper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesWrapperHelper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesWrapperNavigator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesWrapperNavigator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesWrapperNavigatorAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesWrapperNavigatorAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesWrapperToXalanNodeMap.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesWrapperToXalanNodeMap.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesWrapperTypes.hpp # End Source File # End Group # Begin Group "Harness" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\Harness\XalanDiagnosticMemoryManager.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Harness\XalanDiagnosticMemoryManager.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Harness\XalanFileUtility.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Harness\XalanFileUtility.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Harness\XalanHarnessDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Harness\XalanXMLFileReporter.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Harness\XalanXMLFileReporter.hpp # End Source File # End Group # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/AllInOne/AllInOne.dsp0000664000175000000640000026706511731656104021122 0ustar stevesamba# Microsoft Developer Studio Project File - Name="AllInOne" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 CFG=ALLINONE - 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 "AllInOne.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 "AllInOne.mak" CFG="ALLINONE - WIN32 RELEASE" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "AllInOne - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "AllInOne - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "AllInOne - Win64 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "AllInOne - Win64 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)" == "AllInOne - 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 "..\..\..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Release\AllInOne" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\Build\Win32\VC6\Release\Nls\Include" /I "..\..\..\..\..\..\xml-xerces\c\src" /I "..\..\..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "XALAN_BUILD_DLL" /D "_MBCS" /D "XALAN_INMEM_MSG_LOADER" /D "ITERATIVE_EXECUTION" /FD /Zm250 /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 /dll /machine:I386 # ADD LINK32 xerces-c_3.lib XalanMessages_1_11.lib /nologo /dll /pdb:none /machine:I386 /out:"..\..\..\..\Build\Win32\VC6\Release/Xalan-C_1_11.dll" /implib:"..\..\..\..\Build\Win32\VC6\Release/Xalan-C_1.lib" /libpath:"..\..\..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"..\..\..\..\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "AllInOne - 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 "..\..\..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Debug\AllInOne" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\Build\Win32\VC6\Debug\Nls\Include" /I "..\..\..\..\..\..\xml-xerces\c\src" /I "..\..\..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "XALAN_BUILD_DLL" /D "_MBCS" /D "XALAN_INMEM_MSG_LOADER" /D "ITERATIVE_EXECUTION" /YX /FD /GZ /Zm250 /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /dll /debug /machine:I386 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib XalanMessages_1_11D.lib /nologo /dll /debug /machine:I386 /out:"..\..\..\..\Build\Win32\VC6\Debug/Xalan-C_1_11D.dll" /implib:"..\..\..\..\Build\Win32\VC6\Debug/Xalan-C_1D.lib" /pdbtype:sept /libpath:"..\..\..\..\..\..\xml-xerces\c\Build\Win32\VC6\Debug" /libpath:"..\..\..\..\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" # SUBTRACT LINK32 /pdb:none !ELSEIF "$(CFG)" == "AllInOne - Win64 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 "..\..\..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Release\AllInOne" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\Build\Win64\VC6\Release\Nls\Include" /I "..\..\..\..\..\..\xml-xerces\c\src" /I "..\..\..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "XALAN_BUILD_DLL" /D "_MBCS" /D "XALAN_INMEM_MSG_LOADER" /D "ITERATIVE_EXECUTION" /FD /c # SUBTRACT CPP /YX # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 /dll /machine:I386 # ADD LINK32 xerces-c_3.lib XalanMessages_1_11.lib /nologo /dll /pdb:none /machine:IX86 /nodefaultlib:"libmmd.lib" /out:"..\..\..\..\Build\Win64\VC6\Release/Xalan-C_1_11.dll" /implib:"..\..\..\..\Build\Win64\VC6\Release/Xalan-C_1.lib" /libpath:"..\..\..\..\..\..\xml-xerces\c\Build\Win64\VC6\Release" /libpath:"..\..\..\..\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "AllInOne - Win64 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 "..\..\..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Debug\AllInOne" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\Build\Win64\VC6\Debug\Nls\Include" /I "..\..\..\..\..\..\xml-xerces\c\src" /I "..\..\..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "XALAN_BUILD_DLL" /D "_MBCS" /D "XALAN_INMEM_MSG_LOADER" /D "ITERATIVE_EXECUTION" /YX /FD /GZ /Zm125 /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /dll /debug /machine:I386 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib XalanMessages_1_11D.lib /nologo /dll /debug /machine:IX86 /nodefaultlib:"libmmdd.lib" /out:"..\..\..\..\Build\Win64\VC6\Debug/Xalan-C_1_11D.dll" /implib:"..\..\..\..\Build\Win64\VC6\Debug/Xalan-C_1D.lib" /pdbtype:sept /libpath:"..\..\..\..\..\..\xml-xerces\c\Build\Win64\VC6\Debug" /libpath:"..\..\..\..\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 # SUBTRACT LINK32 /pdb:none !ENDIF # Begin Target # Name "AllInOne - Win32 Release" # Name "AllInOne - Win32 Debug" # Name "AllInOne - Win64 Release" # Name "AllInOne - Win64 Debug" # Begin Group "Include" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\PlatformDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\STLHelper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\VCPPDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\XalanAutoPtr.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\XalanDeque.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\XalanList.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\XalanMap.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\XalanMemMgrAutoPtr.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\XalanMemoryManagement.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\XalanObjectCache.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\XalanObjectStackCache.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\XalanSet.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\XalanVector.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Include\XalanVersion.hpp # End Source File # End Group # Begin Group "XalanDOM" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanAttr.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanAttr.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanCDataSection.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanCDATASection.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanCharacterData.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanCharacterData.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanComment.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanComment.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDocument.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDocument.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDocumentFragment.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDocumentFragment.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDocumentType.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDocumentType.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDOMDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDOMException.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDOMException.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDOMImplementation.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDOMImplementation.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDOMInit.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDOMInit.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDOMString.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanDOMString.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanElement.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanElement.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanEmptyNamedNodeMap.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanEmptyNamedNodeMap.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanEntity.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanEntity.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanEntityReference.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanEntityReference.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanNamedNodeMap.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanNamedNodeMap.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanNode.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanNode.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanNodeList.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanNodeList.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanNodeListDummy.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanNodeListDummy.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanNotation.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanNotation.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanProcessingInstruction.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanProcessingInstruction.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanText.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanDOM\XalanText.hpp # End Source File # End Group # Begin Group "PlatformSupport" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\ArenaAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\ArenaBlock.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\ArenaBlockBase.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\AttributeListImpl.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\AttributeListImpl.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\AttributesImpl.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\AttributesImpl.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\AttributeVectorEntry.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\AttributeVectorEntryExtended.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\DirectoryEnumerator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\DOMStringHelper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\DOMStringHelper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\DOMStringPrintWriter.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\DOMStringPrintWriter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\DoubleSupport.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\DoubleSupport.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\ExecutionContext.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\ExecutionContext.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\FormatterListener.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\FormatterListener.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\NamedNodeMapAttributeList.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\NamedNodeMapAttributeList.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\NullPrintWriter.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\NullPrintWriter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\PlatformSupportDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\PlatformSupportInit.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\PlatformSupportInit.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\PrefixResolver.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\PrefixResolver.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\PrintWriter.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\PrintWriter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\ProblemListenerBase.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\ProblemListenerBase.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\ReusableArenaAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\ReusableArenaBlock.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\StdBinInputStream.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\StdBinInputStream.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\StringTokenizer.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\StringTokenizer.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\URISupport.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\URISupport.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\Writer.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\Writer.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanArrayAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanBitmap.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanBitmap.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanCollationServices.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDecimalFormatSymbols.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDecimalFormatSymbols.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDOMStringAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDOMStringAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDOMStringCache.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDOMStringCache.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDOMStringHashTable.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDOMStringHashTable.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDOMStringPool.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDOMStringPool.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDOMStringReusableAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanDOMStringReusableAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanEncodingPropertyCache.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanEncodingPropertyCache.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanFileOutputStream.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanFileOutputStream.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanFStreamOutputStream.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanFStreamOutputStream.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanInMemoryMessageLoader.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanInMemoryMessageLoader.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanLocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanMemoryManagement.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanMemoryManagerDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanMemoryManagerDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanMessageLoader.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanMessageLoader.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanNamespace.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanNullOutputStream.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanNullOutputStream.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanNumberFormat.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanNumberFormat.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanOutputStream.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanOutputStream.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanOutputStreamPrintWriter.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanOutputStreamPrintWriter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanParsedURI.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanParsedURI.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanReferenceCountedObject.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanReferenceCountedObject.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanSimplePrefixResolver.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanSimplePrefixResolver.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanStdOutputStream.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanStdOutputStream.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanToXercesTranscoderWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanToXercesTranscoderWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanTranscodingServices.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanTranscodingServices.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanUnicode.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanUTF16Transcoder.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanUTF16Transcoder.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanXMLChar.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XalanXMLChar.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XSLException.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\PlatformSupport\XSLException.hpp # End Source File # End Group # Begin Group "DOMSupport" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\DOMServices.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\DOMServices.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\DOMSupport.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\DOMSupport.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\DOMSupportDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\DOMSupportDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\DOMSupportDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\DOMSupportException.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\DOMSupportException.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\DOMSupportInit.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\DOMSupportInit.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\TreeWalker.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\TreeWalker.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\XalanDocumentPrefixResolver.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\XalanDocumentPrefixResolver.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\XalanNamespacesStack.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\DOMSupport\XalanNamespacesStack.hpp # End Source File # End Group # Begin Group "XPath" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\ElementPrefixResolverProxy.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\ElementPrefixResolverProxy.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FormatterStringLengthCounter.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FormatterStringLengthCounter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\Function.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\Function.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionConcat.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionConcat.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionContains.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionContains.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionID.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionID.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionLang.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionLang.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionNamespaceURI.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionNamespaceURI.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionNormalizeSpace.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionNormalizeSpace.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionStartsWith.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionStartsWith.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionString.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionString.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionSubstring.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionSubstring.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionSubstringAfter.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionSubstringAfter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionSubstringBefore.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionSubstringBefore.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionTranslate.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\FunctionTranslate.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\MutableNodeRefList.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\MutableNodeRefList.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\NameSpace.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\NodeRefList.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\NodeRefList.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\NodeRefListBase.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\NodeRefListBase.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanDocumentFragmentNodeRefListBaseProxy.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanDocumentFragmentNodeRefListBaseProxy.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanQName.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanQName.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanQNameByReference.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanQNameByReference.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanQNameByValue.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanQNameByValue.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanQNameByValueAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanQNameByValueAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanXPathException.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XalanXPathException.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XBoolean.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XBoolean.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSet.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSet.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSetAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSetAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSetBase.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSetBase.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSetNodeProxy.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSetNodeProxy.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSetNodeProxyAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSetNodeProxyAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSetResultTreeFragProxy.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNodeSetResultTreeFragProxy.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNumber.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNumber.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNumberAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNumberAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNumberBase.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XNumberBase.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObject.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObject.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectFactory.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectFactory.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectFactoryDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectFactoryDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectResultTreeFragProxy.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectResultTreeFragProxy.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectResultTreeFragProxyBase.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectResultTreeFragProxyBase.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectResultTreeFragProxyText.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectResultTreeFragProxyText.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectTypeCallback.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XObjectTypeCallback.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPath.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPath.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathConstructionContext.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathConstructionContext.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathConstructionContextDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathConstructionContextDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathEnvSupport.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathEnvSupport.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathEnvSupportDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathEnvSupportDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathEvaluator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathEvaluator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathExecutionContext.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathExecutionContext.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathExecutionContextDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathExecutionContextDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathExpression.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathExpression.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathFactory.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathFactory.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathFactoryBlock.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathFactoryBlock.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathFactoryDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathFactoryDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathFunctionTable.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathFunctionTable.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathInit.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathInit.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathParserException.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathParserException.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathProcessor.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathProcessor.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathProcessorImpl.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XPathProcessorImpl.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XString.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XString.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringAdapter.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringAdapter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringAdapterAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringAdapterAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringBase.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringBase.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringCached.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringCached.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringCachedAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringCachedAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringReference.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringReference.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringReferenceAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XStringReferenceAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XToken.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XToken.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XTokenNumberAdapter.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XTokenNumberAdapter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XTokenNumberAdapterAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XTokenNumberAdapterAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XTokenStringAdapter.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XTokenStringAdapter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XTokenStringAdapterAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XTokenStringAdapterAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XUnknown.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPath\XUnknown.hpp # End Source File # End Group # Begin Group "XPathCAPI" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPathCAPI\XPathCAPI.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XPathCAPI\XPathCAPI.h # End Source File # End Group # Begin Group "XMLSupport" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\FormatterToHTML.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\FormatterToHTML.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\FormatterToNull.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\FormatterToNull.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\FormatterToText.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\FormatterToText.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\FormatterToXML.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\FormatterToXML.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\FormatterToXMLUnicode.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\FormatterTreeWalker.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\FormatterTreeWalker.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanDummyIndentWriter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanFormatterWriter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanHTMLElementsProperties.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanHTMLElementsProperties.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanIndentWriter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanOtherEncodingWriter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanUTF16Writer.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanUTF16Writer.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanUTF8Writer.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanUTF8Writer.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanXMLSerializerBase.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanXMLSerializerBase.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanXMLSerializerFactory.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XalanXMLSerializerFactory.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XMLParserLiaison.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XMLParserLiaison.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XMLSupportDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XMLSupportException.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XMLSupportException.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XMLSupportInit.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XMLSupport\XMLSupportInit.hpp # End Source File # End Group # Begin Group "XercesParserLiaison" # PROP Default_Filter "" # Begin Group "Deprecated" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\FormatterToDeprecatedXercesDOM.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\FormatterToDeprecatedXercesDOM.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesAttrBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesAttrBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesAttributeBridgeAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesAttributeBridgeAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesBridgeHelper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesBridgeHelper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesBridgeNavigator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesBridgeNavigator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesBridgeTypes.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesCDATASectionBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesCDATASectionBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesCommentBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesCommentBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesDocumentBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesDocumentBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesDocumentFragmentBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesDocumentFragmentBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesDocumentTypeBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesDocumentTypeBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesDOM_NodeHack.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesDOM_NodeHack.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesDOMImplementationBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesDOMImplementationBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesElementBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesElementBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesElementBridgeAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesElementBridgeAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesEntityBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesEntityBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesEntityReferenceBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesEntityReferenceBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesNamedNodeMapBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesNamedNodeMapBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesNodeListBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesNodeListBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesNotationBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesNotationBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesProcessingInstructionBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesProcessingInstructionBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesTextBridge.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesTextBridge.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesTextBridgeAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesTextBridgeAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesToXalanNodeMap.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesToXalanNodeMap.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesTreeWalker.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\Deprecated\XercesTreeWalker.hpp # End Source File # End Group # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\FormatterToXercesDOM.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\FormatterToXercesDOM.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesAttrWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesAttrWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesAttrWrapperAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesAttrWrapperAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesCDATASectionWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesCDATASectionWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesCommentWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesCommentWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDocumentTypeWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDocumentTypeWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDocumentWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDocumentWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMException.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMException.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMFormatterWalker.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMFormatterWalker.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMImplementationWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMImplementationWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMSupport.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMSupport.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMWalker.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMWalker.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMWrapperException.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesDOMWrapperException.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesElementWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesElementWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesElementWrapperAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesElementWrapperAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesEntityReferenceWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesEntityReferenceWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesEntityWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesEntityWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesLiaisonXalanDOMStringPool.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesLiaisonXalanDOMStringPool.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesNamedNodeMapAttributeList.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesNamedNodeMapAttributeList.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesNamedNodeMapWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesNamedNodeMapWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesNodeListWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesNodeListWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesNotationWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesNotationWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesParserLiaison.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesParserLiaison.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesParserLiaisonDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesProcessingInstructionWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesProcessingInstructionWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesTextWrapper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesTextWrapper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesTextWrapperAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesTextWrapperAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesWrapperHelper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesWrapperHelper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesWrapperNavigator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesWrapperNavigator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesWrapperNavigatorAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesWrapperNavigatorAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesWrapperToXalanNodeMap.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesWrapperToXalanNodeMap.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesWrapperTypes.hpp # End Source File # End Group # Begin Group "XalanSourceTree" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\FormatterToSourceTree.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\FormatterToSourceTree.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeAttr.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeAttr.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeAttributeAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeAttributeAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeAttributeNSAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeAttributeNSAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeAttrNS.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeAttrNS.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeComment.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeComment.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeCommentAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeCommentAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeContentHandler.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeContentHandler.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeDocument.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeDocument.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeDocumentFragment.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeDocumentFragment.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeDOMSupport.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeDOMSupport.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElement.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElement.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementA.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementA.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementAAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementAAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementANS.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementANS.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementANSAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementANSAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementNA.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementNA.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementNAAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementNAAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementNANS.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementNANS.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementNANSAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeElementNANSAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeHelper.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeHelper.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeInit.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeInit.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeParserLiaison.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeParserLiaison.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeProcessingInstruction.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeProcessingInstruction.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeProcessingInstructionAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeProcessingInstructionAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeText.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeText.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeTextAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeTextAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeTextIWS.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeTextIWS.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeTextIWSAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanSourceTree\XalanSourceTreeTextIWSAllocator.hpp # End Source File # End Group # Begin Group "XSLT" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\AVT.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\AVT.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\AVTPart.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\AVTPart.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\AVTPartSimple.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\AVTPartSimple.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\AVTPartXPath.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\AVTPartXPath.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\Constants.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\Constants.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\CountersTable.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\CountersTable.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\DecimalToRoman.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemApplyImport.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemApplyImport.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemApplyTemplates.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemApplyTemplates.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemAttribute.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemAttribute.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemAttributeSet.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemAttributeSet.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemCallTemplate.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemCallTemplate.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemChoose.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemChoose.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemComment.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemComment.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemCopy.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemCopy.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemCopyOf.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemCopyOf.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemDecimalFormat.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemDecimalFormat.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemElement.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemElement.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemEmpty.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemEmpty.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemExtensionCall.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemExtensionCall.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemFallback.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemFallback.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemForEach.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemForEach.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemForwardCompatible.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemForwardCompatible.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemIf.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemIf.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemLiteralResult.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemLiteralResult.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemMessage.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemMessage.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemNumber.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemNumber.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemOtherwise.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemOtherwise.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemParam.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemParam.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemPI.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemPI.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemSort.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemSort.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemTemplate.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemTemplate.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemTemplateElement.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemTemplateElement.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemText.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemText.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemTextLiteral.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemTextLiteral.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemUse.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemUse.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemValueOf.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemValueOf.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemVariable.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemVariable.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemWhen.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemWhen.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemWithParam.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ElemWithParam.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ExtensionFunctionHandler.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ExtensionFunctionHandler.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ExtensionNSHandler.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ExtensionNSHandler.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionCurrent.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionCurrent.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionDocument.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionDocument.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionElementAvailable.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionElementAvailable.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionFormatNumber.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionFormatNumber.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionFunctionAvailable.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionFunctionAvailable.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionGenerateID.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionGenerateID.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionKey.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionKey.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionSystemProperty.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionSystemProperty.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionUnparsedEntityURI.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\FunctionUnparsedEntityURI.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\GenerateEvent.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\GenerateEvent.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\KeyDeclaration.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\KeyTable.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\KeyTable.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\NamespacesHandler.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\NamespacesHandler.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\NodeSorter.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\NodeSorter.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\NodeSortKey.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\NodeSortKey.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\OutputContextStack.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\OutputContextStack.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ProblemListener.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ProblemListener.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ProblemListenerDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ProblemListenerDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ResultNamespacesStack.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\ResultNamespacesStack.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\SelectionEvent.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\SelectionEvent.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\Stylesheet.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\Stylesheet.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetConstructionContext.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetConstructionContext.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetConstructionContextDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetConstructionContextDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetExecutionContext.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetExecutionContext.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetExecutionContextDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetExecutionContextDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetHandler.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetHandler.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetRoot.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\StylesheetRoot.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\TopLevelArg.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\TopLevelArg.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\TraceListener.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\TraceListener.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\TraceListenerDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\TraceListenerDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\TracerEvent.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\TracerEvent.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\VariablesStack.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\VariablesStack.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanAVTAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanAVTAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanAVTPartSimpleAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanAVTPartSimpleAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanAVTPartXPathAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanAVTPartXPathAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemApplyTemplatesAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemApplyTemplatesAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemAttributeAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemAttributeAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemAttributeSetAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemAttributeSetAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemCallTemplateAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemCallTemplateAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemElementAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemElementAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemEmptyAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemEmptyAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemLiteralResultAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemLiteralResultAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemTemplateAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemTemplateAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemTextAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemTextAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemTextLiteralAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemTextLiteralAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemValueOfAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemValueOfAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemVariableAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanElemVariableAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanMatchPatternData.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanMatchPatternData.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanMatchPatternDataAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanMatchPatternDataAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanNumberingResourceBundle.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanNumberingResourceBundle.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanParamHolder.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanSourceTreeDocumentAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanSourceTreeDocumentAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanSourceTreeDocumentFragmentAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanSourceTreeDocumentFragmentAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanSpaceNodeTester.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XalanSpaceNodeTester.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XResultTreeFrag.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XResultTreeFrag.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XResultTreeFragAllocator.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XResultTreeFragAllocator.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTEngineImpl.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTEngineImpl.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTInit.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTInit.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTInputSource.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTInputSource.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTProcessor.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTProcessor.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTProcessorEnvSupport.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTProcessorEnvSupport.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTProcessorEnvSupportDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTProcessorEnvSupportDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTProcessorException.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTProcessorException.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTResultTarget.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XSLT\XSLTResultTarget.hpp # End Source File # End Group # Begin Group "XalanExtensions" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionDifference.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionDifference.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionDistinct.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionDistinct.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionEvaluate.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionEvaluate.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionHasSameNodes.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionHasSameNodes.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionIntersection.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionIntersection.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionNodeSet.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\FunctionNodeSet.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\XalanExtensions.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\XalanExtensions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExtensions\XalanExtensionsDefinitions.hpp # End Source File # End Group # Begin Group "XalanEXSLT" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTCommon.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTCommon.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTCommonImpl.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTDateTime.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTDateTime.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTDateTimeImpl.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTDynamic.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTDynamic.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTDynamicImpl.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTMath.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTMath.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTMathImpl.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTSet.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTSet.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTSetImpl.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTString.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTString.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanEXSLT\XalanEXSLTStringImpl.hpp # End Source File # End Group # Begin Group "XalanTransformer" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanCAPI.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanCAPI.h # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanCompiledStylesheet.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanCompiledStylesheetDefault.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanCompiledStylesheetDefault.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanDefaultDocumentBuilder.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanDefaultDocumentBuilder.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanDefaultParsedSource.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanDefaultParsedSource.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanDocumentBuilder.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanParsedSource.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanParsedSource.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanSourceTreeWrapperParsedSource.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanSourceTreeWrapperParsedSource.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanTransformer.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanTransformer.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanTransformerDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanTransformerOutputStream.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanTransformerOutputStream.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanTransformerProblemListener.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XalanTransformerProblemListener.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XercesDOMParsedSource.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XercesDOMParsedSource.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XercesDOMWrapperParsedSource.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanTransformer\XercesDOMWrapperParsedSource.hpp # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # Begin Source File SOURCE=..\..\Res\AllInOne\AllInOne.rc # End Source File # Begin Source File SOURCE=..\..\Res\AllInOne\resource.h # End Source File # End Group # Begin Group "Harness" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\..\..\src\xalanc\Harness\XalanDiagnosticMemoryManager.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Harness\XalanDiagnosticMemoryManager.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Harness\XalanFileUtility.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Harness\XalanFileUtility.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Harness\XalanHarnessDefinitions.hpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Harness\XalanXMLFileReporter.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\src\xalanc\Harness\XalanXMLFileReporter.hpp # End Source File # End Group # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/CompileStylesheet/0002775000175000000640000000000012037700125020725 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/CompileStylesheet/CompileStylesheet.dsp0000664000175000000640000001600511731656104025106 0ustar stevesamba# Microsoft Developer Studio Project File - Name="CompileStylesheet" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=CompileStylesheet - Win32 Debug !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 "CompileStylesheet.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 "CompileStylesheet.mak" CFG="CompileStylesheet - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "CompileStylesheet - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "CompileStylesheet - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "CompileStylesheet - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "CompileStylesheet - Win64 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)" == "CompileStylesheet - 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 "..\..\..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Release\CompileStylesheet" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "CompileStylesheet - 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 "..\..\..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Debug\CompileStylesheet" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "CompileStylesheet - Win64 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 "..\..\..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Release\CompileStylesheet" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IX86 /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "CompileStylesheet - Win64 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 "..\..\..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Debug\CompileStylesheet" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "CompileStylesheet - Win32 Release" # Name "CompileStylesheet - Win32 Debug" # Name "CompileStylesheet - Win64 Release" # Name "CompileStylesheet - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\..\..\..\..\samples\CompileStylesheet\CompileStylesheet.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/ApacheModuleXSLT/0002775000175000000640000000000012037700125020325 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/ApacheModuleXSLT/ApacheModuleXSLT.dsp0000664000175000000640000001471311731656104024112 0ustar stevesamba# Microsoft Developer Studio Project File - Name="ApacheModuleXSLT" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 CFG=ApacheModuleXSLT - Win32 Debug !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 "ApacheModuleXSLT.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 "ApacheModuleXSLT.mak" CFG="ApacheModuleXSLT - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ApacheModuleXSLT - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "ApacheModuleXSLT - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "ApacheModuleXSLT - Win64 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "ApacheModuleXSLT - Win64 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)" == "ApacheModuleXSLT - 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 "..\..\..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Release\ApacheModuleXSLT" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /D "APACHEMODULEXSLT_EXPORTS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GX /O2 /Ob2 /I "..\..\..\..\src" /I "\Apache Group\Apache\include" /D "NDEBUG" /D "_MBCS" /D "APACHEMODULEXSLT_EXPORTS" /FD /c # SUBTRACT CPP /YX /Yc /Yu # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 /dll /machine:I386 # ADD LINK32 ApacheCore.lib /nologo /dll /machine:I386 !ELSEIF "$(CFG)" == "ApacheModuleXSLT - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "..\..\..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Debug\ApacheModuleXSLT" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "_MBCS" /D "APACHEMODULEXSLT_EXPORTS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "\Apache Group\Apache\include" /I "..\..\..\..\src" /D "_MBCS" /D "APACHEMODULEXSLT_EXPORTS" /YX /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 /dll /debug /machine:I386 /pdbtype:sept # ADD LINK32 ApacheCore.lib /nologo /dll /debug /machine:I386 /pdbtype:sept !ELSEIF "$(CFG)" == "ApacheModuleXSLT - Win64 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 "..\..\..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Release\ApacheModuleXSLT" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /D "APACHEMODULEXSLT_EXPORTS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GX /O2 /Ob2 /I "..\..\..\..\src" /I "\Apache Group\Apache\include" /D "NDEBUG" /D "_MBCS" /D "APACHEMODULEXSLT_EXPORTS" /FD /c # SUBTRACT CPP /YX /Yc /Yu # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 /dll /machine:I386 # ADD LINK32 ApacheCore.lib /nologo /dll /machine:IA64 !ELSEIF "$(CFG)" == "ApacheModuleXSLT - Win64 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "..\..\..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Debug\ApacheModuleXSLT" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "_MBCS" /D "APACHEMODULEXSLT_EXPORTS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "\Apache Group\Apache\include" /I "..\..\..\..\src" /D "_MBCS" /D "APACHEMODULEXSLT_EXPORTS" /YX /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 /dll /debug /machine:I386 /pdbtype:sept # ADD LINK32 ApacheCore.lib /nologo /dll /debug /machine:IA64 /pdbtype:sept !ENDIF # Begin Target # Name "ApacheModuleXSLT - Win32 Release" # Name "ApacheModuleXSLT - Win32 Debug" # Name "ApacheModuleXSLT - Win64 Release" # Name "ApacheModuleXSLT - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\..\..\..\..\samples\ApacheModuleXSLT\mod_xslt.c # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/XalanTransformerCallback/0002775000175000000640000000000012037700125022166 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/XalanTransformerCallback/XalanTransformerCallback.dsp0000664000175000000640000001624611731656104027617 0ustar stevesamba# Microsoft Developer Studio Project File - Name="XalanTransformerCallback" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=XalanTransformerCallback - Win32 Debug !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 "XalanTransformerCallback.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 "XalanTransformerCallback.mak" CFG="XalanTransformerCallback - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "XalanTransformerCallback - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "XalanTransformerCallback - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "XalanTransformerCallback - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "XalanTransformerCallback - Win64 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)" == "XalanTransformerCallback - 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 "..\..\..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Release\XalanTransformerCallback" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "XalanTransformerCallback - 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 "..\..\..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Debug\XalanTransformerCallback" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "XalanTransformerCallback - Win64 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 "..\..\..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Release\XalanTransformerCallback" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IX86 /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "XalanTransformerCallback - Win64 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 "..\..\..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Debug\XalanTransformerCallback" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "XalanTransformerCallback - Win32 Release" # Name "XalanTransformerCallback - Win32 Debug" # Name "XalanTransformerCallback - Win64 Release" # Name "XalanTransformerCallback - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\..\..\..\..\samples\XalanTransformerCallback\XalanTransformerCallback.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/XalanExe/0002775000175000000640000000000012037700125016770 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/XalanExe/XalanExe.dsp0000664000175000000640000001631311731656104021216 0ustar stevesamba# Microsoft Developer Studio Project File - Name="XalanExe" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=XalanExe - Win32 Debug !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 "XalanExe.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 "XalanExe.mak" CFG="XalanExe - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "XalanExe - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "XalanExe - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "XalanExe - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "XalanExe - Win64 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)" == "XalanExe - 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 "..\..\..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Release\XalanExe" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\Build\Win32\VC6\Release\Nls\Include" /I "..\..\..\..\..\..\xml-xerces\c\src" /I "..\..\..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x2f4000 /debug /machine:I386 /nodefaultlib:"libc" /out:"..\..\..\..\Build\Win32\VC6\Release/Xalan.exe" /libpath:"..\..\..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" # SUBTRACT LINK32 /pdb:none !ELSEIF "$(CFG)" == "XalanExe - 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 "..\..\..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Debug\XalanExe" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\Build\Win32\VC6\Debug\Nls\Include" /I "..\..\..\..\..\..\xml-xerces\c\src" /I "..\..\..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # SUBTRACT CPP /Fr # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /debug /machine:I386 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x2f4000 /debug /machine:I386 /nodefaultlib:"libc" /out:"..\..\..\..\Build\Win32\VC6\Debug/Xalan.exe" /pdbtype:sept /libpath:"..\..\..\..\..\..\xml-xerces\c\Build\Win32\VC6\Debug\\" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" # SUBTRACT LINK32 /pdb:none !ELSEIF "$(CFG)" == "XalanExe - Win64 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 "..\..\..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Release\XalanExe" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\Build\Win64\VC6\Release\Nls\Include" /I "..\..\..\..\..\..\xml-xerces\c\src" /I "..\..\..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x2f4000 /pdb:none /machine:IX86 /out:"..\..\..\..\Build\Win64\VC6\Release/Xalan.exe" /libpath:"..\..\..\..\..\..\xml-xerces\c\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "XalanExe - Win64 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 "..\..\..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Debug\XalanExe" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\Build\Win64\VC6\Debug\Nls\Include" /I "..\..\..\..\..\..\xml-xerces\c\src" /I "..\..\..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # SUBTRACT CPP /Fr # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /debug /machine:I386 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x2f4000 /debug /machine:IX86 /out:"..\..\..\..\Build\Win64\VC6\Debug/Xalan.exe" /pdbtype:sept /libpath:"..\..\..\..\..\..\xml-xerces\c\Build\Win64\VC6\Debug\\" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 # SUBTRACT LINK32 /pdb:none /incremental:no !ENDIF # Begin Target # Name "XalanExe - Win32 Release" # Name "XalanExe - Win32 Debug" # Name "XalanExe - Win64 Release" # Name "XalanExe - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Source File SOURCE=..\..\..\..\src\xalanc\XalanExe\XalanExe.cpp # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/ThreadSafe/0002775000175000000640000000000012037700125017271 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/ThreadSafe/ThreadSafe.dsp0000664000175000000640000001554411731656104022025 0ustar stevesamba# Microsoft Developer Studio Project File - Name="ThreadSafe" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=ThreadSafe - Win32 Debug !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 "ThreadSafe.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 "ThreadSafe.mak" CFG="ThreadSafe - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ThreadSafe - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "ThreadSafe - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "ThreadSafe - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "ThreadSafe - Win64 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)" == "ThreadSafe - 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 "..\..\..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Release\ThreadSafe" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "ThreadSafe - 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 "..\..\..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Debug\ThreadSafe" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "ThreadSafe - Win64 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 "..\..\..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Release\ThreadSafe" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IX86 /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "ThreadSafe - Win64 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 "..\..\..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Debug\ThreadSafe" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "ThreadSafe - Win32 Release" # Name "ThreadSafe - Win32 Debug" # Name "ThreadSafe - Win64 Release" # Name "ThreadSafe - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\..\..\..\..\samples\ThreadSafe\ThreadSafe.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/SerializeNodeSet/0002775000175000000640000000000012037700125020474 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/SerializeNodeSet/SerializeNodeSet.dsp0000664000175000000640000001627611731656104024436 0ustar stevesamba# Microsoft Developer Studio Project File - Name="SerializeNodeSet" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=SerializeNodeSet - Win32 Debug !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 "SerializeNodeSet.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 "SerializeNodeSet.mak" CFG="SerializeNodeSet - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "SerializeNodeSet - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "SerializeNodeSet - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "SerializeNodeSet - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "SerializeNodeSet - Win64 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)" == "SerializeNodeSet - 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 "..\..\..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Release\SerializeNodeSet" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\Build\Win32\VC6\Release\Nls\Include" /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "SerializeNodeSet - 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 "..\..\..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Debug\SerializeNodeSet" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\Build\Win32\VC6\Debug\Nls\Include" /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "SerializeNodeSet - Win64 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 "..\..\..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Release\SerializeNodeSet" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\Build\Win64\VC6\Release\Nls\Include" /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IX86 /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "SerializeNodeSet - Win64 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 "..\..\..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Debug\SerializeNodeSet" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\Build\Win64\VC6\Debug\Nls\Include" /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "SerializeNodeSet - Win32 Release" # Name "SerializeNodeSet - Win32 Debug" # Name "SerializeNodeSet - Win64 Release" # Name "SerializeNodeSet - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\..\..\..\..\samples\SerializeNodeSet\SerializeNodeSet.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/TraceListen/0002775000175000000640000000000012037700125017500 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC6/TraceListen/TraceListen.dsp0000664000175000000640000001557311731656104022445 0ustar stevesamba# Microsoft Developer Studio Project File - Name="TraceListen" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=TraceListen - Win32 Debug !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 "TraceListen.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 "TraceListen.mak" CFG="TraceListen - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "TraceListen - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "TraceListen - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "TraceListen - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "TraceListen - Win64 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)" == "TraceListen - 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 "..\..\..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Release\TraceListen" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "TraceListen - 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 "..\..\..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win32\VC6\Debug\TraceListen" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "TraceListen - Win64 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 "..\..\..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Release\TraceListen" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IX86 /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "TraceListen - Win64 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 "..\..\..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\..\..\Build\Win64\VC6\Debug\TraceListen" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\src" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "TraceListen - Win32 Release" # Name "TraceListen - Win32 Debug" # Name "TraceListen - Win64 Release" # Name "TraceListen - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\..\..\..\..\samples\TraceListen\TraceListen.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Projects/Win32/VC6/Xalan.dsw0000664000175000000640000001510011731656104017047 0ustar stevesambaMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "AllInOne"=".\AllInOne\AllInOne.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name Localization End Project Dependency }}} ############################################################################### Project: "CompileStylesheet"=".\CompileStylesheet\CompileStylesheet.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOne End Project Dependency }}} ############################################################################### Project: "DocumentBuilder"=".\DocumentBuilder\DocumentBuilder.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOne End Project Dependency }}} ############################################################################### Project: "ExternalFunction"=".\ExternalFunction\ExternalFunction.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOne End Project Dependency }}} ############################################################################### Project: "Localization"=".\UTILS\Localization\Localization.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "ParsedSourceWrappers"=".\ParsedSourceWrappers\ParsedSourceWrappers.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOne End Project Dependency }}} ############################################################################### Project: "SerializeNodeSet"=".\SerializeNodeSet\SerializeNodeSet.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOne End Project Dependency }}} ############################################################################### Project: "SimpleTransform"=".\SimpleTransform\SimpleTransform.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOne End Project Dependency }}} ############################################################################### Project: "SimpleXPathAPI"=".\SimpleXPathAPI\SimpleXPathAPI.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOne End Project Dependency }}} ############################################################################### Project: "SimpleXPathCAPI"=".\SimpleXPathCAPI\SimpleXPathCAPI.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOne End Project Dependency }}} ############################################################################### Project: "StreamTransform"=".\StreamTransform\StreamTransform.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOne End Project Dependency }}} ############################################################################### Project: "TestXPath"=".\TestXPath\TestXPath.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOne End Project Dependency }}} ############################################################################### Project: "TestXSLT"=".\TestXSLT\TestXSLT.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOne End Project Dependency }}} ############################################################################### Project: "ThreadSafe"=".\ThreadSafe\ThreadSafe.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOne End Project Dependency }}} ############################################################################### Project: "ThreadTest"="..\..\..\Tests\Threads\ThreadTest.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOne End Project Dependency }}} ############################################################################### Project: "TraceListen"=".\TraceListen\TraceListen.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOne End Project Dependency }}} ############################################################################### Project: "TransformToXercesDOM"=".\TransformToXercesDOM\TransformToXercesDOM.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOne End Project Dependency }}} ############################################################################### Project: "UseStylesheetParam"=".\UseStylesheetParam\UseStylesheetParam.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOne End Project Dependency }}} ############################################################################### Project: "XalanExe"=".\XalanExe\XalanExe.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOne End Project Dependency }}} ############################################################################### Project: "XalanTransform"=".\XalanTransform\XalanTransform.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOne End Project Dependency }}} ############################################################################### Project: "XalanTransformerCallback"=".\XalanTransformerCallback\XalanTransformerCallback.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOne End Project Dependency }}} ############################################################################### Project: "conf"="..\..\..\Tests\Conf\conf.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOne End Project Dependency }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### xalan-c-1.11/c/Projects/Win32/VC6/XalanICU.dsw0000664000175000000640000001535711731656104017426 0ustar stevesambaMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "AllInOneWithICU"=".\AllInOne\AllInOneWithICU.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name LocalizationWithICU End Project Dependency }}} ############################################################################### Project: "CompileStylesheet"=".\CompileStylesheet\CompileStylesheet.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOneWithICU End Project Dependency }}} ############################################################################### Project: "DocumentBuilder"=".\DocumentBuilder\DocumentBuilder.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOneWithICU End Project Dependency }}} ############################################################################### Project: "ExternalFunction"=".\ExternalFunction\ExternalFunction.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOneWithICU End Project Dependency }}} ############################################################################### Project: "LocalizationWithICU"=".\UTILS\Localization\LocalizationWithICU.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "ParsedSourceWrappers"=".\ParsedSourceWrappers\ParsedSourceWrappers.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOneWithICU End Project Dependency }}} ############################################################################### Project: "SerializeNodeSet"=".\SerializeNodeSet\SerializeNodeSet.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOneWithICU End Project Dependency }}} ############################################################################### Project: "SimpleTransform"=".\SimpleTransform\SimpleTransform.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOneWithICU End Project Dependency }}} ############################################################################### Project: "SimpleXPathAPI"=".\SimpleXPathAPI\SimpleXPathAPI.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOneWithICU End Project Dependency }}} ############################################################################### Project: "SimpleXPathCAPI"=".\SimpleXPathCAPI\SimpleXPathCAPI.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOneWithICU End Project Dependency }}} ############################################################################### Project: "StreamTransform"=".\StreamTransform\StreamTransform.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOneWithICU End Project Dependency }}} ############################################################################### Project: "TestXPath"=".\TestXPath\TestXPath.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOneWithICU End Project Dependency }}} ############################################################################### Project: "TestXSLT"=".\TestXSLT\TestXSLT.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOneWithICU End Project Dependency }}} ############################################################################### Project: "ThreadSafe"=".\ThreadSafe\ThreadSafe.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOneWithICU End Project Dependency }}} ############################################################################### Project: "ThreadTest"="..\..\..\Tests\Threads\ThreadTest.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOneWithICU End Project Dependency }}} ############################################################################### Project: "TraceListen"=".\TraceListen\TraceListen.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOneWithICU End Project Dependency }}} ############################################################################### Project: "TransformToXercesDOM"=".\TransformToXercesDOM\TransformToXercesDOM.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOneWithICU End Project Dependency }}} ############################################################################### Project: "UseStylesheetParam"=".\UseStylesheetParam\UseStylesheetParam.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOneWithICU End Project Dependency }}} ############################################################################### Project: "XalanExe"=".\XalanExe\XalanExe.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOneWithICU End Project Dependency }}} ############################################################################### Project: "XalanTransform"=".\XalanTransform\XalanTransform.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOneWithICU End Project Dependency }}} ############################################################################### Project: "XalanTransformerCallback"=".\XalanTransformerCallback\XalanTransformerCallback.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOneWithICU End Project Dependency }}} ############################################################################### Project: "conf"="..\..\..\Tests\Conf\conf.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name AllInOneWithICU End Project Dependency }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### xalan-c-1.11/c/Projects/Win32/VC7.1/0002775000175000000640000000000012037700125015423 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/InputSource/0002775000175000000640000000000012037700125017703 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/InputSource/inputsource.vcproj0000664000175000000640000001735611731656104023531 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/PerfT/0002775000175000000640000000000012037700125016443 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/PerfT/PerfT.vcproj0000664000175000000640000001750411731656104020724 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/Params/0002775000175000000640000000000012037700125016646 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/Params/Params.vcproj0000664000175000000640000001714711731656104021335 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/XPathWrapper/0002775000175000000640000000000012037700125020010 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/XPathWrapper/XPathWrapper.vcproj0000664000175000000640000001202011731656104023622 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/UseStylesheetParam/0002775000175000000640000000000012037700125021212 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/UseStylesheetParam/UseStylesheetParam.vcproj0000664000175000000640000002057611731656104026245 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/SimpleXPathAPI/0002775000175000000640000000000012037700125020153 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/SimpleXPathAPI/SimpleXPathAPI.vcproj0000664000175000000640000002023411731656104024136 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/TestXSLT/0002775000175000000640000000000012037700125017055 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/TestXSLT/TestXSLT.vcproj0000664000175000000640000002031611731656104021743 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/SimpleXPathCAPI/0002775000175000000640000000000012037700125020256 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/SimpleXPathCAPI/SimpleXPathCAPI.vcproj0000664000175000000640000002053211731656104024345 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/Utils/0002775000175000000640000000000012037700125016523 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/Utils/XalanMsgLib/0002775000175000000640000000000012037700125020664 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/Utils/XalanMsgLib/XalanMsgLib.mak0000664000175000000640000002614211731656104023531 0ustar stevesamba# Microsoft Developer Studio Generated NMAKE File, Based on XalanMsgLib.dsp !IF "$(CFG)" == "" CFG=XalanMsgLib - Win32 Debug !MESSAGE No configuration specified. Defaulting to XalanMsgLib - Win32 Debug. !ENDIF !IF "$(CFG)" != "XalanMsgLib - Win32 Release" && "$(CFG)" != "XalanMsgLib - Win32 Release.ICU" && "$(CFG)" != "XalanMsgLib - Win32 Debug" && "$(CFG)" != "XalanMsgLib - Win32 Debug.ICU" && "$(CFG)" != "XalanMsgLib - Win64 Release" && "$(CFG)" != "XalanMsgLib - Win64 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !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 "XalanMsgLib.mak" CFG="XalanMsgLib - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "XalanMsgLib - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "XalanMsgLib - Win32 Release.ICU" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "XalanMsgLib - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "XalanMsgLib - Win32 Debug.ICU" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "XalanMsgLib - Win64 Release" (based on "Win64 (x86) Console Application") !MESSAGE "XalanMsgLib - Win64 Debug" (based on "Win64 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF NO_EXTERNAL_DEPS=1 CPP=cl.exe MTL=midl.exe RSC=rc.exe LINK32=link.exe XERCESINCLUDE=/I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" XERCESLIB=/libpath:"$(XERCESCROOT)\lib" XERCESLIBDEBUG=$(XERCESLIB) /libpath:"$(XERCESCROOT)\Build\Win32\VC7.1\Debug" XERCESLIBRELEASE=$(XERCESLIB) /libpath:"$(XERCESCROOT)\Build\Win32\VC7.1\Release" LINK32_OBJS= \ "$(INTDIR)\XalanMsgLib.obj" \ "$(INTDIR)\Localization.res" !IF "$(CFG)" == "XalanMsgLib - Win32 Release" BUILDRESDIR=.\..\..\..\..\..\Build\Win32\VC7.1\Release OUTDIR=.\$(BUILDRESDIR)\Util\XalanMsgLib INTDIR=.\$(BUILDRESDIR)\Util\XalanMsgLib ALL : "$(BUILDRESDIR)\$(DLLNAME).dll" CLEAN : -@erase "$(INTDIR)\VC70.idb" -@erase "$(INTDIR)\XalanMsgLib.obj" -@erase "$(INTDIR)\Localization.res" -@erase "$(BUILDRESDIR)\$(DLLNAME).dll" -@erase "$(BUILDRESDIR)\$(DLLNAME).exp" -@erase "$(BUILDRESDIR)\$(DLLNAME).lib" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MD /W4 /GX /O2 $(XERCESINCLUDE) /I "..\..\..\..\..\src" /I ".\$(BUILDRESDIR)\Nls\Include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XALANMSGLIB_EXPORTS" /D "XALAN_XALANMSGLIB_BUILD_DLL" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\$(DLLNAME).bsc" BSC32_SBRS= \ LINK32_FLAGS=/nologo /dll /incremental:no /pdb:none /machine:I386 /out:"$(BUILDRESDIR)\$(DLLNAME).dll" /implib:"$(BUILDRESDIR)\$(DLLNAME).lib" $(XERCESLIBRELEASE) "$(BUILDRESDIR)\$(DLLNAME).dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "XalanMsgLib - Win32 Release.ICU" BUILDRESDIR=.\..\..\..\..\..\Build\Win32\VC7.1\Release.ICU OUTDIR=.\$(BUILDRESDIR)\Util\XalanMsgLib INTDIR=.\$(BUILDRESDIR)\Util\XalanMsgLib ALL : "$(BUILDRESDIR)\$(DLLNAME).dll" CLEAN : -@erase "$(INTDIR)\VC70.idb" -@erase "$(INTDIR)\XalanMsgLib.obj" -@erase "$(INTDIR)\Localization.res" -@erase "$(BUILDRESDIR)\$(DLLNAME).dll" -@erase "$(BUILDRESDIR)\$(DLLNAME).exp" -@erase "$(BUILDRESDIR)\$(DLLNAME).lib" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MD /W4 /GX /O2 $(XERCESINCLUDE) /I "..\..\..\..\..\src" /I ".\$(BUILDRESDIR)\Nls\Include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XALANMSGLIB_EXPORTS" /D "XALAN_XALANMSGLIB_BUILD_DLL" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\$(DLLNAME).bsc" BSC32_SBRS= \ LINK32_FLAGS=/nologo /dll /incremental:no /pdb:none /machine:I386 /out:"$(BUILDRESDIR)\$(DLLNAME).dll" /implib:"$(BUILDRESDIR)\$(DLLNAME).lib" $(XERCESLIBRELEASE) "$(BUILDRESDIR)\$(DLLNAME).dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "XalanMsgLib - Win32 Debug" BUILDRESDIR=.\..\..\..\..\..\Build\Win32\VC7.1\Debug OUTDIR=.\$(BUILDRESDIR)\Util\XalanMsgLib INTDIR=.\$(BUILDRESDIR)\Util\XalanMsgLib # Begin Custom Macros OutDir=.\$(BUILDRESDIR)\Util\XalanMsgLib # End Custom Macros ALL : "$(BUILDRESDIR)\$(DLLNAME).dll" CLEAN : -@erase "$(INTDIR)\VC70.idb" -@erase "$(INTDIR)\VC70.pdb" -@erase "$(INTDIR)\XalanMsgLib.obj" -@erase "$(INTDIR)\Localization.res" -@erase "$(INTDIR)\XalanMsgLib.sbr" -@erase "$(OUTDIR)\XalanMsgLib.bsc" -@erase "$(OUTDIR)\XalanMsgLib.exp" -@erase "$(OUTDIR)\$(DLLNAME).lib" -@erase "$(BUILDRESDIR)\$(DLLNAME).dll" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MDd /W4 /Gm /GX /ZI /Od $(XERCESINCLUDE) /I "..\..\..\..\..\src" /I ".\$(BUILDRESDIR)\Nls\Include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XALANMSGLIB_EXPORTS" /D "XALAN_XALANMSGLIB_BUILD_DLL" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c MTL_PROJ=/D "_DEBUG" /win32 LINK32_FLAGS= /nologo /dll /pdb:none /debug /machine:I386 /out:"$(BUILDRESDIR)\$(DLLNAME).dll" /implib:"$(BUILDRESDIR)\$(DLLNAME).lib" $(XERCESLIBDEBUG) "$(BUILDRESDIR)\$(DLLNAME).dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "XalanMsgLib - Win32 Debug.ICU" BUILDRESDIR=.\..\..\..\..\..\Build\Win32\VC7.1\Debug.ICU OUTDIR=.\$(BUILDRESDIR)\Util\XalanMsgLib INTDIR=.\$(BUILDRESDIR)\Util\XalanMsgLib # Begin Custom Macros OutDir=.\$(BUILDRESDIR)\Util\XalanMsgLib # End Custom Macros ALL : "$(BUILDRESDIR)\$(DLLNAME).dll" CLEAN : -@erase "$(INTDIR)\VC70.idb" -@erase "$(INTDIR)\VC70.pdb" -@erase "$(INTDIR)\XalanMsgLib.obj" -@erase "$(INTDIR)\Localization.res" -@erase "$(INTDIR)\XalanMsgLib.sbr" -@erase "$(OUTDIR)\XalanMsgLib.bsc" -@erase "$(OUTDIR)\XalanMsgLib.exp" -@erase "$(OUTDIR)\$(DLLNAME).lib" -@erase "$(BUILDRESDIR)\$(DLLNAME).dll" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MDd /W4 /Gm /GX /ZI /Od $(XERCESINCLUDE) /I "..\..\..\..\..\src" /I ".\$(BUILDRESDIR)\Nls\Include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XALANMSGLIB_EXPORTS" /D "XALAN_XALANMSGLIB_BUILD_DLL" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c MTL_PROJ=/D "_DEBUG" /win32 LINK32_FLAGS= /nologo /dll /pdb:none /debug /machine:I386 /out:"$(BUILDRESDIR)\$(DLLNAME).dll" /implib:"$(BUILDRESDIR)\$(DLLNAME).lib" $(XERCESLIBDEBUG) "$(BUILDRESDIR)\$(DLLNAME).dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "XalanMsgLib - Win64 Release" BUILDRESDIR=.\..\..\..\..\..\Build\Win64\VC7.1\Release OUTDIR=.\$(BUILDRESDIR)\Util\XalanMsgLib INTDIR=.\$(BUILDRESDIR)\Util\XalanMsgLib ALL : "$(BUILDRESDIR)\$(DLLNAME).dll" CLEAN : -@erase "$(INTDIR)\VC70.idb" -@erase "$(INTDIR)\XalanMsgLib.obj" -@erase "$(INTDIR)\Localization.res" -@erase "$(BUILDRESDIR)\$(DLLNAME).dll" -@erase "$(BUILDRESDIR)\$(DLLNAME).exp" -@erase "$(BUILDRESDIR)\$(DLLNAME).lib" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MD /W4 /GX /O2 $(XERCESINCLUDE) /I "..\..\..\..\..\src" /I ".\$(BUILDRESDIR)\Nls\Include" /D "WIN64" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XALANMSGLIB_EXPORTS" /D "XALAN_XALANMSGLIB_BUILD_DLL" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 LINK32_FLAGS=/nologo /dll /incremental:no /pdb:none /machine:IX86 /out:"$(BUILDRESDIR)\$(DLLNAME).dll" /implib:"$(BUILDRESDIR)\$(DLLNAME).lib" /machine:IA64 $(XERCESLIBRELEASE) "$(BUILDRESDIR)\$(DLLNAME).dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "XalanMsgLib - Win64 Debug" BUILDRESDIR=.\..\..\..\..\..\Build\Win32\VC7.1\Debug OUTDIR=.\$(BUILDRESDIR)\Util\XalanMsgLib INTDIR=.\$(BUILDRESDIR)\Util\XalanMsgLib # Begin Custom Macros OutDir=.\$(BUILDRESDIR)\Util\XalanMsgLib # End Custom Macros ALL : "$(BUILDRESDIR)\$(DLLNAME).dll" CLEAN : -@erase "$(INTDIR)\VC70.idb" -@erase "$(INTDIR)\VC70.pdb" -@erase "$(INTDIR)\XalanMsgLib.obj" -@erase "$(INTDIR)\Localization.res" -@erase "$(OUTDIR)\XalanMsgLib.exp" -@erase "$(OUTDIR)\$(DLLNAME).lib" -@erase "$(BUILDRESDIR)\$(DLLNAME).dll" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MDd /W4 /Gm /GX /ZI /Od $(XERCESINCLUDE) /I "..\..\..\..\..\src" /I ".\$(BUILDRESDIR)\Nls\Include" /D "WIN64" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XALANMSGLIB_EXPORTS" /D "XALAN_XALANMSGLIB_BUILD_DLL" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c MTL_PROJ=/D "_DEBUG" /win32 LINK32_FLAGS= /nologo /dll /pdb:none /debug /machine:IX86 /out:"$(BUILDRESDIR)\$(DLLNAME).dll" /implib:"$(BUILDRESDIR)\$(DLLNAME).lib" /machine:IA64 $(XERCESLIBDEBUG) "$(BUILDRESDIR)\$(DLLNAME).dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("XalanMsgLib.dep") !INCLUDE "XalanMsgLib.dep" !ELSE !MESSAGE Warning: cannot find "XalanMsgLib.dep" !ENDIF !ENDIF SOURCE=..\..\..\..\..\src\xalanc\Utils\XalanMsgLib\XalanMsgLib.cpp RCSSOURCE=..\..\..\..\..\Projects\Win32\Res\Localization\Localization.rc !IF "$(CFG)" == "XalanMsgLib - Win32 Release" || "$(CFG)" == "XalanMsgLib - Win32 Release.ICU" || "$(CFG)" == "XalanMsgLib - Win64 Release" !IF ! EXIST( "$(BUILDRESDIR)\Nls\Include\LocalMsgIndex.hpp" ) !MESSAGE Can't find a file: $(BUILDRESDIR)\nls\include\LocalMsgIndex.hpp , it should be created by the build process, after running MsgCreator.exe application !ENDIF "$(INTDIR)\XalanMsgLib.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) "$(INTDIR)\Localization.res" : $(SOURCE) "$(INTDIR)" $(RSC) /l 0x409 /fo"$(INTDIR)\Localization.res" /i "..\..\..\..\..\Projects\Win32\Res\Localization" /d "NDEBUG" $(RCSSOURCE) !ELSEIF "$(CFG)" == "XalanMsgLib - Win32 Debug" || "$(CFG)" == "XalanMsgLib - Win32 Debug.ICU" || "$(CFG)" == "XalanMsgLib - Win64 Debug" !IF ! EXIST( "$(BUILDRESDIR)\Nls\Include\LocalMsgIndex.hpp" ) !ERROR Can't find a file: $(BUILDRESDIR)\nls\include\LocalMsgIndex.hpp , it should be created by the build process, after running MsgCreator.exe application !ENDIF "$(INTDIR)\XalanMsgLib.obj" "$(INTDIR)\XalanMsgLib.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) "$(INTDIR)\Localization.res" : $(SOURCE) "$(INTDIR)" $(RSC) /l 0x409 /fo"$(INTDIR)\Localization.res" /i "..\..\..\..\..\Projects\Win32\Res\Localization" /d "_DEBUG" $(RCSSOURCE) !ENDIF xalan-c-1.11/c/Projects/Win32/VC7.1/Utils/MsgCreator/0002775000175000000640000000000012037700125020571 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/Utils/MsgCreator/MsgCreator.mak0000664000175000000640000004275311731656104023351 0ustar stevesamba# Microsoft Developer Studio Generated NMAKE File, Based on MsgCreator.dsp !IF "$(CFG)" == "" CFG=MsgCreator - Win32 Debug !MESSAGE No configuration specified. Defaulting to MsgCreator - Win32 Debug. !ENDIF !IF "$(CFG)" != "MsgCreator - Win32 Release" && "$(CFG)" != "MsgCreator - Win32 Release.ICU" && "$(CFG)" != "MsgCreator - Win32 Debug" && "$(CFG)" != "MsgCreator - Win32 Debug.ICU" && "$(CFG)" != "MsgCreator - Win64 Release" && "$(CFG)" != "MsgCreator - Win64 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !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 "MsgCreator.mak" CFG="MsgCreator - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "MsgCreator - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "MsgCreator - Win32 Release.ICU" (based on "Win32 (x86) Console Application") !MESSAGE "MsgCreator - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "MsgCreator - Win32 Debug.ICU" (based on "Win32 (x86) Console Application") !MESSAGE "MsgCreator - Win64 Release" (based on "Win64 (x86) Console Application") !MESSAGE "MsgCreator - Win64 Debug" (based on "Win64 (x86) Console Application") !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe XALANINCLUDE=.\..\..\..\..\..\src XERCESINCLUDE=/I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" XERCESLIB=/libpath:"$(XERCESCROOT)\lib" XERCESLIBDEBUG=$(XERCESLIB) /libpath:"$(XERCESCROOT)\Build\Win32\VC7.1\Debug" XERCESLIBRELEASE=$(XERCESLIB) /libpath:"$(XERCESCROOT)\Build\Win32\VC7.1\Release" NO_EXTERNAL_DEPS=1 !IF "$(CFG)" == "MsgCreator - Win32 Release" OUTDIR=.\..\..\..\..\..\Build\Win32\VC7.1\Release\Util\MsgCreator INTDIR=.\..\..\..\..\..\Build\Win32\VC7.1\Release\Util\MsgCreator ALL : "..\..\..\..\..\Build\Win32\VC7.1\Release\MsgCreator.exe" CLEAN : -@erase "$(INTDIR)\ICUResHandler.obj" -@erase "$(INTDIR)\InMemHandler.obj" -@erase "$(INTDIR)\MsgCreator.obj" -@erase "$(INTDIR)\MsgFileOutputStream.obj" -@erase "$(INTDIR)\NLSHandler.obj" -@erase "$(INTDIR)\SAX2Handler.obj" -@erase "$(INTDIR)\vc70.idb" -@erase "$(INTDIR)\MsgCreator.pch" -@erase "..\..\..\..\..\Build\Win32\VC7.1\Release\MsgCreator.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W4 /GX /O2 /I ".\\" /I $(XALANINCLUDE) $(XERCESINCLUDE) /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\MsgCreator.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\MsgCreator.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib xerces-c_3.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\MsgCreator.pdb" /machine:I386 $(XERCESLIBRELEASE) /out:"..\..\..\..\..\Build\Win32\VC7.1\Release\MsgCreator.exe" LINK32_OBJS= \ "$(INTDIR)\ICUResHandler.obj" \ "$(INTDIR)\InMemHandler.obj" \ "$(INTDIR)\MsgCreator.obj" \ "$(INTDIR)\NLSHandler.obj" \ "$(INTDIR)\SAX2Handler.obj" \ "$(INTDIR)\MsgFileOutputStream.obj" "..\..\..\..\..\Build\Win32\VC7.1\Release\MsgCreator.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "MsgCreator - Win32 Release.ICU" OUTDIR=.\..\..\..\..\..\Build\Win32\VC7.1\Release.ICU\Util\MsgCreator INTDIR=.\..\..\..\..\..\Build\Win32\VC7.1\Release.ICU\Util\MsgCreator # Begin Custom Macros OutDir=.\..\..\..\..\..\Build\Win32\VC7.1\Release.ICU\Util\MsgCreator # End Custom Macros ALL : "..\..\..\..\..\Build\Win32\VC7.1\Release.ICU\MsgCreator.exe" CLEAN : -@erase "$(INTDIR)\ICUResHandler.obj" -@erase "$(INTDIR)\InMemHandler.obj" -@erase "$(INTDIR)\MsgCreator.obj" -@erase "$(INTDIR)\MsgFileOutputStream.obj" -@erase "$(INTDIR)\NLSHandler.obj" -@erase "$(INTDIR)\SAX2Handler.obj" -@erase "$(INTDIR)\vc70.idb" -@erase "$(INTDIR)\MsgCreator.pch" -@erase "..\..\..\..\..\Build\Win32\VC7.1\Release.ICU\MsgCreator.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W4 /GX /O2 /I ".\\" /I $(XALANINCLUDE) $(XERCESINCLUDE) /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\MsgCreator.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\MsgCreator.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib xerces-c_3.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\MsgCreator.pdb" /machine:I386 $(XERCESLIBRELEASE) /out:"..\..\..\..\..\Build\Win32\VC7.1\Release.ICU\MsgCreator.exe" LINK32_OBJS= \ "$(INTDIR)\ICUResHandler.obj" \ "$(INTDIR)\InMemHandler.obj" \ "$(INTDIR)\MsgCreator.obj" \ "$(INTDIR)\NLSHandler.obj" \ "$(INTDIR)\SAX2Handler.obj" \ "$(INTDIR)\MsgFileOutputStream.obj" "..\..\..\..\..\Build\Win32\VC7.1\Release.ICU\MsgCreator.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "MsgCreator - Win32 Debug" OUTDIR=.\..\..\..\..\..\Build\Win32\VC7.1\Debug\Util\MsgCreator INTDIR=.\..\..\..\..\..\Build\Win32\VC7.1\Debug\Util\MsgCreator # Begin Custom Macros OutDir=.\..\..\..\..\..\Build\Win32\VC7.1\Debug\Util\MsgCreator # End Custom Macros ALL : "..\..\..\..\..\Build\Win32\VC7.1\Debug\MsgCreator.exe" "$(OUTDIR)\MsgCreator.bsc" CLEAN : -@erase "$(INTDIR)\ICUResHandler.obj" -@erase "$(INTDIR)\ICUResHandler.sbr" -@erase "$(INTDIR)\InMemHandler.obj" -@erase "$(INTDIR)\InMemHandler.sbr" -@erase "$(INTDIR)\MsgCreator.obj" -@erase "$(INTDIR)\MsgCreator.sbr" -@erase "$(INTDIR)\MsgFileOutputStream.obj" -@erase "$(INTDIR)\MsgFileOutputStream.sbr" -@erase "$(INTDIR)\NLSHandler.obj" -@erase "$(INTDIR)\NLSHandler.sbr" -@erase "$(INTDIR)\SAX2Handler.obj" -@erase "$(INTDIR)\SAX2Handler.sbr" -@erase "$(INTDIR)\vc70.idb" -@erase "$(INTDIR)\vc70.pdb" -@erase "$(OUTDIR)\MsgCreator.bsc" -@erase "$(OUTDIR)\MsgCreator.pch" -@erase "$(OUTDIR)\MsgCreator.pdb" -@erase "..\..\..\..\..\Build\Win32\VC7.1\Debug\MsgCreator.exe" -@erase "..\..\..\..\..\Build\Win32\VC7.1\Debug\MsgCreator.ilk" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W4 /Gm /GX /ZI /Od /I ".\\" /I $(XALANINCLUDE) $(XERCESINCLUDE) /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fr"$(INTDIR)\\" /Fp"$(INTDIR)\MsgCreator.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\MsgCreator.bsc" BSC32_SBRS= \ "$(INTDIR)\ICUResHandler.sbr" \ "$(INTDIR)\InMemHandler.sbr" \ "$(INTDIR)\MsgCreator.sbr" \ "$(INTDIR)\NLSHandler.sbr" \ "$(INTDIR)\SAX2Handler.sbr" \ "$(INTDIR)\MsgFileOutputStream.sbr" "$(OUTDIR)\MsgCreator.bsc" : "$(OUTDIR)" $(BSC32_SBRS) $(BSC32) @<< $(BSC32_FLAGS) $(BSC32_SBRS) << LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib xerces-c_3D.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\MsgCreator.pdb" /debug /machine:I386 $(XERCESLIBDEBUG) /out:"..\..\..\..\..\Build\Win32\VC7.1\Debug\MsgCreator.exe" /pdbtype:sept LINK32_OBJS= \ "$(INTDIR)\ICUResHandler.obj" \ "$(INTDIR)\InMemHandler.obj" \ "$(INTDIR)\MsgCreator.obj" \ "$(INTDIR)\NLSHandler.obj" \ "$(INTDIR)\SAX2Handler.obj" \ "$(INTDIR)\MsgFileOutputStream.obj" "..\..\..\..\..\Build\Win32\VC7.1\Debug\MsgCreator.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "MsgCreator - Win32 Debug.ICU" OUTDIR=.\..\..\..\..\..\Build\Win32\VC7.1\Debug.ICU\Util\MsgCreator INTDIR=.\..\..\..\..\..\Build\Win32\VC7.1\Debug.ICU\Util\MsgCreator # Begin Custom Macros OutDir=.\..\..\..\..\..\Build\Win32\VC7.1\Debug.ICU\Util\MsgCreator # End Custom Macros ALL : "..\..\..\..\..\Build\Win32\VC7.1\Debug.ICU\MsgCreator.exe" "$(OUTDIR)\MsgCreator.bsc" CLEAN : -@erase "$(INTDIR)\ICUResHandler.obj" -@erase "$(INTDIR)\ICUResHandler.sbr" -@erase "$(INTDIR)\InMemHandler.obj" -@erase "$(INTDIR)\InMemHandler.sbr" -@erase "$(INTDIR)\MsgCreator.obj" -@erase "$(INTDIR)\MsgCreator.sbr" -@erase "$(INTDIR)\MsgFileOutputStream.obj" -@erase "$(INTDIR)\MsgFileOutputStream.sbr" -@erase "$(INTDIR)\NLSHandler.obj" -@erase "$(INTDIR)\NLSHandler.sbr" -@erase "$(INTDIR)\SAX2Handler.obj" -@erase "$(INTDIR)\SAX2Handler.sbr" -@erase "$(INTDIR)\vc70.idb" -@erase "$(INTDIR)\vc70.pdb" -@erase "$(OUTDIR)\MsgCreator.bsc" -@erase "$(INTDIR)\MsgCreator.pch" -@erase "$(OUTDIR)\MsgCreator.pdb" -@erase "..\..\..\..\..\Build\Win32\VC7.1\Debug.ICU\MsgCreator.exe" -@erase "..\..\..\..\..\Build\Win32\VC7.1\Debug.ICU\MsgCreator.ilk" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W4 /Gm /GX /ZI /Od /I ".\\" /I $(XALANINCLUDE) $(XERCESINCLUDE) /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fr"$(INTDIR)\\" /Fp"$(INTDIR)\MsgCreator.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\MsgCreator.bsc" BSC32_SBRS= \ "$(INTDIR)\ICUResHandler.sbr" \ "$(INTDIR)\InMemHandler.sbr" \ "$(INTDIR)\MsgCreator.sbr" \ "$(INTDIR)\NLSHandler.sbr" \ "$(INTDIR)\SAX2Handler.sbr" \ "$(INTDIR)\MsgFileOutputStream.sbr" "$(OUTDIR)\MsgCreator.bsc" : "$(OUTDIR)" $(BSC32_SBRS) $(BSC32) @<< $(BSC32_FLAGS) $(BSC32_SBRS) << LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib xerces-c_3D.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\MsgCreator.pdb" /debug /machine:I386 $(XERCESLIBDEBUG) /out:"..\..\..\..\..\Build\Win32\VC7.1\Debug.ICU\MsgCreator.exe" /pdbtype:sept LINK32_OBJS= \ "$(INTDIR)\ICUResHandler.obj" \ "$(INTDIR)\InMemHandler.obj" \ "$(INTDIR)\MsgCreator.obj" \ "$(INTDIR)\NLSHandler.obj" \ "$(INTDIR)\SAX2Handler.obj" \ "$(INTDIR)\MsgFileOutputStream.obj" "..\..\..\..\..\Build\Win32\VC7.1\Debug.ICU\MsgCreator.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "MsgCreator - Win64 Debug" OUTDIR=.\..\..\..\..\..\Build\Win64\VC7.1\Debug\Util\MsgCreator INTDIR=.\..\..\..\..\..\Build\Win64\VC7.1\Debug\Util\MsgCreator # Begin Custom Macros OutDir=.\..\..\..\..\..\Build\Win64\VC7.1\Debug\Util\MsgCreator # End Custom Macros ALL : "..\..\..\..\..\Build\Win64\VC7.1\Debug\MsgCreator.exe" "$(OUTDIR)\MsgCreator.bsc" CLEAN : -@erase "$(INTDIR)\ICUResHandler.obj" -@erase "$(INTDIR)\ICUResHandler.sbr" -@erase "$(INTDIR)\InMemHandler.obj" -@erase "$(INTDIR)\InMemHandler.sbr" -@erase "$(INTDIR)\MsgCreator.obj" -@erase "$(INTDIR)\MsgCreator.sbr" -@erase "$(INTDIR)\MsgFileOutputStream.obj" -@erase "$(INTDIR)\MsgFileOutputStream.sbr" -@erase "$(INTDIR)\NLSHandler.obj" -@erase "$(INTDIR)\NLSHandler.sbr" -@erase "$(INTDIR)\SAX2Handler.obj" -@erase "$(INTDIR)\SAX2Handler.sbr" -@erase "$(INTDIR)\vc70.idb" -@erase "$(INTDIR)\vc70.pdb" -@erase "$(OUTDIR)\MsgCreator.bsc" -@erase "$(INTDIR)\MsgCreator.pch" -@erase "$(OUTDIR)\MsgCreator.pdb" -@erase "..\..\..\..\..\Build\Win64\VC7.1\Debug\MsgCreator.exe" -@erase "..\..\..\..\..\Build\Win64\VC7.1\Debug\MsgCreator.ilk" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MLd /W4 /Gm /GX /ZI /Od /I ".\\" /I $(XALANINCLUDE) $(XERCESINCLUDE) /D "WIN32" /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fr"$(INTDIR)\\" /Fp"$(INTDIR)\MsgCreator.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\MsgCreator.bsc" BSC32_SBRS= \ "$(INTDIR)\ICUResHandler.sbr" \ "$(INTDIR)\InMemHandler.sbr" \ "$(INTDIR)\MsgCreator.sbr" \ "$(INTDIR)\NLSHandler.sbr" \ "$(INTDIR)\SAX2Handler.sbr" \ "$(INTDIR)\MsgFileOutputStream.sbr" "$(OUTDIR)\MsgCreator.bsc" : "$(OUTDIR)" $(BSC32_SBRS) $(BSC32) @<< $(BSC32_FLAGS) $(BSC32_SBRS) << LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib xerces-c_3D.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\MsgCreator.pdb" /debug /machine:IX86 $(XERCESLIBDEBUG) /out:"..\..\..\..\..\Build\Win64\VC7.1\Debug\MsgCreator.exe" /pdbtype:sept /machine:IA64 LINK32_OBJS= \ "$(INTDIR)\ICUResHandler.obj" \ "$(INTDIR)\InMemHandler.obj" \ "$(INTDIR)\MsgCreator.obj" \ "$(INTDIR)\NLSHandler.obj" \ "$(INTDIR)\SAX2Handler.obj" \ "$(INTDIR)\MsgFileOutputStream.obj" "..\..\..\..\..\Build\Win64\VC7.1\Debug\MsgCreator.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "MsgCreator - Win64 Release" OUTDIR=.\..\..\..\..\..\Build\Win64\VC7.1\Release\Util\MsgCreator INTDIR=.\..\..\..\..\..\Build\Win64\VC7.1\Release\Util\MsgCreator ALL : "..\..\..\..\..\Build\Win64\VC7.1\Release\MsgCreator.exe" CLEAN : -@erase "$(INTDIR)\ICUResHandler.obj" -@erase "$(INTDIR)\InMemHandler.obj" -@erase "$(INTDIR)\MsgCreator.obj" -@erase "$(INTDIR)\MsgFileOutputStream.obj" -@erase "$(INTDIR)\NLSHandler.obj" -@erase "$(INTDIR)\SAX2Handler.obj" -@erase "$(INTDIR)\vc70.idb" -@erase "..\..\..\..\..\Build\Win64\VC7.1\Release\MsgCreator.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W4 /GX /O2 /I ".\\" /I $(XALANINCLUDE) $(XERCESINCLUDE) /D "WIN64" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\MsgCreator.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\MsgCreator.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib xerces-c_3.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\MsgCreator.pdb" /machine:IX86 $(XERCESLIBRELEASE) /out:"..\..\..\..\..\Build\Win64\VC7.1\Release\MsgCreator.exe" /machine:IA64 LINK32_OBJS= \ "$(INTDIR)\ICUResHandler.obj" \ "$(INTDIR)\InMemHandler.obj" \ "$(INTDIR)\MsgCreator.obj" \ "$(INTDIR)\NLSHandler.obj" \ "$(INTDIR)\SAX2Handler.obj" \ "$(INTDIR)\MsgFileOutputStream.obj" "..\..\..\..\..\Build\Win64\VC7.1\Release\MsgCreator.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("MsgCreator.dep") !INCLUDE "MsgCreator.dep" !ELSE !MESSAGE Warning: cannot find "MsgCreator.dep" !ENDIF !ENDIF SOURCE=..\..\..\..\..\src\xalanc\Utils\MsgCreator\ICUResHandler.cpp !IF "$(CFG)" == "MsgCreator - Win32 Release" || "$(CFG)" == "MsgCreator - Win32 Release.ICU" || "$(CFG)" == "MsgCreator - Win64 Release" "$(INTDIR)\ICUResHandler.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "MsgCreator - Win32 Debug" || "$(CFG)" == "MsgCreator - Win32 Debug.ICU" || "$(CFG)" == "MsgCreator - Win64 Debug" "$(INTDIR)\ICUResHandler.obj" "$(INTDIR)\ICUResHandler.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=..\..\..\..\..\src\xalanc\Utils\MsgCreator\InMemHandler.cpp !IF "$(CFG)" == "MsgCreator - Win32 Release" || "$(CFG)" == "MsgCreator - Win32 Release.ICU" || "$(CFG)" == "MsgCreator - Win64 Release" "$(INTDIR)\InMemHandler.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "MsgCreator - Win32 Debug" || "$(CFG)" == "MsgCreator - Win32 Debug.ICU" || "$(CFG)" == "MsgCreator - Win64 Debug" "$(INTDIR)\InMemHandler.obj" "$(INTDIR)\InMemHandler.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=..\..\..\..\..\src\xalanc\Utils\MsgCreator\MsgCreator.cpp !IF "$(CFG)" == "MsgCreator - Win32 Release" || "$(CFG)" == "MsgCreator - Win32 Release.ICU" || "$(CFG)" == "MsgCreator - Win64 Release" "$(INTDIR)\MsgCreator.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "MsgCreator - Win32 Debug" || "$(CFG)" == "MsgCreator - Win32 Debug.ICU" || "$(CFG)" == "MsgCreator - Win64 Debug" "$(INTDIR)\MsgCreator.obj" "$(INTDIR)\MsgCreator.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=..\..\..\..\..\src\xalanc\Utils\MsgCreator\MsgFileOutputStream.cpp !IF "$(CFG)" == "MsgCreator - Win32 Release" || "$(CFG)" == "MsgCreator - Win32 Release.ICU" || "$(CFG)" == "MsgCreator - Win64 Release" "$(INTDIR)\MsgFileOutputStream.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "MsgCreator - Win32 Debug" || "$(CFG)" == "MsgCreator - Win32 Debug.ICU" || "$(CFG)" == "MsgCreator - Win64 Debug" "$(INTDIR)\MsgFileOutputStream.obj" "$(INTDIR)\MsgFileOutputStream.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=..\..\..\..\..\src\xalanc\Utils\MsgCreator\NLSHandler.cpp !IF "$(CFG)" == "MsgCreator - Win32 Release" || "$(CFG)" == "MsgCreator - Win32 Release.ICU" || "$(CFG)" == "MsgCreator - Win64 Release" "$(INTDIR)\NLSHandler.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "MsgCreator - Win32 Debug" || "$(CFG)" == "MsgCreator - Win32 Debug.ICU" || "$(CFG)" == "MsgCreator - Win64 Debug" "$(INTDIR)\NLSHandler.obj" "$(INTDIR)\NLSHandler.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=..\..\..\..\..\src\xalanc\Utils\MsgCreator\SAX2Handler.cpp !IF "$(CFG)" == "MsgCreator - Win32 Release" || "$(CFG)" == "MsgCreator - Win32 Release.ICU" || "$(CFG)" == "MsgCreator - Win64 Release" "$(INTDIR)\SAX2Handler.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "MsgCreator - Win32 Debug" || "$(CFG)" == "MsgCreator - Win32 Debug.ICU" || "$(CFG)" == "MsgCreator - Win64 Debug" "$(INTDIR)\SAX2Handler.obj" "$(INTDIR)\SAX2Handler.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF xalan-c-1.11/c/Projects/Win32/VC7.1/Utils/Localization/0002775000175000000640000000000012037700125021153 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/Utils/Localization/LocalizationWithICU.vcproj0000664000175000000640000000473411731656104026242 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/Utils/Localization/Localization.vcproj0000664000175000000640000000614711731656104025045 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/Utils/Localization/BuildMessages.mak0000664000175000000640000001320711731656104024404 0ustar stevesamba# This makefike requires Tools.ini file with settings # # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Check parameters: # Should be defined: # LOCALE, in form of "en" or "en_US" # TYPE, possible values are "inmem" and "icu" !IF "$(BITS)" != "Win32" && "$(BITS)" != "Win64" ! ERROR Invalid configuration BITS="$(BITS)" specified. !ELSE !MESSAGE Used BITS = $(BITS) !ENDIF !IF "$(CFG)" != "Debug" && "$(CFG)" != "Debug.ICU" && "$(CFG)" != "Release" && "$(CFG)" != "Release.ICU" ! ERROR Invalid configuration CFG="$(CFG)" specified. !ELSE !MESSAGE Used CFG = $(CFG) !ENDIF !IF "$(LOCALE)" == "" ! MESSAGE Locale is not defined. The locale can be defined in the command line or in Tools.ini file ! ERROR Locale must be defined !ELSE ! MESSAGE Used LOCALE = $(LOCALE) !ENDIF !IF "$(TYPE)" == "" ! ERROR Localization type must be defined. Possible values are "inmem" and "icu" !ENDIF !IF "$(TYPE)" != "inmem" && "$(TYPE)" != "icu" ! ERROR Invalid configuration TYPE="$(TYPE)" specified. !ELSE ! MESSAGE Used TYPE = $(TYPE) !ENDIF !IF "$(TYPE)" == "icu" && "$(ICUROOT)"=="" !ERROR Please define ICUROOT in xml-xalan\c\Projects\Win32\VC7.1\Utils\Localization\tools.ini file !ENDIF !IF EXIST ($(NLSDIR)\$(LOCALE)\$(MSGFILENAME)$(LOCALE)$(XIFFEXT)) ! MESSAGE Used XLIFF file: "$(MSGFILENAME)$(LOCALE)$(XIFFEXT)" !ELSE ! ERROR File "$(NLSDIR)\$(LOCALE)\$(MSGFILENAME)$(LOCALE)$(XIFFEXT)" is required !ENDIF include ..\..\..\..\..\version.incl #== Commmon tools MKDIR=mkdir MOVE=move !IF "$(CFG)" == "Debug" || "$(CFG)" == "Debug.ICU" PKGNAME=$(LIBNAME)_$(MS_VER)D !ELSE PKGNAME=$(LIBNAME)_$(MS_VER) !ENDIF XERCESPATH=$(XERCESCROOT)\bin;$(XERCESCROOT)\Build\Win32\VC7.1\Release;$(XERCESCROOT)\Build\Win32\VC7.1\Debug;$(XERCESCROOT)\Build\Win64\VC7.1\Release;$(XERCESCROOT)\Build\Win64\VC7.1\Debug ICUPATH=$(ICUROOT)\bin #====================== INMEM part ================================================================= !IF "$(TYPE)" == "inmem" ALL : PREPARE $(TMPINCLUDESDIR)\LocalMsgData.hpp $(OUTPUTDIR)\$(PKGNAME).dll $(OUTPUTDIR)\$(PKGNAME).dll : $(TMPINCLUDESDIR)\LocalMsgData.hpp $(MAKE) /$(MAKEFLAGS) /NOLOGO /f ..\XalanMsgLib\XalanMsgLib.mak CFG="XalanMsgLib - $(BITS) $(CFG)" DLLNAME=$(PKGNAME) $(MAKE_PARAMS) $(TMPINCLUDESDIR)\LocalMsgData.hpp : $(NLSDIR)\$(LOCALE)\$(MSGFILENAME)$(LOCALE)$(XIFFEXT) @set PATH=$(ICUPATH);$(XERCESPATH);$(PATH) @if not exist $(OUTPUTDIR)\MsgCreator.exe ( $(MAKE) /f ..\MsgCreator\MsgCreator.mak CFG="MsgCreator - $(BITS) $(CFG)" $(MAKE_PARAMS)) $(OUTPUTDIR)\MsgCreator.exe $(NLSDIR)\$(LOCALE)\$(MSGFILENAME)$(LOCALE)$(XIFFEXT) -TYPE $(TYPE) -LOCALE $(LOCALE) @$(MOVE) LocalMsgIndex.hpp $(TMPINCLUDESDIR) @$(MOVE) LocalMsgData.hpp $(TMPINCLUDESDIR) PREPARE: @if not exist $(TMPINCLUDESDIR) ( $(MKDIR) $(TMPINCLUDESDIR) ) #====================== End of INMEM part ============================================================= #====================== ICU part ====================================================================== !ELSEIF "$(TYPE)" == "icu" GENRB = genrb.exe PKGDATA = pkgdata.exe ALL : PREPARE $(INTDIR)\Icu\$(LOCALE).txt $(OUTPUTDIR)\$(PKGNAME).dll $(OUTPUTDIR)\$(PKGNAME).dll : $(INTDIR)\Icu\$(LOCALE).txt $(ICUPATH)\$(GENRB) --package-name $(PKGNAME) -d $(INTDIR)\Icu $(INTDIR)\Icu\$(LOCALE).txt echo $(INTDIR)\Icu\$(PKGNAME)_$(LOCALE).res > $(INTDIR)\Icu\res-file-list.txt $(ICUPATH)\$(PKGDATA) --name $(PKGNAME) -T $(INTDIR)\Icu -v --mode dll -d $(OUTPUTDIR) $(INTDIR)\Icu\res-file-list.txt $(INTDIR)\Icu\$(LOCALE).txt : $(NLSDIR)\$(LOCALE)\$(MSGFILENAME)$(LOCALE)$(XIFFEXT) @set PATH=$(ICUPATH);$(XERCESPATH);$(PATH) if not exist $(OUTPUTDIR)\MsgCreator.exe ( $(MAKE) /f ..\MsgCreator\MsgCreator.mak CFG="MsgCreator - $(BITS) $(CFG)" $(MAKE_PARAMS)) $(OUTPUTDIR)\MsgCreator.exe $(NLSDIR)\$(LOCALE)\$(MSGFILENAME)$(LOCALE)$(XIFFEXT) -TYPE $(TYPE) -LOCALE $(LOCALE) @$(MOVE) LocalMsgIndex.hpp $(TMPINCLUDESDIR) @$(MOVE) $(LOCALE).txt $(INTDIR)\Icu PREPARE: @if not exist $(INTDIR)\Icu ( $(MKDIR) $(INTDIR)\Icu ) @if not exist $(TMPINCLUDESDIR) ( $(MKDIR) $(TMPINCLUDESDIR) ) #====================== End of ICU part ================================================================== !ENDIF #====================== Commom part ================================================================= CLEAN : $(MAKE) /f ..\MsgCreator\MsgCreator.mak CFG="MsgCreator - $(BITS) $(CFG)" CLEAN $(MAKE) /NOLOGO /f ..\XalanMsgLib\XalanMsgLib.mak CFG="XalanMsgLib - $(BITS) $(CFG)" CLEAN -@erase $(TMPINCLUDESDIR)\LocalMsgIndex.hpp -@erase $(TMPINCLUDESDIR)\LocalMsgData.hpp !IF "$(TYPE)" == "icu" $(ICUPATH)\$(PKGDATA) --name $(PKGNAME) -T $(INTDIR)\Icu -v -k --mode dll -d $(OUTPUTDIR) $(INTDIR)\Icu\res-file-list.txt !ENDIF -@erase $(INTDIR)\Icu\$(LOCALE).txt -@del $(NLSDIR)\ICU\$(PKGNAME)_$(LOCALE).res -@erase $(INTDIR)\Icu\res-file-list.txt -@erase $(OUTPUTDIR)\$(PKGNAME)* PREPARE: #====================== End of commom part ========================================================== xalan-c-1.11/c/Projects/Win32/VC7.1/Utils/Localization/tools.ini0000664000175000000640000000237411731656104023027 0ustar stevesamba# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # [NMAKE] CFG=Release # can be Win32 or Win64 BITS=Win32 LIBNAME=XalanMessages # ICU root should be defined by user #ICUROOT=UNDEFINED XALANROOT=..\..\..\..\.. NLSDIR=$(XALANROOT)\src\xalanc\NLS MSGFILENAME=XalanMsg_ XIFFEXT=.xlf OUTPUTDIR=$(XALANROOT)\Build\$(BITS)\VC7.1\$(CFG) INTDIR=$(OUTPUTDIR)\Nls TMPINCLUDESDIR=$(OUTPUTDIR)\Nls\Include XALANMSGLIB_SRC=$(XALANROOT)\src\xalanc\Utils\XalanMsgLib #for another compiler can be MAKE_PARAMS=CPP=ecl.exe MAKE_PARAMS= LOCALE=en_US TYPE=inmem xalan-c-1.11/c/Projects/Win32/VC7.1/Performance/0002775000175000000640000000000012037700125017664 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/Performance/perf.vcproj0000664000175000000640000002101411731656104022050 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/AllInOne/0002775000175000000640000000000012037700125017064 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/AllInOne/AllInOneWithICU.vcproj0000664000175000000640000026531011731656104023163 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/AllInOne/AllInOne.vcproj0000664000175000000640000030053711731656104021767 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/ApacheModuleXSLT/0002775000175000000640000000000012037700125020465 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/ApacheModuleXSLT/ApacheModuleXSLT.vcproj0000664000175000000640000001255711731656104024773 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/CompileStylesheet/0002775000175000000640000000000012037700125021065 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/CompileStylesheet/CompileStylesheet.vcproj0000664000175000000640000002112311731656104025760 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/XalanExe/0002775000175000000640000000000012037700125017130 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/XalanExe/XalanExe.vcproj0000664000175000000640000002113111731656104022065 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/ThreadSafe/0002775000175000000640000000000012037700125017431 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/ThreadSafe/ThreadSafe.vcproj0000664000175000000640000002044611731656104022677 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/ParsedSourceWrappers/0002775000175000000640000000000012037700125021546 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/ParsedSourceWrappers/ParsedSourceWrappers.vcproj0000664000175000000640000002101211731656104027117 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/TestXPath/0002775000175000000640000000000012037700125017307 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/TestXPath/TestXPath.vcproj0000664000175000000640000002045011731656104022426 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/DocumentBuilder/0002775000175000000640000000000012037700125020510 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/DocumentBuilder/DocumentBuilder.vcproj0000664000175000000640000002035711731656104025036 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/Conf/0002775000175000000640000000000012037700125016310 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/Conf/conf.vcproj0000664000175000000640000002104311731656104020467 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/SimpleTransform/0002775000175000000640000000000012037700125020550 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/SimpleTransform/SimpleTransform.vcproj0000664000175000000640000002045111731656104025131 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/Compare/0002775000175000000640000000000012037700125017011 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/Compare/compare.vcproj0000664000175000000640000001720411731656104021675 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/StreamTransform/0002775000175000000640000000000012037700125020552 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/StreamTransform/StreamTransform.vcproj0000664000175000000640000002053511731656104025140 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/ExternalFunction/0002775000175000000640000000000012037700125020713 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/ExternalFunction/ExternalFunction.vcproj0000664000175000000640000002026211731656104025437 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/TransformToXercesDOM/0002775000175000000640000000000012037700125021413 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/TransformToXercesDOM/TransformToXercesDOM.vcproj0000664000175000000640000002062411731656104026641 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/C-API/0002775000175000000640000000000012037700125016214 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/C-API/CAPI.vcproj0000664000175000000640000001161511731656104020166 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/Threads/0002775000175000000640000000000012037700125017015 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/Threads/ThreadTest.vcproj0000664000175000000640000002026711731656104022325 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/XalanTransform/0002775000175000000640000000000012037700125020362 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/XalanTransform/XalanTransform.vcproj0000664000175000000640000002061011731656104024552 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/Extensions/0002775000175000000640000000000012037700125017562 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/Extensions/extensions.vcproj0000664000175000000640000001732111731656104023217 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/Dom2Dom/0002775000175000000640000000000012037700125016664 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/Dom2Dom/Dom2Dom.vcproj0000664000175000000640000001717211731656104021367 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/Transformer/0002775000175000000640000000000012037700125017725 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/Transformer/Transformer.vcproj0000664000175000000640000002010611731656104023460 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/XalanTransformerCallback/0002775000175000000640000000000012037700125022326 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/XalanTransformerCallback/XalanTransformerCallback.vcproj0000664000175000000640000002052211731656104030464 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/Memory/0002775000175000000640000000000012037700125016673 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/Memory/Memory.vcproj0000664000175000000640000001716311731656104021405 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/SerializeNodeSet/0002775000175000000640000000000012037700125020634 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/SerializeNodeSet/SerializeNodeSet.vcproj0000664000175000000640000002026211731656104025301 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/Errortests/0002775000175000000640000000000012037700125017577 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/Errortests/Errortests.vcproj0000664000175000000640000001733311731656104023214 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/TraceListen/0002775000175000000640000000000012037700125017640 5ustar stevesambaxalan-c-1.11/c/Projects/Win32/VC7.1/TraceListen/TraceListen.vcproj0000664000175000000640000002046111731656104023312 0ustar stevesamba xalan-c-1.11/c/Projects/Win32/VC7.1/Xalan.sln0000664000175000000640000005212611731656104017217 0ustar stevesambaMicrosoft Visual Studio Solution File, Format Version 8.00 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AllInOne", "AllInOne\AllInOne.vcproj", "{30AC50F1-1D6C-474C-9792-E0537EFA63CA}" ProjectSection(ProjectDependencies) = postProject {CA1C3CA3-7717-4A7A-B542-B31D66E54DE4} = {CA1C3CA3-7717-4A7A-B542-B31D66E54DE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CompileStylesheet", "CompileStylesheet\CompileStylesheet.vcproj", "{2FBC9FC4-AD2F-4DE1-A56E-8D0FF0728E67}" ProjectSection(ProjectDependencies) = postProject {30AC50F1-1D6C-474C-9792-E0537EFA63CA} = {30AC50F1-1D6C-474C-9792-E0537EFA63CA} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DocumentBuilder", "DocumentBuilder\DocumentBuilder.vcproj", "{047707E4-F71D-439B-9F2B-0A366641F030}" ProjectSection(ProjectDependencies) = postProject {30AC50F1-1D6C-474C-9792-E0537EFA63CA} = {30AC50F1-1D6C-474C-9792-E0537EFA63CA} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ExternalFunction", "ExternalFunction\ExternalFunction.vcproj", "{3856936D-EECA-4205-BD66-EC311A493A52}" ProjectSection(ProjectDependencies) = postProject {30AC50F1-1D6C-474C-9792-E0537EFA63CA} = {30AC50F1-1D6C-474C-9792-E0537EFA63CA} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Localization", "Utils\Localization\Localization.vcproj", "{CA1C3CA3-7717-4A7A-B542-B31D66E54DE4}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ParsedSourceWrappers", "ParsedSourceWrappers\ParsedSourceWrappers.vcproj", "{776D0F8E-D36E-4994-AD94-B3B45D203164}" ProjectSection(ProjectDependencies) = postProject {30AC50F1-1D6C-474C-9792-E0537EFA63CA} = {30AC50F1-1D6C-474C-9792-E0537EFA63CA} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SerializeNodeSet", "SerializeNodeSet\SerializeNodeSet.vcproj", "{605EB7CF-631D-449C-818F-3C8176106DDB}" ProjectSection(ProjectDependencies) = postProject {30AC50F1-1D6C-474C-9792-E0537EFA63CA} = {30AC50F1-1D6C-474C-9792-E0537EFA63CA} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleTransform", "SimpleTransform\SimpleTransform.vcproj", "{0B51B9E9-8AA9-40FD-A0DD-20AEB2F5669D}" ProjectSection(ProjectDependencies) = postProject {30AC50F1-1D6C-474C-9792-E0537EFA63CA} = {30AC50F1-1D6C-474C-9792-E0537EFA63CA} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleXPathAPI", "SimpleXPathAPI\SimpleXPathAPI.vcproj", "{89357672-7E91-4439-BAF4-D76344F4C4C6}" ProjectSection(ProjectDependencies) = postProject {30AC50F1-1D6C-474C-9792-E0537EFA63CA} = {30AC50F1-1D6C-474C-9792-E0537EFA63CA} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleXPathCAPI", "SimpleXPathCAPI\SimpleXPathCAPI.vcproj", "{DC2C7284-3AD4-4775-B18A-FFF04B70FABA}" ProjectSection(ProjectDependencies) = postProject {30AC50F1-1D6C-474C-9792-E0537EFA63CA} = {30AC50F1-1D6C-474C-9792-E0537EFA63CA} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StreamTransform", "StreamTransform\StreamTransform.vcproj", "{A3460E83-A49E-484D-8178-2870D632577C}" ProjectSection(ProjectDependencies) = postProject {30AC50F1-1D6C-474C-9792-E0537EFA63CA} = {30AC50F1-1D6C-474C-9792-E0537EFA63CA} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestXPath", "TestXPath\TestXPath.vcproj", "{69739EB0-6BA3-4E79-88CA-3A07A7902233}" ProjectSection(ProjectDependencies) = postProject {30AC50F1-1D6C-474C-9792-E0537EFA63CA} = {30AC50F1-1D6C-474C-9792-E0537EFA63CA} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestXSLT", "TestXSLT\TestXSLT.vcproj", "{0EC8A701-67D1-4880-83A3-D61B7C51375C}" ProjectSection(ProjectDependencies) = postProject {30AC50F1-1D6C-474C-9792-E0537EFA63CA} = {30AC50F1-1D6C-474C-9792-E0537EFA63CA} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ThreadSafe", "ThreadSafe\ThreadSafe.vcproj", "{C4BEF966-4FA3-4A3A-B5B1-7E61447E394E}" ProjectSection(ProjectDependencies) = postProject {30AC50F1-1D6C-474C-9792-E0537EFA63CA} = {30AC50F1-1D6C-474C-9792-E0537EFA63CA} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ThreadTest", "Threads\ThreadTest.vcproj", "{B85BDF08-468E-40DB-8637-D041A14D774B}" ProjectSection(ProjectDependencies) = postProject {30AC50F1-1D6C-474C-9792-E0537EFA63CA} = {30AC50F1-1D6C-474C-9792-E0537EFA63CA} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TraceListen", "TraceListen\TraceListen.vcproj", "{081EB3ED-4697-4D3D-B852-22ACF829AA3F}" ProjectSection(ProjectDependencies) = postProject {30AC50F1-1D6C-474C-9792-E0537EFA63CA} = {30AC50F1-1D6C-474C-9792-E0537EFA63CA} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TransformToXercesDOM", "TransformToXercesDOM\TransformToXercesDOM.vcproj", "{9EB1847D-29D1-45D2-84EC-3C33D15B2CC8}" ProjectSection(ProjectDependencies) = postProject {30AC50F1-1D6C-474C-9792-E0537EFA63CA} = {30AC50F1-1D6C-474C-9792-E0537EFA63CA} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UseStylesheetParam", "UseStylesheetParam\UseStylesheetParam.vcproj", "{0614F7BD-4369-40BE-BE71-03E2699699C9}" ProjectSection(ProjectDependencies) = postProject {30AC50F1-1D6C-474C-9792-E0537EFA63CA} = {30AC50F1-1D6C-474C-9792-E0537EFA63CA} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanExe", "XalanExe\XalanExe.vcproj", "{865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}" ProjectSection(ProjectDependencies) = postProject {30AC50F1-1D6C-474C-9792-E0537EFA63CA} = {30AC50F1-1D6C-474C-9792-E0537EFA63CA} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanTransform", "XalanTransform\XalanTransform.vcproj", "{A108CFD7-9A5B-4EFF-9BB6-D65A933BC4DF}" ProjectSection(ProjectDependencies) = postProject {30AC50F1-1D6C-474C-9792-E0537EFA63CA} = {30AC50F1-1D6C-474C-9792-E0537EFA63CA} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanTransformerCallback", "XalanTransformerCallback\XalanTransformerCallback.vcproj", "{B59FB25A-9F01-41EB-B4D9-A3B6F9451E3C}" ProjectSection(ProjectDependencies) = postProject {30AC50F1-1D6C-474C-9792-E0537EFA63CA} = {30AC50F1-1D6C-474C-9792-E0537EFA63CA} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "conf", "Conf\conf.vcproj", "{E18F5989-80D9-46E7-9588-F5411C1DA8DE}" ProjectSection(ProjectDependencies) = postProject {30AC50F1-1D6C-474C-9792-E0537EFA63CA} = {30AC50F1-1D6C-474C-9792-E0537EFA63CA} EndProjectSection EndProject Global GlobalSection(SolutionConfiguration) = preSolution Debug = Debug Debug with ICU = Debug with ICU Release = Release Release with ICU = Release with ICU EndGlobalSection GlobalSection(ProjectDependencies) = postSolution EndGlobalSection GlobalSection(ProjectConfiguration) = postSolution {30AC50F1-1D6C-474C-9792-E0537EFA63CA}.Debug.ActiveCfg = Debug|Win32 {30AC50F1-1D6C-474C-9792-E0537EFA63CA}.Debug.Build.0 = Debug|Win32 {30AC50F1-1D6C-474C-9792-E0537EFA63CA}.Debug with ICU.ActiveCfg = Debug with ICU|Win32 {30AC50F1-1D6C-474C-9792-E0537EFA63CA}.Debug with ICU.Build.0 = Debug with ICU|Win32 {30AC50F1-1D6C-474C-9792-E0537EFA63CA}.Release.ActiveCfg = Release|Win32 {30AC50F1-1D6C-474C-9792-E0537EFA63CA}.Release.Build.0 = Release|Win32 {30AC50F1-1D6C-474C-9792-E0537EFA63CA}.Release with ICU.ActiveCfg = Release with ICU|Win32 {30AC50F1-1D6C-474C-9792-E0537EFA63CA}.Release with ICU.Build.0 = Release with ICU|Win32 {2FBC9FC4-AD2F-4DE1-A56E-8D0FF0728E67}.Debug.ActiveCfg = Debug|Win32 {2FBC9FC4-AD2F-4DE1-A56E-8D0FF0728E67}.Debug.Build.0 = Debug|Win32 {2FBC9FC4-AD2F-4DE1-A56E-8D0FF0728E67}.Debug with ICU.ActiveCfg = Debug with ICU|Win32 {2FBC9FC4-AD2F-4DE1-A56E-8D0FF0728E67}.Debug with ICU.Build.0 = Debug with ICU|Win32 {2FBC9FC4-AD2F-4DE1-A56E-8D0FF0728E67}.Release.ActiveCfg = Release|Win32 {2FBC9FC4-AD2F-4DE1-A56E-8D0FF0728E67}.Release.Build.0 = Release|Win32 {2FBC9FC4-AD2F-4DE1-A56E-8D0FF0728E67}.Release with ICU.ActiveCfg = Release with ICU|Win32 {2FBC9FC4-AD2F-4DE1-A56E-8D0FF0728E67}.Release with ICU.Build.0 = Release with ICU|Win32 {047707E4-F71D-439B-9F2B-0A366641F030}.Debug.ActiveCfg = Debug|Win32 {047707E4-F71D-439B-9F2B-0A366641F030}.Debug.Build.0 = Debug|Win32 {047707E4-F71D-439B-9F2B-0A366641F030}.Debug with ICU.ActiveCfg = Debug with ICU|Win32 {047707E4-F71D-439B-9F2B-0A366641F030}.Debug with ICU.Build.0 = Debug with ICU|Win32 {047707E4-F71D-439B-9F2B-0A366641F030}.Release.ActiveCfg = Release|Win32 {047707E4-F71D-439B-9F2B-0A366641F030}.Release.Build.0 = Release|Win32 {047707E4-F71D-439B-9F2B-0A366641F030}.Release with ICU.ActiveCfg = Release with ICU|Win32 {047707E4-F71D-439B-9F2B-0A366641F030}.Release with ICU.Build.0 = Release with ICU|Win32 {3856936D-EECA-4205-BD66-EC311A493A52}.Debug.ActiveCfg = Debug|Win32 {3856936D-EECA-4205-BD66-EC311A493A52}.Debug.Build.0 = Debug|Win32 {3856936D-EECA-4205-BD66-EC311A493A52}.Debug with ICU.ActiveCfg = Debug with ICU|Win32 {3856936D-EECA-4205-BD66-EC311A493A52}.Debug with ICU.Build.0 = Debug with ICU|Win32 {3856936D-EECA-4205-BD66-EC311A493A52}.Release.ActiveCfg = Release|Win32 {3856936D-EECA-4205-BD66-EC311A493A52}.Release.Build.0 = Release|Win32 {3856936D-EECA-4205-BD66-EC311A493A52}.Release with ICU.ActiveCfg = Release with ICU|Win32 {3856936D-EECA-4205-BD66-EC311A493A52}.Release with ICU.Build.0 = Release with ICU|Win32 {CA1C3CA3-7717-4A7A-B542-B31D66E54DE4}.Debug.ActiveCfg = Debug|Win32 {CA1C3CA3-7717-4A7A-B542-B31D66E54DE4}.Debug.Build.0 = Debug|Win32 {CA1C3CA3-7717-4A7A-B542-B31D66E54DE4}.Debug with ICU.ActiveCfg = Debug with ICU|Win32 {CA1C3CA3-7717-4A7A-B542-B31D66E54DE4}.Debug with ICU.Build.0 = Debug with ICU|Win32 {CA1C3CA3-7717-4A7A-B542-B31D66E54DE4}.Release.ActiveCfg = Release|Win32 {CA1C3CA3-7717-4A7A-B542-B31D66E54DE4}.Release.Build.0 = Release|Win32 {CA1C3CA3-7717-4A7A-B542-B31D66E54DE4}.Release with ICU.ActiveCfg = Release with ICU|Win32 {CA1C3CA3-7717-4A7A-B542-B31D66E54DE4}.Release with ICU.Build.0 = Release with ICU|Win32 {776D0F8E-D36E-4994-AD94-B3B45D203164}.Debug.ActiveCfg = Debug|Win32 {776D0F8E-D36E-4994-AD94-B3B45D203164}.Debug.Build.0 = Debug|Win32 {776D0F8E-D36E-4994-AD94-B3B45D203164}.Debug with ICU.ActiveCfg = Debug with ICU|Win32 {776D0F8E-D36E-4994-AD94-B3B45D203164}.Debug with ICU.Build.0 = Debug with ICU|Win32 {776D0F8E-D36E-4994-AD94-B3B45D203164}.Release.ActiveCfg = Release|Win32 {776D0F8E-D36E-4994-AD94-B3B45D203164}.Release.Build.0 = Release|Win32 {776D0F8E-D36E-4994-AD94-B3B45D203164}.Release with ICU.ActiveCfg = Release with ICU|Win32 {776D0F8E-D36E-4994-AD94-B3B45D203164}.Release with ICU.Build.0 = Release with ICU|Win32 {605EB7CF-631D-449C-818F-3C8176106DDB}.Debug.ActiveCfg = Debug|Win32 {605EB7CF-631D-449C-818F-3C8176106DDB}.Debug.Build.0 = Debug|Win32 {605EB7CF-631D-449C-818F-3C8176106DDB}.Debug with ICU.ActiveCfg = Debug with ICU|Win32 {605EB7CF-631D-449C-818F-3C8176106DDB}.Debug with ICU.Build.0 = Debug with ICU|Win32 {605EB7CF-631D-449C-818F-3C8176106DDB}.Release.ActiveCfg = Release|Win32 {605EB7CF-631D-449C-818F-3C8176106DDB}.Release.Build.0 = Release|Win32 {605EB7CF-631D-449C-818F-3C8176106DDB}.Release with ICU.ActiveCfg = Release with ICU|Win32 {605EB7CF-631D-449C-818F-3C8176106DDB}.Release with ICU.Build.0 = Release with ICU|Win32 {0B51B9E9-8AA9-40FD-A0DD-20AEB2F5669D}.Debug.ActiveCfg = Debug|Win32 {0B51B9E9-8AA9-40FD-A0DD-20AEB2F5669D}.Debug.Build.0 = Debug|Win32 {0B51B9E9-8AA9-40FD-A0DD-20AEB2F5669D}.Debug with ICU.ActiveCfg = Debug with ICU|Win32 {0B51B9E9-8AA9-40FD-A0DD-20AEB2F5669D}.Debug with ICU.Build.0 = Debug with ICU|Win32 {0B51B9E9-8AA9-40FD-A0DD-20AEB2F5669D}.Release.ActiveCfg = Release|Win32 {0B51B9E9-8AA9-40FD-A0DD-20AEB2F5669D}.Release.Build.0 = Release|Win32 {0B51B9E9-8AA9-40FD-A0DD-20AEB2F5669D}.Release with ICU.ActiveCfg = Release with ICU|Win32 {0B51B9E9-8AA9-40FD-A0DD-20AEB2F5669D}.Release with ICU.Build.0 = Release with ICU|Win32 {89357672-7E91-4439-BAF4-D76344F4C4C6}.Debug.ActiveCfg = Debug|Win32 {89357672-7E91-4439-BAF4-D76344F4C4C6}.Debug.Build.0 = Debug|Win32 {89357672-7E91-4439-BAF4-D76344F4C4C6}.Debug with ICU.ActiveCfg = Debug with ICU|Win32 {89357672-7E91-4439-BAF4-D76344F4C4C6}.Debug with ICU.Build.0 = Debug with ICU|Win32 {89357672-7E91-4439-BAF4-D76344F4C4C6}.Release.ActiveCfg = Release|Win32 {89357672-7E91-4439-BAF4-D76344F4C4C6}.Release.Build.0 = Release|Win32 {89357672-7E91-4439-BAF4-D76344F4C4C6}.Release with ICU.ActiveCfg = Release with ICU|Win32 {89357672-7E91-4439-BAF4-D76344F4C4C6}.Release with ICU.Build.0 = Release with ICU|Win32 {DC2C7284-3AD4-4775-B18A-FFF04B70FABA}.Debug.ActiveCfg = Debug|Win32 {DC2C7284-3AD4-4775-B18A-FFF04B70FABA}.Debug.Build.0 = Debug|Win32 {DC2C7284-3AD4-4775-B18A-FFF04B70FABA}.Debug with ICU.ActiveCfg = Debug with ICU|Win32 {DC2C7284-3AD4-4775-B18A-FFF04B70FABA}.Debug with ICU.Build.0 = Debug with ICU|Win32 {DC2C7284-3AD4-4775-B18A-FFF04B70FABA}.Release.ActiveCfg = Release|Win32 {DC2C7284-3AD4-4775-B18A-FFF04B70FABA}.Release.Build.0 = Release|Win32 {DC2C7284-3AD4-4775-B18A-FFF04B70FABA}.Release with ICU.ActiveCfg = Release with ICU|Win32 {DC2C7284-3AD4-4775-B18A-FFF04B70FABA}.Release with ICU.Build.0 = Release with ICU|Win32 {A3460E83-A49E-484D-8178-2870D632577C}.Debug.ActiveCfg = Debug|Win32 {A3460E83-A49E-484D-8178-2870D632577C}.Debug.Build.0 = Debug|Win32 {A3460E83-A49E-484D-8178-2870D632577C}.Debug with ICU.ActiveCfg = Debug with ICU|Win32 {A3460E83-A49E-484D-8178-2870D632577C}.Debug with ICU.Build.0 = Debug with ICU|Win32 {A3460E83-A49E-484D-8178-2870D632577C}.Release.ActiveCfg = Release|Win32 {A3460E83-A49E-484D-8178-2870D632577C}.Release.Build.0 = Release|Win32 {A3460E83-A49E-484D-8178-2870D632577C}.Release with ICU.ActiveCfg = Release with ICU|Win32 {A3460E83-A49E-484D-8178-2870D632577C}.Release with ICU.Build.0 = Release with ICU|Win32 {69739EB0-6BA3-4E79-88CA-3A07A7902233}.Debug.ActiveCfg = Debug|Win32 {69739EB0-6BA3-4E79-88CA-3A07A7902233}.Debug.Build.0 = Debug|Win32 {69739EB0-6BA3-4E79-88CA-3A07A7902233}.Debug with ICU.ActiveCfg = Debug with ICU|Win32 {69739EB0-6BA3-4E79-88CA-3A07A7902233}.Debug with ICU.Build.0 = Debug with ICU|Win32 {69739EB0-6BA3-4E79-88CA-3A07A7902233}.Release.ActiveCfg = Release|Win32 {69739EB0-6BA3-4E79-88CA-3A07A7902233}.Release.Build.0 = Release|Win32 {69739EB0-6BA3-4E79-88CA-3A07A7902233}.Release with ICU.ActiveCfg = Release with ICU|Win32 {69739EB0-6BA3-4E79-88CA-3A07A7902233}.Release with ICU.Build.0 = Release with ICU|Win32 {0EC8A701-67D1-4880-83A3-D61B7C51375C}.Debug.ActiveCfg = Debug|Win32 {0EC8A701-67D1-4880-83A3-D61B7C51375C}.Debug.Build.0 = Debug|Win32 {0EC8A701-67D1-4880-83A3-D61B7C51375C}.Debug with ICU.ActiveCfg = Debug with ICU|Win32 {0EC8A701-67D1-4880-83A3-D61B7C51375C}.Debug with ICU.Build.0 = Debug with ICU|Win32 {0EC8A701-67D1-4880-83A3-D61B7C51375C}.Release.ActiveCfg = Release|Win32 {0EC8A701-67D1-4880-83A3-D61B7C51375C}.Release.Build.0 = Release|Win32 {0EC8A701-67D1-4880-83A3-D61B7C51375C}.Release with ICU.ActiveCfg = Release with ICU|Win32 {0EC8A701-67D1-4880-83A3-D61B7C51375C}.Release with ICU.Build.0 = Release with ICU|Win32 {C4BEF966-4FA3-4A3A-B5B1-7E61447E394E}.Debug.ActiveCfg = Debug|Win32 {C4BEF966-4FA3-4A3A-B5B1-7E61447E394E}.Debug.Build.0 = Debug|Win32 {C4BEF966-4FA3-4A3A-B5B1-7E61447E394E}.Debug with ICU.ActiveCfg = Debug with ICU|Win32 {C4BEF966-4FA3-4A3A-B5B1-7E61447E394E}.Debug with ICU.Build.0 = Debug with ICU|Win32 {C4BEF966-4FA3-4A3A-B5B1-7E61447E394E}.Release.ActiveCfg = Release|Win32 {C4BEF966-4FA3-4A3A-B5B1-7E61447E394E}.Release.Build.0 = Release|Win32 {C4BEF966-4FA3-4A3A-B5B1-7E61447E394E}.Release with ICU.ActiveCfg = Release with ICU|Win32 {C4BEF966-4FA3-4A3A-B5B1-7E61447E394E}.Release with ICU.Build.0 = Release with ICU|Win32 {B85BDF08-468E-40DB-8637-D041A14D774B}.Debug.ActiveCfg = Debug|Win32 {B85BDF08-468E-40DB-8637-D041A14D774B}.Debug.Build.0 = Debug|Win32 {B85BDF08-468E-40DB-8637-D041A14D774B}.Debug with ICU.ActiveCfg = Debug with ICU|Win32 {B85BDF08-468E-40DB-8637-D041A14D774B}.Debug with ICU.Build.0 = Debug with ICU|Win32 {B85BDF08-468E-40DB-8637-D041A14D774B}.Release.ActiveCfg = Release|Win32 {B85BDF08-468E-40DB-8637-D041A14D774B}.Release.Build.0 = Release|Win32 {B85BDF08-468E-40DB-8637-D041A14D774B}.Release with ICU.ActiveCfg = Release with ICU|Win32 {B85BDF08-468E-40DB-8637-D041A14D774B}.Release with ICU.Build.0 = Release with ICU|Win32 {081EB3ED-4697-4D3D-B852-22ACF829AA3F}.Debug.ActiveCfg = Debug|Win32 {081EB3ED-4697-4D3D-B852-22ACF829AA3F}.Debug.Build.0 = Debug|Win32 {081EB3ED-4697-4D3D-B852-22ACF829AA3F}.Debug with ICU.ActiveCfg = Debug with ICU|Win32 {081EB3ED-4697-4D3D-B852-22ACF829AA3F}.Debug with ICU.Build.0 = Debug with ICU|Win32 {081EB3ED-4697-4D3D-B852-22ACF829AA3F}.Release.ActiveCfg = Release|Win32 {081EB3ED-4697-4D3D-B852-22ACF829AA3F}.Release.Build.0 = Release|Win32 {081EB3ED-4697-4D3D-B852-22ACF829AA3F}.Release with ICU.ActiveCfg = Release with ICU|Win32 {081EB3ED-4697-4D3D-B852-22ACF829AA3F}.Release with ICU.Build.0 = Release with ICU|Win32 {9EB1847D-29D1-45D2-84EC-3C33D15B2CC8}.Debug.ActiveCfg = Debug|Win32 {9EB1847D-29D1-45D2-84EC-3C33D15B2CC8}.Debug.Build.0 = Debug|Win32 {9EB1847D-29D1-45D2-84EC-3C33D15B2CC8}.Debug with ICU.ActiveCfg = Debug with ICU|Win32 {9EB1847D-29D1-45D2-84EC-3C33D15B2CC8}.Debug with ICU.Build.0 = Debug with ICU|Win32 {9EB1847D-29D1-45D2-84EC-3C33D15B2CC8}.Release.ActiveCfg = Release|Win32 {9EB1847D-29D1-45D2-84EC-3C33D15B2CC8}.Release.Build.0 = Release|Win32 {9EB1847D-29D1-45D2-84EC-3C33D15B2CC8}.Release with ICU.ActiveCfg = Release with ICU|Win32 {9EB1847D-29D1-45D2-84EC-3C33D15B2CC8}.Release with ICU.Build.0 = Release with ICU|Win32 {0614F7BD-4369-40BE-BE71-03E2699699C9}.Debug.ActiveCfg = Debug|Win32 {0614F7BD-4369-40BE-BE71-03E2699699C9}.Debug.Build.0 = Debug|Win32 {0614F7BD-4369-40BE-BE71-03E2699699C9}.Debug with ICU.ActiveCfg = Debug with ICU|Win32 {0614F7BD-4369-40BE-BE71-03E2699699C9}.Debug with ICU.Build.0 = Debug with ICU|Win32 {0614F7BD-4369-40BE-BE71-03E2699699C9}.Release.ActiveCfg = Release|Win32 {0614F7BD-4369-40BE-BE71-03E2699699C9}.Release.Build.0 = Release|Win32 {0614F7BD-4369-40BE-BE71-03E2699699C9}.Release with ICU.ActiveCfg = Release with ICU|Win32 {0614F7BD-4369-40BE-BE71-03E2699699C9}.Release with ICU.Build.0 = Release with ICU|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug.ActiveCfg = Debug|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug.Build.0 = Debug|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug with ICU.ActiveCfg = Debug with ICU|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug with ICU.Build.0 = Debug with ICU|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release.ActiveCfg = Release|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release.Build.0 = Release|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release with ICU.ActiveCfg = Release with ICU|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release with ICU.Build.0 = Release with ICU|Win32 {A108CFD7-9A5B-4EFF-9BB6-D65A933BC4DF}.Debug.ActiveCfg = Debug|Win32 {A108CFD7-9A5B-4EFF-9BB6-D65A933BC4DF}.Debug.Build.0 = Debug|Win32 {A108CFD7-9A5B-4EFF-9BB6-D65A933BC4DF}.Debug with ICU.ActiveCfg = Debug with ICU|Win32 {A108CFD7-9A5B-4EFF-9BB6-D65A933BC4DF}.Debug with ICU.Build.0 = Debug with ICU|Win32 {A108CFD7-9A5B-4EFF-9BB6-D65A933BC4DF}.Release.ActiveCfg = Release|Win32 {A108CFD7-9A5B-4EFF-9BB6-D65A933BC4DF}.Release.Build.0 = Release|Win32 {A108CFD7-9A5B-4EFF-9BB6-D65A933BC4DF}.Release with ICU.ActiveCfg = Release with ICU|Win32 {A108CFD7-9A5B-4EFF-9BB6-D65A933BC4DF}.Release with ICU.Build.0 = Release with ICU|Win32 {B59FB25A-9F01-41EB-B4D9-A3B6F9451E3C}.Debug.ActiveCfg = Debug|Win32 {B59FB25A-9F01-41EB-B4D9-A3B6F9451E3C}.Debug.Build.0 = Debug|Win32 {B59FB25A-9F01-41EB-B4D9-A3B6F9451E3C}.Debug with ICU.ActiveCfg = Debug with ICU|Win32 {B59FB25A-9F01-41EB-B4D9-A3B6F9451E3C}.Debug with ICU.Build.0 = Debug with ICU|Win32 {B59FB25A-9F01-41EB-B4D9-A3B6F9451E3C}.Release.ActiveCfg = Release|Win32 {B59FB25A-9F01-41EB-B4D9-A3B6F9451E3C}.Release.Build.0 = Release|Win32 {B59FB25A-9F01-41EB-B4D9-A3B6F9451E3C}.Release with ICU.ActiveCfg = Release with ICU|Win32 {B59FB25A-9F01-41EB-B4D9-A3B6F9451E3C}.Release with ICU.Build.0 = Release with ICU|Win32 {E18F5989-80D9-46E7-9588-F5411C1DA8DE}.Debug.ActiveCfg = Debug|Win32 {E18F5989-80D9-46E7-9588-F5411C1DA8DE}.Debug.Build.0 = Debug|Win32 {E18F5989-80D9-46E7-9588-F5411C1DA8DE}.Debug with ICU.ActiveCfg = Debug with ICU|Win32 {E18F5989-80D9-46E7-9588-F5411C1DA8DE}.Debug with ICU.Build.0 = Debug with ICU|Win32 {E18F5989-80D9-46E7-9588-F5411C1DA8DE}.Release.ActiveCfg = Release|Win32 {E18F5989-80D9-46E7-9588-F5411C1DA8DE}.Release.Build.0 = Release|Win32 {E18F5989-80D9-46E7-9588-F5411C1DA8DE}.Release with ICU.ActiveCfg = Release with ICU|Win32 {E18F5989-80D9-46E7-9588-F5411C1DA8DE}.Release with ICU.Build.0 = Release with ICU|Win32 EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection GlobalSection(ExtensibilityAddIns) = postSolution EndGlobalSection EndGlobal xalan-c-1.11/c/Projects/Win32/VC7.1/XalanICU.sln0000664000175000000640000004234711731656104017564 0ustar stevesambaMicrosoft Visual Studio Solution File, Format Version 8.00 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CompileStylesheet", "CompileStylesheet\CompileStylesheet.vcproj", "{2FBC9FC4-AD2F-4DE1-A56E-8D0FF0728E67}" ProjectSection(ProjectDependencies) = postProject {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} = {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DocumentBuilder", "DocumentBuilder\DocumentBuilder.vcproj", "{047707E4-F71D-439B-9F2B-0A366641F030}" ProjectSection(ProjectDependencies) = postProject {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} = {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ExternalFunction", "ExternalFunction\ExternalFunction.vcproj", "{3856936D-EECA-4205-BD66-EC311A493A52}" ProjectSection(ProjectDependencies) = postProject {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} = {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ParsedSourceWrappers", "ParsedSourceWrappers\ParsedSourceWrappers.vcproj", "{776D0F8E-D36E-4994-AD94-B3B45D203164}" ProjectSection(ProjectDependencies) = postProject {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} = {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SerializeNodeSet", "SerializeNodeSet\SerializeNodeSet.vcproj", "{605EB7CF-631D-449C-818F-3C8176106DDB}" ProjectSection(ProjectDependencies) = postProject {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} = {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleTransform", "SimpleTransform\SimpleTransform.vcproj", "{0B51B9E9-8AA9-40FD-A0DD-20AEB2F5669D}" ProjectSection(ProjectDependencies) = postProject {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} = {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleXPathAPI", "SimpleXPathAPI\SimpleXPathAPI.vcproj", "{89357672-7E91-4439-BAF4-D76344F4C4C6}" ProjectSection(ProjectDependencies) = postProject {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} = {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleXPathCAPI", "SimpleXPathCAPI\SimpleXPathCAPI.vcproj", "{DC2C7284-3AD4-4775-B18A-FFF04B70FABA}" ProjectSection(ProjectDependencies) = postProject {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} = {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StreamTransform", "StreamTransform\StreamTransform.vcproj", "{A3460E83-A49E-484D-8178-2870D632577C}" ProjectSection(ProjectDependencies) = postProject {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} = {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestXPath", "TestXPath\TestXPath.vcproj", "{69739EB0-6BA3-4E79-88CA-3A07A7902233}" ProjectSection(ProjectDependencies) = postProject {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} = {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestXSLT", "TestXSLT\TestXSLT.vcproj", "{0EC8A701-67D1-4880-83A3-D61B7C51375C}" ProjectSection(ProjectDependencies) = postProject {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} = {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ThreadSafe", "ThreadSafe\ThreadSafe.vcproj", "{C4BEF966-4FA3-4A3A-B5B1-7E61447E394E}" ProjectSection(ProjectDependencies) = postProject {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} = {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ThreadTest", "Threads\ThreadTest.vcproj", "{B85BDF08-468E-40DB-8637-D041A14D774B}" ProjectSection(ProjectDependencies) = postProject {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} = {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TraceListen", "TraceListen\TraceListen.vcproj", "{081EB3ED-4697-4D3D-B852-22ACF829AA3F}" ProjectSection(ProjectDependencies) = postProject {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} = {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TransformToXercesDOM", "TransformToXercesDOM\TransformToXercesDOM.vcproj", "{9EB1847D-29D1-45D2-84EC-3C33D15B2CC8}" ProjectSection(ProjectDependencies) = postProject {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} = {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UseStylesheetParam", "UseStylesheetParam\UseStylesheetParam.vcproj", "{0614F7BD-4369-40BE-BE71-03E2699699C9}" ProjectSection(ProjectDependencies) = postProject {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} = {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanExe", "XalanExe\XalanExe.vcproj", "{865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}" ProjectSection(ProjectDependencies) = postProject {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} = {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanTransform", "XalanTransform\XalanTransform.vcproj", "{A108CFD7-9A5B-4EFF-9BB6-D65A933BC4DF}" ProjectSection(ProjectDependencies) = postProject {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} = {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanTransformerCallback", "XalanTransformerCallback\XalanTransformerCallback.vcproj", "{B59FB25A-9F01-41EB-B4D9-A3B6F9451E3C}" ProjectSection(ProjectDependencies) = postProject {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} = {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "conf", "Conf\conf.vcproj", "{E18F5989-80D9-46E7-9588-F5411C1DA8DE}" ProjectSection(ProjectDependencies) = postProject {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} = {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AllInOneWithICU", "AllInOne\AllInOneWithICU.vcproj", "{2D6A569C-3EB7-4C39-9AD7-11DF57444FFD}" ProjectSection(ProjectDependencies) = postProject {058582AA-14DE-43A9-975E-6F36DB74924E} = {058582AA-14DE-43A9-975E-6F36DB74924E} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LocalizationWithICU", "Utils\Localization\LocalizationWithICU.vcproj", "{058582AA-14DE-43A9-975E-6F36DB74924E}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Global GlobalSection(SolutionConfiguration) = preSolution Debug = Debug Release = Release Release with symbols = Release with symbols EndGlobalSection GlobalSection(ProjectConfiguration) = postSolution {2FBC9FC4-AD2F-4DE1-A56E-8D0FF0728E67}.Debug.ActiveCfg = Debug|Win32 {2FBC9FC4-AD2F-4DE1-A56E-8D0FF0728E67}.Debug.Build.0 = Debug|Win32 {2FBC9FC4-AD2F-4DE1-A56E-8D0FF0728E67}.Release.ActiveCfg = Release|Win32 {2FBC9FC4-AD2F-4DE1-A56E-8D0FF0728E67}.Release.Build.0 = Release|Win32 {2FBC9FC4-AD2F-4DE1-A56E-8D0FF0728E67}.Release with symbols.ActiveCfg = Release|Win32 {2FBC9FC4-AD2F-4DE1-A56E-8D0FF0728E67}.Release with symbols.Build.0 = Release|Win32 {047707E4-F71D-439B-9F2B-0A366641F030}.Debug.ActiveCfg = Debug|Win32 {047707E4-F71D-439B-9F2B-0A366641F030}.Debug.Build.0 = Debug|Win32 {047707E4-F71D-439B-9F2B-0A366641F030}.Release.ActiveCfg = Release|Win32 {047707E4-F71D-439B-9F2B-0A366641F030}.Release.Build.0 = Release|Win32 {047707E4-F71D-439B-9F2B-0A366641F030}.Release with symbols.ActiveCfg = Release|Win32 {047707E4-F71D-439B-9F2B-0A366641F030}.Release with symbols.Build.0 = Release|Win32 {3856936D-EECA-4205-BD66-EC311A493A52}.Debug.ActiveCfg = Debug|Win32 {3856936D-EECA-4205-BD66-EC311A493A52}.Debug.Build.0 = Debug|Win32 {3856936D-EECA-4205-BD66-EC311A493A52}.Release.ActiveCfg = Release|Win32 {3856936D-EECA-4205-BD66-EC311A493A52}.Release.Build.0 = Release|Win32 {3856936D-EECA-4205-BD66-EC311A493A52}.Release with symbols.ActiveCfg = Release|Win32 {3856936D-EECA-4205-BD66-EC311A493A52}.Release with symbols.Build.0 = Release|Win32 {776D0F8E-D36E-4994-AD94-B3B45D203164}.Debug.ActiveCfg = Debug|Win32 {776D0F8E-D36E-4994-AD94-B3B45D203164}.Debug.Build.0 = Debug|Win32 {776D0F8E-D36E-4994-AD94-B3B45D203164}.Release.ActiveCfg = Release|Win32 {776D0F8E-D36E-4994-AD94-B3B45D203164}.Release.Build.0 = Release|Win32 {776D0F8E-D36E-4994-AD94-B3B45D203164}.Release with symbols.ActiveCfg = Release|Win32 {776D0F8E-D36E-4994-AD94-B3B45D203164}.Release with symbols.Build.0 = Release|Win32 {605EB7CF-631D-449C-818F-3C8176106DDB}.Debug.ActiveCfg = Debug|Win32 {605EB7CF-631D-449C-818F-3C8176106DDB}.Debug.Build.0 = Debug|Win32 {605EB7CF-631D-449C-818F-3C8176106DDB}.Release.ActiveCfg = Release|Win32 {605EB7CF-631D-449C-818F-3C8176106DDB}.Release.Build.0 = Release|Win32 {605EB7CF-631D-449C-818F-3C8176106DDB}.Release with symbols.ActiveCfg = Release|Win32 {605EB7CF-631D-449C-818F-3C8176106DDB}.Release with symbols.Build.0 = Release|Win32 {0B51B9E9-8AA9-40FD-A0DD-20AEB2F5669D}.Debug.ActiveCfg = Debug|Win32 {0B51B9E9-8AA9-40FD-A0DD-20AEB2F5669D}.Debug.Build.0 = Debug|Win32 {0B51B9E9-8AA9-40FD-A0DD-20AEB2F5669D}.Release.ActiveCfg = Release|Win32 {0B51B9E9-8AA9-40FD-A0DD-20AEB2F5669D}.Release.Build.0 = Release|Win32 {0B51B9E9-8AA9-40FD-A0DD-20AEB2F5669D}.Release with symbols.ActiveCfg = Release with symbols|Win32 {0B51B9E9-8AA9-40FD-A0DD-20AEB2F5669D}.Release with symbols.Build.0 = Release with symbols|Win32 {89357672-7E91-4439-BAF4-D76344F4C4C6}.Debug.ActiveCfg = Debug|Win32 {89357672-7E91-4439-BAF4-D76344F4C4C6}.Debug.Build.0 = Debug|Win32 {89357672-7E91-4439-BAF4-D76344F4C4C6}.Release.ActiveCfg = Release|Win32 {89357672-7E91-4439-BAF4-D76344F4C4C6}.Release.Build.0 = Release|Win32 {89357672-7E91-4439-BAF4-D76344F4C4C6}.Release with symbols.ActiveCfg = Release|Win32 {89357672-7E91-4439-BAF4-D76344F4C4C6}.Release with symbols.Build.0 = Release|Win32 {DC2C7284-3AD4-4775-B18A-FFF04B70FABA}.Debug.ActiveCfg = Debug|Win32 {DC2C7284-3AD4-4775-B18A-FFF04B70FABA}.Debug.Build.0 = Debug|Win32 {DC2C7284-3AD4-4775-B18A-FFF04B70FABA}.Release.ActiveCfg = Release|Win32 {DC2C7284-3AD4-4775-B18A-FFF04B70FABA}.Release.Build.0 = Release|Win32 {DC2C7284-3AD4-4775-B18A-FFF04B70FABA}.Release with symbols.ActiveCfg = Release|Win32 {DC2C7284-3AD4-4775-B18A-FFF04B70FABA}.Release with symbols.Build.0 = Release|Win32 {A3460E83-A49E-484D-8178-2870D632577C}.Debug.ActiveCfg = Debug|Win32 {A3460E83-A49E-484D-8178-2870D632577C}.Debug.Build.0 = Debug|Win32 {A3460E83-A49E-484D-8178-2870D632577C}.Release.ActiveCfg = Release|Win32 {A3460E83-A49E-484D-8178-2870D632577C}.Release.Build.0 = Release|Win32 {A3460E83-A49E-484D-8178-2870D632577C}.Release with symbols.ActiveCfg = Release|Win32 {A3460E83-A49E-484D-8178-2870D632577C}.Release with symbols.Build.0 = Release|Win32 {69739EB0-6BA3-4E79-88CA-3A07A7902233}.Debug.ActiveCfg = Debug|Win32 {69739EB0-6BA3-4E79-88CA-3A07A7902233}.Debug.Build.0 = Debug|Win32 {69739EB0-6BA3-4E79-88CA-3A07A7902233}.Release.ActiveCfg = Release|Win32 {69739EB0-6BA3-4E79-88CA-3A07A7902233}.Release.Build.0 = Release|Win32 {69739EB0-6BA3-4E79-88CA-3A07A7902233}.Release with symbols.ActiveCfg = Release with symbols|Win32 {69739EB0-6BA3-4E79-88CA-3A07A7902233}.Release with symbols.Build.0 = Release with symbols|Win32 {0EC8A701-67D1-4880-83A3-D61B7C51375C}.Debug.ActiveCfg = Debug|Win32 {0EC8A701-67D1-4880-83A3-D61B7C51375C}.Debug.Build.0 = Debug|Win32 {0EC8A701-67D1-4880-83A3-D61B7C51375C}.Release.ActiveCfg = Release|Win32 {0EC8A701-67D1-4880-83A3-D61B7C51375C}.Release.Build.0 = Release|Win32 {0EC8A701-67D1-4880-83A3-D61B7C51375C}.Release with symbols.ActiveCfg = Release with symbols|Win32 {0EC8A701-67D1-4880-83A3-D61B7C51375C}.Release with symbols.Build.0 = Release with symbols|Win32 {C4BEF966-4FA3-4A3A-B5B1-7E61447E394E}.Debug.ActiveCfg = Debug|Win32 {C4BEF966-4FA3-4A3A-B5B1-7E61447E394E}.Debug.Build.0 = Debug|Win32 {C4BEF966-4FA3-4A3A-B5B1-7E61447E394E}.Release.ActiveCfg = Release|Win32 {C4BEF966-4FA3-4A3A-B5B1-7E61447E394E}.Release.Build.0 = Release|Win32 {C4BEF966-4FA3-4A3A-B5B1-7E61447E394E}.Release with symbols.ActiveCfg = Release|Win32 {C4BEF966-4FA3-4A3A-B5B1-7E61447E394E}.Release with symbols.Build.0 = Release|Win32 {B85BDF08-468E-40DB-8637-D041A14D774B}.Debug.ActiveCfg = Debug|Win32 {B85BDF08-468E-40DB-8637-D041A14D774B}.Debug.Build.0 = Debug|Win32 {B85BDF08-468E-40DB-8637-D041A14D774B}.Release.ActiveCfg = Release|Win32 {B85BDF08-468E-40DB-8637-D041A14D774B}.Release.Build.0 = Release|Win32 {B85BDF08-468E-40DB-8637-D041A14D774B}.Release with symbols.ActiveCfg = Release with symbols|Win32 {B85BDF08-468E-40DB-8637-D041A14D774B}.Release with symbols.Build.0 = Release with symbols|Win32 {081EB3ED-4697-4D3D-B852-22ACF829AA3F}.Debug.ActiveCfg = Debug|Win32 {081EB3ED-4697-4D3D-B852-22ACF829AA3F}.Debug.Build.0 = Debug|Win32 {081EB3ED-4697-4D3D-B852-22ACF829AA3F}.Release.ActiveCfg = Release|Win32 {081EB3ED-4697-4D3D-B852-22ACF829AA3F}.Release.Build.0 = Release|Win32 {081EB3ED-4697-4D3D-B852-22ACF829AA3F}.Release with symbols.ActiveCfg = Release|Win32 {081EB3ED-4697-4D3D-B852-22ACF829AA3F}.Release with symbols.Build.0 = Release|Win32 {9EB1847D-29D1-45D2-84EC-3C33D15B2CC8}.Debug.ActiveCfg = Debug|Win32 {9EB1847D-29D1-45D2-84EC-3C33D15B2CC8}.Debug.Build.0 = Debug|Win32 {9EB1847D-29D1-45D2-84EC-3C33D15B2CC8}.Release.ActiveCfg = Release|Win32 {9EB1847D-29D1-45D2-84EC-3C33D15B2CC8}.Release.Build.0 = Release|Win32 {9EB1847D-29D1-45D2-84EC-3C33D15B2CC8}.Release with symbols.ActiveCfg = Release|Win32 {9EB1847D-29D1-45D2-84EC-3C33D15B2CC8}.Release with symbols.Build.0 = Release|Win32 {0614F7BD-4369-40BE-BE71-03E2699699C9}.Debug.ActiveCfg = Debug|Win32 {0614F7BD-4369-40BE-BE71-03E2699699C9}.Debug.Build.0 = Debug|Win32 {0614F7BD-4369-40BE-BE71-03E2699699C9}.Release.ActiveCfg = Release|Win32 {0614F7BD-4369-40BE-BE71-03E2699699C9}.Release.Build.0 = Release|Win32 {0614F7BD-4369-40BE-BE71-03E2699699C9}.Release with symbols.ActiveCfg = Release|Win32 {0614F7BD-4369-40BE-BE71-03E2699699C9}.Release with symbols.Build.0 = Release|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug.ActiveCfg = Debug|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Debug.Build.0 = Debug|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release.ActiveCfg = Release|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release.Build.0 = Release|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release with symbols.ActiveCfg = Release with symbols|Win32 {865E1333-C4FD-4F6D-AD22-BD93BFF0EF4B}.Release with symbols.Build.0 = Release with symbols|Win32 {A108CFD7-9A5B-4EFF-9BB6-D65A933BC4DF}.Debug.ActiveCfg = Debug|Win32 {A108CFD7-9A5B-4EFF-9BB6-D65A933BC4DF}.Debug.Build.0 = Debug|Win32 {A108CFD7-9A5B-4EFF-9BB6-D65A933BC4DF}.Release.ActiveCfg = Release|Win32 {A108CFD7-9A5B-4EFF-9BB6-D65A933BC4DF}.Release.Build.0 = Release|Win32 {A108CFD7-9A5B-4EFF-9BB6-D65A933BC4DF}.Release with symbols.ActiveCfg = Release|Win32 {A108CFD7-9A5B-4EFF-9BB6-D65A933BC4DF}.Release with symbols.Build.0 = Release|Win32 {B59FB25A-9F01-41EB-B4D9-A3B6F9451E3C}.Debug.ActiveCfg = Debug|Win32 {B59FB25A-9F01-41EB-B4D9-A3B6F9451E3C}.Debug.Build.0 = Debug|Win32 {B59FB25A-9F01-41EB-B4D9-A3B6F9451E3C}.Release.ActiveCfg = Release|Win32 {B59FB25A-9F01-41EB-B4D9-A3B6F9451E3C}.Release.Build.0 = Release|Win32 {B59FB25A-9F01-41EB-B4D9-A3B6F9451E3C}.Release with symbols.ActiveCfg = Release|Win32 {B59FB25A-9F01-41EB-B4D9-A3B6F9451E3C}.Release with symbols.Build.0 = Release|Win32 {E18F5989-80D9-46E7-9588-F5411C1DA8DE}.Debug.ActiveCfg = Debug|Win32 {E18F5989-80D9-46E7-9588-F5411C1DA8DE}.Debug.Build.0 = Debug|Win32 {E18F5989-80D9-46E7-9588-F5411C1DA8DE}.Release.ActiveCfg = Release|Win32 {E18F5989-80D9-46E7-9588-F5411C1DA8DE}.Release.Build.0 = Release|Win32 {E18F5989-80D9-46E7-9588-F5411C1DA8DE}.Release with symbols.ActiveCfg = Release with symbols|Win32 {E18F5989-80D9-46E7-9588-F5411C1DA8DE}.Release with symbols.Build.0 = Release with symbols|Win32 {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD}.Debug.ActiveCfg = Debug|Win32 {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD}.Debug.Build.0 = Debug|Win32 {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD}.Release.ActiveCfg = Release|Win32 {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD}.Release.Build.0 = Release|Win32 {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD}.Release with symbols.ActiveCfg = Release with symbols|Win32 {2D6A569C-3EB7-4C39-9AD7-11DF57444FFD}.Release with symbols.Build.0 = Release with symbols|Win32 {058582AA-14DE-43A9-975E-6F36DB74924E}.Debug.ActiveCfg = Debug|Win32 {058582AA-14DE-43A9-975E-6F36DB74924E}.Debug.Build.0 = Debug|Win32 {058582AA-14DE-43A9-975E-6F36DB74924E}.Release.ActiveCfg = Release|Win32 {058582AA-14DE-43A9-975E-6F36DB74924E}.Release.Build.0 = Release|Win32 {058582AA-14DE-43A9-975E-6F36DB74924E}.Release with symbols.ActiveCfg = Release with symbols|Win32 {058582AA-14DE-43A9-975E-6F36DB74924E}.Release with symbols.Build.0 = Release with symbols|Win32 EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection GlobalSection(ExtensibilityAddIns) = postSolution EndGlobalSection EndGlobal xalan-c-1.11/c/Projects/Win32/Makefile0000664000175000000640000002101511731656104016331 0ustar stevesamba# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ################################################################################################ ### ### The makefile will create binary packages based on VC6, VC7, Win32 or Win64 builds ### ### Usage: ### nmake [prefix=[path]] [BITS=32*|64] [IDE_VER=VC6*|VC7] [INSTALL_MODE=Debug|Release|Both*] [PACKAGE_NAME=][] ### ### Parameters: ### The Makefile reads next environmental variables: ### XALANCROOT : a regular Xalan-C root, describing location of the built sources. ".\..\.." is a default value ### DESTDIR : destination location on the built binary package. Default is $(XALANCROOT) ### ### Command line parameters: ### "prefix" Path provided for prefix should be a relative path and it's appended to $(DESTDIR) ### Virtually all macros in the makefile or in tools.ini file can be redefined from the command line . ### For default values see tools.ini file ### ################################################################################################ # =================== Check parameters ans set variables ========================================== !IFNDEF XALANCROOT XALANCROOT=.\..\.. !ENDIF !INCLUDE $(XALANCROOT)\version.incl !IF "$(PROJECT_NAME)"!="xalan-c" && "$(ICUROOT)x" == "x" ! ERROR ICUROOT sould be defined !ENDIF !IF "$(INSTALL_MODE)"=="Both" !UNDEF INSTALL_MODE INSTALL_MODE=Release BUILD_DEBUG=build_debug !ENDIF MSGLIB_PREFIX=XalanMessages !IF "$(PROJECT_NAME)"!="xalan-c" ICUTARGET=icu ! IF "$(INSTALL_MODE)"=="Debug" ICULIB_DLL=$(ICUROOT)\bin\icuin??d.dll ! ELSEIF "$(INSTALL_MODE)"=="Release" ICULIB_DLL=$(ICUROOT)\bin\icuin??.dll ! ENDIF !ELSE ICUTARGET= !ENDIF !IFNDEF DESTDIR DESTDIR=$(XALANCROOT) !ENDIF !IF "$(prefix)x" != "x" ZIP_DIR=$(DESTDIR)\$(prefix) !ELSE ZIP_DIR=$(DESTDIR) !ENDIF XSL_BIN_DEST=$(ZIP_DIR)\$(PACKAGE_NAME) !IF "$(INSTALL_MODE)"=="Debug" BIN_SRC_DIR=$(XALANCROOT)\Build\$(BITS)\$(IDE_VER)\Debug XALAN_DLL=$(XSLT_DLL_NAME)D.dll XALAN_LIB=$(PROJECT_NAME)_1D.lib MSG_DLL=$(MSGLIB_DLL_NAME)D.dll !ELSEIF "$(INSTALL_MODE)"=="Release" BIN_SRC_DIR=$(XALANCROOT)\Build\$(BITS)\$(IDE_VER)\Release XALAN_DLL=$(XSLT_DLL_NAME).dll XALAN_LIB=$(PROJECT_NAME)_1.lib MSG_DLL=$(MSGLIB_DLL_NAME).dll !ENDIF !IF "$(XALANCROOT)" != "$(XSL_BIN_DEST)" SAME_LOCATION=different_location !ENDIF ALL_SAMPLES = $(XSL_BIN_DEST)\bin\CompileStylesheet.exe \ $(XSL_BIN_DEST)\bin\DocumentBuilder.exe \ $(XSL_BIN_DEST)\bin\ExternalFunction.exe \ $(XSL_BIN_DEST)\bin\ParsedSourceWrappers.exe \ $(XSL_BIN_DEST)\bin\SerializeNodeSet.exe \ $(XSL_BIN_DEST)\bin\SimpleTransform.exe \ $(XSL_BIN_DEST)\bin\SimpleXPathAPI.exe \ $(XSL_BIN_DEST)\bin\SimpleXPathCAPI.exe \ $(XSL_BIN_DEST)\bin\StreamTransform.exe \ $(XSL_BIN_DEST)\bin\TraceListen.exe \ $(XSL_BIN_DEST)\bin\TransformToXercesDOM.exe \ $(XSL_BIN_DEST)\bin\UseStylesheetParam.exe \ $(XSL_BIN_DEST)\bin\XalanTransform.exe \ $(XSL_BIN_DEST)\bin\XalanTransformerCallback.exe \ $(XSL_BIN_DEST)\bin\ThreadSafe.exe \ $(XSL_BIN_DEST)\bin\Xalan.exe SAMPLES_DIRS= $(XSL_BIN_DEST)\samples\ApacheModuleXSLT \ $(XSL_BIN_DEST)\samples\CompileStylesheet \ $(XSL_BIN_DEST)\samples\ExternalFunction \ $(XSL_BIN_DEST)\samples\DocumentBuilder \ $(XSL_BIN_DEST)\samples\ParsedSourceWrappers \ $(XSL_BIN_DEST)\samples\SerializeNodeSet \ $(XSL_BIN_DEST)\samples\SimpleTransform \ $(XSL_BIN_DEST)\samples\SimpleXPathAPI \ $(XSL_BIN_DEST)\samples\SimpleXPathCAPI \ $(XSL_BIN_DEST)\samples\StreamTransform \ $(XSL_BIN_DEST)\samples\TraceListen \ $(XSL_BIN_DEST)\samples\TransformToXercesDOM \ $(XSL_BIN_DEST)\samples\UseStylesheetParam \ $(XSL_BIN_DEST)\samples\XalanTransform \ $(XSL_BIN_DEST)\samples\XalanTransformerCallback \ $(XSL_BIN_DEST)\samples\ThreadSafe SAMPLE_PROJ= $(XSL_BIN_DEST)\samples\Projects # =================== End of check parameters =================================== install: libs include $(SAME_LOCATION) $(BUILD_DEBUG) prepare: $(XSL_BIN_DEST)\bin $(XSL_BIN_DEST)\lib $(XSL_BIN_DEST)\include $(XSL_BIN_DEST)\samples $(XSL_BIN_DEST)\bin $(XSL_BIN_DEST)\lib $(XSL_BIN_DEST)\include $(XSL_BIN_DEST)\samples: $(MKDIR) $@ libs: prepare $(XSL_BIN_DEST)\bin\$(XALAN_DLL) $(XSL_BIN_DEST)\lib\$(XALAN_LIB) $(XSL_BIN_DEST)\bin\$(MSG_DLL) $(ICUTARGET) $(XSL_BIN_DEST)\bin\$(XALAN_DLL) $(XSL_BIN_DEST)\bin\$(MSG_DLL) $(XSL_BIN_DEST)\lib\$(XALAN_LIB): $(BIN_SRC_DIR)\$(@F) $(COPY) $(BIN_SRC_DIR)\$(@F) $(@D) include: prepare $(XSL_BIN_DEST)\include\xalanc\Include\XalanVersion.hpp $(XSL_BIN_DEST)\include\xalanc\Include\XalanVersion.hpp: $(XALANCROOT)\src\xalanc\Include\XalanVersion.hpp $(COPY) $(XALANCROOT)\src\xalanc\DOMSupport\*.h* $(XSL_BIN_DEST)\include\xalanc\DOMSupport $(COPY) $(XALANCROOT)\src\xalanc\ICUBridge\*.h* $(XSL_BIN_DEST)\include\xalanc\\ICUBridge $(COPY) $(XALANCROOT)\src\xalanc\Include\*.h* $(XSL_BIN_DEST)\include\xalanc\Include $(COPY) $(XALANCROOT)\src\xalanc\PlatformSupport\*.h* $(XSL_BIN_DEST)\include\xalanc\PlatformSupport $(COPY) $(XALANCROOT)\src\xalanc\TestXPath\*.h* $(XSL_BIN_DEST)\include\xalanc\TestXPath $(COPY) $(XALANCROOT)\src\xalanc\TestXSLT\*.h* $(XSL_BIN_DEST)\include\xalanc\TestXSLT $(COPY) $(XALANCROOT)\src\xalanc\XalanDOM\*.h* $(XSL_BIN_DEST)\include\xalanc\XalanDOM $(COPY) $(XALANCROOT)\src\xalanc\XalanExe\*.h* $(XSL_BIN_DEST)\include\xalanc\XalanExe $(COPY) $(XALANCROOT)\src\xalanc\XalanEXSLT\*.h* $(XSL_BIN_DEST)\include\xalanc\XalanEXSLT $(COPY) $(XALANCROOT)\src\xalanc\XalanExtensions\*.h* $(XSL_BIN_DEST)\include\xalanc\XalanExtensions $(COPY) $(XALANCROOT)\src\xalanc\XalanSourceTree\*.h* $(XSL_BIN_DEST)\include\xalanc\XalanSourceTree $(COPY) $(XALANCROOT)\src\xalanc\XalanTransformer\*.h* $(XSL_BIN_DEST)\include\xalanc\XalanTransformer $(COPY) $(XALANCROOT)\src\xalanc\XercesParserLiaison\*.h* $(XSL_BIN_DEST)\include\xalanc\XercesParserLiaison $(COPY) $(XALANCROOT)\src\xalanc\XMLSupport\*.h* $(XSL_BIN_DEST)\include\xalanc\XMLSupport $(COPY) $(XALANCROOT)\src\xalanc\XPath\*.h* $(XSL_BIN_DEST)\include\xalanc\XPath $(COPY) $(XALANCROOT)\src\xalanc\XPathCAPI\*.h* $(XSL_BIN_DEST)\include\xalanc\XPathCAPI $(COPY) $(XALANCROOT)\src\xalanc\XSLT\*.h* $(XSL_BIN_DEST)\include\xalanc\XSLT $(COPY) $(BIN_SRC_DIR)\Nls\Include\LocalMsgIndex.hpp $(XSL_BIN_DEST)\include\xalanc\PlatformSupport icu: $(COPY) $(ICULIB_DLL) $(XSL_BIN_DEST)\bin different_location: samples install-extras samples: prepare $(ALL_SAMPLES) $(SAMPLES_DIRS) $(SAMPLE_PROJ) $(SAMPLES_DIRS) : $(XALANCROOT)\samples\$(@F) $(MKDIR) $@ $(COPY) $?\* $@ -$(RMDIR) $@\CVS $(SAMPLE_PROJ) : $(XALANCROOT)\samples\$(@F) $(MKDIR) $@\Win32\$(IDE_VER) $(COPY) $?\Win32\$(IDE_VER) $@\Win32\$(IDE_VER) -$(RMDIR) $@\Win32\$(IDE_VER)\CVS $(ALL_SAMPLES): $(BIN_SRC_DIR)\$(@F) $(COPY) $? $(@D) !IF "$(PROJECT_NAME)"!="xalan-c" install-extras: $(XSL_BIN_DEST)\readme.html $(XSL_BIN_DEST)\LICENSE $(XSL_BIN_DEST)\License.html $(XSL_BIN_DEST)\license.html $(XSL_BIN_DEST)\XLicense.html $(XSL_BIN_DEST)\NOTICE !ELSE install-extras: $(XSL_BIN_DEST)\readme.html $(XSL_BIN_DEST)\LICENSE $(XSL_BIN_DEST)\KEYS $(XSL_BIN_DEST)\NOTICE !ENDIF $(XSL_BIN_DEST)\readme.html $(XSL_BIN_DEST)\KEYS $(XSL_BIN_DEST)\License.html $(XSL_BIN_DEST)\LICENSE $(XSL_BIN_DEST)\XLicense.html $(XSL_BIN_DEST)\NOTICE : $(XALANCROOT)\$(@F) $(FILECOPY) $(XALANCROOT)\$(@F) $(@D) zip: install $(ZIP) $(ZIP_DIR)\$(PACKAGE_NAME).zip $(ZIP_DIR) clean: -$(RMDIR) $(ZIP_DIR) build_debug: $(MAKE) XALANCROOT=$(XALANCROOT) prefix=$(prefix) INSTALL_MODE=Debug PACKAGE_NAME=$(PACKAGE_NAME) libs COPY="$(COPY)" IDE_VER=$(IDE_VER) xalan-c-1.11/c/Projects/Win32/tools.ini0000664000175000000640000000234311731656104016535 0ustar stevesamba# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # [NMAKE] #IDE_VER can be VC6 or VC7 IDE_VER=VC6 #COMPILER_VER COMPILER_VER=msvc_60 #BITS accepts Win32 or Win64 BITS=win32 #WINOS accepts xp, 2000, or nt WINOS=nt #Can be Debug,Release or Both INSTALL_MODE=Both XSLT_DLL_NAME=$(PROJECT_NAME)_$(MS_VER) MSGLIB_DLL_NAME=$(MSGLIB_PREFIX)_$(MS_VER) PACKAGE_NAME=$(XSLT_DLL_NAME)-win$(BITS)_$(COMPILER_VER) MKDIR=mkdir MOVE=move COPY=xcopy /Q /S /Y /I FILECOPY=xcopy RMDIR=rmdir /Q /S ZIP=zip -q -r RM=erase /Qxalan-c-1.11/c/Tests/0002775000175000000640000000000012037700125013274 5ustar stevesambaxalan-c-1.11/c/Tests/Extensions/0002775000175000000640000000000012037700125015433 5ustar stevesambaxalan-c-1.11/c/Tests/Extensions/extensions.cpp0000664000175000000640000003650111731656104020350 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Base header file. Must be first. #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #include #else #include #include #endif // This is here for memory leak testing. #if !defined(NDEBUG) && defined(_MSC_VER) #include #endif #include // EXTENSION HEADERS... #include #include #include #include #include #include #include // HARNESS HEADERS... #include #include XALAN_USING_STD(cerr) XALAN_USING_STD(cout) XALAN_USING_STD(endl) // GLOBAL VARIABLES... const char* const resultString = "The specified function is not available: http://xml.apache.org/xalan:nodeset"; XALAN_USING_XALAN(XalanFileUtility) XALAN_USING_XALAN(XalanDOMString) XALAN_USING_XALAN(XalanTransformer) XALAN_USING_XALAN(XalanXMLFileReporter) XALAN_USING_XALAN(XSLTInputSource) XALAN_USING_XALAN(XSLTResultTarget) void setHelp(XalanFileUtility& h) { h.args.getHelpStream() << endl << "extensions dirname [-out]" << endl << endl << "dirname (base directory for xml-xalan\\test\\tests\\extensions)" << endl << "-out dirname (base directory for output)" << endl; } // Generate the various filenames needed for testing. void generateFiles( const XalanDOMString& fileName, const XalanDOMString& currentDir, XalanDOMString& xml, XalanDOMString& xsl, XalanDOMString& out, XalanDOMString& gold, const char* test, XalanFileUtility& h) { // Set up the input/output files. const XalanDOMString testName(h.generateFileName(fileName,"out")); xsl = h.args.base + currentDir + XalanFileUtility::s_pathSep + fileName; xml = h.generateFileName(xsl,"xml"); h.data.xmlFileURL = xml; h.data.xslFileURL = xsl; out = h.args.output + currentDir + XalanFileUtility::s_pathSep + XalanDOMString(test) + testName; gold = h.args.gold + currentDir + XalanFileUtility::s_pathSep + testName; } // TestCase1 // API Call: // None. Verfies default behavior of XalanTransformer. // Comments: // This testcase is called once for each function that XalanC implements. It verfies that the function // was properly installed and working correctly within the transformer. All functions are preinstalled // globally. Currently XalanC supports the following extensions; difference, distinct, evaluate, // hasSameNodes, intersection and nodeset. // void TestCase1( XalanTransformer& xalan, const XalanDOMString& fileName, const XalanDOMString& currentDir, XalanXMLFileReporter& logFile, XalanFileUtility& h) { XalanDOMString xml, xsl, theOutputFile, theGoldFile; generateFiles(fileName, currentDir, xml, xsl, theOutputFile, theGoldFile, "tc1-", h); h.data.testOrFile = XalanDOMString("TestCase1: ") + fileName; h.data.xmlFileURL = xml; h.data.xslFileURL = xsl; // Create the InputSources and ResultTraget. const XSLTInputSource xmlInputSource(xml); const XSLTInputSource xslInputSource(xsl); const XSLTResultTarget theResultTarget(theOutputFile); // Perform the transform and check the results. xalan.transform(xmlInputSource, xslInputSource, theResultTarget); h.checkResults(theOutputFile, theGoldFile, logFile); } // TestCase2 // API Call: // XalanTransformer::uninstallExternalFunctionGlobal // Comments: // This test verifies that the 'nodeset' function is properly uninstalled via the api. // Output file should NOT contain data. // void TestCase2( XalanTransformer& xalan, const XalanDOMString& fileName, const XalanDOMString& currentDir, const XalanDOMString& theNamespace, XalanXMLFileReporter& logFile, XalanFileUtility& h) { XalanDOMString xml, xsl, theOutputFile, theGoldFile; generateFiles(fileName, currentDir, xml, xsl, theOutputFile, theGoldFile, "tc2-", h); h.data.testOrFile = XalanDOMString("TestCase2"); h.data.xmlFileURL = xml; h.data.xslFileURL = xsl; // Create the InputSources and ResultTraget. const XSLTInputSource xmlInputSource(xml); const XSLTInputSource xslInputSource(xsl); const XSLTResultTarget theResultTarget(theOutputFile); // UnInstall the external Global function "nodeset" xalan.uninstallExternalFunctionGlobal( theNamespace, XalanDOMString("nodeset")); //Perform the transform and check the results. xalan.transform(xmlInputSource, xslInputSource, theResultTarget); h.checkAPIResults(xalan.getLastError(), resultString, "transformer.uninstallExternalFunctionGlobal()", logFile, theOutputFile, theGoldFile, true); } // TestCase3: // API Call: // XalanTransformer::installExternalFunction // XalanTransformer::uninstallExternalFunction // Comments: // This tests the installExternalFunction method of XalanTransformer using the nodeset function. // Output file should NOT contain data. // void TestCase3( XalanTransformer& xalan, const XalanDOMString& fileName, const XalanDOMString& currentDir, const XalanDOMString& theNamespace, XalanXMLFileReporter& logFile, XalanFileUtility& h) { XALAN_USING_XALAN(FunctionNodeSet) XalanDOMString xml, xsl, theOutputFile, theGoldFile; generateFiles(fileName, currentDir, xml, xsl, theOutputFile, theGoldFile, "tc3-", h); h.data.testOrFile = XalanDOMString("TestCase3a"); h.data.xmlFileURL = xml; h.data.xslFileURL = xsl; // Create the InputSources and ResultTraget. const XSLTInputSource xmlInputSource(xml); const XSLTInputSource xslInputSource(xsl); const XSLTResultTarget theResultTarget(theOutputFile); // Install the external function "nodeset" xalan.installExternalFunction(theNamespace, XalanDOMString("nodeset"), FunctionNodeSet()); // Perform the transform and check the results. xalan.transform(xmlInputSource, xslInputSource, theResultTarget); h.checkResults(theOutputFile, theGoldFile, logFile); // Because we install the function locally, this second instance of the transformer // should _NOT_ run the test successfully. XalanTransformer newEngine; h.data.testOrFile = XalanDOMString("TestCase3b"); //Perform the transform and check the results. newEngine.transform(xmlInputSource, xslInputSource, theResultTarget); h.checkAPIResults(newEngine.getLastError(), resultString, "transformer.installExternalFunction()", logFile, theOutputFile, theGoldFile, true); // Now unInstall the external function "nodeset". Once again the transform should // _NOT_ run the test successfully h.data.testOrFile = XalanDOMString("TestCase3c"); xalan.uninstallExternalFunction(theNamespace, XalanDOMString("nodeset")); // Perform the transform and check the results. xalan.transform(xmlInputSource, xslInputSource, theResultTarget); h.checkAPIResults(xalan.getLastError(), resultString, "transformer.uninstallExternalFunction()", logFile, theOutputFile, theGoldFile, true); } // TestCase4: // API Call: // XalanTransformer::installExternalFunctionGlobal // Comments: // This tests uses transformer method installExternalFunctionGlobal to add the nodeset function. // The output file should contain data. // void TestCase4( XalanTransformer& xalan, const XalanDOMString& fileName, const XalanDOMString& currentDir, const XalanDOMString& theNamespace, XalanXMLFileReporter& logFile, XalanFileUtility& h) { XALAN_USING_XALAN(FunctionNodeSet) XalanDOMString xml, xsl, theOutputFile, theGoldFile; generateFiles(fileName, currentDir, xml, xsl, theOutputFile, theGoldFile, "tc4-", h); h.data.testOrFile = XalanDOMString("TestCase4a"); h.data.xmlFileURL = xml; h.data.xslFileURL = xsl; // Create the InputSources and ResultTraget. const XSLTInputSource xmlInputSource(xml); const XSLTInputSource xslInputSource(xsl); const XSLTResultTarget theResultTarget(theOutputFile); // Install the external function "nodeset" Globally xalan.installExternalFunctionGlobal(theNamespace, XalanDOMString("nodeset"), FunctionNodeSet()); // Perform the transform and check the results. xalan.transform(xmlInputSource, xslInputSource, theResultTarget); h.checkResults(theOutputFile, theGoldFile, logFile); // Create a second transformer and verify that it can 'see' the extension as well... XalanTransformer newEngine; h.data.testOrFile = XalanDOMString("TestCase4b"); newEngine.transform(xmlInputSource, xslInputSource, theResultTarget); h.checkResults(theOutputFile, theGoldFile, logFile); } int runTests( int argc, char* argv[]) { int theResult = 0; XalanFileUtility h; // Set the program help string, then get the command line parameters. // setHelp(h); if (h.getParams(argc, argv, "EXTENSION-RESULTS") == true) { const XalanDOMString currentDir("library"); const XalanDOMString extDir(h.args.base + currentDir); // Check that the base directory is correct. if ( !h.checkDir(extDir) ) { cout << "Invalid base directory - " << extDir << endl; cout << h.args.getHelpMessage(); theResult = -1; } else { try { // Generate Unique Run id. (Only used to name the result logfile.) const XalanDOMString UniqRunid = h.generateUniqRunid(); // Defined basic constants for file manipulation const XalanDOMString drive(h.getDrive()); const XalanDOMString resultsFile(drive + h.args.output + currentDir + UniqRunid + XalanFileUtility::s_xmlSuffix); XalanXMLFileReporter logFile(resultsFile); logFile.logTestFileInit("C++ Extension Testing. "); logFile.logTestCaseInit(currentDir); cout << "Performing Extension testing ..." << endl; XalanTransformer xalan; // Check that output directory is there. XalanDOMString fileName; const XalanDOMString theOutputDir(h.args.output + currentDir); h.checkAndCreateDir(theOutputDir); typedef XalanFileUtility::FileNameVectorType FileNameVectorType; // Get the files found in the "cextension" directory const FileNameVectorType files = h.getTestFileNames(h.args.base, currentDir, true); // TestCase1 is used to verify correct functioning of the default extension functions TestCase1(xalan, files[0], currentDir, logFile, h); // Difference function TestCase1(xalan, files[1], currentDir, logFile, h); // Distinct TestCase1(xalan, files[2], currentDir, logFile, h); // Evaluate TestCase1(xalan, files[3], currentDir, logFile, h); // HasSameNodes TestCase1(xalan, files[4], currentDir, logFile, h); // Intersection TestCase1(xalan, files[5], currentDir, logFile, h); // NodeSet01 - basic testing TestCase1(xalan, files[6], currentDir, logFile, h); // NodeSet02 - extensive RTF testing. const XalanDOMString theNamespace("http://xml.apache.org/xalan"); // These testcases are used to test the Install/Uninstall Function API's of the transformer. TestCase2(xalan, files[5], currentDir, theNamespace, logFile, h); TestCase3(xalan, files[5], currentDir, theNamespace, logFile, h); TestCase4(xalan, files[5], currentDir, theNamespace, logFile, h); logFile.logTestCaseClose("Done", "Pass"); h.reportPassFail(logFile, UniqRunid); logFile.logTestFileClose("C++ Extension Testing: ", "Done"); logFile.close(); h.analyzeResults(xalan, resultsFile); } catch(...) { cerr << "Exception caught!!!" << endl << endl; theResult = -1; } } } return theResult; } int main( int argc, char* argv[]) { #if !defined(NDEBUG) && defined(_MSC_VER) _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); #endif int theResult = 0; try { XALAN_USING_XERCES(XMLPlatformUtils) // Call the static initializers for xerces and xalan, and create a transformer // XMLPlatformUtils::Initialize(); XalanTransformer::initialize(); theResult = runTests(argc, argv); XalanTransformer::terminate(); XMLPlatformUtils::Terminate(); XalanTransformer::ICUCleanUp(); } catch(...) { cerr << "Initialization failed!" << endl << endl; theResult = -1; } return theResult; } xalan-c-1.11/c/Tests/Extensions/extensions.vcproj0000664000175000000640000001553611731656104021076 0ustar stevesamba xalan-c-1.11/c/Tests/Extensions/extensions.dsp0000664000175000000640000002223511731656104020353 0ustar stevesamba# Microsoft Developer Studio Project File - Name="extensions" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=extensions - Win32 Debug !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 "extensions.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 "extensions.mak" CFG="extensions - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "extensions - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "extensions - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "extensions - Win32 Release with symbols" (based on "Win32 (x86) Console Application") !MESSAGE "extensions - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "extensions - Win64 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)" == "extensions - 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 "..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release\extensions" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /machine:I386 /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "extensions - 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 "..\..\Build\Win32\VC6\debug" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\debug\extensions" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W4 /GR /GX /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "extensions - Win32 Release with symbols" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "extensions___Win32_Release_with_symbols" # PROP BASE Intermediate_Dir "extensions___Win32_Release_with_symbols" # PROP BASE Ignore_Export_Lib 0 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "..\..\Build\Win32\VC6\Release.symbols" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release.symbols\extensions" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "..\harness\\" /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 ..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release\xerces-c_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\Build\Win32\VC6\Release/extensions.exe" # ADD LINK32 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:I386 /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "extensions - Win64 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 "..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\Release\extensions" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /machine:IX86 /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "extensions - Win64 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 "..\..\Build\Win64\VC6\debug" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\debug\extensions" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W4 /GR /GX /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "extensions - Win32 Release" # Name "extensions - Win32 Debug" # Name "extensions - Win32 Release with symbols" # Name "extensions - Win64 Release" # Name "extensions - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\extensions.cpp !IF "$(CFG)" == "extensions - Win32 Release" # ADD CPP /MD /Zi !ELSEIF "$(CFG)" == "extensions - Win32 Debug" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Debug\extensions" # ADD CPP /MDd /Zi !ELSEIF "$(CFG)" == "extensions - Win32 Release with symbols" # ADD BASE CPP /MD /Zi # ADD CPP /MD /Zi !ELSEIF "$(CFG)" == "extensions - Win64 Release" !ELSEIF "$(CFG)" == "extensions - Win64 Debug" !ENDIF # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Tests/InputSource/0002775000175000000640000000000012037700125015554 5ustar stevesambaxalan-c-1.11/c/Tests/InputSource/inputsource.cpp0000664000175000000640000003614111731656104020652 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif // This is here for memory leak testing. #if !defined(NDEBUG) && defined(_MSC_VER) #include #endif // XERCES HEADERS... #include #include // XALAN HEADERS... #include #include #include #include #include #include #include #include #include #include #include #include #include XALAN_USING_STD(cerr) XALAN_USING_STD(cout) XALAN_USING_STD(endl) // Just hoist everything... XALAN_CPP_NAMESPACE_USE void setHelp(XalanFileUtility& h) { h.args.getHelpStream() << endl << "inputsource dirname [-out]" << endl << endl << "dirname (base directory for testcases)" << endl << "-out dirname (base directory for output)" << endl; } // TestCase1 will use the following method of XSLTInputSource // - XSLTInputSource(const XMLCh* systemId) // - XSLTInputSource(const XMLCh* systemId, // const XMLCh* publicId) void testCase1( XalanTransformer& xalan, XalanXMLFileReporter& logFile, const XalanDOMString& xml, const XalanDOMString& xsl, const XalanDOMString& outBase, const XalanDOMString& theGoldFile, XalanFileUtility& h) { const XalanDOMString publicID("public-smublic"); const XalanDOMString theOutputFile = outBase + XalanDOMString("\\InputSource-TestCase1.out"); const XSLTResultTarget theResultTarget(theOutputFile); h.data.testOrFile = "InputSource-TestCase1"; // This code exercised the stated methods of XSLTInputSource const XSLTInputSource xmlInputSource(xml); const XSLTInputSource xslInputSource(xsl, publicID); // Do the transform and report the results. xalan.transform(xmlInputSource, xslInputSource, theResultTarget); h.checkResults(theOutputFile, theGoldFile, logFile); } // TestCase2 will use the following methods of XSLTInputSource // - XSLTInputSource(const char* systemId) // - XSLTInputSource(const char* systemId, // const char* publicId) void testCase2( XalanTransformer& xalan, XalanXMLFileReporter& logFile, const XalanDOMString& outBase, const XalanDOMString& theGoldFile, XalanFileUtility& h) { const XalanDOMString theOutputFile = outBase + XalanDOMString("\\InputSource-TestCase2.out"); const XSLTResultTarget theResultTarget2(theOutputFile); h.data.testOrFile = "InputSource-TestCase2"; // This code excersized the stated methods of XSLTInputSource const XSLTInputSource xslStringSource("\\xml-xalan\\test\\tests\\capi\\smoke\\smoke01.xsl","public-smublic"); const XSLTInputSource xmlStringSource("\\xml-xalan\\test\\tests\\capi\\smoke\\smoke01.xml"); // Do the transform and report the results. xalan.transform(xmlStringSource, xslStringSource, theResultTarget2); h.checkResults(theOutputFile, theGoldFile, logFile); } // TestCase3 will use the following methods of XSLTInputSource // - XSLTInputSource() // - XSLTInputSource(XalanNode* node) // - XSLTInputSource::setNode(XalanNode* node) // - XSLTInputSource::getNode() // - NOTE: We can't use the XalanTransformer Class with this test. So we create the processor directly. void testCase3( XalanXMLFileReporter& logFile, const XalanDOMString& outBase, const XalanDOMString& theGoldFile, XalanFileUtility& h) { XalanDOMString name, value; const XalanDOMString theOutputFile = outBase + XalanDOMString("\\InputSource-TestCase3.out"); XSLTResultTarget theResultTarget3(theOutputFile); h.data.testOrFile = "InputSource-TestCase3a"; // Create necessary Infrastructure to perform transform without the XalanTransformer Class. // Can't use it because it doesn't take a DOM. XalanSourceTreeDOMSupport domSupport; XalanSourceTreeParserLiaison parserLiaison(domSupport); domSupport.setParserLiaison(&parserLiaison); XSLTProcessorEnvSupportDefault envSupport; XObjectFactoryDefault xObjectFactory; XPathFactoryDefault xPathFactory; // Create a processor and connect to ProcessorEnvSupport object XSLTEngineImpl theProcessor(parserLiaison, envSupport, domSupport, xObjectFactory, xPathFactory); // Hook up the processor the the support object. envSupport.setProcessor(&theProcessor); // Create separate factory support object, so the stylesheet's // factory-created XPath instance are independent from processor's. XPathFactoryDefault ssXPathFactory; // Create a stylesheet construction context, using the // stylesheet's factory support objects. StylesheetConstructionContextDefault constContext( theProcessor, ssXPathFactory); StylesheetExecutionContextDefault execuContext( theProcessor, envSupport, domSupport, xObjectFactory); // Create the XSL Input Source const XSLTInputSource xslStringSource("\\xml-xalan\\test\\tests\\capi\\smoke\\smoke01.xsl"); XalanDocument* const domXSL = parserLiaison.parseXMLStream(xslStringSource); // Here is one of the tests. It will be verified when we do the transform. XSLTInputSource xslXalanNode(domXSL); // Set the system ID, so relative URIs are resolved properly... xslXalanNode.setSystemId(xslStringSource.getSystemId()); XalanNode *theNode, *firstChild; // Here is another test theNode = xslXalanNode.getNode(); firstChild = theNode->getFirstChild(); value = firstChild->getNodeValue(); h.checkAPIResults(value, XalanDOMString(" This is THE Smoke Test "), "XSLTInputSource.getNode()", logFile, theOutputFile, theGoldFile); // Create the XML Input Source const XSLTInputSource xmlStringSource("\\xml-xalan\\test\\tests\\capi\\smoke\\smoke01.xml"); XalanDocument* const domXML = parserLiaison.parseXMLStream(xmlStringSource); // Here is the final test. It too will be verified when we do the transform. XSLTInputSource xmlXalanNode; xmlXalanNode.setNode(domXML); // Do the transform and report the results. theProcessor.process(xmlXalanNode, //inputSource, xslXalanNode, //stylesheetSource, theResultTarget3, //outputTarget, constContext, execuContext); // Reset testcase name h.data.testOrFile = "InputSource-TestCase3b"; h.checkResults(theOutputFile, theGoldFile, logFile); } // TestCase4 will use the following API. Default constructor of XSLTInputSource will take a string. // - XSLTInputSource(const char*) // - XSLTInputSource(const char*) void testCase4( XalanTransformer& xalan, XalanXMLFileReporter& logFile, const XalanDOMString& outBase, const XalanDOMString& theGoldFile, XalanFileUtility& h) { const XalanDOMString theOutputFile = outBase + XalanDOMString("\\InputSource-TestCase4.out"); const XSLTResultTarget theResultTarget(theOutputFile); h.data.testOrFile = "InputSource-TestCase4"; // This code exercises the stated methods of XSLTInputSource // Do the transform and report the results. xalan.transform("\\xml-xalan\\test\\tests\\capi\\smoke\\smoke01.xml", "\\xml-xalan\\test\\tests\\capi\\smoke\\smoke01.xsl", theResultTarget); h.checkResults(theOutputFile, theGoldFile, logFile); } // TestCase5 uses XercesDOMWrapperParsedSource class to wrap a xerces generated dom. // void testCase5( XalanTransformer& xalan, XalanXMLFileReporter& logFile, const XalanDOMString& xml, const XalanDOMString& xsl, const XalanDOMString& outBase, const XalanDOMString& theGoldFile, XalanFileUtility& h) { XALAN_USING_XERCES(XercesDOMParser) XALAN_USING_XERCES(DOMDocument) h.data.testOrFile = "InputSource-TestCase5"; const XSLTInputSource xmlInputSource(xml); XercesDOMParser theParser; theParser.parse(xmlInputSource); const DOMDocument* const theDOM = theParser.getDocument(); XercesDOMSupport theDOMSupport; XercesParserLiaison theParserLiaison(theDOMSupport); // This is the wrapper class for Xerces DOM. const XercesDOMWrapperParsedSource xmlDocWrapper(theDOM, theParserLiaison, theDOMSupport, xml); const XalanDOMString theOutputFile(outBase + XalanDOMString("\\InputSource-TestCase5.out")); const XSLTInputSource xslInputSource(xsl); const XSLTResultTarget theResultTarget(theOutputFile); // Do the transform and report the results. xalan.transform(xmlDocWrapper, xslInputSource, theResultTarget); h.checkResults(theOutputFile, theGoldFile, logFile); } int runTests( int argc, char* argv[]) { int theResult = 0; XalanFileUtility h; // Set the program help string, then get the command line parameters. // setHelp(h); if (h.getParams(argc, argv, "INPUTSOURCE-RESULTS") == true) { // Generate and Initialize Unique result logfile, and get drive designation // const XalanDOMString UniqRunid = h.generateUniqRunid(); const XalanDOMString drive(h.getDrive()); const XalanDOMString resultFilePrefix("isource"); const XalanDOMString resultsFile(drive + h.args.output + resultFilePrefix + UniqRunid + XalanFileUtility::s_xmlSuffix); XalanXMLFileReporter logFile(resultsFile); logFile.logTestFileInit("XSLTInputSource Testing: Give various types of allowable Inputs. "); try { XalanTransformer xalan; XalanDOMString fileName; // Get testfiles from the capi\smoke directory, create output directory, . // const XalanDOMString currentDir("smoke"); const XalanDOMString theOutputDir = h.args.output + currentDir; h.checkAndCreateDir(theOutputDir); typedef XalanFileUtility::FileNameVectorType FileNameVectorType; // Get the single file found in the "smoke" directory, and run tests. // const FileNameVectorType files = h.getTestFileNames(h.args.base, currentDir, true); logFile.logTestCaseInit(currentDir); for(FileNameVectorType::size_type i = 0; i < files.size(); ++i) { fileName = files[i]; h.data.testOrFile = fileName; // Set up the input/output files. const XalanDOMString theXSLFile= h.args.base + currentDir + XalanFileUtility::s_pathSep + fileName; const XalanDOMString theXMLFile = h.generateFileName(theXSLFile,"xml"); h.data.xmlFileURL = theXMLFile; h.data.xslFileURL = theXSLFile; // Set the gold file. XalanDOMString theGoldFile = h.args.gold + currentDir + XalanFileUtility::s_pathSep + fileName; theGoldFile = h.generateFileName(theGoldFile, "out"); // Execute the test cases. // testCase1(xalan, logFile, theXMLFile, theXSLFile, theOutputDir, theGoldFile, h); testCase2(xalan, logFile, theOutputDir, theGoldFile, h); testCase3(logFile, theOutputDir, theGoldFile, h); testCase4(xalan, logFile, theOutputDir, theGoldFile, h); testCase5(xalan, logFile, theXMLFile, theXSLFile, theOutputDir, theGoldFile, h); } logFile.logTestCaseClose("Done", "Pass"); h.reportPassFail(logFile, UniqRunid); logFile.logTestFileClose("ISource Testing: ", "Done"); logFile.close(); h.analyzeResults(xalan, resultsFile); } catch(...) { cerr << "Exception caught!!!" << endl << endl; theResult = -1; } } return theResult; } int main( int argc, char* argv[]) { #if !defined(NDEBUG) && defined(_MSC_VER) _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); #endif int theResult = 0; try { XALAN_USING_XERCES(XMLPlatformUtils) // Call the static initializers for xerces and xalan, and create a transformer // XMLPlatformUtils::Initialize(); XalanTransformer::initialize(); theResult = runTests(argc, argv); XalanTransformer::terminate(); XMLPlatformUtils::Terminate(); XalanTransformer::ICUCleanUp(); } catch(...) { cerr << "Initialization failed!" << endl << endl; theResult = -1; } return theResult; } xalan-c-1.11/c/Tests/InputSource/inputsource.vcproj0000664000175000000640000001557311731656104021401 0ustar stevesamba xalan-c-1.11/c/Tests/InputSource/inputsource.dsp0000664000175000000640000002225711731656104020661 0ustar stevesamba# Microsoft Developer Studio Project File - Name="inputsource" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=inputsource - Win32 Debug !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 "inputsource.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 "inputsource.mak" CFG="inputsource - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "inputsource - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "inputsource - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "inputsource - Win32 Release with symbols" (based on "Win32 (x86) Console Application") !MESSAGE "inputsource - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "inputsource - Win64 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)" == "inputsource - 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 "..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release\inputsource" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /Zm250 /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /machine:I386 /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "inputsource - 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 "..\..\Build\Win32\VC6\debug" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\debug\inputsource" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W4 /GR /GX /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /Zm250 /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "inputsource - Win32 Release with symbols" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "inputsource___Win32_Release_with_symbols" # PROP BASE Intermediate_Dir "inputsource___Win32_Release_with_symbols" # PROP BASE Ignore_Export_Lib 0 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "..\..\Build\Win32\VC6\Release.symbols" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release.symbols\inputsource" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "..\harness\\" /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /Zm250 /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 ..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release\xerces-c_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\Build\Win32\VC6\Release/inputsource.exe" # ADD LINK32 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:I386 /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "inputsource - Win64 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 "..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\Release\inputsource" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /machine:IX86 /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "inputsource - Win64 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 "..\..\Build\Win64\VC6\debug" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\debug\inputsource" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W4 /GR /GX /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "inputsource - Win32 Release" # Name "inputsource - Win32 Debug" # Name "inputsource - Win32 Release with symbols" # Name "inputsource - Win64 Release" # Name "inputsource - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\inputsource.cpp !IF "$(CFG)" == "inputsource - Win32 Release" # ADD CPP /MD /Zi !ELSEIF "$(CFG)" == "inputsource - Win32 Debug" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Debug\inputsource" # ADD CPP /MDd /Zi !ELSEIF "$(CFG)" == "inputsource - Win32 Release with symbols" # ADD BASE CPP /MD /Zi # ADD CPP /MD /Zi !ELSEIF "$(CFG)" == "inputsource - Win64 Release" !ELSEIF "$(CFG)" == "inputsource - Win64 Debug" !ENDIF # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Tests/PerfT/0002775000175000000640000000000012037700125014314 5ustar stevesambaxalan-c-1.11/c/Tests/PerfT/perft.cpp0000664000175000000640000003424611731656104016156 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Base header file. Must be first. #include #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include #include #include #include #include // This is here for memory leak testing. #if !defined(NDEBUG) && defined(_MSC_VER) #include #endif XALAN_USING_STD(cerr) XALAN_USING_STD(cout) XALAN_USING_STD(endl) const char* const excludeStylesheets[] = { "large-evans_large.xsl", 0 }; inline bool checkForExclusion(const XALAN_CPP_NAMESPACE_QUALIFIER XalanDOMString& currentFile) { for (int i=0; excludeStylesheets[i] != 0; i++) { if (currentFile == XALAN_CPP_NAMESPACE_QUALIFIER XalanDOMString(excludeStylesheets[i])) { return true; } } return false; } inline double calculateElapsedTime( clock_t theStartTime, clock_t theEndTime) { return double(theEndTime - theStartTime) / CLOCKS_PER_SEC * 1000.0; } inline double calculateAvgTime( clock_t accTime, long theIterationCount) { assert(theIterationCount > 1); return double(accTime) / theIterationCount; } void setHelp(XALAN_CPP_NAMESPACE_QUALIFIER XalanFileUtility& h) { h.args.getHelpStream() << endl << "Perft dir [-out -sub -i -iter]" << endl << endl << "dir ( base directory for testcases)" << endl << "-out dir ( base directory for output)" << endl << "-sub dir ( run files only from a specific directory)" << endl << "-i ( include all testcases )" << endl << "-iter num (specifies number of iterations; must be > 0)" << endl; } int runTests( int argc, char* argv[]) { // Just hoist everything... XALAN_CPP_NAMESPACE_USE MemoryManager& theManager = XalanMemMgrs::getDefaultXercesMemMgr(); XalanFileUtility h(theManager); // Set the program help string, then get the command line parameters. // setHelp(h); bool setGold = false; const XalanDOMString processorType("XalanC"); if (h.getParams(argc, argv, "PERFT-RESULTS", setGold) == true) { XalanTransformer xalan; // Generate Unique Run id and processor info XalanDOMString UniqRunid; h.generateUniqRunid(UniqRunid); // Defined basic constants for file manipulation and open results file const XalanDOMString resultFilePrefix("cpp"); XalanDOMString resultsFile= h.args.output; resultsFile += resultFilePrefix; resultsFile += UniqRunid; resultsFile += XalanFileUtility::s_xmlSuffix; XalanXMLFileReporter logFile(theManager, resultsFile); logFile.logTestFileInit("Performance Testing - Reports various performance metrics using the Transformer"); // Get the list of sub-directories below "base" and iterate through them bool foundDir = false; // Flag indicates directory found. Used in conjunction with -sub cmd-line arg. typedef XalanFileUtility::FileNameVectorType FileNameVectorType; FileNameVectorType dirs; h.getDirectoryNames(h.args.base, dirs); for(FileNameVectorType::size_type j = 0; j < dirs.size(); j++) { // Run specific category of files from given directory if (length(h.args.sub) > 0 && !equals(dirs[j], h.args.sub)) { continue; } cout << "Processing files in Directory: " << dirs[j] << endl; // Check that output directory is there. XalanDOMString theOutputDir = h.args.output; theOutputDir += dirs[j]; h.checkAndCreateDir(theOutputDir); // Indicate that directory was processed and get test files from the directory foundDir = true; FileNameVectorType files; h.getTestFileNames(h.args.base, dirs[j], false, files); XalanDOMString logEntry; logEntry = "Performance Directory: "; logEntry += dirs[j]; logFile.logTestCaseInit(logEntry); const long iterCount = h.args.iters; for(FileNameVectorType::size_type i = 0; i < files.size(); i++) { // Define variables used for timing and reporting ... clock_t startTime, endTime, accmTime, avgEtoe; double timeinMilliseconds = 0, theAverage =0; int transformResult = 0; typedef XalanXMLFileReporter::Hashtable Hashtable; Hashtable attrs(theManager); attrs.insert(Hashtable::value_type(XalanDOMString("idref"), files[i])); attrs.insert(Hashtable::value_type(XalanDOMString("UniqRunid"),UniqRunid)); attrs.insert(Hashtable::value_type(XalanDOMString("processor"),processorType)); logFile.addMetricToAttrs("Iterations",iterCount, attrs); if (h.args.skip) { if (checkForExclusion(files[i])) continue; } XalanDOMString theXSLFile = h.args.base; theXSLFile += dirs[j]; theXSLFile += XalanFileUtility::s_pathSep; theXSLFile += files[i]; XalanDOMString theXMLFile; h.generateFileName(theXSLFile,"xml", theXMLFile); XalanDOMString outbase = h.args.output; outbase += dirs[j]; outbase += XalanFileUtility::s_pathSep; outbase += files[i]; XalanDOMString theOutputFile; h.generateFileName(outbase, "out", theOutputFile); const XSLTInputSource xslInputSource(theXSLFile); const XSLTInputSource xmlInputSource(theXMLFile); const XSLTResultTarget theResultTarget(theOutputFile); attrs.insert(Hashtable::value_type(XalanDOMString("href"), theXSLFile)); cout << endl << files[i] << endl; // Time the parsing(compile) of the XSL stylesheet and report the results.. // startTime = clock(); const XalanCompiledStylesheet* compiledSS = 0; xalan.compileStylesheet(xslInputSource, compiledSS); endTime = clock(); if (compiledSS == 0) { continue; } timeinMilliseconds = calculateElapsedTime(startTime, endTime); cout << " XSL: " << timeinMilliseconds << " milliseconds, Parse" << endl; logFile.addMetricToAttrs("parsexsl",timeinMilliseconds, attrs); // Time the parsing of the input XML and report the results.. // startTime = clock(); const XalanParsedSource* parsedSource = 0; xalan.parseSource(xmlInputSource, parsedSource); endTime = clock(); if (parsedSource == 0) { continue; } timeinMilliseconds = calculateElapsedTime(startTime, endTime); cout << " XML: " << timeinMilliseconds << " milliseconds, Parse" < xalan-c-1.11/c/Tests/PerfT/PerfT.dsp0000664000175000000640000002203611731656104016054 0ustar stevesamba# Microsoft Developer Studio Project File - Name="PerfT" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=PerfT - Win32 Debug !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 "PerfT.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 "PerfT.mak" CFG="PerfT - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "PerfT - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "PerfT - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "PerfT - Win32 Release with symbols" (based on "Win32 (x86) Console Application") !MESSAGE "PerfT - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "PerfT - Win64 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)" == "PerfT - 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 "..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release\PerfT" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /machine:I386 /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "PerfT - 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 "..\..\Build\Win32\VC6\debug" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\debug\PerfT" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /GR /GX /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "PerfT - Win32 Release with symbols" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "PerfT___Win32_Release_with_symbols" # PROP BASE Intermediate_Dir "PerfT___Win32_Release_with_symbols" # PROP BASE Ignore_Export_Lib 0 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "..\..\Build\Win32\VC6\Release.symbols" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release.symbols\PerfT" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "..\harness\\" /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 ..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release\xerces-c_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\Build\Win32\VC6\Release/perft.exe" # ADD LINK32 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:I386 /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /fixed:no # SUBTRACT LINK32 /pdb:none !ELSEIF "$(CFG)" == "PerfT - Win64 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 "..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\Release\PerfT" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /machine:IX86 /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "PerfT - Win64 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 "..\..\Build\Win64\VC6\debug" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\debug\PerfT" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /GR /GX /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "PerfT - Win32 Release" # Name "PerfT - Win32 Debug" # Name "PerfT - Win32 Release with symbols" # Name "PerfT - Win64 Release" # Name "PerfT - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\perft.cpp !IF "$(CFG)" == "PerfT - Win32 Release" # ADD CPP /MD /Zi !ELSEIF "$(CFG)" == "PerfT - Win32 Debug" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Debug\PerfT" # ADD CPP /MDd /Zi !ELSEIF "$(CFG)" == "PerfT - Win32 Release with symbols" # ADD BASE CPP /MD /Zi # ADD CPP /MD /Zi !ELSEIF "$(CFG)" == "PerfT - Win64 Release" !ELSEIF "$(CFG)" == "PerfT - Win64 Debug" !ENDIF # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Tests/Dom2Dom/0002775000175000000640000000000012037700125014535 5ustar stevesambaxalan-c-1.11/c/Tests/Dom2Dom/dtod.xsl0000664000175000000640000000063511731656104016230 0ustar stevesamba This is a test xalan-c-1.11/c/Tests/Dom2Dom/dom2dom.cpp0000664000175000000640000003175511731656104016622 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Base header file. Must be first. #include #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #include #else #include #include #endif #include // This is here for memory leak testing. #if !defined(NDEBUG) && defined(_MSC_VER) #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XALAN_USING_STD(cerr) XALAN_USING_STD(cout) XALAN_USING_STD(endl) // Just hoist everything... XALAN_CPP_NAMESPACE_USE void printArgOptions() { cerr << endl << "dom2dom dirname [-out]" << endl << endl << "dirname (base directory for testcases)" << endl << "-out dirname (base directory for output)" << endl; } bool getParams( int argc, char* argv[], XalanFileUtility& f, XalanDOMString& basedir, XalanDOMString& outdir) { MemoryManager& theManager = XalanMemMgrs::getDefaultXercesMemMgr(); bool fSuccess = true; // Used to continue argument loop bool fSetOut = true; // Set default output directory // Insure that required "-base" argument is there. if (argc == 1 || argv[1][0] == '-') { printArgOptions(); return false; } else { XalanDOMString dir(XalanFileUtility::s_pathSep, theManager); dir += XalanDOMString(argv[1], theManager); if (f.checkDir( dir )) { assign(basedir, XalanDOMString(argv[1], theManager)); insert(basedir, 0, XalanFileUtility::s_pathSep); } else { cout << endl << "Given base directory \"" << argv[1] << "\" does not exist" << endl; printArgOptions(); return false; } } // Get the rest of the arguments in any order. for (int i = 2; i < argc && fSuccess == true; ++i) { if(!strcmp("-out", argv[i])) { ++i; if(i < argc && argv[i][0] != '-') { assign(outdir, XalanDOMString(argv[i],theManager)); insert(outdir, 0, XalanDOMString("\\",theManager)); append(outdir, XalanDOMString("\\",theManager)); f.checkAndCreateDir(outdir); fSetOut = false; } else { printArgOptions(); fSuccess = false; } } else { printArgOptions(); fSuccess = false; } } // End of for-loop // Do we need to set the default output directory?? if (fSetOut) { const XalanDOMString::size_type ii = lastIndexOf(basedir, XalanFileUtility::s_pathSep[0]); substring(basedir,outdir, 0, ii+1 ); append(outdir, "Dom2Dom-RESULTS\\"); f.checkAndCreateDir(outdir); } // Add the path seperator to the end of the base directory append(basedir, XalanFileUtility::s_pathSep); return fSuccess; } FormatterListener* getXMLFormatter(bool shouldWriteXMLHeader, bool stripCData, bool escapeCData, PrintWriter& resultWriter, int indentAmount, const XalanDOMString& mimeEncoding, const StylesheetRoot* stylesheet) { FormatterListener* formatter = 0; XalanDOMString version; bool outputIndent = false; XalanDOMString mediatype; XalanDOMString doctypeSystem; XalanDOMString doctypePublic; XalanDOMString standalone; if (stylesheet != 0) { stylesheet->getOutputVersion(version); stylesheet->getOutputMediaType(mediatype); stylesheet->getOutputDoctypeSystem(doctypeSystem); stylesheet->getOutputDoctypePublic(doctypePublic); stylesheet->getOutputStandalone(standalone); } FormatterToXML* const fToXML = new FormatterToXML( resultWriter, version, outputIndent, indentAmount, mimeEncoding, mediatype, doctypeSystem, doctypePublic, true, // xmlDecl standalone); fToXML->setShouldWriteXMLHeader(shouldWriteXMLHeader); fToXML->setStripCData(stripCData); fToXML->setEscapeCData(escapeCData); formatter = fToXML; return formatter; } int runTests( int argc, char* argv[]) { MemoryManager& theManager = XalanMemMgrs::getDefaultXercesMemMgr(); XalanFileUtility f(theManager); XalanDOMString category(theManager); // Test all of base dir by default XalanDOMString baseDir(theManager); XalanDOMString outputRoot(theManager); if (getParams(argc, argv, f, baseDir, outputRoot) == true) { typedef XalanFileUtility::FileNameVectorType FileNameVectorType; // Get the list of Directories that are below perf FileNameVectorType dirs(theManager); f.getDirectoryNames(baseDir, dirs); // Generate Unique Run id. (Only used to name the result logfile.) XalanDOMString UniqRunid(theManager); f.generateUniqRunid(UniqRunid); // Defined basic constants for file manipulation const XalanDOMString resultFilePrefix("dom2dom", theManager); XalanDOMString resultsFile(outputRoot, theManager); resultsFile += resultFilePrefix; resultsFile += UniqRunid; resultsFile += XalanFileUtility::s_xmlSuffix; XalanXMLFileReporter logFile(theManager, resultsFile); logFile.logTestFileInit("Dom2Dom Testing: Treating all inputs and outputs as DOM's. "); try { XalanTransformer transformEngine(theManager); XercesDOMSupport domSupport(theManager); XercesParserLiaison parserLiaison(theManager, domSupport); // Specify the "test" directory for both input and output. const XalanDOMString xMan("dtod"); XalanDOMString theOutputDir(outputRoot, theManager); theOutputDir += xMan; f.checkAndCreateDir(theOutputDir); // Get the files found in the test directory FileNameVectorType files(theManager); f.getTestFileNames(baseDir, xMan,true, files); for(FileNameVectorType::size_type i = 0; i < files.size(); ++i) { // Output file name to result log and console. logFile.logTestCaseInit(files[i]); cout << files[i] << endl; // Set up the input/output files. XalanDOMString theXSLFile( baseDir, theManager); theXSLFile += xMan; theXSLFile += XalanFileUtility::s_pathSep; theXSLFile += files[i]; XalanDOMString theXMLFile(theManager); f.generateFileName(theXSLFile,"xml", theXMLFile); XalanDOMString theOutput (outputRoot, theManager); theOutput += xMan ; theOutput += XalanFileUtility::s_pathSep; theOutput += files[i]; XalanDOMString theOutputFile(theManager); f.generateFileName(theOutput, "out", theOutputFile); XALAN_USING_XERCES(DOMDocument) XALAN_USING_XERCES(DOMImplementation) // Use a Xerces Dom document to create the XSLTResultTarget. const XalanAutoPtr theDocument(DOMImplementation::getImplementation()->createDocument()); assert(theDocument.get() != 0); FormatterToXercesDOM theFormatter(theDocument.get(), 0); XSLTResultTarget domResultTarget(theFormatter); const XSLTInputSource xslInputSource(theXSLFile); const XSLTInputSource xmlInputSource(theXMLFile); const XalanCompiledStylesheet* compiledSS = 0; int theResult = transformEngine.compileStylesheet( xslInputSource, compiledSS); if (theResult != 0) { logFile.logTestCaseClose("Done","Fail"); cerr << "XalanError: \n" << transformEngine.getLastError(); } else { // Transform using compiled stylesheet. theResult = transformEngine.transform(xmlInputSource, compiledSS, domResultTarget); if(theResult != 0) { logFile.logTestCaseClose("Done","Fail"); cerr << "XalanError: \n" << transformEngine.getLastError(); } else { const XalanDOMString mimeEncoding("UTF-8", theManager); const XalanDOMString encoding("UTF-8", theManager); XalanFileOutputStream myOutput(theOutputFile, theManager); XalanOutputStreamPrintWriter myResultWriter(myOutput); FormatterListener* theFormatter = getXMLFormatter(true,true,true, myResultWriter,0, mimeEncoding, compiledSS->getStylesheetRoot()); XercesDOMFormatterWalker theTreeWalker(*theFormatter); theTreeWalker.traverse(theDocument.get()); delete theFormatter; logFile.logTestCaseClose("Done","Pass"); } } } logFile.logTestFileClose("Dom2Dom Testing: ", "Done"); logFile.close(); } catch(...) { cerr << "Exception caught!!!" << endl << endl; } } return 0; } int main( int argc, char* argv[]) { #if !defined(NDEBUG) && defined(_MSC_VER) _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); #endif int theResult = 0; try { XALAN_USING_XERCES(XMLPlatformUtils) // Call the static initializers for xerces and xalan, and create a transformer // XMLPlatformUtils::Initialize(); XalanTransformer::initialize(); theResult = runTests(argc, argv); XalanTransformer::terminate(); XMLPlatformUtils::Terminate(); XalanTransformer::ICUCleanUp(); } catch(...) { cerr << "Initialization failed!" << endl << endl; theResult = -1; } return theResult; } xalan-c-1.11/c/Tests/Dom2Dom/Dom2Dom.vcproj0000664000175000000640000001540711731656104017237 0ustar stevesamba xalan-c-1.11/c/Tests/Dom2Dom/Dom2Dom.dsp0000664000175000000640000002206411731656104016517 0ustar stevesamba# Microsoft Developer Studio Project File - Name="dom2dom" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=dom2dom - Win32 Debug !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 "Dom2Dom.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 "Dom2Dom.mak" CFG="dom2dom - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "dom2dom - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "dom2dom - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "dom2dom - Win32 Release with symbols" (based on "Win32 (x86) Console Application") !MESSAGE "dom2dom - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "dom2dom - Win64 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)" == "dom2dom - 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 "..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release\dom2dom" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /machine:I386 /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "dom2dom - 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 "..\..\Build\Win32\VC6\debug" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\debug\dom2dom" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W4 /GR /GX /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "dom2dom - Win32 Release with symbols" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "dom2dom___Win32_Release_with_symbols" # PROP BASE Intermediate_Dir "dom2dom___Win32_Release_with_symbols" # PROP BASE Ignore_Export_Lib 0 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "..\..\Build\Win32\VC6\Release.symbols" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release.symbols\dom2dom" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "..\harness\\" /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 ..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release\xerces-c_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\Build\Win32\VC6\Release/dom2dom.exe" # ADD LINK32 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:I386 /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "dom2dom - Win64 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 "..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\Release\dom2dom" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /machine:IX86 /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "dom2dom - Win64 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 "..\..\Build\Win64\VC6\debug" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\debug\dom2dom" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W4 /GR /GX /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "dom2dom - Win32 Release" # Name "dom2dom - Win32 Debug" # Name "dom2dom - Win32 Release with symbols" # Name "dom2dom - Win64 Release" # Name "dom2dom - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\dom2dom.cpp !IF "$(CFG)" == "dom2dom - Win32 Release" # ADD CPP /MD /Zi !ELSEIF "$(CFG)" == "dom2dom - Win32 Debug" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Debug\dom2dom" # ADD CPP /MDd /Zi !ELSEIF "$(CFG)" == "dom2dom - Win32 Release with symbols" # ADD BASE CPP /MD /Zi # ADD CPP /MD /Zi !ELSEIF "$(CFG)" == "dom2dom - Win64 Release" !ELSEIF "$(CFG)" == "dom2dom - Win64 Debug" !ENDIF # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Tests/Dom2Dom/dtod.xml0000664000175000000640000000003511731656104016214 0ustar stevesamba xalan-c-1.11/c/Tests/Performance/0002775000175000000640000000000012037700125015535 5ustar stevesambaxalan-c-1.11/c/Tests/Performance/report.xsl0000664000175000000640000000371511731656104017613 0ustar stevesamba Result Report
    Filename:
    Description:
    Time:

    Stylesheet Verify Result Time to compile Iterations Total transform time Min. parse input Avg. parse input Max. parse input Min. transform Avg. transform Max. transform
    xalan-c-1.11/c/Tests/Performance/Utils.cpp0000664000175000000640000000654411731656104017357 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Base header file. Must be first. #include #include #if !defined(XALAN_CLASSIC_IOSTREAMS) #include #endif #if defined(XALAN_WINDOWS) #include #define getcwd _getcwd #else #include #endif #include #include #include "Utils.hpp" XALAN_USING_XALAN(XalanMemMgrs) XALAN_USING_XALAN(CharVectorType) XALAN_USING_XALAN(TranscodeToLocalCodePage) XALAN_USING_XALAN(c_str) bool checkFileExists(const XalanDOMString& fileName) { CharVectorType theResult(XalanMemMgrs::getDefaultXercesMemMgr()); TranscodeToLocalCodePage(fileName, theResult, true); FILE* fileHandle = fopen(c_str(theResult), "r"); if (fileHandle != 0) { fclose(fileHandle); return true; } else { return false; } } XalanDOMString getWorkingDirectory() { char path[4096]; getcwd(path, 4096); return XalanDOMString(path); } const XalanDOMChar* getPathSep() { return XalanFileUtility::s_pathSep; } void fileToStream( const XalanDOMString& fileName, #if defined(XALAN_CLASSIC_IOSTREAMS) CharVectorType& resultStream) #else XALAN_STD_QUALIFIER istringstream& resultStream) #endif { CharVectorType resultFileName; fileName.transcode(resultFileName); #if !defined(XALAN_NO_STD_NAMESPACE) using std::ifstream; using std::ostringstream; #endif ifstream resultFile(c_str(resultFileName)); #if !defined(XALAN_CLASSIC_IOSTREAMS) ostringstream fileOutputStream; #endif char ch; while(resultFile.get(ch)) { #if defined(XALAN_CLASSIC_IOSTREAMS) resultStream.push_back(ch); #else fileOutputStream.put(ch); #endif } #if defined(XALAN_CLASSIC_IOSTREAMS) resultStream.push_back('\0'); #else resultStream.str(fileOutputStream.str()); #endif } void copyFile( const XalanDOMString& destFile, const XalanDOMString& sourceFile) { CharVectorType sourceFileName; sourceFile.transcode(sourceFileName); #if !defined(XALAN_NO_STD_NAMESPACE) using std::ifstream; using std::ofstream; #endif ifstream sourceFileStream(c_str(sourceFileName)); CharVectorType destFileName; destFile.transcode(destFileName); ofstream destFileStream(c_str(destFileName)); char ch; while (sourceFileStream.get(ch)) { destFileStream.put(ch); } sourceFileStream.close(); destFileStream.close(); } xalan-c-1.11/c/Tests/Performance/perf.dsp0000664000175000000640000001766711731656104017227 0ustar stevesamba# Microsoft Developer Studio Project File - Name="perf" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=perf - Win32 Debug !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 "perf.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 "perf.mak" CFG="perf - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "perf - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "perf - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "perf - Win32 Release with symbols" (based on "Win32 (x86) Console Application") !MESSAGE "perf - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "perf - Win64 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)" == "perf - 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 "..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release\Performance" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /Zm250 /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /machine:I386 /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "perf - 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 "..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Debug\Performance" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /Gf /Gy /I "..\..\..\..\xml-xerces\c\src\\" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /Zm125 /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" # SUBTRACT LINK32 /incremental:no !ELSEIF "$(CFG)" == "perf - Win32 Release with symbols" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "perf___Win32_Release_with_symbols" # PROP BASE Intermediate_Dir "perf___Win32_Release_with_symbols" # PROP BASE Ignore_Export_Lib 0 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "..\..\Build\Win32\VC6\Release.symbols" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release.symbols\Performance" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "..\harness\\" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT BASE CPP /YX # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /Zm250 /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 ..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release\xerces-c_1.lib /nologo /subsystem:console /pdb:none /machine:I386 /libpath:"..\Harness\Release\\" # ADD LINK32 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:I386 /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /fixed:no # SUBTRACT LINK32 /pdb:none !ELSEIF "$(CFG)" == "perf - Win64 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 "..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\Release\Performance" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /Zm250 /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /machine:IX86 /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "perf - Win64 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 "..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\Debug\Performance" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /Gf /Gy /I "..\..\..\..\xml-xerces\c\src\\" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # SUBTRACT CPP /X # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 # SUBTRACT LINK32 /incremental:no !ENDIF # Begin Target # Name "perf - Win32 Release" # Name "perf - Win32 Debug" # Name "perf - Win32 Release with symbols" # Name "perf - Win64 Release" # Name "perf - Win64 Debug" # Begin Source File SOURCE=.\perf.cpp # End Source File # End Target # End Project xalan-c-1.11/c/Tests/Performance/Parameters.cpp0000664000175000000640000004234411731656104020360 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Base header file. Must be first. #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include #include #include #include #include #include #include #include #include "Parameters.hpp" #include "Utils.hpp" XALAN_USING_XALAN(XalanTransformer) XALAN_USING_XALAN(XalanParsedSource) XALAN_USING_XALAN(XalanDocument) XALAN_USING_XALAN(XalanNode) XALAN_USING_XALAN(XalanNamedNodeMap) XALAN_USING_XALAN(XalanDOMString) XALAN_USING_XALAN(WideStringToLong) XALAN_USING_XALAN(compareIgnoreCaseASCII) XALAN_USING_XALAN(XalanMemMgrs) XALAN_USING_XALAN(MemoryManager) XALAN_USING_XALAN(XalanFileUtility) XALAN_USING_XALAN(XSLTInputSource) #if !defined(XALAN_NO_STD_NAMESPACE) using std::endl; #endif /** * Processes parameters for the test harness */ Parameters::Parameters( const XalanDOMString& runFileName, const XalanDOMString& testDirectory, const XalanDOMString& resultDirectory, const XalanDOMString& baselineDirectory, const XalanDOMString& reportDirectory, XalanFileUtility& fileUtility, Logger& logger) : m_name("default"), m_description(""), m_resultDirectory(resultDirectory), m_resultFile("results"), m_threshold("5"), m_baselineDirectory(baselineDirectory), m_baselineFile(""), m_defaultTestCase(), m_testDirectory(testDirectory), m_goldDirectory(""), m_reportDirectory(reportDirectory), m_transformer(), m_uniqId(), m_initialized(false) { fileUtility.generateUniqRunid(m_uniqId); if (parseConfigurationFile(runFileName, logger)) { if (m_testDirectory.empty()) { logger.error() << "No test directory specified on command line or in configuration file" << endl; } else { // configure directories // result directory if (m_resultDirectory.empty()) { m_resultDirectory = getWorkingDirectory(); } m_resultDirectory += getPathSep(); // gold directory if (m_goldDirectory.empty()) { m_goldDirectory = m_testDirectory; m_goldDirectory += XalanDOMString("-gold"); } // test directory m_testDirectory += getPathSep(); if (readTestCases(fileUtility, logger)) { m_initialized = true; } // baseline directory if (m_baselineDirectory.empty()) { m_baselineDirectory = m_resultDirectory; } else { m_baselineDirectory += getPathSep(); } if (m_baselineFile.empty()) { m_baselineFile = m_resultFile; m_baselineFile += XalanDOMString("_latest.xml"); } // report directory if (m_reportDirectory.empty()) { m_reportDirectory = getWorkingDirectory(); } m_reportDirectory += getPathSep(); } } } const TestCasesType& Parameters::getTestCases() { return m_testCases; } bool Parameters::parseConfigurationFile( const XalanDOMString& runFileName, Logger& logger) { // parse the configuration file and get default settings const XalanParsedSource* theParsedSource; XSLTInputSource confFile(runFileName, m_transformer.getMemoryManager()); if (m_transformer.parseSource(confFile, theParsedSource) < 0) { logger.error() << "Failed to parse: " << runFileName.c_str() << ", error: " << m_transformer.getLastError() << endl; return false; } XalanDocument* document = theParsedSource->getDocument(); XalanNode* runNode = document->getFirstChild(); while (runNode->getNodeType() != XalanNode::ELEMENT_NODE) { runNode = runNode->getNextSibling(); if (0 == runNode) { logger.error() << "Failed to parse: " << runFileName.c_str() << ", error: no found" << endl; return false; } } if(!(runNode->getNodeName() == XalanDOMString("testconfig"))) { logger.error() << "Invalid configuration file: " << runFileName.c_str() << ", error: Missing tag" << endl; return false; } const XalanNamedNodeMap* attributes = runNode->getAttributes(); if (attributes != 0) { XalanNode* nameAttribute = attributes->getNamedItem(XalanDOMString("name")); if (nameAttribute != 0 && !nameAttribute->getNodeValue().empty()) { m_name = nameAttribute->getNodeValue(); } else { logger.error() << "Invalid configuration file: " << runFileName.c_str() << ", error: Missing name attribute" << endl; return false; } } XalanNode* currentNode = runNode->getFirstChild(); while(currentNode != 0) { if (currentNode->getNodeType() != XalanNode::ELEMENT_NODE) { currentNode = currentNode->getNextSibling(); continue; } // description element if (currentNode->getNodeName() == XalanDOMString("description") && currentNode->getFirstChild() != 0 && currentNode->getFirstChild()->getNodeType() == XalanNode::TEXT_NODE) { m_description = currentNode->getFirstChild()->getNodeValue(); } // results element else if (currentNode->getNodeName() == XalanDOMString("results")) { // file-path const XalanNamedNodeMap* resultAttributes = currentNode->getAttributes(); XalanNode * attributeNode = resultAttributes->getNamedItem(XalanDOMString("file-path")); if (attributeNode != 0 && attributeNode->getNodeType() == XalanNode::ATTRIBUTE_NODE) { if (!m_resultDirectory.empty()) { m_resultDirectory += getPathSep(); } m_resultDirectory += attributeNode->getNodeValue(); } // result report file name XalanNode * resultsNode = currentNode->getFirstChild(); if (resultsNode != 0 && resultsNode->getNodeType() == XalanNode::TEXT_NODE && !resultsNode->getNodeValue().empty()) { m_resultFile = resultsNode->getNodeValue(); } } // baseline element else if (currentNode->getNodeName() == XalanDOMString("baseline")) { const XalanNamedNodeMap* attributeParams = currentNode->getAttributes(); XalanNode* attributeNode; // threshold attributeNode = attributeParams->getNamedItem(XalanDOMString("threshold")); if (attributeNode != 0 && !attributeNode->getNodeValue().empty()) { m_threshold = attributeNode->getNodeValue().c_str(); } // file-path attributeNode = attributeParams->getNamedItem(XalanDOMString("file-path")); if (attributeNode != 0) { if (!m_baselineDirectory.empty()) { m_baselineDirectory += getPathSep(); } m_baselineDirectory += attributeNode->getNodeValue(); } // baseline file XalanNode * baselineNode = currentNode->getFirstChild(); if (baselineNode != 0 && baselineNode->getNodeType() == XalanNode::TEXT_NODE && !baselineNode->getNodeValue().empty()) { m_baselineFile += baselineNode->getNodeValue(); } } // default parameters else if (currentNode->getNodeName() == XalanDOMString("default-parameter-set")) { const XalanNamedNodeMap* attributeParams = currentNode->getAttributes(); XalanNode* attributeNode; attributeNode = attributeParams->getNamedItem(XalanDOMString("input-mode")); if (attributeNode != 0 && attributeNode->getNodeType() == XalanNode::ATTRIBUTE_NODE && !attributeNode->getNodeValue().empty()) { m_defaultTestCase.inputMode = attributeNode->getNodeValue(); } // number of iterations attributeNode = attributeParams->getNamedItem(XalanDOMString("num-iterations")); if (attributeNode != 0 && attributeNode->getNodeType() == XalanNode::ATTRIBUTE_NODE && WideStringToLong(attributeNode->getNodeValue().c_str()) > 0) { m_defaultTestCase.numIterations = WideStringToLong(attributeNode->getNodeValue().c_str()); } // minimum time to execute attributeNode = attributeParams->getNamedItem(XalanDOMString("min-time-to-execute")); if (attributeNode != 0 && attributeNode->getNodeType() == XalanNode::ATTRIBUTE_NODE && WideStringToLong(attributeNode->getNodeValue().c_str()) > 0) { m_defaultTestCase.minTimeToExecute = WideStringToLong(attributeNode->getNodeValue().c_str()); } // verify the result attributeNode = attributeParams->getNamedItem(XalanDOMString("verify-result")); if (attributeNode != 0 && attributeNode->getNodeType() == XalanNode::ATTRIBUTE_NODE && compareIgnoreCaseASCII(attributeNode->getNodeValue().c_str(),XalanDOMString("yes").c_str()) == 0) { m_defaultTestCase.verifyResult = true; } // get processor specific parameters XalanNode * options = currentNode->getFirstChild(); while (options != 0) { if (options->getNodeType() != XalanNode::ELEMENT_NODE) { options = options->getNextSibling(); continue; } const XalanDOMString* processorName = 0; const XalanNamedNodeMap* optionAttributes = options->getAttributes(); XalanNode* processorOption = optionAttributes->getNamedItem(XalanDOMString("processor")); if (processorOption != 0 && processorOption->getNodeType() == XalanNode::ATTRIBUTE_NODE) { processorName = &(processorOption->getNodeValue()); } if (processorName != 0 && processorName->empty() == true) { options = options->getNextSibling(); continue; } if (options->getNodeName() == XalanDOMString("init-options")) { m_defaultTestCase.processorOptions[*processorName].initOptions = options->getFirstChild(); } else if (options->getNodeName() == XalanDOMString("compile-options")) { m_defaultTestCase.processorOptions[*processorName].compileOptions = options->getFirstChild(); } else if (options->getNodeName() == XalanDOMString("parse-options")) { m_defaultTestCase.processorOptions[*processorName].parseOptions = options->getFirstChild(); } else if (options->getNodeName() == XalanDOMString("result-options")) { m_defaultTestCase.processorOptions[*processorName].resultOptions = options->getFirstChild(); } else if (options->getNodeName() == XalanDOMString("transform-options")) { m_defaultTestCase.processorOptions[*processorName].transformOptions = options->getFirstChild(); } options = options->getNextSibling(); } } else if (currentNode->getNodeName() == XalanDOMString("testcases")) { // file-path const XalanNamedNodeMap* testCasesAttributes = currentNode->getAttributes(); XalanNode * attributeNode = testCasesAttributes->getNamedItem(XalanDOMString("file-path")); if (attributeNode != 0 && attributeNode->getNodeType() == XalanNode::ATTRIBUTE_NODE) { if (!m_testDirectory.empty()) { m_testDirectory += getPathSep(); } m_testDirectory += attributeNode->getNodeValue(); } // gold file-path attributeNode = testCasesAttributes->getNamedItem(XalanDOMString("gold-file-path")); if (attributeNode != 0 && attributeNode->getNodeType() == XalanNode::ATTRIBUTE_NODE) { m_goldDirectory = attributeNode->getNodeValue(); } } currentNode = currentNode->getNextSibling(); } return true; } bool Parameters::readTestCases( XalanFileUtility& fileUtility, Logger& logger) { if (!fileUtility.checkDir(m_testDirectory)) { logger.error() << "Invalid test directory: " << m_testDirectory.c_str() << endl; return false; } if (m_goldDirectory.empty()) { logger.message() << "No gold directory specified" << endl; if (!fileUtility.checkDir(m_goldDirectory)) { logger.warning() << "Invalid gold directory: " << m_goldDirectory.c_str() << endl; } } fileUtility.checkAndCreateDir(m_resultDirectory); typedef XalanFileUtility::FileNameVectorType FileNamesType; FileNamesType dirNames; fileUtility.getDirectoryNames(m_testDirectory, dirNames); FileNamesType::iterator dirIter = dirNames.begin(); // for each test directory while (dirIter != dirNames.end()) { FileNamesType xslTestFiles; fileUtility.getTestFileNames(m_testDirectory, *dirIter, true, xslTestFiles); FileNamesType::const_iterator xslIter = xslTestFiles.begin(); // for each stylesheet while (xslIter != xslTestFiles.end()) { // configure the stylesheet TestCase testCase = m_defaultTestCase; testCase.stylesheet = m_testDirectory; testCase.stylesheet += *dirIter; testCase.stylesheet += getPathSep(); testCase.stylesheet += *xslIter; bool status = true; // configure the input document fileUtility.generateFileName(testCase.stylesheet, "xml", testCase.inputDocument, &status); if (status != true) { logger.warning() << "No matching input file for: " << testCase.stylesheet.c_str() << endl; ++xslIter; continue; } // configure result directory testCase.resultDirectory = m_resultDirectory; testCase.resultDirectory += *dirIter; // configure result document XalanDOMString outFile = testCase.resultDirectory; outFile += getPathSep(); outFile += *xslIter; fileUtility.generateFileName(outFile, "out", testCase.resultDocument); // configure gold result outFile = m_goldDirectory; outFile += getPathSep(); outFile += *dirIter; outFile += getPathSep(); outFile += *xslIter; status = true; fileUtility.generateFileName(outFile, "out", testCase.goldResult, &status); if (true == testCase.verifyResult && !status) { logger.warning() << "Verification on, but no matching gold file: " << testCase.goldResult.c_str() << endl; } m_testCases.push_back(testCase); ++xslIter; } ++dirIter; } return true; } xalan-c-1.11/c/Tests/Performance/TestHarness.cpp0000664000175000000640000000361311731656104020514 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "TestHarness.hpp" #include #include XALAN_USING_XALAN(XalanMemMgrs) XALAN_USING_XALAN(CharVectorType) XALAN_USING_STD(ostringstream) TestCase::TestCase() : stylesheet(""), inputDocument(""), resultDocument(""), resultDirectory(""), goldResult(""), numIterations(1), minTimeToExecute(0), verifyResult(false), inputMode("file"), processorOptions(XalanMemMgrs::getDefaultXercesMemMgr()) { } TestCase::TestCase(const TestCase& theRhs) : stylesheet(theRhs.stylesheet), inputDocument(theRhs.inputDocument), resultDocument(theRhs.resultDocument), resultDirectory(theRhs.resultDirectory), goldResult(theRhs.goldResult), numIterations(theRhs.numIterations), minTimeToExecute(theRhs.minTimeToExecute), verifyResult(theRhs.verifyResult), inputMode(theRhs.inputMode), processorOptions(theRhs.processorOptions, XalanMemMgrs::getDefaultXercesMemMgr()) { } xalan-c-1.11/c/Tests/Performance/Utils.hpp0000664000175000000640000000400011731656104017345 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(UTILS_HEADER_GUARD_1357924680) #define UTILS_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include #include XALAN_USING_XALAN(XalanDOMChar) XALAN_USING_XALAN(XalanDOMString) XALAN_USING_XALAN(XalanFileUtility) /** * Checks if a file exists */ bool checkFileExists(const XalanDOMString& fileName); /** * Gets the current working directory */ XalanDOMString getWorkingDirectory(); /** * Gets the system path seperator */ const XalanDOMChar* getPathSep(); /** * Reads file into a stream */ void fileToStream( const XalanDOMString& fileName, #if defined(XALAN_CLASSIC_IOSTREAMS) XALAN_CPP_NAMESPACE_QUALIFIER CharVectorType& resultStream); #else XALAN_STD_QUALIFIER istringstream& resultStream); #endif /** * Copies a file */ void copyFile( const XalanDOMString& destFile, const XalanDOMString& sourceFile); #endif //UTILS_HEADER_GUARD_1357924680 xalan-c-1.11/c/Tests/Performance/XalanCProcessor.cpp0000664000175000000640000001421411731656104021316 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Base header file. Must be first. #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include #include #include "XalanCProcessor.hpp" XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XALAN(XalanTransformer) XALAN_USING_XALAN(XalanMemMgrs) typedef XalanCProcessor::CompiledStylesheetType CompiledStylesheetType; typedef XalanCProcessor::ParsedInputSourceType ParsedInputSourceType; typedef XalanCProcessor::ResultTargetType ResultTargetType; typedef XalanCProcessor::ParseOptionType ParseOptionType; typedef XalanCProcessor::ResultTarget ResultTarget; XalanCProcessor::XalanCProcessor() : m_name("Xalan"), m_resultOptionsMap(XalanMemMgrs::getDefaultXercesMemMgr()), m_transformer(0), m_nullResult(), m_xalanSourceTreeResult(), m_xercesDOMResult(), m_fileResult(), m_streamResult() { } XalanCProcessor::~XalanCProcessor() { } void XalanCProcessor::init() { m_transformer = new XalanTransformer(); m_resultOptionsMap[XalanDOMString("")] = &m_fileResult; m_resultOptionsMap[XalanDOMString("file")] = &m_fileResult; m_resultOptionsMap[XalanDOMString("xst")] = &m_xalanSourceTreeResult; m_resultOptionsMap[XalanDOMString("xerces-dom")] = &m_xercesDOMResult; m_resultOptionsMap[XalanDOMString("null")] = &m_nullResult; m_resultOptionsMap[XalanDOMString("stream")] = &m_streamResult; } void XalanCProcessor::terminate() { delete m_transformer; } ParseOptionType XalanCProcessor::getParseOption(const XalanNode* option) { if (option != 0 && option->getNodeType() == XalanNode::TEXT_NODE) { if (option->getNodeValue() == XalanDOMString("") || option->getNodeValue() == XalanDOMString("xst")) { return eXalanSourceTree; } else if (option->getNodeValue() == XalanDOMString("xerces-dom")) { return eXercesDOM; } else { return eInvalid; } } else { return eInvalid; } } ResultTarget* XalanCProcessor::getResultOption( const XalanDOMString& fileName, const XalanNode* option) { if (option != 0 && option->getNodeType() == XalanNode::TEXT_NODE && m_resultOptionsMap.find(option->getNodeValue()) != m_resultOptionsMap.end()) { return m_resultOptionsMap[option->getNodeValue()]->clone(fileName); } else { return m_resultOptionsMap[XalanDOMString("")]->clone(fileName); } } CompiledStylesheetType XalanCProcessor::compileStylesheet( const XalanDOMString& fileName, const XalanNode* /* compileOptions */) { CompiledStylesheetType theCompiledStylesheet= 0; m_transformer->compileStylesheet(fileName, theCompiledStylesheet); return theCompiledStylesheet; } CompiledStylesheetType XalanCProcessor::compileStylesheet( StreamType& stream, const XalanNode* /* compileOptions */) { CompiledStylesheetType theCompiledStylesheet = 0; m_transformer->compileStylesheet(stream, theCompiledStylesheet); return theCompiledStylesheet; } void XalanCProcessor::releaseStylesheet(CompiledStylesheetType stylesheet) { m_transformer->destroyStylesheet(stylesheet); } ParsedInputSourceType XalanCProcessor::parseInputSource( const XalanDOMString& fileName, const XalanNode* parseOptions ) { ParsedInputSourceType theParsedSource = 0; XSLTInputSource inpFileName(fileName, m_transformer->getMemoryManager()); switch(getParseOption(parseOptions)) { case eXercesDOM: { m_transformer->parseSource(inpFileName, theParsedSource, true); break; } case eXalanSourceTree: default: { m_transformer->parseSource(inpFileName, theParsedSource); break; } } return theParsedSource; } ParsedInputSourceType XalanCProcessor::parseInputSource( StreamType& stream, const XalanNode* parseOptions) { ParsedInputSourceType theParsedSource = 0; switch(getParseOption(parseOptions)) { case eXercesDOM: m_transformer->parseSource(stream, theParsedSource, true); break; case eXalanSourceTree: default: m_transformer->parseSource(stream, theParsedSource); break; } return theParsedSource; } void XalanCProcessor::releaseInputSource(ParsedInputSourceType inputSource) { m_transformer->destroyParsedSource(inputSource); } ResultTargetType XalanCProcessor::createResultTarget( const XalanDOMString& resultFileName, const XalanNode* resultOptions) { return getResultOption(resultFileName, resultOptions); } void XalanCProcessor::releaseResultTarget(ResultTargetType resultTarget) { delete resultTarget; } void XalanCProcessor::transform( const CompiledStylesheetType& compiledStylesheet, const ParsedInputSourceType& parsedInputSourceType, const ResultTargetType& resultTargetType, const XalanNode* /* transformOptions */) { m_transformer->transform(*parsedInputSourceType, compiledStylesheet, resultTargetType->resultTarget); } xalan-c-1.11/c/Tests/Performance/comparereport.xsl0000664000175000000640000001724311731656104021163 0ustar stevesamba Comparison Result Report
    Filename:
    Description:
    Time:

    Stylesheet Verify Result Time to compile Iterations Total transform time Min. parse input Avg. parse input Max. parse input Min. transform Avg. transform Max. transform
    Baseline Difference: -- -- Same Diff xalan-c-1.11/c/Tests/Performance/Parameters.hpp0000664000175000000640000000635611731656104020370 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANCPARAMETERS_HEADER_GUARD_1357924680) #define XALANCPARAMETERS_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include #include #include #include "TestHarness.hpp" #include "Logger.hpp" XALAN_USING_XALAN(XalanDOMChar) XALAN_USING_XALAN(XalanDOMString) XALAN_USING_XALAN(XalanTransformer) XALAN_USING_XALAN(XalanFileUtility) class Parameters { public: Parameters( const XalanDOMString& runFileName, const XalanDOMString& testDirectory, const XalanDOMString& resultDirectory, const XalanDOMString& baselineDirectory, const XalanDOMString& reportDirectory, XalanFileUtility& fileUtility, Logger& log); /* const XalanDOMString& getRunName() { return m_name;} */ bool initialized() {return m_initialized;} XalanDOMString& getName() {return m_name;} XalanDOMString& getUniqId() {return m_uniqId;} XalanDOMString& getDescription() {return m_description;} XalanDOMString& getResultDirectory() {return m_resultDirectory;} XalanDOMString& getResultFile() {return m_resultFile;} XalanDOMString& getThreshold() { return m_threshold;} XalanDOMString& getBaselineDirectory() {return m_baselineDirectory;} XalanDOMString& getBaselineFile() {return m_baselineFile;} XalanDOMString& getReportDirectory() {return m_reportDirectory;} const TestCasesType& getTestCases(); protected: bool parseConfigurationFile( const XalanDOMString& runFileName, Logger& logger); bool readTestCases( XalanFileUtility& fileUtility, Logger & logger); XalanDOMString m_name; XalanDOMString m_description; XalanDOMString m_resultDirectory; XalanDOMString m_resultFile; XalanDOMString m_threshold; XalanDOMString m_baselineDirectory; XalanDOMString m_baselineFile; TestCase m_defaultTestCase; XalanDOMString m_testDirectory; XalanDOMString m_goldDirectory; XalanDOMString m_reportDirectory; TestCasesType m_testCases; XalanTransformer m_transformer; XalanDOMString m_uniqId; bool m_initialized; }; #endif // XALANCPARAMETERS_HEADER_GUARD_1357924680 xalan-c-1.11/c/Tests/Performance/TestHarness.hpp0000664000175000000640000003223111731656104020517 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(TESTHARNESS_HEADER_GUARD_1357924680) #define TESTHARNESS_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include #include #include #include #include #include #include #include #include "Utils.hpp" #include "Logger.hpp" #include "Timer.hpp" XALAN_USING_XALAN(XalanMemMgrs) XALAN_USING_XALAN(XalanVector) XALAN_USING_XALAN(XalanMap) XALAN_USING_XALAN(XalanNode) XALAN_USING_XALAN(XalanDOMString) XALAN_USING_XALAN(XalanFileUtility) XALAN_USING_XALAN(XalanXMLFileReporter) /** * Processor interface options */ struct ProcessorOptions { XalanNode* initOptions; XalanNode* compileOptions; XalanNode* parseOptions; XalanNode* resultOptions; XalanNode* transformOptions; ProcessorOptions() : initOptions(0), compileOptions(0), parseOptions(0), resultOptions(0), transformOptions(0) { } }; /** * Test case */ class TestCase { public: TestCase(); TestCase(const TestCase& theRhs); XalanDOMString stylesheet; XalanDOMString inputDocument; XalanDOMString resultDocument; XalanDOMString resultDirectory; XalanDOMString goldResult; long numIterations; long minTimeToExecute; bool verifyResult; XalanDOMString inputMode; typedef XalanMap ProcessorOptionsMap; ProcessorOptionsMap processorOptions; }; typedef TestCase TestCaseType; typedef XalanVector TestCasesType; /** * Test harness */ template class TestHarness { public: typedef typename Processor::CompiledStylesheetType CompiledStylesheetType; typedef typename Processor::ParsedInputSourceType ParsedInputSourceType; typedef typename Processor::ResultTargetType ResultTargetType; typedef typename XalanXMLFileReporter::Hashtable TestAttributesType; TestHarness(); void init( XalanFileUtility& fileUtility, XalanXMLFileReporter& reporter, Logger& logger); void terminate(); void executeTestCase(const TestCaseType& testCase); void executeTestCases(const TestCasesType& testCases); protected: Processor m_processor; XalanFileUtility* m_fileUtility; XalanXMLFileReporter* m_reporter; Logger* m_logger; }; template void TestHarness::executeTestCases(const TestCasesType& testCases) { TestCasesType::const_iterator testCaseIter = testCases.begin(); while (testCaseIter != testCases.end()) { executeTestCase(*testCaseIter); ++testCaseIter; } } template void TestHarness::executeTestCase(const TestCaseType& testCase) { TestAttributesType testAttributes(XalanMemMgrs::getDefaultXercesMemMgr()); testAttributes.insert(TestAttributesType::value_type(XalanDOMString("stylesheet"), testCase.stylesheet)); testAttributes.insert(TestAttributesType::value_type(XalanDOMString("input-document"), testCase.inputDocument)); try { CompiledStylesheetType compiledStylesheet = 0; ParsedInputSourceType parsedInputSource = 0; static const ProcessorOptions defaultProcessor; TestCase::ProcessorOptionsMap::const_iterator iter = testCase.processorOptions.find(m_processor.getName()); const ProcessorOptions& processor = iter != testCase.processorOptions.end() ? iter->second : defaultProcessor; m_fileUtility->checkAndCreateDir(testCase.resultDirectory); Timer timeCompile; if (testCase.inputMode == XalanDOMString("stream")) { #if defined(XALAN_CLASSIC_IOSTREAMS) XALAN_USING_XALAN(CharVectorType) XALAN_USING_XALAN(c_str) XALAN_USING_STD(istringstream) CharVectorType buffer; fileToStream(testCase.stylesheet, buffer); istrstream compilerStream(c_str(buffer)); #else XALAN_USING_STD(istringstream) istringstream compilerStream; fileToStream(testCase.stylesheet, compilerStream); #endif timeCompile.start(); compiledStylesheet = m_processor.compileStylesheet( compilerStream, processor.compileOptions); timeCompile.stop(); } else if (testCase.inputMode == XalanDOMString("file")) { timeCompile.start(); compiledStylesheet = m_processor.compileStylesheet( testCase.stylesheet, processor.compileOptions); timeCompile.stop(); } else { XALAN_USING_STD(endl) m_logger->error() << "Mode: " << testCase.inputMode.c_str() << " is invalid for stylesheet: " << testCase.stylesheet << endl; } m_reporter->addMetricToAttrs("compile-xsl", timeCompile.getElapsedTime(), testAttributes); long numIterations = 0; long totalParseInputTime = 0; long minParseInputTime = LONG_MAX; long maxParseInputTime = 0 ; long totalTransformTime = 0; long minTransformTime = LONG_MAX; long maxTransformTime = 0; Timer timeTotalRun; timeTotalRun.start(); while (compiledStylesheet && numIterations < testCase.numIterations && timeTotalRun.getElapsedTime() < testCase.minTimeToExecute) { Timer timeInput; if (testCase.inputMode == XalanDOMString("stream") && !parsedInputSource) { #if defined(XALAN_CLASSIC_IOSTREAMS) XALAN_USING_XALAN(CharVectorType) XALAN_USING_XALAN(c_str) XALAN_USING_STD(istringstream) CharVectorType buffer; fileToStream(testCase.inputDocument, buffer); istrstream inputStream(c_str(buffer)); #else XALAN_USING_STD(istringstream) istringstream inputStream; fileToStream(testCase.inputDocument, inputStream); #endif timeInput.start(); parsedInputSource = m_processor.parseInputSource( inputStream, processor.parseOptions); timeInput.stop(); } else if (testCase.inputMode == XalanDOMString("file")) { timeInput.start(); parsedInputSource = m_processor.parseInputSource( testCase.inputDocument, processor.parseOptions); timeInput.stop(); } else { XALAN_USING_STD(endl) m_logger->error() << "Mode: " << testCase.inputMode.c_str() << " is inavlid for input document: " << testCase.inputDocument << endl; break; } totalParseInputTime += timeInput.getElapsedTime(); minParseInputTime = timeInput.getElapsedTime() < minParseInputTime ? timeInput.getElapsedTime() : minParseInputTime; maxParseInputTime = timeInput.getElapsedTime() > maxParseInputTime ? timeInput.getElapsedTime() : maxParseInputTime; ResultTargetType resultTarget = m_processor.createResultTarget( testCase.resultDocument, processor.resultOptions); Timer timeTransform; timeTransform.start(); m_processor.transform( compiledStylesheet, parsedInputSource, resultTarget); timeTransform.stop(); totalTransformTime += timeTransform.getElapsedTime(); minTransformTime = timeTransform.getElapsedTime() < minTransformTime ? timeTransform.getElapsedTime() : minTransformTime; maxTransformTime = timeTransform.getElapsedTime() > maxTransformTime ? timeTransform.getElapsedTime() : maxTransformTime; ++numIterations; m_processor.releaseResultTarget(resultTarget); } timeTotalRun.stop(); if (compiledStylesheet) { m_processor.releaseStylesheet(compiledStylesheet); } if (parsedInputSource) { m_processor.releaseInputSource(parsedInputSource); } if (true == testCase.verifyResult) { testAttributes.insert(TestAttributesType::value_type(XalanDOMString("verify"), XalanDOMString("yes"))); if (checkFileExists(testCase.resultDocument)) { if (checkFileExists(testCase.goldResult)) { if (m_fileUtility->compareSerializedResults( testCase.resultDocument, testCase.goldResult)) { testAttributes.insert(TestAttributesType::value_type(XalanDOMString("result"), XalanDOMString("pass"))); } else { testAttributes.insert(TestAttributesType::value_type(XalanDOMString("result"), XalanDOMString("fail"))); } } else { testAttributes.insert(TestAttributesType::value_type(XalanDOMString("result"), XalanDOMString("incomplete"))); } } else { testAttributes.insert(TestAttributesType::value_type(XalanDOMString("result"), XalanDOMString("incomplete"))); } } else { testAttributes.insert(TestAttributesType::value_type(XalanDOMString("verify"), XalanDOMString("no"))); } m_reporter->addMetricToAttrs("num-iterations", numIterations, testAttributes); m_reporter->addMetricToAttrs("elapsed-time", timeTotalRun.getElapsedTime(), testAttributes); m_reporter->addMetricToAttrs("min-parse-input", minParseInputTime, testAttributes); m_reporter->addMetricToAttrs("max-parse-input", maxParseInputTime, testAttributes); m_reporter->addMetricToAttrs("avg-parse-input", totalParseInputTime / numIterations, testAttributes); m_reporter->addMetricToAttrs("min-transform", minTransformTime, testAttributes); m_reporter->addMetricToAttrs("max-transform", maxTransformTime, testAttributes); m_reporter->addMetricToAttrs("avg-transform", totalTransformTime / numIterations, testAttributes); testAttributes.insert(TestAttributesType::value_type(XalanDOMString("complete"), XalanDOMString("yes"))); } catch (const XalanDOMString& exception) { XALAN_USING_STD(endl) m_logger->error() << "Error encountered during transformation: " << testCase.stylesheet.c_str() << ", error: " << exception.c_str() << endl; testAttributes.insert(TestAttributesType::value_type(XalanDOMString("complete"), XalanDOMString("no"))); } catch (int) { testAttributes.insert(TestAttributesType::value_type(XalanDOMString("complete"), XalanDOMString("no"))); } m_reporter->logElementWAttrs(1, "testcase", testAttributes, ""); } template TestHarness::TestHarness() { } template void TestHarness::init( XalanFileUtility& fileUtility, XalanXMLFileReporter& reporter, Logger& logger) { m_processor.init(); m_fileUtility = &fileUtility; m_reporter = &reporter; m_logger = &logger; } template void TestHarness::terminate() { m_processor.terminate(); } #endif // TESTHARNESS_HEADER_GUARD_1357924680 xalan-c-1.11/c/Tests/Performance/XalanCProcessor.hpp0000664000175000000640000002156611731656104021333 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALANCRPROCESSOR_HEADER_GUARD_1357924680) #define XALANCRPROCESSOR_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include #include #include #include #include #include #include #include #include #include XALAN_USING_XERCES(DOMDocument); XALAN_CPP_NAMESPACE_USE /** * Implementation of the test interface for XalanC 1.x * */ class XalanCProcessor { public: XalanDOMString m_name; typedef const XalanCompiledStylesheet* CompiledStylesheetType; typedef const XalanParsedSource* ParsedInputSourceType; struct ResultTarget { virtual ~ ResultTarget(){} XSLTResultTarget resultTarget; virtual ResultTarget* clone(const XalanDOMString&) = 0; virtual void reset() = 0; }; typedef ResultTarget* ResultTargetType; typedef XSLTInputSource::StreamType StreamType; XalanCProcessor(); ~XalanCProcessor(); /** * Initializes the processor interface. * Assumes static processor initialization functions are already completed. */ void init(); /** * Terminates the processor interface. */ void terminate(); /** * Returns the name of the processor implementation. * @returns name of the processor */ XalanDOMString& getName() { return m_name;} /** * Compiles the specified stylesheet. * Xalan interface does not support any options. * @param fileName stylesheet to compile * @param compileOptions (none for this interface) * @returns compiled stylesheet */ CompiledStylesheetType compileStylesheet( const XalanDOMString& fileName, const XalanNode* compileOptions = 0); /** * Compiles the specified stylesheet. * Xalan interface does not support any options. * @param stream stylesheet to compile * @param compileOptions (none for this interface) * @returns compiled stylesheet */ CompiledStylesheetType compileStylesheet( StreamType& stream, const XalanNode* compileOptions = 0); /** * Release stylesheet object * @param stylesheet object to release */ void releaseStylesheet(CompiledStylesheetType stylesheet); /** * Parses an input document. * Parse options, a text node containing:

      *
    • xst: parse to XalanSourceTree (default) *
    • xerces-dom: parse to XercesDOM
    * @param fileName input document to parse. * @param parseOptions options to the parser. * @returns parsed document */ ParsedInputSourceType parseInputSource( const XalanDOMString& fileName, const XalanNode* parseOptions = 0); /** * Parses an input document. * Parse options, a text node containing:
      *
    • xst: parse to XalanSourceTree (default) *
    • xerces-dom: parse to XercesDOM
    * @param stream input document to parse. * @param parseOptions options to the parser. * @returns parsed document */ ParsedInputSourceType parseInputSource( StreamType& stream, const XalanNode* parseOptions = 0); /** * Releases and parsed input source * @param inputSource source to release */ void releaseInputSource(ParsedInputSourceType inputSource); /** * Creates a result target. * Result target options, a text node containing:
      *
    • file: result to a file (default)
    • *
    • xst: result to a XalanSourceTree
    • *
    • xerces-dom: result to XercesDOM
    • *
    • null: generate no result
    • *
    • stream: result to a stream (string)
    * @param resultFileName file to write result to, if any * @param resultOptions options to create result * @return result target */ ResultTargetType createResultTarget( const XalanDOMString& resultFileName, const XalanNode* resultOptions = 0); /** * Releases result target * @param resultTarget target to release */ void releaseResultTarget(ResultTargetType resultTarget); /** * Executes a transform * @param compileStyle stylesheet * @param parsedInputSourceType parsed document * @param resultTargetType result target * @param transformOptions (none for this interface) */ void transform( const CompiledStylesheetType& compiledStylesheet, const ParsedInputSourceType& parsedInputSourceType, const ResultTargetType& resultTargetType, const XalanNode* transformOptions = 0); typedef enum {eInvalid, eXalanSourceTree, eXercesDOM} ParseOptionType; protected: ParseOptionType getParseOption(const XalanNode* option); typedef XalanMap ResultsMapType; ResultTarget* getResultOption( const XalanDOMString& fileName, const XalanNode* option); ResultsMapType m_resultOptionsMap; XalanTransformer *m_transformer; struct NullResult : public ResultTarget { NullResult() { resultTarget.setFormatterListener(&formatterToNull); } ResultTarget * clone(const XalanDOMString&) { return new NullResult;} void reset() {} FormatterToNull formatterToNull; }; NullResult m_nullResult; struct XalanSourceTreeResult : public ResultTarget { XalanSourceTreeResult() : document(XalanMemMgrs::getDefaultXercesMemMgr()) { formatterToSourceTree.setDocument(&document); resultTarget.setFormatterListener(&formatterToSourceTree); } ResultTarget * clone(const XalanDOMString&) { return new XalanSourceTreeResult;} void reset() { formatterToSourceTree.resetDocument();} FormatterToSourceTree formatterToSourceTree; XalanSourceTreeDocument document; }; XalanSourceTreeResult m_xalanSourceTreeResult; struct XercesDOMResult : public ResultTarget { XercesDOMResult() : parserLiaison(), document(parserLiaison.createDOMFactory()), formatterToXercesDOM(document, 0) { } ResultTarget * clone(const XalanDOMString&) { return new XercesDOMResult;} void reset() { formatterToXercesDOM.resetDocument();} XercesParserLiaison parserLiaison; DOMDocument* document; FormatterToXercesDOM formatterToXercesDOM; }; XercesDOMResult m_xercesDOMResult; struct FileResult : public ResultTarget { FileResult(const XalanDOMString & fileName = XalanDOMString("")) { resultTarget.setFileName(fileName); } ResultTarget * clone(const XalanDOMString& fileName) { return new FileResult(fileName);} void reset() {} }; FileResult m_fileResult; struct StreamResult : public XalanCProcessor::ResultTarget { StreamResult() { resultTarget.setByteStream(&stringstream); } ResultTarget * clone(const XalanDOMString&) { return new StreamResult;} void reset() { stringstream.flush();} #if defined(XALAN_CLASSIC_IOSTREAMS) ostrstream stringstream; #else XALAN_STD_QUALIFIER ostringstream stringstream; #endif }; StreamResult m_streamResult; }; #endif // XALANCRPROCESSOR_HEADER_GUARD_1357924680 xalan-c-1.11/c/Tests/Performance/perf.vcproj0000664000175000000640000001655211731656104017734 0ustar stevesamba xalan-c-1.11/c/Tests/Performance/Logger.cpp0000664000175000000640000000362111731656104017467 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Base header file. Must be first. #include #include "Logger.hpp" #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #include #else #include #include #endif XALAN_USING_XALAN(XalanDOMString) Logger::Logger(StreamType& stream) : m_stream(stream) { logText[eMessage] = "Message"; logText[eWarning] = "Warning"; logText[eError] = "Error"; } Logger::StreamType& Logger::message() { return log(eMessage); } Logger::StreamType& Logger::warning() { return log(eWarning); } Logger::StreamType& Logger::error() { return log(eError); } Logger::StreamType& Logger::log(eLogType logType) { #if defined(XALAN_STRICT_ANSI_HEADERS) using std::ctime; using std::time; using std::time_t; #endif time_t theTime; time(&theTime); // Not thread safe char* const timeStr = ctime(&theTime); timeStr[24] = '\0'; m_stream << timeStr << XALAN_STD_QUALIFIER setw(10) << logText[logType] << ": "; return m_stream; } xalan-c-1.11/c/Tests/Performance/config.xml0000664000175000000640000000340211731656104017530 0ustar stevesamba This is a sample test configuration file ResultReport Baseline.xml xerces-dom xerces-dom xalan-c-1.11/c/Tests/Performance/Logger.hpp0000664000175000000640000000323111731656104017471 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(LOGGER_HEADER_GUARD_1357924680) #define LOGGER_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include //#include #endif #include class Logger { public: #if defined(XALAN_NO_STD_NAMESPACE) typedef ostream StreamType; #else typedef std::ostream StreamType; #endif Logger(StreamType& stream); enum eLogType { eMessage = 0, eWarning = 1, eError = 2 }; StreamType& message(); StreamType& warning(); StreamType& error(); StreamType& log(eLogType logType); protected: const char* logText[3]; StreamType& m_stream; }; #endif //LOGGER_HEADER_GUARD_1357924680 xalan-c-1.11/c/Tests/Performance/Timer.hpp0000664000175000000640000000306211731656104017334 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(TIMER_HEADER_GUARD_1357924680) #define TIMER_HEADER_GUARD_1357924680 // Base header file. Must be first. #include #include class Timer { public: typedef XALAN_STD_QUALIFIER clock_t TimerType; Timer() : m_startTime(0), m_totalTime(0) { } void start() { m_startTime = XALAN_STD_QUALIFIER clock(); } TimerType stop() { TimerType stopTime = XALAN_STD_QUALIFIER clock(); m_totalTime = stopTime - m_startTime; return m_totalTime; } TimerType getElapsedTime() { return m_totalTime; } private: TimerType m_startTime; TimerType m_totalTime; }; #endif //TIMER_HEADER_GUARD_1357924680 xalan-c-1.11/c/Tests/Performance/perf.cpp0000664000175000000640000002176511731656104017215 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Base header file. Must be first. #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #if defined(XALAN_STRICT_ANSI_HEADERS) using std::strcmp; #endif #include #include #include #include #include #include "Parameters.hpp" #include "TestHarness.hpp" #include "XalanCProcessor.hpp" #include "Logger.hpp" #include "Utils.hpp" XALAN_USING_STD(cout); XALAN_USING_STD(cerr); XALAN_USING_STD(endl); XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XALAN(XalanTransformer) XALAN_USING_XALAN(XalanDOMString) XALAN_USING_XALAN(XalanXMLFileReporter) XALAN_USING_XALAN(XalanFileUtility) void usage() { cerr << "Usage: perf" << " [options]" << " -test [test directory ]" << " -result [result directory ]" << " -baseline [baseline directory]" << " -report [report directory ]" << " configfile" << endl << "Options:" << endl << " -? Display this message" << endl; } void generateReports( Parameters& params, const XalanDOMString& reportFile, Logger& logger) { XalanTransformer transformer; // report XSL file XalanDOMString reportFileXSL = params.getReportDirectory(); reportFileXSL += XalanDOMString("report.xsl"); // html result XalanDOMString htmlReport = params.getResultDirectory(); htmlReport += params.getResultFile(); htmlReport += params.getUniqId(); htmlReport += XalanDOMString(".html"); if (checkFileExists(reportFileXSL)) { if (transformer.transform(reportFile, reportFileXSL, htmlReport) < 0) { logger.warning() << "Failed to generate HTML report: " << htmlReport.c_str() << ", error: " << transformer.getLastError() << endl; } else { logger.message() << "Generated HTML report: " << htmlReport.c_str() << endl; } } else { logger.warning() << "Could not generate HTML report, stylesheet: " << reportFileXSL.c_str() << ", file not found" << endl; } XalanDOMString baselineFile = params.getBaselineDirectory(); baselineFile += params.getBaselineFile(); if (checkFileExists(baselineFile)) { // comparison report XSL file XalanDOMString compareReportFileXSL = params.getReportDirectory(); compareReportFileXSL += XalanDOMString("comparereport.xsl"); // html result XalanDOMString htmlCompareReport = params.getResultDirectory(); htmlCompareReport += XalanDOMString("compare"); htmlCompareReport += params.getResultFile(); htmlCompareReport += params.getUniqId(); htmlCompareReport += XalanDOMString(".html"); XalanDOMString baselineFileStr = XalanDOMString("'"); baselineFileStr += baselineFile; baselineFileStr += XalanDOMString("'"); transformer.setStylesheetParam(XalanDOMString("threshold"),params.getThreshold()); transformer.setStylesheetParam(XalanDOMString("baseline"), baselineFileStr); if (checkFileExists(compareReportFileXSL)) { if (transformer.transform(reportFile, compareReportFileXSL, htmlCompareReport) < 0) { logger.warning() << "Failed to generate HTML report: " << htmlCompareReport.c_str() << ", error: " << transformer.getLastError() << endl; } else { logger.message() << "Generated HTML report: " << htmlCompareReport.c_str() << endl; } } else { logger.warning() << "Could not generate HTML report, stylesheet: " << compareReportFileXSL.c_str() << ", file not found" << endl; } } else { logger.warning() << "No baseline file found: " << baselineFile.c_str() << endl; } } int main(int argc, char* argv[]) { XMLPlatformUtils::Initialize(); XalanTransformer::initialize(); Logger logger(cerr); if (argc < 2 || XalanDOMString("-?").compare(XalanDOMString(argv[1])) == 0) { usage(); } else { XalanDOMString testDirectory; XalanDOMString resultDirectory; XalanDOMString baselineDirectory; XalanDOMString reportDirectory; XalanDOMString runFileName; // process command line parameters int i = 1; while (i < argc) { if (strcmp(argv[i],"-test") == 0) { ++i; if (i >= argc) { logger.error() << "Test directory missing" << endl; usage(); exit(1); } testDirectory.assign(argv[i]); } else if (strcmp(argv[i],"-result") == 0) { ++i; if (i >= argc) { logger.error() << "Result directory missing" << endl; usage(); exit(1); } resultDirectory.assign(argv[i]); } else if (strcmp(argv[i],"-baseline") == 0) { ++i; if (i >= argc) { logger.error() << "Baseline directory missing" << endl; usage(); exit(1); } baselineDirectory.assign(argv[i]); } else if (strcmp(argv[i],"-report") == 0) { ++i; if (i >= argc) { logger.error() << "Report directory missing" << endl; usage(); exit(1); } reportDirectory.assign(argv[i]); } else { break; } ++i; } if (i >= argc) { logger.error() << "Run file not specified" << endl; usage(); exit(1); } else { runFileName.assign(argv[i]); } logger.message() << "Loading configuration file: " << runFileName.c_str() << endl; XalanFileUtility fileUtility(XalanMemMgrs::getDefaultXercesMemMgr()); // setup testing parameters Parameters params( runFileName, testDirectory, resultDirectory, baselineDirectory, reportDirectory, fileUtility, logger); if (!params.initialized()) { exit(1); } // create report file XalanDOMString reportFile = params.getResultDirectory(); reportFile += params.getResultFile(); reportFile += params.getUniqId(); reportFile += XalanDOMString(".xml"); XalanXMLFileReporter reporter(XalanMemMgrs::getDefaultXercesMemMgr(), reportFile); reporter.logTestFileInit(params.getDescription()); // run test harness typedef TestHarness XalanCTestHarness; XalanCTestHarness testHarness; testHarness.init(fileUtility, reporter, logger); testHarness.executeTestCases(params.getTestCases()); reporter.logTestFileClose("",""); reporter.close(); // generate reports generateReports(params, reportFile, logger); // create latest copy for baseline testing XalanDOMString latestReportFile = params.getResultDirectory(); latestReportFile += params.getResultFile(); latestReportFile += XalanDOMString("_latest.xml"); copyFile(latestReportFile, reportFile); } XalanTransformer::terminate(); XMLPlatformUtils::Terminate(); return 0; } xalan-c-1.11/c/Tests/Transformer/0002775000175000000640000000000012037700125015576 5ustar stevesambaxalan-c-1.11/c/Tests/Transformer/Transformer.vcproj0000664000175000000640000001551111731656104021335 0ustar stevesamba xalan-c-1.11/c/Tests/Transformer/TestXalanTransformer.cpp0000664000175000000640000002036511731656104022443 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #define TEST_XALAN_CPP // This is here for memory leak testing. #if defined(_DEBUG) #include #endif #include #if defined(TEST_XALAN_CPP) #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #include #else #include #include #endif XALAN_USING_STD(cerr) XALAN_USING_STD(cout) XALAN_USING_STD(endl) XALAN_USING_STD(ostrstream) #else #include #include #endif static CallbackSizeType xalan_output_handler(const char *data, CallbackSizeType length, void *handle) { FILE *fp = (FILE*)handle; return fwrite( data, sizeof( char ), length, fp ); } static void xalan_flush_handler(void *handle) { FILE *fp = (FILE*)handle; fflush(fp); } int runTests() { const char* const theXMLFileName = "d:\\xslt\\xsl-test\\perf\\basic\\basic-all_well.xml"; const char* const theXSLFileName = "d:\\xslt\\xsl-test\\perf\\basic\\basic-all_well.xsl"; const char* const theOutFileName = "d:\\Transformer-Results\\basic-all_well.out"; const char* const theXMLFileName2 = "d:\\xslt\\xsl-test\\perf\\basic\\miscfam.xml"; const char* const theXSLFileName2 = "d:\\xslt\\xsl-test\\perf\\basic\\miscfam.xsl"; const char* const theXMLFileName3 = "d:\\xslt\\xsl-test\\conf\\embed\\embed01.xml"; const char* const theOutFileName3 = "d:\\Transformer-Results\\embed01.out"; const char* const theXMLFileName4 = "d:\\xml-xalan\\c\\samples\\UseStylesheetParam\\foo.xml"; const char* const theXSLFileName4 = "d:\\xml-xalan\\c\\samples\\UseStylesheetParam\\foo.xsl"; #if defined(TEST_XALAN_CPP) XALAN_USING_XALAN(XalanTransformer) XALAN_USING_XALAN(XalanCompiledStylesheet) XalanTransformer xalan; const XalanCompiledStylesheet* css = 0; if (xalan.compileStylesheet(theXSLFileName, css) != 0) { cout << xalan.getLastError(); return 0; } for(int i=0; i<1; ++i) { if(xalan.transform(theXMLFileName, css, "d:\\transformer-results\\css.out")) { cout << xalan.getLastError(); return 0; } if(xalan.transform(theXMLFileName3, theOutFileName3)) { cout << xalan.getLastError(); return 0; } if(xalan.transform(theXMLFileName, theXSLFileName, theOutFileName)) { cout << xalan.getLastError(); return 0; } ostrstream theOutput; if(xalan.transform(theXMLFileName2, theXSLFileName2, &theOutput)) { cout << xalan.getLastError(); return 0; } theOutput << '\0'; cout << theOutput.str(); theOutput.freeze(false); ostrstream theOutput3; if(xalan.transform(theXMLFileName3, theOutput3)) { cout << xalan.getLastError(); return 0; } /* if(xalan.transform(theXMLFileName, css, cout)) { cout << xalan.getLastError(); return 0; } */ xalan.setStylesheetParam("param1", "'What is Up'"); if(xalan.transform(theXMLFileName4, theXSLFileName4, &cout)) { cout << xalan.getLastError(); return 0; } if(xalan.transform(theXMLFileName4, theXSLFileName4, &cout)) { cout << xalan.getLastError(); return 0; } } #else // $$$ ToDo: This C code is broken, because it returns without // shutting things down!!!! XalanInitialize(); XalanHandle xalan = CreateXalanTransformer(); XalanCSSHandle theXalanCSS2; XalanCSSHandle theXalanCSS4; XalanPSHandle theXalanPS2; if (XalanCompileStylesheet(theXSLFileName2, xalan, &theXalanCSS2) != 0) { puts("Error"); puts(XalanGetLastError(xalan)); return 0; } if (XalanCompileStylesheet(theXSLFileName4, xalan, &theXalanCSS4) != 0) { puts("Error"); puts(XalanGetLastError(xalan)); return 0; } if (XalanParseSource(theXMLFileName2, xalan, &theXalanPS2) != 0) { puts("Error"); puts(XalanGetLastError(xalan)); return 0; } for(int i = 0; i < 2; ++i) { if(XalanTransformToFile(theXMLFileName, theXSLFileName, theOutFileName, xalan)) { puts("Error"); puts(XalanGetLastError(xalan)); return 0; } char* theOutput; if(XalanTransformToData(theXMLFileName2, theXSLFileName2, &theOutput, xalan)) { puts("Error"); puts(XalanGetLastError(xalan)); return 0; } puts(theOutput); XalanFreeData(theOutput); if(XalanTransformToFile(theXMLFileName3, NULL, theOutFileName3, xalan)) { puts("Error"); puts(XalanGetLastError(xalan)); return 0; } if(XalanTransformToData(theXMLFileName3, NULL, &theOutput, xalan)) { puts("Error"); puts(XalanGetLastError(xalan)); return 0; } puts(theOutput); XalanFreeData(theOutput); if(XalanTransformToDataPrebuilt(theXalanPS2, theXalanCSS2, &theOutput, xalan)) { puts("Error"); puts(XalanGetLastError(xalan)); return 0; } puts(theOutput); XalanFreeData(theOutput); FILE* fp =0; fp = fopen("c:\\temp\\test.out", "w"); if(XalanTransformToHandler(theXMLFileName2, theXSLFileName2, xalan, fp, xalan_output_handler, xalan_flush_handler)) { puts("Error"); puts(XalanGetLastError(xalan)); return 0; } fclose(fp); XalanSetStylesheetParam("param1", "'hi'", xalan); //if(xalan.transform(theXMLFileName4, theXSLFileName4, &cout)) if(XalanTransformToDataPrebuilt(theXMLFileName4, theXalanCSS4, &theOutput, xalan)) { puts("Error"); puts(XalanGetLastError(xalan)); return 0; } puts(theOutput); XalanFreeData(theOutput); } DeleteXalanTransformer(xalan); // Terminate Xerces and Xalan, and clean up the ICU... XalanTerminate(1); #endif return 0; } int main( int /* argc */, char* /* argv */ []) { #if !defined(NDEBUG) && defined(_MSC_VER) _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); #endif int theResult = 0; #if defined(TEST_XALAN_CPP) try { XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XALAN(XalanTransformer) // Call the static initializers for xerces and xalan, and create a transformer // XMLPlatformUtils::Initialize(); XalanTransformer::initialize(); theResult = runTests(); // Terminate everything... XalanTransformer::terminate(); XMLPlatformUtils::Terminate(); XalanTransformer::ICUCleanUp(); } catch(...) { cerr << "Initialization failed!" << endl << endl; theResult = -1; } #endif return theResult; } xalan-c-1.11/c/Tests/Transformer/Transformer.dsp0000664000175000000640000002140711731656104020621 0ustar stevesamba# Microsoft Developer Studio Project File - Name="Transformer" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=Transformer - Win32 Debug !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 "Transformer.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 "Transformer.mak" CFG="Transformer - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "Transformer - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "Transformer - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE "Transformer - Win32 Release with symbols" (based on "Win32 (x86) Application") !MESSAGE "Transformer - Win64 Release" (based on "Win32 (x86) Application") !MESSAGE "Transformer - Win64 Debug" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "Transformer - 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 "..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release\Transformer" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 /machine:I386 # ADD LINK32 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /machine:I386 /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "Transformer - 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 "..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Debug\Transformer" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 /debug /machine:I386 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" # SUBTRACT LINK32 /pdb:none !ELSEIF "$(CFG)" == "Transformer - Win32 Release with symbols" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Transformer___Win32_Release_with_symbols" # PROP BASE Intermediate_Dir "Transformer___Win32_Release_with_symbols" # PROP BASE Ignore_Export_Lib 0 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "..\..\Build\Win32\VC6\Release.symbols" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release.symbols\Transformer" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT BASE CPP /YX # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 ..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release\xerces-c_1.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /machine:I386 # ADD LINK32 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /debug /machine:I386 /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /fixed:no !ELSEIF "$(CFG)" == "Transformer - Win64 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 "..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\Release\Transformer" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 /machine:I386 # ADD LINK32 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /machine:IX86 /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "Transformer - Win64 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 "..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\Debug\Transformer" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 /debug /machine:I386 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 # SUBTRACT LINK32 /pdb:none !ENDIF # Begin Target # Name "Transformer - Win32 Release" # Name "Transformer - Win32 Debug" # Name "Transformer - Win32 Release with symbols" # Name "Transformer - Win64 Release" # Name "Transformer - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\TestXalanTransformer.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Tests/Params/0002775000175000000640000000000012037700125014517 5ustar stevesambaxalan-c-1.11/c/Tests/Params/Params.cpp0000664000175000000640000002447311731656104016465 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Base header file. Must be first. #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif // This is here for memory leak testing. #if !defined(NDEBUG) && defined(_MSC_VER) #include #endif #include #include #include #include #include #include #include XALAN_USING_STD(cerr) XALAN_USING_STD(cout) XALAN_USING_STD(endl) XALAN_USING_XALAN(XalanFileUtility) XALAN_USING_XALAN(XalanDOMString) void setHelp(XalanFileUtility& h) { h.args.getHelpStream() << endl << "params dirname [-out]" << endl << endl << "dirname (base directory for \'capi\' testcases)" << endl << "-out dirname (base directory for output)" << endl; } // This function returns the testcase number. All of these tests are called // params0X, and there are only 6 of them, so we can pick off the // second X to determine what test number we're dealing with. We need to // know which test because each test gets different parameters. This code will // need modification if the number of tests changes. int getTestNumber(const XalanDOMString& theFile) { assert(8 < theFile.length()); return theFile[7] - XALAN_CPP_NAMESPACE_QUALIFIER XalanUnicode::charDigit_0; } int runTests( int argc, char* argv[]) { int theResult = 0; XalanFileUtility h; char testCase[15]; XalanDOMString fileName, theGoldFile; const XalanDOMString currentDir("params"); // Set the program help string, then get the command line parameters. // setHelp(h); // Get the command line parameters. // if (h.getParams(argc, argv, "PARAMS-RESULTS") == true) { const XalanDOMString extDir(h.args.base + currentDir); // Check that the base directory is correct. if ( !h.checkDir(extDir) ) { cout << "Invalid base directory - " << extDir << endl; cout << h.args.getHelpMessage(); theResult = -1; } else { XALAN_USING_XALAN(XalanTransformer) XALAN_USING_XALAN(XalanXMLFileReporter) XalanTransformer xalan; // Generate Unique Run id. (Only used to name the result logfile.) const XalanDOMString UniqRunid = h.generateUniqRunid(); // Defined basic constants for file manipulation const XalanDOMString drive(h.getDrive()); const XalanDOMString resultFilePrefix("params"); const XalanDOMString resultsFile(drive + h.args.output + resultFilePrefix + UniqRunid + XalanFileUtility::s_xmlSuffix); XalanXMLFileReporter logFile(resultsFile); logFile.logTestFileInit("Param Testing: Testing ability to pass parameters to stylesheets. "); try { bool embedFlag = false; // Get the files found in the "params" directory const XalanDOMString theOutputDir = h.args.output + currentDir; // Check that output directory is there. h.checkAndCreateDir(theOutputDir); typedef XalanFileUtility::FileNameVectorType FileNameVectorType; const FileNameVectorType files = h.getTestFileNames(h.args.base, currentDir, true); logFile.logTestCaseInit(currentDir); for(FileNameVectorType::size_type i = 0; i < files.size(); ++i) { fileName = files[i]; sprintf(testCase, "%s%d","TestCase",i+1); h.data.testOrFile = testCase; // Set up the input/output files. const XalanDOMString theXSLFile= h.args.base + currentDir + XalanFileUtility::s_pathSep + fileName; XalanDOMString theXMLFile; // Neither testcase 7 nor 8 utilize xml source files. Both use fragment identifiers, // so the generation of xml file is unnecessary. // Testcase 7 tests: // Testcase 8 tests: if ( i+1 <= 6 ) { theXMLFile = h.generateFileName(theXSLFile, "xml"); } h.data.xmlFileURL = theXMLFile; h.data.xslFileURL = theXSLFile; const XalanDOMString theOutput = h.args.output + currentDir + XalanFileUtility::s_pathSep + fileName; const XalanDOMString theOutputFile = h.generateFileName(theOutput, "out"); theGoldFile = h.args.gold + currentDir + XalanFileUtility::s_pathSep + fileName; theGoldFile = h.generateFileName(theGoldFile, "out"); XALAN_USING_XALAN(XSLTResultTarget); XALAN_USING_XALAN(XSLTInputSource); const XSLTResultTarget theResultTarget(theOutputFile); const XSLTInputSource xslInputSource(theXSLFile); const XSLTInputSource xmlInputSource(theXMLFile); // Set the desired parameters switch (getTestNumber(fileName)) { case 2: xalan.setStylesheetParam("in1", "'A '"); xalan.setStylesheetParam("in2", "'B '"); xalan.setStylesheetParam( XalanDOMString("in3"), XalanDOMString("'C '")); xalan.setStylesheetParam( XalanDOMString("in4"), XalanDOMString("'D '")); xalan.setStylesheetParam( XalanDOMString("in5"), XalanDOMString("'E '")); break; case 3: xalan.setStylesheetParam( XalanDOMString("'xyz:in1'"), XalanDOMString("'DATA'")); break; case 7: { const XSLTInputSource embed07InputSource(theXSLFile); xalan.transform(embed07InputSource, theResultTarget); h.data.testOrFile += " (Embed01)"; embedFlag = true; break; } case 8: { const XSLTInputSource embed08InputSource(theXSLFile); xalan.transform(embed08InputSource, theResultTarget); h.data.testOrFile += " (Embed02)"; embedFlag = true; break; } default: xalan.setStylesheetParam( XalanDOMString("input"), XalanDOMString("'testing 1 2 3'")); break; } // Do a total end to end transform with no pre parsing of either xsl or xml files. if (!embedFlag) { xalan.transform(xmlInputSource, xslInputSource, theResultTarget); } // Check and report the results. h.checkResults(theOutputFile, theGoldFile, logFile); } logFile.logTestCaseClose("Done", "Pass"); } catch(...) { cerr << "Exception caught!!!" << endl << endl; theResult = -1; } h.reportPassFail(logFile, UniqRunid); logFile.logTestFileClose("Param Testing: ", "Done"); logFile.close(); h.analyzeResults(xalan, resultsFile); } } return theResult; } int main( int argc, char* argv[]) { #if !defined(NDEBUG) && defined(_MSC_VER) _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); #endif int theResult = 0; try { XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XALAN(XalanTransformer) // Call the static initializers for xerces and xalan, and create a transformer // XMLPlatformUtils::Initialize(); XalanTransformer::initialize(); theResult = runTests(argc, argv); XalanTransformer::terminate(); XMLPlatformUtils::Terminate(); XalanTransformer::ICUCleanUp(); } catch(...) { cerr << "Initialization failed!" << endl << endl; theResult = -1; } return theResult; } xalan-c-1.11/c/Tests/Params/Params.vcproj0000664000175000000640000001536411731656104017205 0ustar stevesamba xalan-c-1.11/c/Tests/Params/Params.dsp0000664000175000000640000002206711731656104016466 0ustar stevesamba# Microsoft Developer Studio Project File - Name="Params" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=Params - Win32 Debug !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 "Params.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 "Params.mak" CFG="Params - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "Params - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "Params - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "Params - Win32 Release with symbols" (based on "Win32 (x86) Console Application") !MESSAGE "Params - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "Params - Win64 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)" == "Params - 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 "..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release\Params" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /machine:I386 /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "Params - 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 "..\..\Build\Win32\VC6\debug" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\debug\Params" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W4 /GR /GX /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "Params - Win32 Release with symbols" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Params___Win32_Release_with_symbols" # PROP BASE Intermediate_Dir "Params___Win32_Release_with_symbols" # PROP BASE Ignore_Export_Lib 0 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "..\..\Build\Win32\VC6\Release.symbols" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release.symbols\Params" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "..\harness\\" /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 ..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release\xerces-c_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\Build\Win32\VC6\Release/Params.exe" # ADD LINK32 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:I386 /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /fixed:no # SUBTRACT LINK32 /pdb:none !ELSEIF "$(CFG)" == "Params - Win64 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 "..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\Release\Params" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /machine:IX86 /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "Params - Win64 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 "..\..\Build\Win64\VC6\debug" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\debug\Params" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W4 /GR /GX /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "Params - Win32 Release" # Name "Params - Win32 Debug" # Name "Params - Win32 Release with symbols" # Name "Params - Win64 Release" # Name "Params - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\Params.cpp !IF "$(CFG)" == "Params - Win32 Release" # ADD CPP /MD /Zi !ELSEIF "$(CFG)" == "Params - Win32 Debug" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Debug\Params" # ADD CPP /MDd /Zi !ELSEIF "$(CFG)" == "Params - Win32 Release with symbols" # ADD BASE CPP /MD /Zi # ADD CPP /MD /Zi !ELSEIF "$(CFG)" == "Params - Win64 Release" !ELSEIF "$(CFG)" == "Params - Win64 Debug" !ENDIF # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Tests/Conf/0002775000175000000640000000000012037700125014161 5ustar stevesambaxalan-c-1.11/c/Tests/Conf/conf.cpp0000664000175000000640000005217211731656104015626 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Base header file. Must be first. #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #include #else #include #include #endif #include XALAN_USING_STD(cerr) XALAN_USING_STD(cout) XALAN_USING_STD(endl) #include "xercesc/util/PlatformUtils.hpp" #include "xercesc/parsers/XercesDOMParser.hpp" #include "xalanc/PlatformSupport/XalanMemoryManagerDefault.hpp" #include "xalanc/XercesParserLiaison/XercesParserLiaison.hpp" #include "xalanc/XercesParserLiaison/XercesDOMSupport.hpp" #include "xalanc/XalanTransformer/XalanTransformer.hpp" #include "xalanc/XalanTransformer/XercesDOMWrapperParsedSource.hpp" // HARNESS HEADERS... #include "xalanc/Harness/XalanFileUtility.hpp" #include "xalanc/Harness/XalanDiagnosticMemoryManager.hpp" #include "xalanc/Harness/XalanXMLFileReporter.hpp" //#define XALAN_VQ_SPECIAL_TRACE #if defined(XALAN_VQ_SPECIAL_TRACE) #include "C:/Program Files/Rational/Quantify/pure.h" #endif // Just hoist everything... XALAN_CPP_NAMESPACE_USE // This is here for memory leak testing. #if !defined(NDEBUG) && defined(_MSC_VER) #include #endif XALAN_USING_XERCES(MemoryManager) void setHelp(XalanFileUtility& h) { h.args.getHelpStream() << endl << "conf dir [-sub -out -gold -source (XST | XPL | DOM)]" << endl << endl << "dir (base directory for testcases)" << endl << "-sub dir (specific directory)" << endl << "-out dir (base directory for output)" << endl << "-gold dir (base directory for gold files)" << endl << "-source type (parsed source; XalanSourceTree(d), XercesParserLiasion, XercesDOM)" << endl; } static const char* const excludeStylesheets[] = { // Excluded because it's broken. See Jira issue XALANJ-2412. "attribset29.xsl", // Excluded because Xalan-C++ deviates from the standard WRT namespace nodes. "idkey31.xsl", // $$$TODO: These are temporarily disabled, waiting for Xalan-J to implement erratum #23. "numbering21.xsl", "numbering29.xsl", "numbering49.xsl", "numbering61.xsl", "numbering68.xsl", "numbering69.xsl", "numbering83.xsl", // These numberformat tests fail because they test edge cases, and the ICU handles these // differently than Java does. // $$$TODO: Perhaps ICU will address these issues at some point. "numberformat11.xsl", "numberformat17.xsl", "numberformat25.xsl", "numberformat30.xsl", "numberformat34.xsl", "numberformat35.xsl", #if defined(XALAN_WINDOWS) // Excluded because it outputs HTML, which cannot be parsed. Text comparison fails because // linefeeds are Unix-style, and those fail on Windows. "output22.xsl", #endif // Excluded because it outputs ISO-2022-JP, and not all platforms support this encoding. "output23.xsl", // These sort tests are disabled because the ICU implements a more recent version of the // the Unicode collation algorithm, so we won't match the Java results. "sort08.xsl", "sort27.xsl", // These string tests exceed the resolution of printf, so until we have a better // implementation, these will fail. "string132.xsl", "string134.xsl", "string135.xsl", // These variable tests are incorrect, because they violate the XSLT recommendation, // which disallows shadowing a variable name. "variable20.xsl", "variable56.xsl", 0 }; static const char* const excludeStylesheetsWithoutICU[] = { // These numberformat tests fail because we don't implement format-number without // ICU integration. "numberformat01.xsl", "numberformat02.xsl", "numberformat03.xsl", "numberformat04.xsl", "numberformat05.xsl", "numberformat06.xsl", "numberformat07.xsl", "numberformat08.xsl", "numberformat09.xsl", "numberformat12.xsl", "numberformat13.xsl", "numberformat16.xsl", "numberformat18.xsl", "numberformat19.xsl", "numberformat20.xsl", "numberformat21.xsl", "numberformat22.xsl", "numberformat23.xsl", "numberformat24.xsl", "numberformat26.xsl", "numberformat27.xsl", "numberformat28.xsl", "numberformat29.xsl", "numberformat31.xsl", "numberformat32.xsl", "numberformat36.xsl", "numberformat45.xsl", "numberformat46.xsl", // Excluded because it outputs SHIFT_JIS, and not all platforms support this encoding, so // the gold file cannot be parsed. "output20.xsl", // Excluded because it outputs BIG5, and not all platforms support this encoding. "output21.xsl", // Excluded because it outputs EBCDIC-CP-IT, and not all platforms support this encoding. "output22.xsl", // Excluded because it outputs HTML, which cannot be parsed. Text comparison fails because // it try to use SHIFT_JIS for the output encoding, which not all platforms support. "output73.xsl", // These sort tests are disabled because, without the ICU, we don't implement proper // sorting, including support for the case-order attribute of xsl:sort. // $$$TODO: Basic support for ASCII-only case order is being worked on. "sort02.xsl", "sort10.xsl", "sort14.xsl", "sort15.xsl", "sort16.xsl", "sort34.xsl", // These string tests using format-number(), which is not implemented without ICU // integration. "string108.xsl", "string109.xsl", "string110.xsl", "string132.xsl", "string134.xsl", "string135.xsl", 0 }; inline bool checkForExclusion( const XalanDOMString& currentFile, bool isICUIntegrated, MemoryManager& theMemoryManager) { #if defined(XALAN_STRICT_ANSI_HEADERS) using std::strcmp; #endif CharVectorType theFileName(theMemoryManager); currentFile.transcode(theFileName); for (size_t i = 0; excludeStylesheets[i] != 0; ++i) { if (!strcmp(c_str(theFileName), excludeStylesheets[i])) { return true; } } if (!isICUIntegrated) { for (size_t i = 0; excludeStylesheetsWithoutICU[i] != 0; ++i) { if (!strcmp(c_str(theFileName), excludeStylesheetsWithoutICU[i])) { return true; } } } return false; } int parseWithTransformer( int sourceType, XalanTransformer& xalan, const XSLTInputSource& xmlInput, const XalanCompiledStylesheet* styleSheet, const XSLTResultTarget& output, XalanXMLFileReporter& logFile, XalanFileUtility& h) { const XalanParsedSource* parsedSource = 0; MemoryManager& mgr = h.getMemoryManager(); int theResult = 0; // Parse the XML source accordingly. // if (sourceType != 0) { theResult = xalan.parseSource(xmlInput, parsedSource, true); h.data.xmlFormat = XalanDOMString("XercesParserLiasion", mgr); } else { theResult = xalan.parseSource(xmlInput, parsedSource, false); h.data.xmlFormat = XalanDOMString("XalanSourceTree", mgr); } // If the source was parsed correctly then perform the transform else report the failure. // if (parsedSource == 0) { // Report the failure and be sure to increment fail count. // cout << "ParseWTransformer - Failed to parse source document for " << h.data.testOrFile << endl; ++h.data.fail; XalanDOMString tmp("Failed to parse source document. ", mgr); tmp.append(xalan.getLastError()); logFile.logErrorResult(h.data.testOrFile, tmp ); } else { theResult = xalan.transform(*parsedSource, styleSheet, output); xalan.destroyParsedSource(parsedSource); } return theResult; } int parseWithXerces( XalanTransformer& xalan, const XSLTInputSource& xmlInput, const XalanCompiledStylesheet* styleSheet, const XSLTResultTarget& output, XalanXMLFileReporter& logFile, XalanFileUtility& h) { XALAN_USING_XERCES(XercesDOMParser) XALAN_USING_XERCES(DOMDocument) MemoryManager& mgr = h.getMemoryManager(); h.data.xmlFormat = XalanDOMString("Xerces_DOM", mgr); XercesDOMParser theParser(0, &mgr); #if XERCES_VERSION_MAJOR < 3 theParser.setDoValidation(true); #else theParser.setValidationScheme(XercesDOMParser::Val_Auto); #endif theParser.setDoNamespaces(true); theParser.parse(xmlInput); DOMDocument* const theDOM = theParser.getDocument(); theDOM->normalize(); XercesParserLiaison theParserLiaison(mgr); XercesDOMSupport theDOMSupport(theParserLiaison); int theResult = 0; try { const XercesDOMWrapperParsedSource parsedSource( theDOM, theParserLiaison, theDOMSupport, XalanDOMString(xmlInput.getSystemId(), mgr), mgr); theResult = xalan.transform(parsedSource, styleSheet, output); } catch(...) { // Report the failure and be sure to increment fail count. // cout << "parseWXerces - Failed to parse source document for " << h.data.testOrFile << endl; ++h.data.fail; XalanDOMString resultString("Failed to parse source document. ", mgr); resultString.append( xalan.getLastError()); logFile.logErrorResult(h.data.testOrFile, resultString); } return theResult; } int runTests( int argc, char* argv[], MemoryManager& theMemoryManager) { int theResult = 0; try { XalanFileUtility h(theMemoryManager); // Set the program help string, then get the command line parameters. // setHelp(h); if (h.getParams(argc, argv, "CONF-RESULTS") == true) { XalanTransformer xalan(theMemoryManager); const bool isICUAvailable = xalan.getICUAvailable(); const XalanDOMString resultFilePrefix("conf", theMemoryManager); // This & UniqRunid used for log file name. XalanDOMString UniqRunid(theMemoryManager); h.generateUniqRunid(UniqRunid); XalanDOMString resultsFile(theMemoryManager); resultsFile += h.args.output; resultsFile += resultFilePrefix; resultsFile += UniqRunid; resultsFile += XalanFileUtility::s_xmlSuffix; // Open results log, and do some initialization of result data. // XalanXMLFileReporter logFile(theMemoryManager, resultsFile); logFile.logTestFileInit("Conformance Testing:"); h.data.xmlFormat = XalanDOMString("NotSet", theMemoryManager); // Get the list of Directories that are below conf and iterate through them // // Flag indicates directory found. Used in conjunction with -sub cmd-line arg. bool foundDir = false; typedef XalanFileUtility::FileNameVectorType FileNameVectorType; FileNameVectorType dirs(theMemoryManager); h.getDirectoryNames(h.args.base, dirs); int theResult = 0; for(FileNameVectorType::size_type j = 0; j < dirs.size() && theResult == 0; ++j) { // Skip all but the specified directory if the -sub cmd-line option was used. // const XalanDOMString& currentDir = dirs[j]; if ((h.args.sub.empty() == true || equals(currentDir, h.args.sub) == true) && currentDir[0] != XalanUnicode::charFullStop) { // Check that output directory is there. // XalanDOMString theOutputDir(theMemoryManager); theOutputDir = h.args.output; theOutputDir += currentDir; h.checkAndCreateDir(theOutputDir); // Indicate that directory was processed and get test files from the directory // foundDir = true; FileNameVectorType files(theMemoryManager); h.getTestFileNames(h.args.base, currentDir, true, files); // Log directory in results log and process it's files. // logFile.logTestCaseInit(currentDir); for(FileNameVectorType::size_type i = 0; i < files.size(); i++) { XalanXMLFileReporter::Hashtable attrs(theMemoryManager); const XalanDOMString& currentFile = files[i]; if (checkForExclusion(currentFile, isICUAvailable, theMemoryManager)) continue; h.data.testOrFile = currentFile; XalanDOMString theXSLFile( h.args.base, theMemoryManager); theXSLFile += currentDir; theXSLFile += XalanFileUtility::s_pathSep; theXSLFile += currentFile; // Check and see if the .xml file exists. If not skip this .xsl file and continue. bool fileStatus = true; XalanDOMString theXMLFile(theMemoryManager); h.generateFileName(theXSLFile, "xml", theXMLFile, &fileStatus); if (!fileStatus) continue; h.data.xmlFileURL = theXMLFile; h.data.xslFileURL = theXSLFile; XalanDOMString theGoldFile(h.args.gold, theMemoryManager); theGoldFile += currentDir; theGoldFile += XalanFileUtility::s_pathSep; theGoldFile += currentFile; h.generateFileName(theGoldFile, "out", theGoldFile); XalanDOMString outbase (h.args.output, theMemoryManager); outbase += currentDir; outbase += XalanFileUtility::s_pathSep; outbase += currentFile; XalanDOMString theOutputFile(theMemoryManager); h.generateFileName(outbase, "out", theOutputFile); const XSLTInputSource xslInputSource(theXSLFile, theMemoryManager); const XSLTInputSource xmlInputSource(theXMLFile, theMemoryManager); const XSLTResultTarget resultFile(theOutputFile, theMemoryManager); XALAN_USING_STD(ostrstream) // Setting a warning stream will swallow output in non-verbose mode. ostrstream theDummyStream; if (h.getVerbose() == false) { xalan.setWarningStream(0); // xalan.setWarningStream(&theDummyStream); } // Parsing(compile) the XSL stylesheet and report the results.. // const XalanCompiledStylesheet* compiledSS = 0; xalan.compileStylesheet(xslInputSource, compiledSS); if (compiledSS == 0 ) { // Report the failure and be sure to increment fail count. // CharVectorType theVector(theMemoryManager); TranscodeToLocalCodePage(currentFile, theVector); cout << "Failed to parse stylesheet for " << theVector << endl; h.data.fail += 1; XalanDOMString tmp("Failed to parse stylesheet. ", theMemoryManager); tmp += XalanDOMString(xalan.getLastError(), theMemoryManager); logFile.logErrorResult(currentFile, theMemoryManager); continue; } // Parse the Source XML based on input parameters, and then perform transform. // switch (h.args.source) { case 0: case 1: theResult = parseWithTransformer(h.args.source, xalan, xmlInputSource, compiledSS, resultFile, logFile, h); break; case 2: theResult = parseWithXerces(xalan, xmlInputSource, compiledSS, resultFile, logFile, h); break; } // Check and report results... Then delete compiled stylesheet. // h.checkResults(theOutputFile, theGoldFile, logFile); xalan.destroyStylesheet(compiledSS); } logFile.logTestCaseClose("Done", "Pass"); } } // Check to see if -sub cmd-line directory was processed correctly. // if (!foundDir) { CharVectorType vect(theMemoryManager); TranscodeToLocalCodePage(h.args.sub, vect); cout << "Specified test directory: \"" << c_str(vect) << "\" not found" << endl; } else if (theResult != 0) { cout << "An unexpected tranformer error occurred. The error code is " << theResult << "\n" << "The error message is \"" << xalan.getLastError() << endl; } h.reportPassFail(logFile, UniqRunid); logFile.logTestFileClose("Conformance ", "Done"); logFile.close(); h.analyzeResults(xalan, resultsFile); theResult = h.getFailureCount(); } } catch(const XalanDiagnosticMemoryManager::LockException&) { cerr << "An attempt was made to allocate memory " "from a locked XalanDiagnosticMemoryManager " "instance!" << endl << endl; theResult = -1; } catch(...) { cerr << "Initialization of testing harness failed!" << endl << endl; } return theResult; } int main( int argc, char* argv[]) { #if !defined(NDEBUG) && defined(_MSC_VER) _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); #endif #if defined(XALAN_VQ_SPECIAL_TRACE) QuantifyStopRecordingData(); QuantifyClearData(); #endif int theResult = 0; try { XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XERCES(XMLUni) XalanMemoryManagerDefault theGlobalMemoryManager; XalanDiagnosticMemoryManager theDiagnosticMemoryManager(theGlobalMemoryManager, true, &cerr); XalanMemoryManagerDefault theTestingMemoryManager; // Call the static initializers for xerces and xalan, and create a transformer // XMLPlatformUtils::Initialize( XMLUni::fgXercescDefaultLocale, 0, 0, #if XERCES_VERSION_MAJOR >= 3 &theDiagnosticMemoryManager); #else &theDiagnosticMemoryManager, true); #endif XalanTransformer::initialize(theDiagnosticMemoryManager); theDiagnosticMemoryManager.lock(); { theResult = runTests(argc, argv, theTestingMemoryManager); } theDiagnosticMemoryManager.unlock(); XalanTransformer::terminate(); XMLPlatformUtils::Terminate(); XalanTransformer::ICUCleanUp(); } catch(...) { cerr << "Initialization failed!" << endl << endl; theResult = -1; } return theResult; } xalan-c-1.11/c/Tests/Conf/conf.vcproj0000664000175000000640000001524111731656104016343 0ustar stevesamba xalan-c-1.11/c/Tests/Conf/conf.dsp0000664000175000000640000001654311731656104015634 0ustar stevesamba# Microsoft Developer Studio Project File - Name="conf" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=conf - Win32 Debug !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 "conf.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 "conf.mak" CFG="conf - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "conf - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "conf - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "conf - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "conf - Win64 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)" == "conf - 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 "..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release\conf" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:I386 /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" # SUBTRACT LINK32 /pdb:none !ELSEIF "$(CFG)" == "conf - 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 "..\..\Build\Win32\VC6\debug" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\debug\conf" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /GR /GX /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "conf - Win64 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 "..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\Release\conf" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /machine:IX86 /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "conf - Win64 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 "..\..\Build\Win64\VC6\debug" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\debug\conf" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /GR /GX /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "conf - Win32 Release" # Name "conf - Win32 Debug" # Name "conf - Win64 Release" # Name "conf - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\conf.cpp !IF "$(CFG)" == "conf - Win32 Release" # ADD CPP /MD /Zi !ELSEIF "$(CFG)" == "conf - Win32 Debug" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Debug\conf" # ADD CPP /MDd /Zi !ELSEIF "$(CFG)" == "conf - Win64 Release" !ELSEIF "$(CFG)" == "conf - Win64 Debug" !ENDIF # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Tests/Compare/0002775000175000000640000000000012037700125014662 5ustar stevesambaxalan-c-1.11/c/Tests/Compare/compare.cpp0000664000175000000640000001710411731656104017024 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Base header file. Must be first. #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #include #else #include #include #endif #include #if defined(_MSC_VER) #include #endif XALAN_USING_STD(cerr) XALAN_USING_STD(endl) // XERCES HEADERS... #include // XALAN HEADERS... #include #include #include #include #include #include // This is here for memory leak testing. #if !defined(NDEBUG) && defined(_MSC_VER) #include #endif XALAN_USING_XALAN(XalanFileUtility) void setHelp(XalanFileUtility& h) { h.args.getHelpStream() << endl << "compare dirname [-out -gold]" << endl << endl << "dirname (base directory for testcases)" << endl << "-out dirname (base directory for output)" << endl << "-gold dirname (base directory for gold files)" << endl; } int runTests( int argc, char* argv[]) { XalanFileUtility h; bool setGold = true; // Set the program help string, then get the command line parameters. // setHelp(h); if (h.getParams(argc, argv, "DOMCOM-RESULTS", setGold) == true) { XALAN_USING_XALAN(FormatterToSourceTree) XALAN_USING_XALAN(XalanCompiledStylesheet) XALAN_USING_XALAN(XalanDOMString) XALAN_USING_XALAN(XalanParsedSource) XALAN_USING_XALAN(XalanSourceTreeDocument) XALAN_USING_XALAN(XalanSourceTreeDOMSupport) XALAN_USING_XALAN(XalanSourceTreeParserLiaison) XALAN_USING_XALAN(XalanTransformer) XALAN_USING_XALAN(XalanXMLFileReporter) XALAN_USING_XALAN(XSLTInputSource) XALAN_USING_XALAN(XSLTResultTarget) // // Call the static initializers for xerces and xalan, and create a transformer // XalanTransformer xalan; XalanSourceTreeDOMSupport domSupport; XalanSourceTreeParserLiaison parserLiaison(domSupport); domSupport.setParserLiaison(&parserLiaison); // Generate Unique Run id and processor info const XalanDOMString UniqRunid = h.generateUniqRunid(); const XalanDOMString resultFilePrefix("cpp"); const XalanDOMString resultsFile(h.args.output + resultFilePrefix + UniqRunid + XalanFileUtility::s_xmlSuffix); XalanXMLFileReporter logFile(resultsFile); logFile.logTestFileInit("Comparison Testing:"); // Specify the "test" directory for both input and output. // const XalanDOMString currentDir("domcomtests"); const XalanDOMString theOutputDir = h.args.output + currentDir; h.checkAndCreateDir(theOutputDir); // Get the files found in the test directory // logFile.logTestCaseInit(currentDir); typedef XalanFileUtility::FileNameVectorType FileNameVectorType; const FileNameVectorType files = h.getTestFileNames(h.args.base, currentDir, true); for(FileNameVectorType::size_type i = 0; i < files.size(); i++) { const XalanDOMString& fileName = files[i]; h.data.reset(); h.data.testOrFile = fileName; const XalanDOMString theXSLFile= h.args.base + currentDir + XalanFileUtility::s_pathSep + fileName; const XalanDOMString theXMLFile = h.generateFileName(theXSLFile,"xml"); XalanDOMString theGoldFile = h.args.gold + currentDir + XalanFileUtility::s_pathSep + fileName; theGoldFile = h.generateFileName(theGoldFile, "out"); const XalanDOMString outbase = h.args.output + currentDir + XalanFileUtility::s_pathSep + fileName; const XalanDOMString theOutputFile = h.generateFileName(outbase, "out"); const XSLTInputSource xslInputSource(theXSLFile); const XSLTInputSource xmlInputSource(theXMLFile); const XSLTInputSource goldInputSource(theGoldFile); // Use a XalanSourceTreeDocument to create the XSLTResultTarget. // XalanSourceTreeDocument* dom = parserLiaison.createXalanSourceTreeDocument(); FormatterToSourceTree domOut(dom); XSLTResultTarget domResultTarget; domResultTarget.setFormatterListener(&domOut); // Parsing(compile) the XSL stylesheet and report the results.. // const XalanCompiledStylesheet* compiledSS = 0; xalan.compileStylesheet(xslInputSource, compiledSS); if (compiledSS == 0 ) { continue; } // Parsing the input XML and report the results.. // const XalanParsedSource* parsedSource = 0; xalan.parseSource(xmlInputSource, parsedSource); if (parsedSource == 0) { continue; } // Perform One transform using parsed stylesheet and unparsed xml source, report results... // xalan.transform(*parsedSource, compiledSS, domResultTarget); h.checkDOMResults(theOutputFile, compiledSS, dom, goldInputSource, logFile); parserLiaison.reset(); xalan.destroyParsedSource(parsedSource); xalan.destroyStylesheet(compiledSS); } logFile.logTestCaseClose("Done", "Pass"); h.reportPassFail(logFile, UniqRunid); logFile.logTestFileClose("DomCom ", "Done"); logFile.close(); h.analyzeResults(xalan, resultsFile); } return 0; } int main( int argc, char* argv[]) { #if !defined(NDEBUG) && defined(_MSC_VER) _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); #endif int theResult = 0; try { XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XALAN(XalanTransformer) // Call the static initializers for xerces and xalan, and create a transformer // XMLPlatformUtils::Initialize(); XalanTransformer::initialize(); theResult = runTests(argc, argv); XalanTransformer::terminate(); XMLPlatformUtils::Terminate(); XalanTransformer::ICUCleanUp(); } catch(...) { cerr << "Initialization failed!" << endl << endl; theResult = -1; } return theResult; } xalan-c-1.11/c/Tests/Compare/compare.vcproj0000664000175000000640000001527611731656104017555 0ustar stevesamba xalan-c-1.11/c/Tests/Compare/compare.dsp0000664000175000000640000002166011731656104017032 0ustar stevesamba# Microsoft Developer Studio Project File - Name="compare" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=compare - Win32 Debug !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 "compare.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 "compare.mak" CFG="compare - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "compare - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "compare - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "compare - Win32 Release with symbols" (based on "Win32 (x86) Console Application") !MESSAGE "compare - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "compare - Win64 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)" == "compare - 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 "..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release\compare" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /machine:I386 /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "compare - 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 "..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Debug\compare" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /GR /GX /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "compare - Win32 Release with symbols" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "compare___Win32_Release_with_symbols" # PROP BASE Intermediate_Dir "compare___Win32_Release_with_symbols" # PROP BASE Ignore_Export_Lib 0 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "..\..\Build\Win32\VC6\Release.symbols" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release.symbols\compare" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "..\harness\\" /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 ..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release\xerces-c_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\Build\Win32\VC6\Release/perft.exe" # ADD LINK32 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:I386 /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /fixed:no # SUBTRACT LINK32 /pdb:none !ELSEIF "$(CFG)" == "compare - Win64 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 "..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\Release\compare" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /machine:IX86 /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "compare - Win64 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 "..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\Debug\compare" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /GR /GX /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Debug" /machine:IA64 !ENDIF # Begin Target # Name "compare - Win32 Release" # Name "compare - Win32 Debug" # Name "compare - Win32 Release with symbols" # Name "compare - Win64 Release" # Name "compare - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\compare.cpp !IF "$(CFG)" == "compare - Win32 Release" # ADD CPP /MD /Zi !ELSEIF "$(CFG)" == "compare - Win32 Debug" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Debug\compare" # ADD CPP /MDd /Zi !ELSEIF "$(CFG)" == "compare - Win32 Release with symbols" # ADD BASE CPP /MD /Zi # ADD CPP /MD /Zi !ELSEIF "$(CFG)" == "compare - Win64 Release" !ELSEIF "$(CFG)" == "compare - Win64 Debug" !ENDIF # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Tests/Memory/0002775000175000000640000000000012037700125014544 5ustar stevesambaxalan-c-1.11/c/Tests/Memory/Stressmem.cpp0000664000175000000640000001760411731656104017247 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif // This is here for memory leak testing. #if !defined(NDEBUG) && defined(_MSC_VER) #include #endif #include #include #include #include XALAN_USING_STD(cerr) XALAN_USING_STD(cout) XALAN_USING_STD(endl) static const char* const excludeStylesheets[] = { 0 }; XALAN_USING_XALAN(XalanFileUtility) XALAN_USING_XALAN(XalanDOMString) inline bool checkForExclusion(const XalanDOMString& currentFile) { for (int i = 0; excludeStylesheets[i] != 0; ++i) { if (currentFile == XalanDOMString(excludeStylesheets[i])) { return true; } } return false; } void setHelp(XalanFileUtility& h) { h.args.getHelpStream() << endl << "stressmem dirname [-out -sub]" << endl << endl << "dirname (base directory for testcases)" << endl << "-out dirname (base directory for output)" << endl << "-sub dirname (run files only from a specific directory)" << endl; } int runTests( int argc, char* argv[]) { int theResult = 0; try { XalanFileUtility h; setHelp(h); bool setGold = false; // Set the program help string, then get the command line parameters. // if (h.getParams(argc, argv, "MEM-RESULTS", setGold) == true) { //XALAN_USING_XALAN(XalanSourceTreeDOMSupport) //XALAN_USING_XALAN(XalanSourceTreeParserLiaison) XALAN_USING_XALAN(XalanXMLFileReporter) typedef XalanFileUtility::FileNameVectorType FileNameVectorType; // Get the list of Directories that are below perf const FileNameVectorType dirs = h.getDirectoryNames(h.args.base); // Generate Unique Run id. (Only used to name the result logfile.) const XalanDOMString UniqRunid = h.generateUniqRunid(); // Defined basic constants for file manipulation const XalanDOMString resultFilePrefix(XalanDOMString("cpp-mem")); const XalanDOMString resultsFile(h.args.output + resultFilePrefix + UniqRunid + XalanFileUtility::s_xmlSuffix); XalanXMLFileReporter logFile(resultsFile); logFile.logTestFileInit("Memory Testing - Memory leaks detected during ConformanceTests. "); try { XALAN_USING_XALAN(XalanTransformer) bool foundDir = false; XalanTransformer transformEngine; for(FileNameVectorType::size_type j = 0; j < dirs.size(); ++j) { // Skip all but the specified directory if the -sub cmd-line option was used. // if (h.args.sub.length() > 0 && dirs[j] != h.args.sub) { continue; } // Check that output directory is there. const XalanDOMString theOutputDir = h.args.output + dirs[j]; h.checkAndCreateDir(theOutputDir); const FileNameVectorType files = h.getTestFileNames(h.args.base, dirs[j],true); foundDir = true; for(FileNameVectorType::size_type i = 0; i < files.size(); ++i) { if (checkForExclusion(files[i]) == false) { XALAN_USING_XALAN(XSLTInputSource) XALAN_USING_XALAN(XSLTResultTarget) // Output file name to result log and console. logFile.logTestCaseInit(files[i]); cout << files[i] << endl; const XalanDOMString theXSLFile = h.args.base + dirs[j] + XalanFileUtility::s_pathSep + files[i]; const XalanDOMString theXMLFile = h.generateFileName(theXSLFile,"xml"); const XalanDOMString theOutput = h.args.output + dirs[j] + XalanFileUtility::s_pathSep + files[i]; const XalanDOMString theOutputFile = h.generateFileName(theOutput, "out"); // Do a total end to end transform with no pre parsing of either xsl or xml files. const XSLTResultTarget theResultTarget(theOutputFile); const XSLTInputSource xslInputSource(theXSLFile); const XSLTInputSource xmlInputSource(theXMLFile); const int theResult = transformEngine.transform(xmlInputSource, xslInputSource, theResultTarget); if(theResult != 0) { logFile.logTestCaseClose("Done","Fail"); cerr << "XalanError: \n" << transformEngine.getLastError(); } else { logFile.logTestCaseClose("Done","Pass"); } } } } // Check to see if -sub cmd-line directory was processed correctly. if (!foundDir) { cout << "Specified test directory: \"" << h.args.sub << "\" not found" << endl; } logFile.logTestFileClose("Memory Testing: ", "Done"); logFile.close(); } catch(...) { cerr << "Exception caught!!!" << endl << endl; theResult = -1; } } } catch(...) { cerr << "Initialization of testing harness failed!" << endl << endl; theResult = -1; } return theResult; } int main( int argc, char* argv[]) { #if !defined(NDEBUG) && defined(_MSC_VER) _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); #endif int theResult = 0; try { XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XALAN(XalanTransformer) // Call the static initializers for xerces and xalan, and create a transformer // XMLPlatformUtils::Initialize(); XalanTransformer::initialize(); theResult = runTests(argc, argv); XalanTransformer::terminate(); XMLPlatformUtils::Terminate(); XalanTransformer::ICUCleanUp(); } catch(...) { cerr << "Initialization failed!" << endl << endl; theResult = -1; } return theResult; } xalan-c-1.11/c/Tests/Memory/Memory.vcproj0000664000175000000640000001534711731656104017260 0ustar stevesamba xalan-c-1.11/c/Tests/Memory/TestBlock.cpp0000664000175000000640000001562511731656104017160 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if defined(_MSC_VER) #pragma warning(disable: 4127 4251 4511 4512 4514 4702 4710 4711 4786 4097; error: 4150 4172 4238 4239 4715) #if defined(_DEBUG) #include #endif #endif #include "ArenaBlock.hpp" #include "ReusableArenaBlock.hpp" #include "ArenaAllocator.hpp" #include "ReusableArenaAllocator.hpp" #include "StringArenaAllocator.hpp" #include "ReusableStringArenaAllocator.hpp" #include #include #include #include #include template class NullFunctor { public: void operator()(const Type* /* theType */) const { } }; template class DeleteFunctor { public: void operator()(const Type* theType) const { delete theType; } }; using std::cin; using std::cout; using std::endl; using std::for_each; using std::string; using std::vector; void Usage() { cout << endl << "Usage: ArenaBlock " << endl; } int main( int argc, char* argv[]) { if (argc != 3) { Usage(); } else { const size_t theCount = atol(argv[1]); const size_t theBlockCount = atol(argv[2]); if (theCount <= 0 || theBlockCount <= 0) { Usage(); } else { vector theStringVector; theStringVector.reserve(theCount); clock_t theStartClock = 0; #if defined(_MSC_VER) && defined(_DEBUG) // Send all reports to STDOUT _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDOUT); _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDOUT); _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDOUT); #endif { theStartClock = clock(); #if defined(_MSC_VER) && defined(_DEBUG) _CrtMemState theStartState; _CrtMemCheckpoint(&theStartState); #endif StringArenaAllocator m_allocator(theBlockCount); for (size_t i = 0; i < theCount; ++i) { theStringVector.push_back(m_allocator.create("Test string")); } #if defined(_MSC_VER) && defined(_DEBUG) _CrtMemState theEndState; _CrtMemCheckpoint(&theEndState); _CrtMemState theDiffs; _CrtMemDifference(&theDiffs, &theStartState, &theEndState); _CrtMemDumpStatistics(&theDiffs); #endif cout << "Create complete, hit to continue..." << endl; // cin.get(); for_each(theStringVector.begin(), theStringVector.end(), NullFunctor()); } clock_t theEndClock = clock(); cout << "Time to create and delete " << theCount << " strings using the arena allocator was " << theEndClock - theStartClock << " clock ticks." << endl << endl; theStringVector.clear(); { #if defined(_MSC_VER) && defined(_DEBUG) _CrtMemState theStartState; _CrtMemCheckpoint(&theStartState); #endif theStartClock = clock(); ReusableStringArenaAllocator m_allocator(theBlockCount); for (size_t i = 0; i < theCount; ++i) { theStringVector.push_back(m_allocator.create("Test string")); } #if defined(_MSC_VER) && defined(_DEBUG) _CrtMemState theEndState; _CrtMemCheckpoint(&theEndState); _CrtMemState theDiffs; _CrtMemDifference(&theDiffs, &theStartState, &theEndState); _CrtMemDumpStatistics(&theDiffs); #endif cout << "Create complete, hit to continue..." << endl; // cin.get(); for_each(theStringVector.begin(), theStringVector.end(), NullFunctor()); for (size_t j = 0; j < theCount; ++j) { m_allocator.destroy(theStringVector[j]); } } theEndClock = clock(); cout << "Time to create and delete " << theCount << " strings using the reusable arena allocator was " << theEndClock - theStartClock << " clock ticks." << endl << endl; theStringVector.clear(); { theStartClock = clock(); #if defined(_MSC_VER) && defined(_DEBUG) _CrtMemState theStartState; _CrtMemCheckpoint(&theStartState); #endif for (size_t i = 0; i < theCount; ++i) { theStringVector.push_back(new string("Test string")); } #if defined(_MSC_VER) && defined(_DEBUG) _CrtMemState theEndState; _CrtMemCheckpoint(&theEndState); _CrtMemState theDiffs; _CrtMemDifference(&theDiffs, &theStartState, &theEndState); _CrtMemDumpStatistics(&theDiffs); #endif cout << "Create complete, hit to continue..." << endl; // cin.get(); for_each(theStringVector.begin(), theStringVector.end(), DeleteFunctor()); } theEndClock = clock(); cout << "Time to create and delete " << theCount << " strings using standard new and delete was " << theEndClock - theStartClock << " clock ticks." << endl << endl; } } return 0; } xalan-c-1.11/c/Tests/Memory/Memory.dsp0000664000175000000640000002265611731656104016544 0ustar stevesamba# Microsoft Developer Studio Project File - Name="Memory" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=Memory - Win32 Debug !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 "Memory.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 "Memory.mak" CFG="Memory - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "Memory - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "Memory - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "Memory - Win32 Release with symbols" (based on "Win32 (x86) Console Application") !MESSAGE "Memory - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "Memory - Win64 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)" == "Memory - 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 "..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release\Memory" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /machine:I386 /out:"..\..\Build\Win32\VC6\Release/stressmem.exe" /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "Memory - 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 "..\..\Build\Win32\VC6\debug" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\debug\Memory" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /GR /GX /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:I386 /out:"..\..\Build\Win32\VC6\Debug/stressmem.exe" /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "Memory - Win32 Release with symbols" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Memory___Win32_Release_with_symbols" # PROP BASE Intermediate_Dir "Memory___Win32_Release_with_symbols" # PROP BASE Ignore_Export_Lib 0 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "..\..\Build\Win32\VC6\Release.symbols" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release.symbols\Memory" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "..\harness\\" /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 ..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release\xerces-c_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\Build\Win32\VC6\Release/stressmem.exe" # ADD LINK32 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:I386 /out:"..\..\Build\Win32\VC6\Release.symbols/stressmem.exe" /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /fixed:no # SUBTRACT LINK32 /pdb:none !ELSEIF "$(CFG)" == "Memory - Win64 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 "..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\Release\Memory" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /machine:IX86 /out:"..\..\Build\Win64\VC6\Release/stressmem.exe" /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "Memory - Win64 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 "..\..\Build\Win64\VC6\debug" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\debug\Memory" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /GR /GX /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:IX86 /out:"..\..\Build\Win64\VC6\Debug/stressmem.exe" /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "Memory - Win32 Release" # Name "Memory - Win32 Debug" # Name "Memory - Win32 Release with symbols" # Name "Memory - Win64 Release" # Name "Memory - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\Stressmem.cpp !IF "$(CFG)" == "Memory - Win32 Release" # ADD CPP /MD /Zi !ELSEIF "$(CFG)" == "Memory - Win32 Debug" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Debug\Memory" # ADD CPP /MDd /Zi !ELSEIF "$(CFG)" == "Memory - Win32 Release with symbols" # ADD BASE CPP /MD /Zi # ADD CPP /MD /Zi !ELSEIF "$(CFG)" == "Memory - Win64 Release" # ADD CPP /MD /Zi !ELSEIF "$(CFG)" == "Memory - Win64 Debug" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\Debug\Memory" # ADD CPP /MDd /Zi !ENDIF # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Tests/C-API/0002775000175000000640000000000012037700125014065 5ustar stevesambaxalan-c-1.11/c/Tests/C-API/CAPI.dsp0000664000175000000640000001507511731656104015326 0ustar stevesamba# Microsoft Developer Studio Project File - Name="CAPI" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=CAPI - Win32 Debug !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 "CAPI.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 "CAPI.mak" CFG="CAPI - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "CAPI - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "CAPI - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "CAPI - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "CAPI - Win64 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)" == "CAPI - 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 "..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release\CAPI" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 /nologo /subsystem:console /machine:I386 /out:"..\..\Build\Win32\VC6\Release/c-api.exe" !ELSEIF "$(CFG)" == "CAPI - 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 "..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Debug\CAPI" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /out:"..\..\Build\Win32\VC6\Debug/c-api.exe" /pdbtype:sept !ELSEIF "$(CFG)" == "CAPI - Win64 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 "..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\Release\CAPI" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 /nologo /subsystem:console /machine:IX86 /out:"..\..\Build\Win64\VC6\Release/c-api.exe" /machine:IA64 !ELSEIF "$(CFG)" == "CAPI - Win64 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 "..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\Debug\CAPI" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 /nologo /subsystem:console /debug /machine:IX86 /out:"..\..\Build\Win64\VC6\Debug/c-api.exe" /pdbtype:sept /machine:IA64 !ENDIF # Begin Target # Name "CAPI - Win32 Release" # Name "CAPI - Win32 Debug" # Name "CAPI - Win64 Release" # Name "CAPI - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=".\c-api.c" # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Tests/C-API/c-api.c0000664000175000000640000000535511731656104015237 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include // This is here for memory leak testing. #if !defined(NDEBUG) && defined(_MSC_VER) #include #endif void Usage() { fprintf(stderr, "Usage: c-api []\n"); } CallbackSizeType OutputHandler( const char* data, CallbackSizeType length, void* handle) { FILE* theHandle = (FILE*)handle; return fwrite(data, sizeof(char), length, theHandle); } void FlushHandler(void* handle) { FILE* theHandle = (FILE*)handle; fflush(theHandle); } int main( int argc, char* argv[]) { #if !defined(NDEBUG) && defined(_MSC_VER) _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); #endif if (argc < 2 || argc > 3) { Usage(); } else { int error = 0; XalanHandle xalan = NULL; XalanInitialize(); xalan = CreateXalanTransformer(); if (xalan == 0) { fprintf(stderr, "Unable to create transformer...\n"); } else { if (argc == 2) { error = XalanTransformToHandler(argv[1], NULL, xalan, stdout, OutputHandler, FlushHandler); } else { error = XalanTransformToHandler(argv[1], argv[2], xalan, stdout, OutputHandler, FlushHandler); } if (error != 0) { fprintf( stderr, "Error transforming. The error code is %d. The message is %s.\n", error, XalanGetLastError(xalan)); } DeleteXalanTransformer(xalan); } XalanTerminate(1); } return 0; } xalan-c-1.11/c/Tests/C-API/CAPI.vcproj0000664000175000000640000001007411731656104016035 0ustar stevesamba xalan-c-1.11/c/Tests/Threads/0002775000175000000640000000000012037700125014666 5ustar stevesambaxalan-c-1.11/c/Tests/Threads/birds.xml0000664000175000000640000027245311731656104016535 0ustar stevesamba Great Tinamou. Highland Tinamou. Little Tinamou. Thicket Tinamou. Slaty-breasted Tinamou. Choco Tinamou. Red-throated Loon. Arctic Loon. Pacific Loon. Common Loon. Yellow-billed Loon. Least Grebe. Pied-billed Grebe. Atitlan Grebe. Horned Grebe. Red-necked Grebe. Eared Grebe. Western Grebe. Clark's Grebe. Yellow-nosed Albatross. (A) Shy Albatross. (A) Black-browed Albatross. (A) Light-mantled Albatross. (A) Wandering Albatross. (A) Laysan Albatross. Black-footed Albatross. Short-tailed Albatross. (N) Northern Fulmar. Kermadec Petrel. (A) Herald Petrel. (A) Murphy's Petrel. (N) Mottled Petrel. (A) Bermuda Petrel. Black-capped Petrel. Juan Fernandez Petrel. (N) Dark-rumped Petrel. White-necked Petrel. (H) Bonin Petrel. (H) Black-winged Petrel. (H, A) Cook's Petrel. (N) Stejneger's Petrel. (A) Bulwer's Petrel. (H) Jouanin's Petrel. (H, A) Parkinson's Petrel. (N) Streaked Shearwater. (A) Cory's Shearwater. (N) Pink-footed Shearwater. (N) Flesh-footed Shearwater. (N) Greater Shearwater. (N) Wedge-tailed Shearwater. Buller's Shearwater. (N) Sooty Shearwater. (N) Short-tailed Shearwater. (N) Christmas Shearwater. (H) Manx Shearwater. Townsend's Shearwater. Black-vented Shearwater. Audubon's Shearwater. Little Shearwater. (A) Wilson's Storm-Petrel. (N) White-faced Storm-Petrel. (A) European Storm-Petrel. (A) Fork-tailed Storm-Petrel. Leach's Storm-Petrel. Ashy Storm-Petrel. Band-rumped Storm-Petrel. (N) Wedge-rumped Storm-Petrel. (N) Black Storm-Petrel. Guadalupe Storm-Petrel. Markham's Storm-Petrel. (A) Tristram's Storm-Petrel. (H) Least Storm-Petrel. White-tailed Tropicbird. Red-billed Tropicbird. Red-tailed Tropicbird. Masked Booby. Blue-footed Booby. Peruvian Booby. (A) Brown Booby. Red-footed Booby. Northern Gannet. American White Pelican. Brown Pelican. Brandt's Cormorant. Neotropic Cormorant. Double-crested Cormorant. Great Cormorant. Red-faced Cormorant. Pelagic Cormorant. Anhinga. Magnificent Frigatebird. Great Frigatebird. Lesser Frigatebird. (A) Pinnated Bittern. American Bittern. Yellow Bittern. (A) Least Bittern. Rufescent Tiger-Heron. Fasciated Tiger-Heron. Bare-throated Tiger-Heron. Great Blue Heron. Gray Heron. (A) Cocoi Heron. Great Egret. Chinese Egret. (A) Little Egret. (A) Western Reef-Heron. (A) Snowy Egret. Little Blue Heron. Tricolored Heron. Reddish Egret. Cattle Egret. Green Heron. Striated Heron. Agami Heron. Capped Heron. Black-crowned Night-Heron. Yellow-crowned Night-Heron. Boat-billed Heron. White Ibis. Scarlet Ibis. (A) Glossy Ibis. White-faced Ibis. Green Ibis. Buff-necked Ibis. (A) Roseate Spoonbill. Jabiru. Wood Stork. Black Vulture. Turkey Vulture. Lesser Yellow-headed Vulture. California Condor. King Vulture. Greater Flamingo. White-faced Whistling-Duck. Black-bellied Whistling-Duck. West Indian Whistling-Duck. Fulvous Whistling-Duck. Bean Goose. (A) Pink-footed Goose. (A) Greater White-fronted Goose. Lesser White-fronted Goose. (A) Emperor Goose. Snow Goose. Ross's Goose. Canada Goose. Hawaiian Goose. (H) Brant. Barnacle Goose. (A) Mute Swan. (I) Trumpeter Swan. Tundra Swan. Whooper Swan. Comb Duck. Orinoco Goose. (A) Muscovy Duck. Wood Duck. Gadwall. Falcated Duck. (A) Eurasian Wigeon. (N) American Wigeon. American Black Duck. Mallard. Mottled Duck. Hawaiian Duck. (H) Laysan Duck. (H) Spot-billed Duck. (A) Blue-winged Teal. Cinnamon Teal. Northern Shoveler. White-cheeked Pintail. Northern Pintail. Garganey. (N) Baikal Teal. (A) Green-winged Teal. Canvasback. Redhead. Common Pochard. (A) Ring-necked Duck. Tufted Duck. Greater Scaup. Lesser Scaup. Steller's Eider. Spectacled Eider. King Eider. Common Eider. Harlequin Duck. Labrador Duck. Surf Scoter. White-winged Scoter. Black Scoter. Oldsquaw. Bufflehead. Common Goldeneye. Barrow's Goldeneye. Smew. (N) Hooded Merganser. Common Merganser. Red-breasted Merganser. Masked Duck. Ruddy Duck. Osprey. Gray-headed Kite. Hook-billed Kite. Swallow-tailed Kite. Pearl Kite. White-tailed Kite. Snail Kite. Slender-billed Kite. Double-toothed Kite. Mississippi Kite. Plumbeous Kite. Bald Eagle. White-tailed Eagle. Steller's Sea-Eagle. (A) Black-collared Hawk. Northern Harrier. Gray Frog-Hawk. (H, A) Tiny Hawk. Sharp-shinned Hawk. Cooper's Hawk. Gundlach's Hawk. Bicolored Hawk. Northern Goshawk. Crane Hawk. Plumbeous Hawk. Barred Hawk. Semiplumbeous Hawk. White Hawk. Gray Hawk. Common Black-Hawk. Mangrove Black-Hawk. Great Black-Hawk. Savanna Hawk. Harris's Hawk. Solitary Eagle. Roadside Hawk. Red-shouldered Hawk. Ridgway's Hawk. Broad-winged Hawk. Short-tailed Hawk. Swainson's Hawk. White-tailed Hawk. Zone-tailed Hawk. Hawaiian Hawk. (H) Red-tailed Hawk. Ferruginous Hawk. Rough-legged Hawk. Crested Eagle. Harpy Eagle. Golden Eagle. Black-and-white Hawk-Eagle. Black Hawk-Eagle. Ornate Hawk-Eagle. Barred Forest-Falcon. Slaty-backed Forest-Falcon. Collared Forest-Falcon. Red-throated Caracara. Crested Caracara. Yellow-headed Caracara. Laughing Falcon. Eurasian Kestrel. (A) American Kestrel. Merlin. Eurasian Hobby. (A) Aplomado Falcon. Bat Falcon. Orange-breasted Falcon. Gyrfalcon. Peregrine Falcon. Prairie Falcon. Plain Chachalaca. Gray-headed Chachalaca. Rufous-vented Chachalaca. Rufous-bellied Chachalaca. West Mexican Chachalaca. White-bellied Chachalaca. Crested Guan. Black Guan. Highland Guan. Horned Guan. Great Curassow. Chukar. (I) Gray Francolin. (H, I) Black Francolin. (H, I) Erckel's Francolin. (H, I) Himalayan Snowcock. (I) Gray Partridge. (I) Japanese Quail. (H, I) Red Junglefowl. (H, I) Kalij Pheasant. (H, I) Ring-necked Pheasant. (I) Common Peafowl. (I) Ruffed Grouse. Sage Grouse. Spruce Grouse. Willow Ptarmigan. Rock Ptarmigan. White-tailed Ptarmigan. Blue Grouse. Sharp-tailed Grouse. Greater Prairie-Chicken. Lesser Prairie-Chicken. Wild Turkey. Ocellated Turkey. Helmeted Guineafowl. (I) Bearded Wood-Partridge. Long-tailed Wood-Partridge. Buffy-crowned Wood-Partridge. Mountain Quail. Scaled Quail. Elegant Quail. California Quail. Gambel's Quail. Banded Quail. Northern Bobwhite. Black-throated Bobwhite. Crested Bobwhite. Marbled Wood-Quail. Black-eared Wood-Quail. Tacarcuna Wood-Quail. Black-breasted Wood-Quail. Spotted Wood-Quail. Singing Quail. Montezuma Quail. Ocellated Quail. Tawny-faced Quail. Yellow Rail. Ocellated Crake. (A) Ruddy Crake. White-throated Crake. Gray-breasted Crake. Black Rail. Corn Crake. (A) Clapper Rail. King Rail. Virginia Rail. Rufous-necked Wood-Rail. Gray-necked Wood-Rail. Uniform Crake. Laysan Rail. (H) Spotted Crake. (A) Sora. Hawaiian Rail. (H) Hawaiian Rail. (H) Yellow-breasted Crake. Colombian Crake. Paint-billed Crake. Zapata Rail. Spotted Rail. Purple Gallinule. Azure Gallinule. (A) Common Moorhen. Eurasian Coot. (A) Hawaiian Coot. (H) American Coot. Caribbean Coot. Sungrebe. Sunbittern. Limpkin. Sandhill Crane. Common Crane. (A) Whooping Crane. Double-striped Thick-knee. Northern Lapwing. (A) Southern Lapwing. (N) Black-bellied Plover. European Golden-Plover. (A) American Golden-Plover. Pacific Golden-Plover. Mongolian Plover. (N) Collared Plover. Snowy Plover. Wilson's Plover. Common Ringed Plover. Semipalmated Plover. Piping Plover. Little Ringed Plover. (A) Killdeer. Mountain Plover. Eurasian Dotterel. Eurasian Oystercatcher. (A) American Oystercatcher. Black Oystercatcher. Black-winged Stilt. (A) Black-necked Stilt. American Avocet. Northern Jacana. Wattled Jacana. Common Greenshank. (N) Greater Yellowlegs. Lesser Yellowlegs. Marsh Sandpiper. (A) Common Redshank. (A) Spotted Redshank. (N) Wood Sandpiper. Green Sandpiper. (A) Solitary Sandpiper. Willet. Wandering Tattler. Gray-tailed Tattler. (N) Common Sandpiper. (N) Spotted Sandpiper. Terek Sandpiper. (N) Upland Sandpiper. Little Curlew. (A) Eskimo Curlew. Whimbrel. Bristle-thighed Curlew. Far Eastern Curlew. (N) Slender-billed Curlew. (A) Eurasian Curlew. (A) Long-billed Curlew. Black-tailed Godwit. (N) Hudsonian Godwit. Bar-tailed Godwit. Marbled Godwit. Ruddy Turnstone. Black Turnstone. Surfbird. Great Knot. (A) Red Knot. Sanderling. Semipalmated Sandpiper. Western Sandpiper. Red-necked Stint. Little Stint. (N) Temminck's Stint. (A) Long-toed Stint. (N) Least Sandpiper. White-rumped Sandpiper. Baird's Sandpiper. Pectoral Sandpiper. Sharp-tailed Sandpiper. (N) Purple Sandpiper. Rock Sandpiper. Dunlin. Curlew Sandpiper. Stilt Sandpiper. Spoonbill Sandpiper. (A) Broad-billed Sandpiper. (A) Buff-breasted Sandpiper. Ruff. Short-billed Dowitcher. Long-billed Dowitcher. Jack Snipe. (A) Common Snipe. Pin-tailed Snipe. (A) Eurasian Woodcock. (A) American Woodcock. Wilson's Phalarope. Red-necked Phalarope. Red Phalarope. Oriental Pratincole. (A) Great Skua. (N) South Polar Skua. (N) Pomarine Jaeger. Parasitic Jaeger. Long-tailed Jaeger. Laughing Gull. Franklin's Gull. Little Gull. Black-headed Gull. Bonaparte's Gull. Heermann's Gull. Gray Gull. (A) Band-tailed Gull. (A) Black-tailed Gull. (A) Mew Gull. Ring-billed Gull. California Gull. Herring Gull. Yellow-legged Gull. (A) Thayer's Gull. Iceland Gull. Lesser Black-backed Gull. (N) Slaty-backed Gull. Yellow-footed Gull. Western Gull. Glaucous-winged Gull. Glaucous Gull. Great Black-backed Gull. Sabine's Gull. Black-legged Kittiwake. Red-legged Kittiwake. Ross's Gull. Ivory Gull. Gull-billed Tern. Caspian Tern. Royal Tern. Elegant Tern. Great Crested Tern. (H, A) Sandwich Tern. Roseate Tern. Common Tern. Arctic Tern. Forster's Tern. Little Tern. (H, A) Least Tern. Yellow-billed Tern. (A) Aleutian Tern. Gray-backed Tern. (H) Bridled Tern. Sooty Tern. Large-billed Tern. (A) White-winged Tern. (A) Whiskered Tern. (A) Black Tern. Inca Tern. (A) Brown Noddy. Black Noddy. Blue-gray Noddy. (H) Common White-Tern. (H) Black Skimmer. Dovekie. Common Murre. Thick-billed Murre. Razorbill. Great Auk. Black Guillemot. Pigeon Guillemot. Long-billed Murrelet. (A) Marbled Murrelet. Kittlitz's Murrelet. Xantus's Murrelet. Craveri's Murrelet. Ancient Murrelet. Cassin's Auklet. Parakeet Auklet. Least Auklet. Whiskered Auklet. Crested Auklet. Rhinoceros Auklet. Atlantic Puffin. Horned Puffin. Tufted Puffin. Chestnut-bellied Sandgrouse. (H, I) Rock Dove. (I) Pale-vented Pigeon. Scaled Pigeon. Scaly-naped Pigeon. White-crowned Pigeon. Red-billed Pigeon. Plain Pigeon. Band-tailed Pigeon. Ring-tailed Pigeon. Ruddy Pigeon. Short-billed Pigeon. Oriental Turtle-Dove. (A) Ringed Turtle-Dove. (I) European Turtle-Dove. (A) Eurasian Collared-Dove. (I) Spotted Dove. (I) Zebra Dove. (H, I) White-winged Dove. Zenaida Dove. Eared Dove. Mourning Dove. Socorro Dove. Passenger Pigeon. Inca Dove. Common Ground-Dove. Plain-breasted Ground-Dove. Ruddy Ground-Dove. Blue Ground-Dove. Maroon-chested Ground-Dove. White-tipped Dove. Gray-fronted Dove. Grenada Dove. Caribbean Dove. Gray-chested Dove. Olive-backed Quail-Dove. Key West Quail-Dove. Bridled Quail-Dove. White-faced Quail-Dove. Chiriqui Quail-Dove. Tuxtla Quail-Dove. Purplish-backed Quail-Dove. Buff-fronted Quail-Dove. Russet-crowned Quail-Dove. Gray-headed Quail-Dove. Crested Quail-Dove. Violaceous Quail-Dove. Ruddy Quail-Dove. Blue-headed Quail-Dove. Budgerigar. (I) Rose-ringed Parakeet. (I) Painted Parakeet. Sulphur-winged Parakeet. Monk Parakeet. (I) Carolina Parakeet. Green Parakeet. Pacific Parakeet. Crimson-fronted Parakeet. Hispaniolan Parakeet. Cuban Parakeet. Olive-throated Parakeet. Orange-fronted Parakeet. Brown-throated Parakeet. Chestnut-fronted Macaw. Military Macaw. Great Green Macaw. Red-and-green Macaw. Scarlet Macaw. Cuban Macaw. Blue-and-yellow Macaw. Thick-billed Parrot. Maroon-fronted Parrot. Barred Parakeet. Green-rumped Parrotlet. Mexican Parrotlet. Spectacled Parrotlet. Orange-chinned Parakeet. White-winged Parakeet. (I) Red-fronted Parrotlet. Blue-fronted Parrotlet. Saffron-headed Parrot. Brown-hooded Parrot. Blue-headed Parrot. White-crowned Parrot. White-fronted Parrot. Yellow-lored Parrot. Cuban Parrot. Yellow-billed Parrot. Hispaniolan Parrot. Puerto Rican Parrot. Black-billed Parrot. Red-crowned Parrot. Lilac-crowned Parrot. Red-lored Parrot. Mealy Parrot. Yellow-headed Parrot. Yellow-naped Parrot. Yellow-crowned Parrot. Red-necked Parrot. St. Lucia Parrot. St. Vincent Parrot. Imperial Parrot. Common Cuckoo. (A) Oriental Cuckoo. (A) Black-billed Cuckoo. Yellow-billed Cuckoo. Pearly-breasted Cuckoo. (A) Mangrove Cuckoo. Cocos Cuckoo. Dark-billed Cuckoo. (A) Great Lizard-Cuckoo. Jamaican Lizard-Cuckoo. Hispaniolan Lizard-Cuckoo. Puerto Rican Lizard-Cuckoo. Bay-breasted Cuckoo. Chestnut-bellied Cuckoo. Squirrel Cuckoo. Little Cuckoo. Striped Cuckoo. Pheasant Cuckoo. Lesser Ground-Cuckoo. Lesser Roadrunner. Greater Roadrunner. Rufous-vented Ground-Cuckoo. Greater Ani. Smooth-billed Ani. Groove-billed Ani. Barn Owl. Ashy-faced Owl. Flammulated Owl. Oriental Scops-Owl. (A) Western Screech-Owl. Eastern Screech-Owl. Balsas Screech-Owl. Pacific Screech-Owl. Whiskered Screech-Owl. Tropical Screech-Owl. Bearded Screech-Owl. Vermiculated Screech-Owl. Bare-shanked Screech-Owl. Puerto Rican Screech-Owl. Cuban Screech-Owl. Crested Owl. Spectacled Owl. Great Horned Owl. Snowy Owl. Northern Hawk Owl. Northern Pygmy-Owl. Andean Pygmy-Owl. Central American Pygmy-Owl. Tamaulipas Pygmy-Owl. Colima Pygmy-Owl. Ferruginous Pygmy-Owl. Cuban Pygmy-Owl. Elf Owl. Burrowing Owl. Mottled Owl. Black-and-white Owl. Spotted Owl. Barred Owl. Fulvous Owl. Great Gray Owl. Long-eared Owl. Stygian Owl. Short-eared Owl. Striped Owl. Jamaican Owl. Boreal Owl. Northern Saw-whet Owl. Unspotted Saw-whet Owl. Short-tailed Nighthawk. Lesser Nighthawk. Common Nighthawk. Antillean Nighthawk. Common Pauraque. Common Poorwill. Jamaican Pauraque. Least Pauraque. Eared Poorwill. Yucatan Poorwill. Ocellated Poorwill. Chuck-will's-widow. Rufous Nightjar. Greater Antillean Nightjar. Tawny-collared Nightjar. Yucatan Nightjar. Buff-collared Nightjar. Whip-poor-will. Puerto Rican Nightjar. Dusky Nightjar. White-tailed Nightjar. Spot-tailed Nightjar. Jungle Nightjar. (A) Great Potoo. Common Potoo. Northern Potoo. Oilbird. (A) Black Swift. White-fronted Swift. White-chinned Swift. Spot-fronted Swift. Chestnut-collared Swift. White-collared Swift. White-naped Swift. Chimney Swift. Vaux's Swift. Chapman's Swift. (A) Short-tailed Swift. Ashy-tailed Swift. (A) Band-rumped Swift. Gray-rumped Swift. Lesser Antillean Swift. White-throated Needletail. (A) Guam Swiftlet. (H, I) Common Swift. (A) Fork-tailed Swift. (A) Alpine Swift. (A) White-throated Swift. Lesser Swallow-tailed Swift. Great Swallow-tailed Swift. Antillean Palm-Swift. Bronzy Hermit. Rufous-breasted Hermit. Band-tailed Barbthroat. Green Hermit. Long-tailed Hermit. Pale-bellied Hermit. Little Hermit. White-tipped Sicklebill. Tooth-billed Hummingbird. Green-fronted Lancebill. Scaly-breasted Hummingbird. Wedge-tailed Sabrewing. Long-tailed Sabrewing. Rufous Sabrewing. Violet Sabrewing. White-necked Jacobin. Brown Violet-ear. Green Violet-ear. Green-breasted Mango. Black-throated Mango. Veraguan Mango. Antillean Mango. Green Mango. Jamaican Mango. Purple-throated Carib. Green-throated Carib. Ruby-topaz Hummingbird. Antillean Crested Hummingbird. Violet-headed Hummingbird. Emerald-chinned Hummingbird. Short-crested Coquette. Rufous-crested Coquette. Black-crested Coquette. White-crested Coquette. Green Thorntail. Golden-crowned Emerald. Cozumel Emerald. Canivet's Emerald. Garden Emerald. Cuban Emerald. Brace's Emerald. Hispaniolan Emerald. Puerto Rican Emerald. Dusky Hummingbird. Broad-billed Hummingbird. Blue-headed Hummingbird. Mexican Woodnymph. Violet-crowned Woodnymph. Green-crowned Woodnymph. Fiery-throated Hummingbird. Violet-bellied Hummingbird. Sapphire-throated Hummingbird. Blue-headed Sapphire. Blue-throated Goldentail. White-eared Hummingbird. Xantus's Hummingbird. Violet-capped Hummingbird. Rufous-cheeked Hummingbird. Streamertail. White-bellied Emerald. Honduran Emerald. Blue-chested Hummingbird. Charming Hummingbird. Mangrove Hummingbird. Azure-crowned Hummingbird. Indigo-capped Hummingbird. Berylline Hummingbird. Blue-tailed Hummingbird. Steely-vented Hummingbird. Snowy-bellied Hummingbird. Rufous-tailed Hummingbird. Buff-bellied Hummingbird. Cinnamon Hummingbird. Violet-crowned Hummingbird. Green-fronted Hummingbird. Stripe-tailed Hummingbird. Blue-capped Hummingbird. White-tailed Hummingbird. Black-bellied Hummingbird. White-tailed Emerald. Coppery-headed Emerald. Snowcap. White-vented Plumeleteer. Bronze-tailed Plumeleteer. Green-throated Mountain-gem. Green-breasted Mountain-gem. Amethyst-throated Hummingbird. Blue-throated Hummingbird. White-bellied Mountain-gem. Purple-throated Mountain-gem. White-throated Mountain-gem. Garnet-throated Hummingbird. Green-crowned Brilliant. Magnificent Hummingbird. Greenish Puffleg. Purple-crowned Fairy. Long-billed Starthroat. Plain-capped Starthroat. Bahama Woodstar. Magenta-throated Woodstar. Purple-throated Woodstar. Slender Sheartail. Mexican Sheartail. Sparkling-tailed Hummingbird. Lucifer Hummingbird. Beautiful Hummingbird. Ruby-throated Hummingbird. Black-chinned Hummingbird. Vervain Hummingbird. Bee Hummingbird. Anna's Hummingbird. Costa's Hummingbird. Calliope Hummingbird. Bumblebee Hummingbird. Wine-throated Hummingbird. Broad-tailed Hummingbird. Rufous Hummingbird. Allen's Hummingbird. Volcano Hummingbird. Glow-throated Hummingbird. Scintillant Hummingbird. Cuban Trogon. Hispaniolan Trogon. Black-headed Trogon. Citreoline Trogon. White-tailed Trogon. Baird's Trogon. Violaceous Trogon. Mountain Trogon. Elegant Trogon. Collared Trogon. Orange-bellied Trogon. Black-throated Trogon. Black-tailed Trogon. Slaty-tailed Trogon. Lattice-tailed Trogon. Eared Trogon. Golden-headed Quetzal. Resplendent Quetzal. Eurasian Hoopoe. (A) Cuban Tody. Broad-billed Tody. Narrow-billed Tody. Jamaican Tody. Puerto Rican Tody. Tody Motmot. Blue-throated Motmot. Russet-crowned Motmot. Blue-crowned Motmot. Rufous Motmot. Keel-billed Motmot. Broad-billed Motmot. Turquoise-browed Motmot. Ringed Kingfisher. Belted Kingfisher. Amazon Kingfisher. Green Kingfisher. Green-and-rufous Kingfisher. American Pygmy Kingfisher. Barred Puffbird. White-necked Puffbird. Black-breasted Puffbird. Pied Puffbird. White-whiskered Puffbird. Lanceolated Monklet. Gray-cheeked Nunlet. White-fronted Nunbird. Dusky-backed Jacamar. Rufous-tailed Jacamar. Great Jacamar. Spot-crowned Barbet. Red-headed Barbet. Prong-billed Barbet. Emerald Toucanet. Collared Aracari. Fiery-billed Aracari. Yellow-eared Toucanet. Keel-billed Toucan. Chestnut-mandibled Toucan. Eurasian Wryneck. (A) Olivaceous Piculet. Antillean Piculet. Lewis's Woodpecker. Guadeloupe Woodpecker. Puerto Rican Woodpecker. Red-headed Woodpecker. Acorn Woodpecker. Golden-naped Woodpecker. Black-cheeked Woodpecker. Hispaniolan Woodpecker. Jamaican Woodpecker. Golden-cheeked Woodpecker. Gray-breasted Woodpecker. Red-vented Woodpecker. Red-crowned Woodpecker. Gila Woodpecker. Hoffmann's Woodpecker. Golden-fronted Woodpecker. Red-bellied Woodpecker. West Indian Woodpecker. Williamson's Sapsucker. Yellow-bellied Sapsucker. Red-naped Sapsucker. Red-breasted Sapsucker. Cuban Green Woodpecker. Great Spotted Woodpecker. (A) Ladder-backed Woodpecker. Nuttall's Woodpecker. Downy Woodpecker. Hairy Woodpecker. Strickland's Woodpecker. Red-cockaded Woodpecker. White-headed Woodpecker. Three-toed Woodpecker. Black-backed Woodpecker. Smoky-brown Woodpecker. Red-rumped Woodpecker. Rufous-winged Woodpecker. Stripe-cheeked Woodpecker. Golden-green Woodpecker. Golden-olive Woodpecker. Gray-crowned Woodpecker. Spot-breasted Woodpecker. Northern Flicker. Gilded Flicker. Fernandina's Flicker. Cinnamon Woodpecker. Chestnut-colored Woodpecker. Lineated Woodpecker. Pileated Woodpecker. Crimson-bellied Woodpecker. Crimson-crested Woodpecker. Pale-billed Woodpecker. Ivory-billed Woodpecker. Imperial Woodpecker. xalan-c-1.11/c/Tests/Threads/ThreadTestold.cpp0000664000175000000640000002325511731656104020154 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //This is here for the threads. #define WIN32_LEAN_AND_MEAN #include #include #define THREADFUNCTIONRETURN DWORD WINAPI #if !defined(XALAN_NO_NAMESPACES) using std::cerr; using std::cout; using std::endl; using std::ifstream; using std::ios_base; using std::ostrstream; using std::string; #endif // Used to hold compiled stylesheet, and source document. StylesheetRoot* glbStylesheetRoot; //XalanNode* glbSourceDoc; void outputMessage(DWORD id, char msg[]) { ostrstream threadMsg; threadMsg << "\n" << msg << " Thread: " << id << '\0'; cout << threadMsg.str(); threadMsg.freeze(false); } THREADFUNCTIONRETURN theThread(LPVOID param) { // This routine uses compiled stylesheet (glbStylesheetRoot), which is set using the // theProcessor.setStylesheetRoot method. The transform is done using the theProcessor's // process() method. const int number = reinterpret_cast(param); const DWORD theThreadID = GetCurrentThreadId(); // Create the support objects that are necessary for running the processor... DOMSupportDefault theDOMSupport; XercesParserLiaison theParserLiaison(theDOMSupport); XPathSupportDefault theXPathSupport(theDOMSupport); XSLTProcessorEnvSupportDefault theXSLTProcessorEnvSupport; XObjectFactoryDefault theXObjectFactory(theXSLTProcessorEnvSupport, theXPathSupport); XPathFactoryDefault theXPathFactory; // Create a processor...and output start message. XSLTEngineImpl theProcessor( theParserLiaison, theXPathSupport, theXSLTProcessorEnvSupport, theXObjectFactory, theXPathFactory); outputMessage(theThreadID,"Starting "); // Connect the processor to the support object... theXSLTProcessorEnvSupport.setProcessor(&theProcessor); // The execution context uses the same factory support objects as // the processor, since those objects have the same lifetime as // other objects created as a result of the execution. StylesheetExecutionContextDefault ssExecutionContext( theProcessor, theXSLTProcessorEnvSupport, theXPathSupport, theXObjectFactory); // Our input files. The assumption is that the executable will be run // from same directory as the input files. // Generate the input and output file names. ostrstream theFormatterIn, theFormatterOut; theFormatterIn << "Birds.xml" << '\0'; theFormatterOut << "Birds" << number << ".out" << '\0'; //Generate the XML input and output objects. XSLTInputSource theInputSource(theFormatterIn.str()); XSLTResultTarget theResultTarget(theFormatterOut.str()); // Unfreeze the ostrstreams, so the memory is returned... theFormatterIn.freeze(false); theFormatterOut.freeze(false); // Set the stylesheet to be the compiled stylesheet. Then do the transform. // Report both the start of the transform and end of the thread. theProcessor.setStylesheetRoot(glbStylesheetRoot); outputMessage(theThreadID,"Transforming"); theProcessor.process(theInputSource,theResultTarget,ssExecutionContext); outputMessage(theThreadID,"Finishing"); return (0); } void doThreads(int x) { DWORD dwStackSize = 4096; // initial thread stack size LPTHREAD_START_ROUTINE lpStartAddress = (LPTHREAD_START_ROUTINE)theThread; DWORD dwCreationFlags = 0; // creation flags int nThreads = x; std::vector hThreads; hThreads.reserve(nThreads); int i=0; try { cout << endl << "Clock before starting threads: " << clock() << endl; for (i=0; i< nThreads; i++) { HANDLE hThread; DWORD threadID; hThread = CreateThread( 0, dwStackSize, lpStartAddress, // pointer to thread function reinterpret_cast(i), // argument for new thread dwCreationFlags, // creation flags &threadID); assert(hThread != 0); hThreads.push_back(hThread); } WaitForMultipleObjects(hThreads.size(), &hThreads[0], TRUE, INFINITE); cout << endl << "Clock after threads: " << clock() << endl; for (i=0; i< nThreads; i++) CloseHandle(hThreads[i]); } catch(...) { cerr << "Exception caught!!!" << endl << endl; } } int main( int argc, char* /* argv */[]) { if (argc != 1) { cerr << "Usage: ThreadTest" << endl << endl; } else { try { // Call the static initializers... XMLPlatformUtils::Initialize(); XSLTEngineImpl::Initialize(); // Create the necessary stuff of compile the stylesheet. DOMSupportDefault ssDOMSupport; XercesParserLiaison ssParserLiaison(ssDOMSupport); XPathSupportDefault ssXPathSupport(ssDOMSupport); XSLTProcessorEnvSupportDefault ssXSLTProcessorEnvSupport; XObjectFactoryDefault ssXObjectFactory(ssXSLTProcessorEnvSupport, ssXPathSupport); XPathFactoryDefault ssXPathFactory; // Create a processor to compile the stylesheet... XSLTEngineImpl ssProcessor( ssParserLiaison, ssXPathSupport, ssXSLTProcessorEnvSupport, ssXObjectFactory, ssXPathFactory); // Create separate factory support objects so the stylesheet's // factory-created XObject and XPath instances are independent // from processor's. XObjectFactoryDefault ssStylesheetXObjectFactory( ssXSLTProcessorEnvSupport, ssXPathSupport); XPathFactoryDefault ssStylesheetXPathFactory; // Create a stylesheet construction context, using the // stylesheet's factory support objects. StylesheetConstructionContextDefault ssConstructionContext( ssProcessor, ssXSLTProcessorEnvSupport, ssStylesheetXObjectFactory, ssStylesheetXPathFactory); const XalanDOMString theXSLFileName("Birds.xsl"); const XalanDOMString theXMLFileName("Birds.xml"); // Our stylesheet input source... XSLTInputSource ssStylesheetSourceXSL(c_wstr(theXSLFileName)); XSLTInputSource ssStylesheetSourceXML(c_wstr(theXMLFileName)); // Ask the processor to create a StylesheetRoot for the specified // input XSL. This is the compiled stylesheet. We don't have to // delete it, since it is owned by the StylesheetConstructionContext // instance. glbStylesheetRoot = ssProcessor.processStylesheet(ssStylesheetSourceXSL, ssConstructionContext); assert(glbStylesheetRoot != 0); // Create a compiled source tree as well, to use with perThreadCC // glbSourceDoc = ssProcessor.getSourceTreeFromInput(ssStylesheetSourceXML); // assert(glbSourceDoc != 0); doThreads(10); } catch(...) { cerr << "Exception caught!!!" << endl << endl; } } return 0; } xalan-c-1.11/c/Tests/Threads/ThreadTest.cpp0000664000175000000640000004123011731656104017446 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Base header file. Must be first. #include #include #include #include #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include #include #include #include #if defined(WINDOWS_THREAD_FUNCTIONS) #include #include #define WIN32_LEAN_AND_MEAN #include #elif defined(XALAN_POSIX2_AVAILABLE) #include // This is a workaround for a Tru64 compiler bug... #if defined(XALAN_STRICT_ANSI_HEADERS) && defined(TRU64) #include typedef long sigjmp_buf[_JBLEN]; #endif #include #include #else #error Unsupported platform! #endif XALAN_USING_STD(cerr) XALAN_USING_STD(cout) XALAN_USING_STD(endl) #if defined(XALAN_STRICT_ANSI_HEADERS) using std::atoi; using std::signal; using std::strcmp; #endif // This is here for memory leak testing. #if !defined(NDEBUG) && defined(_MSC_VER) #include #endif typedef XERCES_CPP_NAMESPACE_QUALIFIER XMLMutex XMLMutexType; typedef XERCES_CPP_NAMESPACE_QUALIFIER XMLMutexLock XMLMutexLockType; class SynchronizedCounter { public: SynchronizedCounter(); ~SynchronizedCounter(); void increment(); void decrement(); long getCounter() const; private: XMLMutexType m_mutex; long m_counter; }; SynchronizedCounter::SynchronizedCounter() : m_mutex(), m_counter(0) { } SynchronizedCounter::~SynchronizedCounter() { } void SynchronizedCounter::increment() { const XMLMutexLockType theLock(&m_mutex); if (m_counter < LONG_MAX) { ++m_counter; } } void SynchronizedCounter::decrement() { const XMLMutexLockType theLock(&m_mutex); if (m_counter > 0) { --m_counter; } } long SynchronizedCounter::getCounter() const { return m_counter; } struct ThreadInfo { ThreadInfo( long theThreadNumber = 0L, SynchronizedCounter* theCounter = 0) : m_threadNumber(theThreadNumber), m_counter(theCounter), m_done(false) { } long m_threadNumber; SynchronizedCounter* m_counter; bool m_done; }; XALAN_USING_XALAN(XalanCompiledStylesheet) XALAN_USING_XALAN(XalanDOMChar) XALAN_USING_XALAN(XalanDOMString) XALAN_USING_XALAN(XalanParsedSource) // Used to hold compiled stylesheet and pre-parsed source... const XalanCompiledStylesheet* glbCompiledStylesheet = 0; const XalanParsedSource* glbParsedSource = 0; bool fContinue = true; const XalanDOMChar* theStylesheetFileName = 0; const XalanDOMChar* theSourceFileName = 0; #if defined(WINDOWS_THREAD_FUNCTIONS) static BOOL __stdcall signalHandler(DWORD theSignalType) { if (theSignalType == CTRL_C_EVENT || theSignalType == CTRL_BREAK_EVENT) { fContinue = false; return TRUE; } else { return FALSE; } } #elif defined(XALAN_POSIX2_AVAILABLE) extern "C" { static void signalHandler(int) { fContinue = false; } } #else #error Unsupported platform! #endif #if defined(WINDOWS_THREAD_FUNCTIONS) extern "C" { void thePreparsedThreadRoutine(void* param); typedef void (*ThreadRoutineType)(void* param); } void #elif defined(XALAN_POSIX2_AVAILABLE) extern "C" { void* thePreparsedThreadRoutine(void* param); typedef void* (*ThreadRoutineType)(void* param); } void* #else #error Unsupported platform! #endif thePreparsedThreadRoutine(void* param) { // This routine uses compiled stylesheet (glbStylesheetRoot), which is set using the // theProcessor.setStylesheetRoot method. The transform is done using the theProcessor's // process() method. ThreadInfo* const theInfo = reinterpret_cast(param); assert(theInfo != 0); theInfo->m_counter->increment(); XALAN_USING_XALAN(MemoryManager) XALAN_USING_XALAN(XalanMemMgrs) MemoryManager& theManager = XalanMemMgrs::getDefaultXercesMemMgr(); try { XALAN_USING_XALAN(NumberToDOMString) XALAN_USING_XALAN(XalanTransformer) // Our input file. The assumption is that the executable will be run // from same directory as the input files. // Generate the output file name. XalanDOMString theOutputFile("birds", theManager); NumberToDOMString(theInfo->m_threadNumber, theOutputFile); theOutputFile.append(".out"); // Create a transformer... XalanTransformer theTransformer(theManager); XALAN_USING_XALAN(XSLTResultTarget) // Do the transform... theTransformer.transform(*glbParsedSource, glbCompiledStylesheet, XSLTResultTarget( theOutputFile, theManager)); } catch(...) { cerr << "Exception caught in thread " << theInfo->m_threadNumber; } // Decrement the counter because we're done... theInfo->m_counter->decrement(); theInfo->m_done = true; #if defined(XALAN_POSIX2_AVAILABLE) return 0; #endif } #if defined(WINDOWS_THREAD_FUNCTIONS) extern "C" void theUnparsedThreadRoutine(void* param); void #elif defined(XALAN_POSIX2_AVAILABLE) extern "C" void* theUnparsedThreadRoutine(void* param); void* #else #error Unsupported platform! #endif theUnparsedThreadRoutine(void* param) { // This routine compiles a stylesheet and a source document ThreadInfo* const theInfo = reinterpret_cast(param); assert(theInfo != 0); theInfo->m_counter->increment(); try { XALAN_USING_XALAN(NumberToDOMString) XALAN_USING_XALAN(XalanTransformer) // Our input file. The assumption is that the executable will be run // from same directory as the input files. XALAN_USING_XALAN(MemoryManager) XALAN_USING_XALAN(XalanMemMgrs) MemoryManager& theManager = XalanMemMgrs::getDefaultXercesMemMgr(); // Generate the output file name. XalanDOMString theOutputFile("birds", theManager); NumberToDOMString(theInfo->m_threadNumber, theOutputFile); theOutputFile.append(".out"); // Create a transformer... XalanTransformer theTransformer( theManager ); assert(theSourceFileName != 0 && theStylesheetFileName != 0); XALAN_USING_XALAN(XSLTResultTarget) // Do the transform... theTransformer.transform( theSourceFileName, theStylesheetFileName, XSLTResultTarget( theOutputFile, theManager)); } catch(...) { cerr << "Exception caught in thread " << theInfo->m_threadNumber; } // Decrement the counter because we're done... theInfo->m_counter->decrement(); theInfo->m_done = true; #if defined(XALAN_POSIX2_AVAILABLE) return 0; #endif } inline void doSleep(unsigned int theMilliseconds) { #if defined(WINDOWS_THREAD_FUNCTIONS) Sleep(theMilliseconds); #elif defined(XALAN_POSIX2_AVAILABLE) usleep(theMilliseconds * 10); #else #error Unsupported platform! #endif } bool createThread( ThreadInfo& theThreadInfo, ThreadRoutineType theThreadRoutine) { theThreadInfo.m_done = false; #if defined(WINDOWS_THREAD_FUNCTIONS) const unsigned long theThreadID = _beginthread(theThreadRoutine, 4096, reinterpret_cast(&theThreadInfo)); if (theThreadID == unsigned(-1)) { theThreadInfo.m_done = true; return false; } else { return true; } #elif defined(XALAN_POSIX2_AVAILABLE) pthread_t theThread; const int theResult = pthread_create(&theThread, 0, theThreadRoutine, (void*)&theThreadInfo); if (theResult != 0) { theThreadInfo.m_done = true; return false; } else { #if defined(OS390) pthread_detach(&theThread); #else pthread_detach(theThread); #endif return true; } #else #error Unsupported platform! #endif } void doCountedThreads( const SynchronizedCounter& theCounter, clock_t& theClock) { cout << "Waiting for active threads to finish..." << endl; unsigned int theCheckCount = 0; do { doSleep(2000); // Check a couple of times, just in case, since // getCounter() is not synchronized... if (theCounter.getCounter() == 0) { if (theCheckCount == 0) { theClock = clock(); } ++theCheckCount; } } while(theCheckCount < 2); } void startThread( ThreadInfo theThreadInfo[], long theThreadNumber) { bool fResult = false; const bool fPreparsed = theThreadNumber % 2 == 0 ? true : false; if (fPreparsed == true) { fResult = createThread(theThreadInfo[theThreadNumber], thePreparsedThreadRoutine); } else { fResult = createThread(theThreadInfo[theThreadNumber], theUnparsedThreadRoutine); } if (fResult == false) { cerr << endl << "Unable to create thread!" << endl; } else { cout << "Started thread number " << theThreadNumber << ", using "; if (fPreparsed == true) { cout << "pre-parsed documents." << endl; } else { cout << "unparsed documents." << endl; } } } void doContinuousThreads( const SynchronizedCounter& theCounter, ThreadInfo theThreadInfo[], long theThreadCount, clock_t& theClock) { while(fContinue == true) { if (theCounter.getCounter() < theThreadCount) { for (long i = 0; i < theThreadCount && fContinue == true; ++i) { if (theThreadInfo[i].m_done == true) { startThread(theThreadInfo, i); } } } } doCountedThreads(theCounter, theClock); } void doThreads( long theThreadCount, bool fContinuous) { if (fContinuous == true) { #if defined(WINDOWS_THREAD_FUNCTIONS) SetConsoleCtrlHandler( signalHandler, TRUE); #elif defined(XALAN_POSIX2_AVAILABLE) signal(SIGINT, signalHandler); #else #error Unsupported platform! #endif cout << endl << "Running in continuous mode." << endl; } cout << endl << "Starting " << theThreadCount << " threads." << endl; XALAN_USING_XALAN(XalanArrayAutoPtr) XalanArrayAutoPtr theThreadInfo(new ThreadInfo[theThreadCount]); try { cout << endl << "Clock before starting threads: " << clock() << endl; SynchronizedCounter theCounter; long i = 0; while (i < theThreadCount && fContinue == true) { theThreadInfo[i].m_threadNumber = i; theThreadInfo[i].m_counter = &theCounter; startThread(theThreadInfo.get(), i); ++i; } clock_t theClock = 0; if (i == 0) { cerr << endl << "No threads were created!" << endl; } else { if (fContinuous == true) { doContinuousThreads( theCounter, theThreadInfo.get(), theThreadCount, theClock); } else { doCountedThreads(theCounter, theClock); } } cout << endl << "Clock after threads: " << theClock << endl; } catch(...) { cerr << "Exception caught!!!" << endl << endl; } } void Usage() { cerr << "Usage: ThreadTest [-c] [count]" << endl << endl; } int main( int argc, char* argv[]) { #if !defined(NDEBUG) && defined(_MSC_VER) _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); #endif if (argc > 3) { Usage(); } else { bool fContinuous = false; int threadCount = 0; if (argc == 1) { threadCount = 60; } else { if (strcmp(argv[1], "-c") == 0) { fContinuous = true; } if (argc == 2) { if (fContinuous == true) { threadCount = 60; } else { threadCount = atoi(argv[1]); } } else if (argc == 3) { if (fContinuous == true) { threadCount = atoi(argv[2]); } else { Usage(); } } } if (threadCount > 0) { try { XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XALAN(XalanTransformer) // Initialize Xerces... XMLPlatformUtils::Initialize(); // Initialize Xalan... XalanTransformer::initialize(); try { // Create a XalanTransformer. We won't actually use this to transform -- // it's just acting as a factory for the compiled stylesheet and // pre-parsed source document. Note that we can't let the individual // threads use this as a factory without serializing access to it, but // we can share the stylesheet and source document. XALAN_USING_XALAN(MemoryManager) XALAN_USING_XALAN(XalanMemMgrs) MemoryManager& theManager = XalanMemMgrs::getDefaultXercesMemMgr(); XalanTransformer theXalanTransformer(theManager); const XalanDOMString theXSLFileName("birds.xsl", theManager); theStylesheetFileName = theXSLFileName.c_str(); theXalanTransformer.compileStylesheet(theStylesheetFileName, glbCompiledStylesheet); assert(glbCompiledStylesheet != 0); // Compile the XML source document as well. All threads will use // this binary representation of the source tree. const XalanDOMString theXMLFileName("birds.xml", theManager); theSourceFileName = theXMLFileName.c_str(); theXalanTransformer.parseSource(theSourceFileName, glbParsedSource); assert(glbParsedSource != 0); doThreads(threadCount, fContinuous); theStylesheetFileName = 0; theSourceFileName = 0; } catch(...) { cerr << "Exception caught!!!" << endl << endl; } // Terminate Xalan... XalanTransformer::terminate(); // Terminate Xerces... XMLPlatformUtils::Terminate(); // Clean up the ICU, if it's integrated. XalanTransformer::ICUCleanUp(); } catch(...) { cerr << "Initialization failed!!!" << endl << endl; } } } return 0; } xalan-c-1.11/c/Tests/Threads/birds.xsl0000664000175000000640000000246211731656104016532 0ustar stevesamba Order is: Family is: SubFamily is xalan-c-1.11/c/Tests/Threads/ThreadTest.vcproj0000664000175000000640000001477411731656104020204 0ustar stevesamba xalan-c-1.11/c/Tests/Threads/ThreadTest.dsp0000664000175000000640000001647311731656104017465 0ustar stevesamba# Microsoft Developer Studio Project File - Name="ThreadTest" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=ThreadTest - Win32 Debug !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 "ThreadTest.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 "ThreadTest.mak" CFG="ThreadTest - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ThreadTest - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "ThreadTest - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "ThreadTest - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "ThreadTest - Win64 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)" == "ThreadTest - 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 "..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release\ThreadTest" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:I386 /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" # SUBTRACT LINK32 /pdb:none !ELSEIF "$(CFG)" == "ThreadTest - 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 "..\..\Build\Win32\VC6\Debug" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Debug\ThreadTest" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # SUBTRACT CPP /X # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" # SUBTRACT LINK32 /pdb:none !ELSEIF "$(CFG)" == "ThreadTest - Win64 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 "..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\Release\ThreadTest" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /machine:IX86 /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "ThreadTest - Win64 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 "..\..\Build\Win64\VC6\Debug" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\Debug\ThreadTest" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # SUBTRACT CPP /X # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 # SUBTRACT LINK32 /pdb:none !ENDIF # Begin Target # Name "ThreadTest - Win32 Release" # Name "ThreadTest - Win32 Debug" # Name "ThreadTest - Win64 Release" # Name "ThreadTest - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\threadtest.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Tests/Errortests/0002775000175000000640000000000012037700125015450 5ustar stevesambaxalan-c-1.11/c/Tests/Errortests/Errortests.dsp0000664000175000000640000002231011731656104020337 0ustar stevesamba# Microsoft Developer Studio Project File - Name="Errortests" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=Errortests - Win32 Debug !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 "Errortests.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 "Errortests.mak" CFG="Errortests - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "Errortests - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "Errortests - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "Errortests - Win32 Release with symbols" (based on "Win32 (x86) Console Application") !MESSAGE "Errortests - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "Errortests - Win64 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)" == "Errortests - 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 "..\..\Build\Win32\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release\Errortests" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /machine:I386 /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "Errortests - 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 "..\..\Build\Win32\VC6\debug" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\debug\Errortests" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /GR /GX /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" !ELSEIF "$(CFG)" == "Errortests - Win32 Release with symbols" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Errortests___Win32_Release_with_symbols" # PROP BASE Intermediate_Dir "Errortests___Win32_Release_with_symbols" # PROP BASE Ignore_Export_Lib 0 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "..\..\Build\Win32\VC6\Release.symbols" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release.symbols\Errortests" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I "..\harness\\" /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 ..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release\xerces-c_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\Build\Win32\VC6\Release/perft.exe" # ADD LINK32 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:I386 /libpath:"..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win32\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /fixed:no # SUBTRACT LINK32 /pdb:none !ELSEIF "$(CFG)" == "Errortests - Win64 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 "..\..\Build\Win64\VC6\Release" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\Release\Errortests" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /stack:0x1f4000 /subsystem:console /pdb:none /machine:IX86 /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Release" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ELSEIF "$(CFG)" == "Errortests - Win64 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 "..\..\Build\Win64\VC6\debug" # PROP Intermediate_Dir "..\..\Build\Win64\VC6\debug\Errortests" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /GR /GX /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src\\" /I ".." /I "$(XERCESCROOT)\src" /I "$(XERCESCROOT)\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /stack:0x1f4000 /subsystem:console /debug /machine:IX86 /pdbtype:sept /libpath:"..\..\..\..\xml-xerces\c\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\Build\Win64\VC6\Debug" /libpath:"$(XERCESCROOT)\lib" /machine:IA64 !ENDIF # Begin Target # Name "Errortests - Win32 Release" # Name "Errortests - Win32 Debug" # Name "Errortests - Win32 Release with symbols" # Name "Errortests - Win64 Release" # Name "Errortests - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\Errortests.cpp !IF "$(CFG)" == "Errortests - Win32 Release" # ADD CPP /MD /Zi !ELSEIF "$(CFG)" == "Errortests - Win32 Debug" # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Debug\Errortests" # ADD CPP /MDd /Zi !ELSEIF "$(CFG)" == "Errortests - Win32 Release with symbols" # ADD BASE CPP /MD /Zi # ADD CPP /MD /Zi !ELSEIF "$(CFG)" == "Errortests - Win64 Release" !ELSEIF "$(CFG)" == "Errortests - Win64 Debug" !ENDIF # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/Tests/Errortests/Errortests.cpp0000664000175000000640000002654011731656104020344 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #include #else #include #include #endif XALAN_USING_STD(cerr) XALAN_USING_STD(cout) XALAN_USING_STD(endl) // XERCES HEADERS... #include // XALAN HEADERS... #include #include #include #include #include #include #include // This is here for memory leak testing. #if !defined(NDEBUG) && defined(_MSC_VER) #include #endif const char* const excludeStylesheets[] = { 0 }; XALAN_USING_XALAN(XalanFileUtility) XALAN_USING_XALAN(XalanDOMString) void setHelp(XalanFileUtility& h) { h.args.getHelpStream() << endl << "errortests dir [-sub -out]" << endl << endl << "dir (location of conformance directory)" << endl << "-sub dir (specific directory)" << endl << "-out dir (base directory for output)" << endl; } inline bool checkForExclusion(const XalanDOMString& currentFile) { for (int i = 0; excludeStylesheets[i] != 0; i++) { if (currentFile == XalanDOMString(excludeStylesheets[i])) { return true; } } return false; } int runTests( int argc, char* argv[]) { XALAN_USING_XALAN(MemoryManager) XALAN_USING_XALAN(XalanMemMgrs) MemoryManager& theManager = XalanMemMgrs::getDefaultXercesMemMgr(); XalanFileUtility h(theManager); // Set the program help string, then get the command line parameters. // setHelp(h); bool setGold = false; if (h.getParams(argc, argv, "ERR-RESULTS", setGold) == true) { XALAN_USING_XALAN(XalanTransformer) XALAN_USING_XALAN(XalanSourceTreeDOMSupport) XALAN_USING_XALAN(XalanSourceTreeParserLiaison) XALAN_USING_XALAN(XalanXMLFileReporter) XalanTransformer xalan; XalanSourceTreeDOMSupport domSupport; XalanSourceTreeParserLiaison parserLiaison(domSupport); domSupport.setParserLiaison(&parserLiaison); // Generate Unique Run id and processor info XalanDOMString UniqRunid(theManager); h.generateUniqRunid(UniqRunid); // Defined basic constants for file manipulation and open results file const XalanDOMString resultFilePrefix("cpperr", theManager); XalanDOMString resultsFile(h.args.output, theManager); resultsFile += resultFilePrefix; resultsFile += UniqRunid; resultsFile += XalanFileUtility::s_xmlSuffix; XalanXMLFileReporter logFile(theManager, resultsFile); logFile.logTestFileInit("Error Testing:"); // Get the list of Directories that are below conf bool foundDir = false; // Flag indicates directory found. Used in conjunction with -sub cmd-line arg. typedef XalanFileUtility::FileNameVectorType FileNameVectorType; FileNameVectorType dirs(theManager); h.getDirectoryNames(h.args.base, dirs); for(FileNameVectorType::size_type j = 0; j < dirs.size(); ++j) { // If conformance directory structure does not exist, it needs to be created. XalanDOMString confSubdir(h.args.output, theManager); confSubdir += dirs[j]; h.checkAndCreateDir(confSubdir); // Set up to get files from the associated error directories const XalanDOMString& currentDir = dirs[j]; // Run specific category of files from given directory if (h.args.sub.empty() == true || currentDir == h.args.sub) { // Check that output directory is there. XalanDOMString theOutputDir( h.args.output , theManager); theOutputDir += currentDir; h.checkAndCreateDir(theOutputDir); // Indicate that directory was processed and get test files from the directory foundDir = true; logFile.logTestCaseInit(currentDir); FileNameVectorType files(theManager); h.getTestFileNames(h.args.base, currentDir, false, files); for(FileNameVectorType::size_type i = 0; i < files.size(); i++) { XALAN_USING_XALAN(XSLTInputSource) XALAN_USING_XALAN(XSLTResultTarget) XALAN_USING_XALAN(XalanCompiledStylesheet) XALAN_USING_XALAN(XalanParsedSource) XalanXMLFileReporter::Hashtable attrs(theManager); const XalanDOMString currentFile(files[i], theManager); h.data.testOrFile = currentFile; if (checkForExclusion(currentFile)) continue; XalanDOMString theXSLFile( h.args.base, theManager); theXSLFile += currentDir; theXSLFile += XalanFileUtility::s_pathSep; theXSLFile += currentFile; XalanDOMString theXMLFile(theManager); h.generateFileName(theXSLFile,"xml", theXMLFile); XalanDOMString theGoldFile( h.args.gold, theManager); theGoldFile += currentDir; theGoldFile += XalanFileUtility::s_pathSep; theGoldFile += currentFile; h.generateFileName(theGoldFile, "out", theGoldFile); XalanDOMString outbase(h.args.output, theManager); outbase += currentDir; outbase += XalanFileUtility::s_pathSep; outbase += currentFile; XalanDOMString theOutputFile(theManager); h.generateFileName(outbase, "out", theOutputFile); const XSLTInputSource xslInputSource(theXSLFile); const XSLTInputSource xmlInputSource(theXMLFile); const XSLTInputSource goldInputSource(theGoldFile); const XSLTResultTarget resultFile(theOutputFile); // Parsing(compile) the XSL stylesheet and report the results.. // const XalanCompiledStylesheet* compiledSS = 0; try { cout << endl << "PARSING STYLESHEET FOR: " << currentFile << endl; xalan.compileStylesheet(xslInputSource, compiledSS); if (compiledSS == 0 ) { cout << "FAILED to parse stylesheet for " << currentFile << endl; cout << "Reason: " << xalan.getLastError() << endl; logFile.logErrorResult(currentFile, XalanDOMString(xalan.getLastError())); continue; } } catch(...) { cerr << "Exception caught!!!" << endl << endl; } // Parsing the input XML and report the results.. // cout << "PARSING SOURCE XML FOR: " << currentFile << endl; const XalanParsedSource* parsedSource = 0; xalan.parseSource(xmlInputSource, parsedSource); if (parsedSource == 0) { cout << "Failed to PARSE source document for " << currentFile << endl; continue; } // Perform One transform using parsed stylesheet and parsed xml source, report results... // cout << "TRANSFORMING: " << currentFile << endl; const int theResult = xalan.transform(*parsedSource, compiledSS, resultFile); if (theResult != 0) { cout << "FAILED to transform stylesheet for " << currentFile << endl; cout << "Reason: " << xalan.getLastError() << endl; logFile.logErrorResult(currentFile, XalanDOMString(xalan.getLastError())); } else { logFile.logCheckPass(currentFile); } parserLiaison.reset(); xalan.destroyParsedSource(parsedSource); xalan.destroyStylesheet(compiledSS); } } logFile.logTestCaseClose("Done", "Pass"); } // Check to see if -sub cmd-line directory was processed correctly. if (!foundDir) { cout << "Specified test directory: \"" << h.args.sub << "\" not found" << endl; } h.reportPassFail(logFile, UniqRunid); logFile.logTestFileClose("Conformance ", "Done"); logFile.close(); } return 0; } int main( int argc, char* argv[]) { #if !defined(NDEBUG) && defined(_MSC_VER) _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); #endif int theResult = 0; try { XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XALAN(XalanTransformer) // Call the static initializers for xerces and xalan, and create a transformer // XMLPlatformUtils::Initialize(); XalanTransformer::initialize(); theResult = runTests(argc, argv); XalanTransformer::terminate(); XMLPlatformUtils::Terminate(); XalanTransformer::ICUCleanUp(); } catch(...) { cerr << "Initialization failed!" << endl << endl; theResult = -1; } return theResult; } xalan-c-1.11/c/Tests/Errortests/Errortests.vcproj0000664000175000000640000001551711731656104021067 0ustar stevesamba xalan-c-1.11/c/Tests/Makefile.in0000664000175000000640000000705111731656104015351 0ustar stevesamba# # Copyright 1999-2004 The Apache Software Foundation. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # ################################################################### # IMPORTANT NOTE # ################################################################### # Before you try to run the Makefile, make sure you have two # # environment variables set. # # # # export XALANCROOT= # # export XERCESCROOT= # # # ################################################################### INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ # Output directories OUTDIR = .. ifndef XALANCROOT noxalanroot: @echo XALANCROOT must be defined endif ifndef XERCESCROOT noxercesroot: @echo XERCESCROOT must be defined endif include $(XALANCROOT)/version.incl include ../Makefile.incl PERFSOURCE = \ $(wildcard $(TESTS_DIR)/Performance/*.cpp) PERF_OBJECTS = \ $(addprefix $(XSL_OBJ_DIR)/,$(addsuffix .o,$(basename $(notdir $(PERFSOURCE))))) all: Tests tests : ThreadTest Conf Perf Tests: ThreadTest Conf Perf ThreadTest: prepare $(XSL_BIN_DIR)/ThreadTest $(XSL_BIN_DIR)/ThreadTest: ${XSL_OBJ_DIR}/ThreadTest.o ${LINK} $(XSL_BUILD_OPTIONS) ${PLATFORM_LIB_LINK_OPTIONS} \ ${EXTRA_LINK_OPTIONS} $(XALAN_LIB) $(ALLLIBS) $(CXXFLAGS) $^ -o $@ $(OTHER_LINK_PARAMETERS) ${XSL_OBJ_DIR}/%.o:$(TESTS_DIR)/Threads/%.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< Conf: prepare $(XSL_BIN_DIR)/Conf $(XSL_BIN_DIR)/Conf: ${XSL_OBJ_DIR}/conf.o ${LINK} $(XSL_BUILD_OPTIONS) ${PLATFORM_LIB_LINK_OPTIONS} \ ${EXTRA_LINK_OPTIONS} $(XALAN_LIB) $(ALLLIBS) $(CXXFLAGS) $^ -o $@ $(OTHER_LINK_PARAMETERS) ${XSL_OBJ_DIR}/%.o:$(TESTS_DIR)/Conf/%.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< prepare: -${MKDIR} -p ${XSL_LIB_DIR} -${MKDIR} -p $(XSL_BIN_DIR) install: Tests $(MKINSTALLDIRS) $(DESTDIR)/$(bindir) $(INSTALL_PROGRAM) $(XSL_BIN_DIR)/Conf$(EXT) $(DESTDIR)/$(bindir) $(INSTALL_PROGRAM) $(XSL_BIN_DIR)/ThreadTest$(EXT) $(DESTDIR)/$(bindir) $(INSTALL_PROGRAM) $(XSL_BIN_DIR)/Perf$(EXT) $(DESTDIR)/$(bindir) install-extras: cp -r $(TESTS_DIR) $(DESTDIR)/$(prefix) Perf: prepare $(XSL_BIN_DIR)/Perf $(XSL_BIN_DIR)/Perf: $(PERF_OBJECTS) ${LINK} $(XSL_BUILD_OPTIONS) ${PLATFORM_LIB_LINK_OPTIONS} \ ${EXTRA_LINK_OPTIONS} $(XALAN_LIB) $(ALLLIBS) $(CXXFLAGS) $^ -o $@ $(OTHER_LINK_PARAMETERS) ${XSL_OBJ_DIR}/%.o:$(TESTS_DIR)/Performance/%.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< clean: rm -rf $(XSL_OBJ_DIR)/*.o rm -rf $(OUTDIR)/so_locations rm -rf $(XSL_BIN_DIR)/SunWS_cache rm -rf $(XSL_LIB_DIR)/SunWS_cache rm -f $(XSL_BIN_DIR)/Conf$(EXT) rm -f $(XSL_BIN_DIR)/ThreadTest$(EXT) rm -f $(XSL_BIN_DIR)/Perf$(EXT) xalan-c-1.11/c/samples/0002775000175000000640000000000012037700125013636 5ustar stevesambaxalan-c-1.11/c/samples/ParsedSourceWrappers/0002775000175000000640000000000012037700125017761 5ustar stevesambaxalan-c-1.11/c/samples/ParsedSourceWrappers/foo.xml0000664000175000000640000000026411731656104021275 0ustar stevesamba a text b text c text d text e text xalan-c-1.11/c/samples/ParsedSourceWrappers/ParsedSourceWrappers.cpp0000664000175000000640000001534711731656104024627 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include #if XERCES_VERSION_MAJOR >= 2 #include #else #include #endif #include #include #include #include #include #include #include #include #include XALAN_USING_XALAN(XalanCompiledStylesheet) XALAN_USING_XALAN(XalanDOMString) XALAN_USING_XALAN(XalanTransformer) XALAN_USING_XALAN(XSLTInputSource) XALAN_USING_XALAN(XSLTResultTarget) int transformXercesDOM( XalanTransformer& theTransformer, const XalanDOMString& theURI, const XalanCompiledStylesheet* theStylesheet, const XSLTResultTarget& theResultTarget) { XALAN_USING_XERCES(URLInputSource) XALAN_USING_XALAN(XercesParserLiaison) XALAN_USING_XALAN(XercesDOMSupport) XALAN_USING_XALAN(XercesDOMWrapperParsedSource) const URLInputSource theInputSource(theURI.c_str()); XercesParserLiaison::DOMParserType theParser; theParser.parse(theInputSource); XercesParserLiaison theParserLiaison; XercesDOMSupport theDOMSupport(theParserLiaison); const XercesDOMWrapperParsedSource theWrapper( theParser.getDocument(), theParserLiaison, theDOMSupport, theURI); return theTransformer.transform( theWrapper, theStylesheet, theResultTarget); } int transformXalanSourceTree( XalanTransformer& theTransformer, const XalanDOMString& theURI, const XalanCompiledStylesheet* theStylesheet, const XSLTResultTarget& theResultTarget) { XALAN_USING_XERCES(URLInputSource) XALAN_USING_XALAN(XalanDocument) XALAN_USING_XALAN(XalanSourceTreeDocument) XALAN_USING_XALAN(XalanSourceTreeParserLiaison) XALAN_USING_XALAN(XalanSourceTreeDOMSupport) XALAN_USING_XALAN(XalanSourceTreeWrapperParsedSource) const URLInputSource theInputSource(theURI.c_str()); XalanSourceTreeParserLiaison theParserLiaison; XalanSourceTreeDOMSupport theDOMSupport(theParserLiaison); XalanDocument* const theDocument = theParserLiaison.parseXMLStream(theInputSource, theURI); XalanSourceTreeDocument* const theSourceTreeDocument = theParserLiaison.mapDocument(theDocument); assert(theSourceTreeDocument != 0); XalanSourceTreeWrapperParsedSource theWrapper(theSourceTreeDocument, theParserLiaison, theDOMSupport, theURI); return theTransformer.transform( theWrapper, theStylesheet, theResultTarget); } int transform() { XALAN_USING_STD(cerr) XALAN_USING_STD(cout) XALAN_USING_STD(endl) int theResult = -1; try { // Create a XalanTransformer. XalanTransformer theTransformer; const XSLTInputSource theStylesheetInputSource("foo.xsl"); // Let's compile the stylesheet and re-use it... const XalanCompiledStylesheet* theStylesheet = 0; if (theTransformer.compileStylesheet(theStylesheetInputSource, theStylesheet) != 0) { cerr << "An error occurred compiling the stylesheet: " << theTransformer.getLastError() << endl; } else { XALAN_USING_XALAN(URISupport) assert(theStylesheet != 0); const XalanDOMString theInputFile("foo.xml"); XalanDOMString theURI; URISupport::getURLStringFromString(theInputFile, theURI); const XSLTResultTarget theResultTarget(cout); theResult = transformXercesDOM(theTransformer, theURI, theStylesheet, theResultTarget); if (theResult == 0) { cout << endl; theResult = transformXalanSourceTree(theTransformer, theURI, theStylesheet, theResultTarget); } if (theResult != 0) { cerr << "Transformation failed: " << theTransformer.getLastError() << endl; } } } catch(...) { cerr << "An unknown error occurred!" << endl; } return theResult; } // This sample shows how existing Xerces DOMDocument instances and XalanSourceTreeDocument // instances can be wrapped to use as input for to an instance of XalanTransformer. int main( int argc, char* /* argv */[]) { XALAN_USING_STD(cerr) XALAN_USING_STD(endl) int theResult = -1; if (argc != 1) { cerr << "Usage: ParsedSourceWrappers" << endl; } else { try { XALAN_USING_XERCES(XMLPlatformUtils) // Call the static initializer for Xerces. XMLPlatformUtils::Initialize(); // Initialize Xalan. XalanTransformer::initialize(); theResult = transform(); // Terminate Xalan... XalanTransformer::terminate(); // Terminate Xerces... XMLPlatformUtils::Terminate(); // Clean up the ICU, if it's integrated... XalanTransformer::ICUCleanUp(); } catch(...) { cerr << "Initialization failed!" << endl; } } return theResult; } xalan-c-1.11/c/samples/ParsedSourceWrappers/foo.xsl0000664000175000000640000000037011731656104021301 0ustar stevesamba xalan-c-1.11/c/samples/XPathWrapper/0002775000175000000640000000000012037700125016223 5ustar stevesambaxalan-c-1.11/c/samples/XPathWrapper/foo.xml0000664000175000000640000000110611731656104017533 0ustar stevesamba Mr. Marston Mr. Bertoni Mr. Leslie Ms. Farmer Ms. Midy Mr. Dick Mr. Boag Mr. Curcuru Mr. Kesselman Mr. Auriemma xalan-c-1.11/c/samples/XPathWrapper/XPathWrapper.cpp0000664000175000000640000002216011731656104021322 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XPathWrapper.hpp" #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XALAN_USING_STD(cerr) XALAN_USING_STD(endl) XALAN_USING_STD(ostream) //////////////////////////////////////////////////// // the implementation class, that does all calls to XPath and Xerces class XPathWrapperImpl { public: typedef XPathWrapper::CharVectorTypeVectorType CharVectorTypeVectorType; void evaluate( const char* xml, const char* context, const char* expr, ostream& errorStream, CharVectorTypeVectorType& theResultList) { #if defined(XALAN_STRICT_ANSI_HEADERS) using std::strlen; #endif { // Just hoist everything... XALAN_CPP_NAMESPACE_USE typedef XPathConstructionContext::GetAndReleaseCachedString GetAndReleaseCachedString; // Initialize the XPath subsystem... XPathInit theInit; // We'll use these to parse the XML file. XalanSourceTreeDOMSupport theDOMSupport; XalanSourceTreeParserLiaison theLiaison(theDOMSupport); // Hook the two together... theDOMSupport.setParserLiaison(&theLiaison); XalanElement* rootElem = 0; XALAN_USING_XERCES(XMLException) try { XALAN_USING_XERCES(MemBufInputSource) // parse XML and get root element MemBufInputSource inStream((XMLByte*)xml, strlen(xml), "foo", false); XalanDocument* const doc = theLiaison.parseXMLStream(inStream); assert(doc != 0); rootElem = doc->getDocumentElement(); assert(rootElem != 0); } catch(const XMLException&) { errorStream << "Caught XMLExecption..." << endl; throw; } // configure the objects needed for XPath to work with the Xerces DOM XPathEnvSupportDefault theEnvSupport; XObjectFactoryDefault theXObjectFactory; XPathExecutionContextDefault theExecutionContext(theEnvSupport, theDOMSupport, theXObjectFactory); XPathConstructionContextDefault theXPathConstructionContext; XPathFactoryDefault theXPathFactory; XPathProcessorImpl theXPathProcessor; try { // first get the context nodeset XPath* const contextXPath = theXPathFactory.create(); const ElementPrefixResolverProxy thePrefixResolver(rootElem, theEnvSupport, theDOMSupport); const GetAndReleaseCachedString theGuard(theXPathConstructionContext); XalanDOMString& theString = theGuard.get(); theString = context; theXPathProcessor.initXPath( *contextXPath, theXPathConstructionContext, theString, thePrefixResolver); XObjectPtr xObj = contextXPath->execute( rootElem, thePrefixResolver, theExecutionContext); const NodeRefListBase& contextNodeList = xObj->nodeset(); const unsigned int theLength = contextNodeList.getLength(); if (theLength == 0) { errorStream << "Warning -- No nodes matched the location path \"" << context << "\"." << endl << "Execution cannot continue..." << endl << endl; } else { if (theLength > 1) { errorStream << "Warning -- More than one node matched the location path \"" << context << "\"." << endl << "The first node matched will be used as the context node." << endl << endl; } // and now get the result of the primary xpath expression XPath* const xpath = theXPathFactory.create(); theString = expr; theXPathProcessor.initXPath( *xpath, theXPathConstructionContext, theString, thePrefixResolver); xObj = xpath->execute( contextNodeList.item(0), thePrefixResolver, theExecutionContext); // now encode the results. For all types but nodelist, we'll just convert it to a string // but, for nodelist, we'll convert each node to a string and return a list of them switch (xObj->getType()) { case XObject::eTypeNodeSet: { const NodeRefListBase& nodeset = xObj->nodeset(); size_t len = nodeset.getLength(); for (size_t i=0; igetNodeType(); if (theType == XalanNode::COMMENT_NODE || theType == XalanNode::PROCESSING_INSTRUCTION_NODE) str = node->getNodeValue(); else if (theType == XalanNode::ELEMENT_NODE) str = node->getNodeName(); else DOMServices::getNodeData(*node, str); theResultList.push_back(TranscodeToLocalCodePage(str)); } break; } default: { theResultList.push_back(TranscodeToLocalCodePage(xObj->str())); break; } } } } catch(const XMLException&) { errorStream << "Caught XMLExecption..." << endl; throw; } } } }; //////////////////////////////////////////////////// // The public XPathWrapper methods just delegate to our impl class XPathWrapper::XPathWrapper() : pImpl(new XPathWrapperImpl()) { } XPathWrapper::~XPathWrapper() { delete pImpl; } void XPathWrapper::evaluate( const char* xml, const char* context, const char* path, CharVectorTypeVectorType& theResult) { pImpl->evaluate( xml, context, path, cerr, theResult); } xalan-c-1.11/c/samples/XPathWrapper/XPathWrapper.hpp0000664000175000000640000000410611731656104021327 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XPATH_WRAPPER_HEADER_GUARD_1357924680) #define XPATH_WRAPPER_HEADER_GUARD_1357924680 #include #include #include #if defined(XALAN_NEEDS_EXPLICIT_TEMPLATE_INSTANTIATION) #include #endif class XPathWrapperImpl; class XPathWrapper { public: typedef XALAN_CPP_NAMESPACE_QUALIFIER CharVectorType ChVectorType; typedef XALAN_CPP_NAMESPACE_QUALIFIER XalanVector CharVectorTypeVectorType; XPathWrapper(); virtual ~XPathWrapper(); // Given an xml document and an xpath context and expression in the form of (ascii) string objects, // this function parses the XML document, evaluates the xpath and returns the result, as a list of // string objects void evaluate( const char* xml, const char* context, const char* path, CharVectorTypeVectorType& theResult); private: // not implemented XPathWrapper(const XPathWrapper&); XPathWrapper& operator=(const XPathWrapper&); bool operator==(const XPathWrapper&) const; XPathWrapperImpl* const pImpl; }; #endif // XPATH_WRAPPER_HEADER_GUARD_1357924680 xalan-c-1.11/c/samples/XPathWrapper/TestDriver.cpp0000664000175000000640000000712411731656104021033 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "XPathWrapper.hpp" #include #include #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #include #else #include #include #endif // This is here for memory leak testing. #if !defined(NDEBUG) && defined(_MSC_VER) #include #endif int main( int argc, char* argv[]) { #if !defined(NDEBUG) && defined(_MSC_VER) _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); #endif XALAN_USING_STD(cerr) XALAN_USING_STD(cout) XALAN_USING_STD(endl) XALAN_USING_STD(ifstream) if (argc < 4) { cerr << "Usage: TestDriver XMLFilePath Context XPathExpression" << endl; return -1; } XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XERCES(XMLException) XALAN_USING_XALAN(XalanTransformer) //initialize Xerces... try { XMLPlatformUtils::Initialize(); } catch(const XMLException&) { cerr << "XMLPlatformUtils::Initialize() failed!" << endl; return -1; } // Initialize Xalan. XalanTransformer::initialize(); { XPathWrapper::ChVectorType theXML; ifstream in(argv[1]); // slow and dirty dump of the xml file into a buffer char c; while(in.get(c)) theXML.push_back(c); theXML.push_back('\0'); ///////////////////////////////////////////.. // create your XPath helper object XPathWrapper helper; try { // call evaluate, passing in the XML string, the context string and the xpath string XPathWrapper::CharVectorTypeVectorType result; helper.evaluate(&*theXML.begin(), argv[2], argv[3], result); // take the resulting string vector and do whatever you want with it: size_t len = result.size(); cout << "the result set has " << len << " strings\n"; for (size_t i=0; i #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include #include #include #include #include XALAN_USING_XALAN(XalanDocumentBuilder) XALAN_USING_XALAN(XalanTransformer) void BuildDocument(XalanDocumentBuilder* theBuilder) { XALAN_USING_XERCES(ContentHandler) XALAN_USING_XALAN(AttributesImpl) XALAN_USING_XALAN(XalanDOMChar) XALAN_USING_XALAN(XalanDOMString) // Get the SAX2 ContentHandler from the builder... ContentHandler* const theContentHandler = theBuilder->getContentHandler(); assert(theContentHandler != 0); // This will hold the attributes for the elements we create... AttributesImpl theAttributes; // Some handy scratch strings for adding elements, attributes, and text nodes... XalanDOMString theElementName; XalanDOMString theAttributeName; XalanDOMString theAttributeValue; const XalanDOMString theAttributeType("CDATA"); XalanDOMString theTextValue; const XalanDOMChar theEmptyString = 0; // start the document... theContentHandler->startDocument(); // start the document element... theElementName = "foo"; theContentHandler->startElement( &theEmptyString, &theEmptyString, theElementName.c_str(), theAttributes); // Create an element child... // Set the name of the element... theElementName = "foobar"; // Add an attribute... theAttributeName = "attribute1"; theAttributeValue = "value1"; theAttributes.addAttribute( theAttributeName.c_str(), theAttributeType.c_str(), theAttributeValue.c_str()); theContentHandler->startElement( &theEmptyString, &theEmptyString, theElementName.c_str(), theAttributes); // Add a text node... theTextValue = "The first foobar"; theContentHandler->characters( theTextValue.c_str(), theTextValue.length()); // End the element... theContentHandler->endElement( &theEmptyString, &theEmptyString, theElementName.c_str()); theAttributes.clear(); theAttributeName = "attribute2"; theAttributeValue = "value2"; theAttributes.addAttribute( theAttributeName.c_str(), theAttributeType.c_str(), theAttributeValue.c_str()); theContentHandler->startElement( &theEmptyString, &theEmptyString, theElementName.c_str(), theAttributes); theTextValue = "The second foobar"; theContentHandler->characters( theTextValue.c_str(), theTextValue.length()); theContentHandler->endElement( &theEmptyString, &theEmptyString, theElementName.c_str()); theAttributes.clear(); theAttributeName = "attribute3"; theAttributeValue = "value3"; theAttributes.addAttribute( theAttributeName.c_str(), theAttributeType.c_str(), theAttributeValue.c_str()); theContentHandler->startElement( &theEmptyString, &theEmptyString, theElementName.c_str(), theAttributes); theTextValue = "The third foobar"; theContentHandler->characters( theTextValue.c_str(), theTextValue.length()); theContentHandler->endElement( &theEmptyString, &theEmptyString, theElementName.c_str()); // end the document element... theElementName = "foo"; theContentHandler->endElement( &theEmptyString, &theEmptyString, theElementName.c_str()); // end the document... theContentHandler->endDocument(); } int main( int argc, char* /* argv */ []) { XALAN_USING_STD(cerr) XALAN_USING_STD(endl) int theResult = 0; if (argc != 1) { cerr << "Usage: DocumentBuilder" << endl; theResult = -1; } else { XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XERCES(XMLException) // Call the static initializer for Xerces. try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { cerr << "Error during Xerces initialization. Error code was " << toCatch.getCode() << "." << endl; theResult = -1; } if (theResult == 0) { // Initialize Xalan. XalanTransformer::initialize(); { // Create a XalanTransformer. XalanTransformer theXalanTransformer; // Get a document builder from the transformer... XalanDocumentBuilder* const theBuilder = theXalanTransformer.createDocumentBuilder(); BuildDocument(theBuilder); // The assumption is that the executable will be run // from same directory as the stylesheet file. // Do the transform. theResult = theXalanTransformer.transform(*theBuilder, "foo.xsl", "foo.out"); if(theResult != 0) { cerr << "DocumentBuilder error: \n" << theXalanTransformer.getLastError() << endl << endl; } } // Terminate Xalan. XalanTransformer::terminate(); } // Call the static terminator for Xerces. XMLPlatformUtils::Terminate(); // Clean up the ICU, if it's integrated. XalanTransformer::ICUCleanUp(); } return theResult; } xalan-c-1.11/c/samples/DocumentBuilder/foo.xsl0000664000175000000640000000045411731656104020246 0ustar stevesamba xalan-c-1.11/c/samples/SimpleTransform/0002775000175000000640000000000012037700125016763 5ustar stevesambaxalan-c-1.11/c/samples/SimpleTransform/XalanMemoryManagerImpl.hpp0000664000175000000640000001005711731656104024055 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(MEMORYMANAGERIMPL_HEADER_GUARD_1357924680) #define MEMORYMANAGERIMPL_HEADER_GUARD_1357924680 // Base include file. Must be first. #include #include #include "xercesc/util/OutOfMemoryException.hpp" #include "xalanc/Include/XalanMemoryManagement.hpp" #if defined(XALAN_WINDOWS) #include #include #include XALAN_USING_XERCES(MemoryManager) class XalanMemoryManagerImpl : public XALAN_CPP_NAMESPACE_QUALIFIER XalanMemoryManager { public: XalanMemoryManagerImpl(DWORD defSize = 0) : m_heapHandle(NULL) { m_heapHandle = HeapCreate( HEAP_NO_SERIALIZE, 0, // dwInitialSize defSize); if (m_heapHandle == NULL) { XALAN_USING_STD(runtime_error) char buffer[20]; buffer[0] = 0; _ultoa( GetLastError(), buffer, 10); throw runtime_error(buffer); } } virtual void* allocate(size_type size) { LPVOID ptr = HeapAlloc( m_heapHandle, //HANDLE hHeap 0, //DWORD dwFlags size //SIZE_T dwBytes ); if (ptr == 0) { XALAN_USING_XERCES(OutOfMemoryException) throw OutOfMemoryException(); } return ptr; } virtual void deallocate(void* pDataPointer) { if (0 == HeapFree( m_heapHandle, //HANDLE hHeap, 0, //DWORD dwFlags, pDataPointer ) )//*LPVOID lpMem { XALAN_USING_XERCES(OutOfMemoryException) throw OutOfMemoryException(); } } virtual MemoryManager* getExceptionMemoryManager() { return this; } virtual ~XalanMemoryManagerImpl() { if (0 == HeapDestroy(m_heapHandle)) { XALAN_USING_STD(runtime_error) char buffer[20]; buffer[0] = 0; _ultoa( GetLastError(), buffer, 10); throw runtime_error(buffer); } } private: // Not implemented XalanMemoryManagerImpl& operator=(const XalanMemoryManagerImpl&); XalanMemoryManagerImpl(const XalanMemoryManagerImpl&); //Data HANDLE m_heapHandle; }; #else class XalanMemoryManagerImpl : public XALAN_CPP_NAMESPACE_QUALIFIER XalanMemoryManager { public: typedef XALAN_CPP_NAMESPACE_QUALIFIER XalanSize_t XalanSize_t; virtual ~XalanMemoryManagerImpl() { } virtual void* allocate(size_type size) { try { void* memptr = ::operator new(size); if (memptr != 0) { return memptr; } } catch (...) { } XALAN_USING_XERCES(OutOfMemoryException) throw OutOfMemoryException(); } virtual void deallocate(void* pDataPointer) { operator delete(pDataPointer); } virtual MemoryManager* getExceptionMemoryManager() { return this; } }; #endif #endif // MEMORYMANAGERIMPL_HEADER_GUARD_1357924680 xalan-c-1.11/c/samples/SimpleTransform/foo.xml0000664000175000000640000000004711731656104020276 0ustar stevesamba Hello xalan-c-1.11/c/samples/SimpleTransform/SimpleTransform.cpp0000664000175000000640000000762411731656104022632 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include #include #include "XalanMemoryManagerImpl.hpp" /** * Example of the ICU's customizable memory management which can * be used conjunction with Xalan's pluggable memory management feature. */ #if defined(XALAN_USE_ICU) #include "unicode/uclean.h" static XalanMemoryManagerImpl s_memoryManager; void* icu_malloc(const void * /* context */, size_t size) { return s_memoryManager.allocate(size); } void* icu_realloc(const void * /* context */, void * mem, size_t size) { s_memoryManager.deallocate(mem); return s_memoryManager.allocate(size); } void icu_free(const void * /* context */, void * mem) { s_memoryManager.deallocate(mem); } #endif int main( int argc, char* /* argv */[]) { XALAN_USING_STD(cerr) XALAN_USING_STD(endl) int theResult = -1; if (argc != 1) { cerr << "Usage: SimpleTransform" << endl << endl; } else { try { XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XERCES(XMLUni) XALAN_USING_XALAN(XalanTransformer) XalanMemoryManagerImpl memoryManager; #ifdef XALAN_USE_ICU UErrorCode status = U_ZERO_ERROR; u_setMemoryFunctions(0, icu_malloc, icu_realloc, icu_free, &status); if(U_FAILURE(status)) { cerr << "Initialization of ICU failed! " << endl << endl; return -1; } #endif // Call the static initializer for Xerces. XMLPlatformUtils::Initialize( XMLUni::fgXercescDefaultLocale, 0, 0, &memoryManager ); // Initialize Xalan. XalanTransformer::initialize( memoryManager ); { // Create a XalanTransformer. XalanTransformer theXalanTransformer( memoryManager ); // The assumption is that the executable will be run // from same directory as the input files. theResult = theXalanTransformer.transform("foo.xml", "foo.xsl", "foo.out"); if(theResult != 0) { cerr << "SimpleTransform Error: \n" << theXalanTransformer.getLastError() << endl << endl; } } // Terminate Xalan... XalanTransformer::terminate(); // Terminate Xerces... XMLPlatformUtils::Terminate(); // Clean up the ICU, if it's integrated... XalanTransformer::ICUCleanUp(); } catch(...) { cerr << "Initialization failed!" << endl; } } return theResult; } xalan-c-1.11/c/samples/SimpleTransform/foo.xsl0000664000175000000640000000032211731656104020300 0ustar stevesamba xalan-c-1.11/c/samples/UseStylesheetParam/0002775000175000000640000000000012037700125017425 5ustar stevesambaxalan-c-1.11/c/samples/UseStylesheetParam/parmA.xml0000664000175000000640000000011011731656104021204 0ustar stevesamba First A Item Second A Item xalan-c-1.11/c/samples/UseStylesheetParam/parmB.xml0000664000175000000640000000011011731656104021205 0ustar stevesamba First B Item Second B Item xalan-c-1.11/c/samples/UseStylesheetParam/foo.xml0000664000175000000640000000011611731656104020735 0ustar stevesamba Item-1 Item-2 Item-3 xalan-c-1.11/c/samples/UseStylesheetParam/UseStylesheetParam.cpp0000664000175000000640000001571411731656104023735 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif // for 'C' strcmp function used in parsing main() parameters #include #include #include // The next 2 include files are for parsing XML documents as nodeset parameters. #include #include // DATA STORAGE FOR TOP-LEVEL PARAMETERS struct { char * parmType; // -s key string, -n key number, -d key document char * parmName; // the key or parameter name char * parmValue; // the represented string value } Parameter[15]; // The Parsed Document Nodesets XALAN_USING_XALAN(XalanParsedSource) const XalanParsedSource * NodesetParam[15] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // THE USAGE HELP FUNCTION int Usage() { XALAN_USING_STD(cerr) XALAN_USING_STD(endl) cerr << "Usage: UseStylesheetParam xmlFile xslFile outFile [parameters]" <getDocument()); } else { cerr << "WARNING: XML parsing error in " << Parameter[j].parmName << " file: " << Parameter[j].parmValue < xalan-c-1.11/c/samples/UseStylesheetParam/TestCAPIparm.c0000664000175000000640000000762711731656104022046 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Test of XalanCAPI.h * With Top-Level Parameters * */ #include #include #include #include "xalanc/XalanTransformer/XalanCAPI.h" int Usage(const char * program) { printf("\nUSAGE: %s xml-file stylesheet outfile [parameters...]\n" " Parameter: -s name \"'string'\"\n" " Parameter: -n name 123.34532\n" " Parameter: -d name \"xmlfile\"\n", program); return 1; } struct { char * ParmType; char * ParmName; char * ParmValue; } ParamInfo[15]; XalanPSHandle ParamPSHandle[15]; XalanHandle theTransformer; char * theXmlFile; char * theXslFile; char * theOutFile; int main(int argc, char * argv[]) { int i,j; int ParamCount = 0; if (argc < 4) return Usage(argv[0]); theXmlFile = argv[1]; theXslFile = argv[2]; theOutFile = argv[3]; for (i=4, j=0; i #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #include #include #else #include #include #include #endif #include #include int main( int argc, char* /* argv */[]) { XALAN_USING_STD(cerr) XALAN_USING_STD(cout) XALAN_USING_STD(endl) XALAN_USING_STD(istrstream) XALAN_USING_STD(ofstream) XALAN_USING_STD(ostrstream) #if defined(XALAN_STRICT_ANSI_HEADERS) using std::strlen; #endif int theResult = -1; if (argc != 1) { cerr << "Usage: StreamTransform" << endl << endl; } else { try { XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XALAN(XalanTransformer) // Call the static initializer for Xerces. XMLPlatformUtils::Initialize(); // Initialize Xalan. XalanTransformer::initialize(); { // Create a XalanTransformer. XalanTransformer theXalanTransformer; // A simple input document... #if defined(XALAN_NON_ASCII_PLATFORM) const char* const theInputDocument = "Hello world!"; #else const char* const theInputDocument = "Hello world!"; #endif // A "hello world" stylesheet. Note that the encoding for the output is platform-dependent, // since we're writing to a string. It could be any encoding, but "binary" encodings, // or encodings that could produce multi-byte characters would require transcoding on // some platforms. const char* const theStylesheet = #if defined(XALAN_NON_ASCII_PLATFORM) "\ \ \ \ \ \ "; #else "\ \ \ \ \ \ "; #endif // Our input streams... istrstream theXMLStream(theInputDocument, strlen(theInputDocument)); istrstream theXSLStream(theStylesheet, strlen(theStylesheet)); XALAN_USING_XALAN(XalanDOMString) XALAN_USING_XALAN(XSLTInputSource) XSLTInputSource inputSource(&theXSLStream); inputSource.setSystemId(XalanDOMString("foo").c_str()); // Do the transform. theResult = theXalanTransformer.transform(&theXMLStream, inputSource, cout); if(theResult != 0) { cerr << "StreamTransform Error: \n" << theXalanTransformer.getLastError() << endl << endl; } } // Terminate Xalan... XalanTransformer::terminate(); // Terminate Xerces... XMLPlatformUtils::Terminate(); // Clean up the ICU, if it's integrated... XalanTransformer::ICUCleanUp(); } catch(...) { cerr << "Initialization failed!" << endl; } } return theResult; } xalan-c-1.11/c/samples/ExternalFunction/0002775000175000000640000000000012037700125017126 5ustar stevesambaxalan-c-1.11/c/samples/ExternalFunction/foo.xml0000664000175000000640000000011511731656104020435 0ustar stevesamba xalan-c-1.11/c/samples/ExternalFunction/foo.xsl0000664000175000000640000000306411731656104020451 0ustar stevesamba The area of each face of the cube is square units . Accordingly, the length of each side is and the volume of the cube is cubic . The functions external:square-root() and external cube() are not available! Date and time when we figured all this out: . The function external:asctime() is not available! xalan-c-1.11/c/samples/ExternalFunction/ExternalFunction.cpp0000664000175000000640000002612511731656104023135 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include #include #include #include XALAN_USING_XALAN(Function) XALAN_USING_XALAN(Locator) XALAN_USING_XALAN(XPathExecutionContext) XALAN_USING_XALAN(XalanDOMString) XALAN_USING_XALAN(XalanNode) XALAN_USING_XALAN(XObjectPtr) XALAN_USING_XALAN(MemoryManager) XALAN_USING_XALAN(XalanCopyConstruct) // This class defines a function that will return the square root // of its argument. class FunctionSquareRoot : public Function { public: /** * Execute an XPath function object. The function must return a valid * object. Extension functions should override this version of execute(), * rather than one of the other calls designed for a specific number of * arguments. * * @param executionContext executing context * @param context current context node * @param args vector of pointers to XObject arguments * @param locator Locator for the XPath expression that contains the function call * @return pointer to the result XObject */ virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 1) { XPathExecutionContext::GetAndReleaseCachedString theGuard(executionContext); generalError(executionContext, context, locator); } assert(args[0].null() == false); #if defined(XALAN_STRICT_ANSI_HEADERS) using std::sqrt; #endif return executionContext.getXObjectFactory().createNumber(sqrt(args[0]->num(executionContext))); } using Function::execute; /** * Create a copy of the function object. * * @return pointer to the new object */ #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionSquareRoot* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: /** * Get the error message to report when * the function is called with the wrong * number of arguments. * * @return function error message */ const XalanDOMString& getError(XalanDOMString& theResult) const { theResult.assign("The square-root() function accepts one argument!"); return theResult; } private: // Not implemented... FunctionSquareRoot& operator=(const FunctionSquareRoot&); bool operator==(const FunctionSquareRoot&) const; }; // This class defines a function that will return the cube // of its argument. class FunctionCube : public Function { public: /** * Execute an XPath function object. The function must return a valid * object. Extension functions should override this version of execute(), * rather than one of the other calls designed for a specific number of * arguments. * * @param executionContext executing context * @param context current context node * @param args vector of pointers to XObject arguments * @param locator Locator for the XPath expression that contains the function call * @return pointer to the result XObject */ virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.size() != 1) { XPathExecutionContext::GetAndReleaseCachedString theGuard(executionContext); generalError(executionContext, context, locator); } assert(args[0].null() == false); #if defined(XALAN_STRICT_ANSI_HEADERS) using std::pow; #endif return executionContext.getXObjectFactory().createNumber(pow(args[0]->num(executionContext), 3)); } using Function::execute; /** * Create a copy of the function object. * * @return pointer to the new object */ #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionCube* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: /** * Get the error message to report when * the function is called with the wrong * number of arguments. * * @return function error message */ const XalanDOMString& getError(XalanDOMString& theResult) const { theResult.assign("The cube() function accepts one argument!"); return theResult; } private: // Not implemented... FunctionCube& operator=(const FunctionCube&); bool operator==(const FunctionCube&) const; }; // This class defines a function that runs the C function // asctime() using the current system time. class FunctionAsctime : public Function { public: /** * Execute an XPath function object. The function must return a valid * object. Extension functions should override this version of execute(), * rather than one of the other calls designed for a specific number of * arguments. * * @param executionContext executing context * @param context current context node * @param args vector of pointers to XObject arguments * @param locator Locator for the XPath expression that contains the function call * @return pointer to the result XObject */ virtual XObjectPtr execute( XPathExecutionContext& executionContext, XalanNode* context, const XObjectArgVectorType& args, const Locator* locator) const { if (args.empty() == false) { generalError(executionContext, context, locator); } #if defined(XALAN_STRICT_ANSI_HEADERS) using std::time; using std::time_t; using std::localtime; using std::asctime; using std::strlen; #endif time_t theTime; time(&theTime); char* const theTimeString = asctime(localtime(&theTime)); assert(theTimeString != 0); // The resulting string has a newline character at the end, // so get rid of it. theTimeString[strlen(theTimeString) - 1] = '\0'; return executionContext.getXObjectFactory().createString(XalanDOMString(theTimeString)); } using Function::execute; /** * Create a copy of the function object. * * @return pointer to the new object */ #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual Function* #else virtual FunctionAsctime* #endif clone(MemoryManager& theManager) const { return XalanCopyConstruct(theManager, *this); } protected: /** * Get the error message to report when * the function is called with the wrong * number of arguments. * * @return function error message */ const XalanDOMString& getError(XalanDOMString& theResult) const { theResult.assign("The asctime() function accepts one argument!"); return theResult; } private: // Not implemented... FunctionAsctime& operator=(const FunctionAsctime&); bool operator==(const FunctionAsctime&) const; }; int main( int argc, char* /* argv */[]) { XALAN_USING_STD(cerr) XALAN_USING_STD(endl) int theResult = 0; if (argc != 1) { cerr << "Usage: ExternalFunction" << endl << endl; } else { XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XERCES(XMLException) XALAN_USING_XALAN(XalanTransformer) // Call the static initializer for Xerces. try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { cerr << "Error during Xerces initialization. Error code was " << toCatch.getCode() << "." << endl; theResult = -1; } if (theResult == 0) { // Initialize Xalan. XalanTransformer::initialize(); { // Create a XalanTransformer. XalanTransformer theXalanTransformer; // The namespace for our functions... const XalanDOMString theNamespace("http://ExternalFunction.xalan-c++.xml.apache.org"); // Install the functions in the local space. They will only // be installed in this instance, so no other instances // will know about them... theXalanTransformer.installExternalFunction( theNamespace, XalanDOMString("asctime"), FunctionAsctime()); theXalanTransformer.installExternalFunction( theNamespace, XalanDOMString("square-root"), FunctionSquareRoot()); theXalanTransformer.installExternalFunction( theNamespace, XalanDOMString("cube"), FunctionCube()); // Do the transform. theResult = theXalanTransformer.transform("foo.xml", "foo.xsl", "foo.out"); if(theResult != 0) { cerr << "ExternalFunction Error: \n" << theXalanTransformer.getLastError() << endl << endl; } } // Terminate Xalan... XalanTransformer::terminate(); } // Terminate Xerces... XMLPlatformUtils::Terminate(); // Clean up the ICU, if it's integrated... XalanTransformer::ICUCleanUp(); } return theResult; } xalan-c-1.11/c/samples/SimpleXPathAPI/0002775000175000000640000000000012037700125016366 5ustar stevesambaxalan-c-1.11/c/samples/SimpleXPathAPI/foo.xml0000664000175000000640000000127611731656104017706 0ustar stevesamba Mr. Marston Mr. Bertoni Mr. Leslie Ms. Farmer Ms. Midy Mr. Dick Mr. Boag Mr. Curcuru Mr. Kesselman Mr. Auriemma xalan-c-1.11/c/samples/SimpleXPathAPI/SimpleXPathAPI.cpp0000664000175000000640000001270111731656104021630 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include #include #include #include #include #include #include #include #include int main( int argc, char* argv[]) { XALAN_USING_STD(cerr) XALAN_USING_STD(cout) XALAN_USING_STD(endl) int theResult = 0; if (argc != 4) { cerr << "Usage: SimpleXPathAPI XMLFilePath Context XPathExpression" << endl; theResult = -1; } else { XALAN_USING_XALAN(XSLException) try { XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XALAN(XPathEvaluator) XMLPlatformUtils::Initialize(); XPathEvaluator::initialize(); { XALAN_USING_XERCES(LocalFileInputSource) XALAN_USING_XALAN(XalanDocument) XALAN_USING_XALAN(XalanDocumentPrefixResolver) XALAN_USING_XALAN(XalanDOMString) XALAN_USING_XALAN(XalanNode) XALAN_USING_XALAN(XalanSourceTreeInit) XALAN_USING_XALAN(XalanSourceTreeDOMSupport) XALAN_USING_XALAN(XalanSourceTreeParserLiaison) XALAN_USING_XALAN(XObjectPtr) // Initialize the XalanSourceTree subsystem... XalanSourceTreeInit theSourceTreeInit; // We'll use these to parse the XML file. XalanSourceTreeDOMSupport theDOMSupport; XalanSourceTreeParserLiaison theLiaison(theDOMSupport); // Hook the two together... theDOMSupport.setParserLiaison(&theLiaison); const XalanDOMString theFileName(argv[1]); // Create an input source that represents a local file... const LocalFileInputSource theInputSource(theFileName.c_str()); // Parse the document... XalanDocument* const theDocument = theLiaison.parseXMLStream(theInputSource); assert(theDocument != 0); XalanDocumentPrefixResolver thePrefixResolver(theDocument); XPathEvaluator theEvaluator; // OK, let's find the context node... XalanNode* const theContextNode = theEvaluator.selectSingleNode( theDOMSupport, theDocument, XalanDOMString(argv[2]).c_str(), thePrefixResolver); if (theContextNode == 0) { cerr << "Warning -- No nodes matched the location path \"" << argv[2] << "\"." << endl << "Execution cannot continue..." << endl << endl; } else { // OK, let's evaluate the expression... const XObjectPtr theResult( theEvaluator.evaluate( theDOMSupport, theContextNode, XalanDOMString(argv[3]).c_str(), thePrefixResolver)); assert(theResult.null() == false); cout << "The string value of the result is:" << endl << theResult->str(theEvaluator.getExecutionContext()) << endl << endl; } } XPathEvaluator::terminate(); XMLPlatformUtils::Terminate(); } catch(const XSLException& theException) { XALAN_USING_XALAN(XalanDOMString) XalanDOMString theError; cerr << "XSL exception: " << theException.defaultFormat(theError) << endl; theResult = -1; } catch(...) { cerr << "Generic exception caught!" << endl; theResult = -1; } } return theResult; } xalan-c-1.11/c/samples/TransformToXercesDOM/0002775000175000000640000000000012037700125017626 5ustar stevesambaxalan-c-1.11/c/samples/TransformToXercesDOM/birds.xml0000664000175000000640000002201311731656104021456 0ustar stevesamba Great Tinamou. Highland Tinamou. Little Tinamou. Thicket Tinamou. Slaty-breasted Tinamou. Choco Tinamou. Red-throated Loon. Arctic Loon. Pacific Loon. Common Loon. Yellow-billed Loon. Least Grebe. Pied-billed Grebe. Atitlan Grebe. Horned Grebe. Red-necked Grebe. Eared Grebe. Western Grebe. Clark's Grebe. Yellow-nosed Albatross. (A) Shy Albatross. (A) Black-browed Albatross. (A) Light-mantled Albatross. (A) Wandering Albatross. (A) Laysan Albatross. Black-footed Albatross. Short-tailed Albatross. (N) Northern Fulmar. Kermadec Petrel. (A) Herald Petrel. (A) Murphy's Petrel. (N) Mottled Petrel. (A) Bermuda Petrel. Black-capped Petrel. Juan Fernandez Petrel. (N) Dark-rumped Petrel. White-necked Petrel. (H) Bonin Petrel. (H) Black-winged Petrel. (H, A) Cook's Petrel. (N) Stejneger's Petrel. (A) Bulwer's Petrel. (H) Jouanin's Petrel. (H, A) Parkinson's Petrel. (N) Streaked Shearwater. (A) Cory's Shearwater. (N) Pink-footed Shearwater. (N) Flesh-footed Shearwater. (N) Greater Shearwater. (N) Wedge-tailed Shearwater. Buller's Shearwater. (N) Sooty Shearwater. (N) Short-tailed Shearwater. (N) Christmas Shearwater. (H) Manx Shearwater. Townsend's Shearwater. Black-vented Shearwater. Audubon's Shearwater. Little Shearwater. (A) Wilson's Storm-Petrel. (N) White-faced Storm-Petrel. (A) European Storm-Petrel. (A) Fork-tailed Storm-Petrel. Leach's Storm-Petrel. Ashy Storm-Petrel. Band-rumped Storm-Petrel. (N) Wedge-rumped Storm-Petrel. (N) Black Storm-Petrel. Guadalupe Storm-Petrel. Markham's Storm-Petrel. (A) Tristram's Storm-Petrel. (H) Least Storm-Petrel. White-tailed Tropicbird. Red-billed Tropicbird. Red-tailed Tropicbird. Masked Booby. Blue-footed Booby. Peruvian Booby. (A) Brown Booby. Red-footed Booby. Northern Gannet. American White Pelican. Brown Pelican. Brandt's Cormorant. Neotropic Cormorant. Double-crested Cormorant. Great Cormorant. Red-faced Cormorant. Pelagic Cormorant. Anhinga. Magnificent Frigatebird. Great Frigatebird. Lesser Frigatebird. (A) xalan-c-1.11/c/samples/TransformToXercesDOM/birds.xsl0000664000175000000640000000136311731656104021471 0ustar stevesamba Parent Order This is a species... xalan-c-1.11/c/samples/TransformToXercesDOM/TransformToXercesDOM.cpp0000664000175000000640000001355011731656104024333 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #if !defined(NDEBUG) && defined(_MSC_VER) #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include XALAN_USING_STD(cerr) XALAN_USING_STD(cout) XALAN_USING_STD(endl) XALAN_USING_XERCES(DOMDocument) XALAN_USING_XALAN(XalanCompiledStylesheet) XALAN_USING_XALAN(XalanParsedSource) XALAN_USING_XALAN(XalanTransformer) void serialize(const DOMDocument& theDocument) { XALAN_USING_XALAN(XalanStdOutputStream) XALAN_USING_XALAN(XalanOutputStreamPrintWriter) XALAN_USING_XALAN(FormatterToXML) XALAN_USING_XALAN(XercesDOMFormatterWalker) // Create an output stream and a PrintWriter for the // output XalanStdOutputStream theStream(cout); XalanOutputStreamPrintWriter thePrintWriter(theStream); // We're going to serialize XML... FormatterToXML theFormatter(thePrintWriter); // Do pretty-printing... theFormatter.setDoIndent(true); theFormatter.setIndent(2); XercesDOMFormatterWalker theWalker(theFormatter); // This will walk the document and send // events to the FormatterToXML. theWalker.traverse(&theDocument); } int transformAndSerialize( XalanTransformer& theTransformer, const XalanParsedSource& theParsedSource, const XalanCompiledStylesheet& theStylesheet) { XALAN_USING_XERCES(DOMDocument) XALAN_USING_XERCES(DOMImplementation) XALAN_USING_XALAN(FormatterToXercesDOM) XALAN_USING_XALAN(XalanAutoPtr) // This is the document which we'll build... const XalanAutoPtr theDocument(DOMImplementation::getImplementation()->createDocument()); assert(theDocument.get() != 0); // This is a class derived from FormatterListener, which // we'll hook up to Xalan's output stage... FormatterToXercesDOM theFormatter(theDocument.get(), 0); // Do the transformation... int theResult = theTransformer.transform( theParsedSource, &theStylesheet, theFormatter); if (theResult != 0) { cerr << "Error transforming: " << theTransformer.getLastError() << endl; } else { serialize(*theDocument.get()); } return theResult; } int main( int argc, char* argv[]) { #if !defined(NDEBUG) && defined(_MSC_VER) _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); #endif int theResult = 0; if (argc != 3) { cerr << "Usage: TransformToXercesDOM XMLFilePath XSLFilePath" << endl; theResult = -1; } else { try { XALAN_USING_XERCES(XMLPlatformUtils) XMLPlatformUtils::Initialize(); XalanTransformer::initialize(); { XalanTransformer theTransformer; const XalanParsedSource* theParsedSource = 0; theResult = theTransformer.parseSource(argv[1], theParsedSource); if (theResult != 0) { cerr << "Error parsing source document: " << theTransformer.getLastError() << endl; } else { assert(theParsedSource != 0); const XalanCompiledStylesheet* theCompiledStylesheet = 0; theResult = theTransformer.compileStylesheet(argv[2], theCompiledStylesheet); if (theResult != 0) { cerr << "Error compiling stylesheet: " << theTransformer.getLastError() << endl; } else { theResult = transformAndSerialize(theTransformer, *theParsedSource, *theCompiledStylesheet); } } } XalanTransformer::terminate(); XMLPlatformUtils::Terminate(); } catch(...) { cerr << "Exception caught!" << endl; theResult = -1; } } return theResult; } xalan-c-1.11/c/samples/Projects/0002775000175000000640000000000012037700125015427 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/0002775000175000000640000000000012037700125016331 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7/0002775000175000000640000000000012037700125016730 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7/ParsedSourceWrappers/0002775000175000000640000000000012037700125023053 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7/ParsedSourceWrappers/ParsedSourceWrappers.vcproj0000664000175000000640000001064411731656104030435 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7/DocumentBuilder/0002775000175000000640000000000012037700125022015 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7/DocumentBuilder/DocumentBuilder.vcproj0000664000175000000640000001043511731656104026337 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7/SimpleTransform/0002775000175000000640000000000012037700125022055 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7/SimpleTransform/SimpleTransform.vcproj0000664000175000000640000001043511731656104026437 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7/XPathWrapper/0002775000175000000640000000000012037700125021315 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7/XPathWrapper/XPathWrapper.vcproj0000664000175000000640000001055611731656104025143 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7/StreamTransform/0002775000175000000640000000000012037700125022057 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7/StreamTransform/StreamTransform.vcproj0000664000175000000640000001043511731656104026443 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7/UseStylesheetParam/0002775000175000000640000000000012037700125022517 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7/UseStylesheetParam/UseStylesheetParam.vcproj0000664000175000000640000001055611731656104027547 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7/ExternalFunction/0002775000175000000640000000000012037700125022220 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7/ExternalFunction/ExternalFunction.vcproj0000664000175000000640000001047011731656104026744 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7/SimpleXPathAPI/0002775000175000000640000000000012037700125021460 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7/SimpleXPathAPI/SimpleXPathAPI.vcproj0000664000175000000640000001040211731656104025437 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7/TransformToXercesDOM/0002775000175000000640000000000012037700125022720 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7/TransformToXercesDOM/TransformToXercesDOM.vcproj0000664000175000000640000001064411731656104030147 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7/SimpleXPathCAPI/0002775000175000000640000000000012037700125021563 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7/SimpleXPathCAPI/SimpleXPathCAPI.vcproj0000664000175000000640000001043311731656104025651 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7/XalanTransform/0002775000175000000640000000000012037700125021667 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7/XalanTransform/XalanTransform.vcproj0000664000175000000640000001040211731656104026055 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7/ApacheModuleXSLT/0002775000175000000640000000000012037700125021772 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7/ApacheModuleXSLT/ApacheModuleXSLT.vcproj0000664000175000000640000001124011731656104026264 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7/CompileStylesheet/0002775000175000000640000000000012037700125022372 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7/CompileStylesheet/CompileStylesheet.vcproj0000664000175000000640000001052311731656104027267 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7/XalanTransformerCallback/0002775000175000000640000000000012037700125023633 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7/XalanTransformerCallback/XalanTransformerCallback.vcproj0000664000175000000640000001102011731656104031762 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7/ThreadSafe/0002775000175000000640000000000012037700125020736 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7/ThreadSafe/ThreadSafe.vcproj0000664000175000000640000001022611731656104024177 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7/SerializeNodeSet/0002775000175000000640000000000012037700125022141 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7/SerializeNodeSet/SerializeNodeSet.vcproj0000664000175000000640000001047011731656104026606 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7/TraceListen/0002775000175000000640000000000012037700125021145 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7/TraceListen/TraceListen.vcproj0000664000175000000640000001026111731656104024614 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7/Samples.sln0000664000175000000640000002002411731656104021055 0ustar stevesambaMicrosoft Visual Studio Solution File, Format Version 7.00 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ApacheModuleXSLT", "ApacheModuleXSLT\ApacheModuleXSLT.vcproj", "{A8284874-CFB5-41FD-8E72-AD6A838C816C}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CompileStylesheet", "CompileStylesheet\CompileStylesheet.vcproj", "{3DC27ECE-4DBE-4AD4-B2B4-4A086FB61267}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DocumentBuilder", "DocumentBuilder\DocumentBuilder.vcproj", "{6E1A24F0-CFA1-4911-9E63-96288FDD4C38}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ExternalFunction", "ExternalFunction\ExternalFunction.vcproj", "{DD67E298-35BF-4469-9922-B659F9C9860C}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ParsedSourceWrappers", "ParsedSourceWrappers\ParsedSourceWrappers.vcproj", "{498E25C6-B035-4443-8150-7945CF21E329}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SerializeNodeSet", "SerializeNodeSet\SerializeNodeSet.vcproj", "{A2A3D6D8-67D9-4228-BEB5-FD796234CD52}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleTransform", "SimpleTransform\SimpleTransform.vcproj", "{64695B13-26B0-4787-B5AF-AB61647EB405}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleXPathAPI", "SimpleXPathAPI\SimpleXPathAPI.vcproj", "{3E4DA3F3-BD46-46B8-A7A6-C0F7BF9491B4}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleXPathCAPI", "SimpleXPathCAPI\SimpleXPathCAPI.vcproj", "{627435B4-77FB-48BB-B309-89D23B1CE5C7}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StreamTransform", "StreamTransform\StreamTransform.vcproj", "{CE02EB6C-D359-4FFB-B930-4CD0D022B451}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XPathWrapper", "XPathWrapper\XPathWrapper.vcproj", "{767965CE-82EF-489E-9515-F62A9263CFE5}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ThreadSafe", "ThreadSafe\ThreadSafe.vcproj", "{B12FE83A-5F95-4F36-B907-BE329CA42E8A}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TraceListen", "TraceListen\TraceListen.vcproj", "{2C17C008-6672-42E9-99A2-064A5873B214}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TransformToXercesDOM", "TransformToXercesDOM\TransformToXercesDOM.vcproj", "{3C001E78-9671-4A47-BE6E-B3792B788950}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UseStylesheetParam", "UseStylesheetParam\UseStylesheetParam.vcproj", "{A721EB0E-4B6E-441E-A3C4-91ED7BDBF85D}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanTransform", "XalanTransform\XalanTransform.vcproj", "{EB362ABE-B0C5-416B-AD32-9AE5470BA1CD}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanTransformerCallback", "XalanTransformerCallback\XalanTransformerCallback.vcproj", "{B49020C9-BBCA-4D5C-8276-CF217C90BF5E}" EndProject Global GlobalSection(SolutionConfiguration) = preSolution ConfigName.0 = Debug ConfigName.1 = Release EndGlobalSection GlobalSection(ProjectDependencies) = postSolution EndGlobalSection GlobalSection(ProjectConfiguration) = postSolution {A8284874-CFB5-41FD-8E72-AD6A838C816C}.Debug.ActiveCfg = Debug|Win32 {A8284874-CFB5-41FD-8E72-AD6A838C816C}.Debug.Build.0 = Debug|Win32 {A8284874-CFB5-41FD-8E72-AD6A838C816C}.Release.ActiveCfg = Release|Win32 {A8284874-CFB5-41FD-8E72-AD6A838C816C}.Release.Build.0 = Release|Win32 {3DC27ECE-4DBE-4AD4-B2B4-4A086FB61267}.Debug.ActiveCfg = Debug|Win32 {3DC27ECE-4DBE-4AD4-B2B4-4A086FB61267}.Debug.Build.0 = Debug|Win32 {3DC27ECE-4DBE-4AD4-B2B4-4A086FB61267}.Release.ActiveCfg = Release|Win32 {3DC27ECE-4DBE-4AD4-B2B4-4A086FB61267}.Release.Build.0 = Release|Win32 {6E1A24F0-CFA1-4911-9E63-96288FDD4C38}.Debug.ActiveCfg = Debug|Win32 {6E1A24F0-CFA1-4911-9E63-96288FDD4C38}.Debug.Build.0 = Debug|Win32 {6E1A24F0-CFA1-4911-9E63-96288FDD4C38}.Release.ActiveCfg = Release|Win32 {6E1A24F0-CFA1-4911-9E63-96288FDD4C38}.Release.Build.0 = Release|Win32 {DD67E298-35BF-4469-9922-B659F9C9860C}.Debug.ActiveCfg = Debug|Win32 {DD67E298-35BF-4469-9922-B659F9C9860C}.Debug.Build.0 = Debug|Win32 {DD67E298-35BF-4469-9922-B659F9C9860C}.Release.ActiveCfg = Release|Win32 {DD67E298-35BF-4469-9922-B659F9C9860C}.Release.Build.0 = Release|Win32 {498E25C6-B035-4443-8150-7945CF21E329}.Debug.ActiveCfg = Debug|Win32 {498E25C6-B035-4443-8150-7945CF21E329}.Debug.Build.0 = Debug|Win32 {498E25C6-B035-4443-8150-7945CF21E329}.Release.ActiveCfg = Release|Win32 {498E25C6-B035-4443-8150-7945CF21E329}.Release.Build.0 = Release|Win32 {A2A3D6D8-67D9-4228-BEB5-FD796234CD52}.Debug.ActiveCfg = Debug|Win32 {A2A3D6D8-67D9-4228-BEB5-FD796234CD52}.Debug.Build.0 = Debug|Win32 {A2A3D6D8-67D9-4228-BEB5-FD796234CD52}.Release.ActiveCfg = Release|Win32 {A2A3D6D8-67D9-4228-BEB5-FD796234CD52}.Release.Build.0 = Release|Win32 {64695B13-26B0-4787-B5AF-AB61647EB405}.Debug.ActiveCfg = Debug|Win32 {64695B13-26B0-4787-B5AF-AB61647EB405}.Debug.Build.0 = Debug|Win32 {64695B13-26B0-4787-B5AF-AB61647EB405}.Release.ActiveCfg = Release|Win32 {64695B13-26B0-4787-B5AF-AB61647EB405}.Release.Build.0 = Release|Win32 {3E4DA3F3-BD46-46B8-A7A6-C0F7BF9491B4}.Debug.ActiveCfg = Debug|Win32 {3E4DA3F3-BD46-46B8-A7A6-C0F7BF9491B4}.Debug.Build.0 = Debug|Win32 {3E4DA3F3-BD46-46B8-A7A6-C0F7BF9491B4}.Release.ActiveCfg = Release|Win32 {3E4DA3F3-BD46-46B8-A7A6-C0F7BF9491B4}.Release.Build.0 = Release|Win32 {627435B4-77FB-48BB-B309-89D23B1CE5C7}.Debug.ActiveCfg = Debug|Win32 {627435B4-77FB-48BB-B309-89D23B1CE5C7}.Debug.Build.0 = Debug|Win32 {627435B4-77FB-48BB-B309-89D23B1CE5C7}.Release.ActiveCfg = Release|Win32 {627435B4-77FB-48BB-B309-89D23B1CE5C7}.Release.Build.0 = Release|Win32 {CE02EB6C-D359-4FFB-B930-4CD0D022B451}.Debug.ActiveCfg = Debug|Win32 {CE02EB6C-D359-4FFB-B930-4CD0D022B451}.Debug.Build.0 = Debug|Win32 {CE02EB6C-D359-4FFB-B930-4CD0D022B451}.Release.ActiveCfg = Release|Win32 {CE02EB6C-D359-4FFB-B930-4CD0D022B451}.Release.Build.0 = Release|Win32 {767965CE-82EF-489E-9515-F62A9263CFE5}.Debug.ActiveCfg = Debug|Win32 {767965CE-82EF-489E-9515-F62A9263CFE5}.Debug.Build.0 = Debug|Win32 {767965CE-82EF-489E-9515-F62A9263CFE5}.Release.ActiveCfg = Release|Win32 {767965CE-82EF-489E-9515-F62A9263CFE5}.Release.Build.0 = Release|Win32 {B12FE83A-5F95-4F36-B907-BE329CA42E8A}.Debug.ActiveCfg = Debug|Win32 {B12FE83A-5F95-4F36-B907-BE329CA42E8A}.Debug.Build.0 = Debug|Win32 {B12FE83A-5F95-4F36-B907-BE329CA42E8A}.Release.ActiveCfg = Release|Win32 {B12FE83A-5F95-4F36-B907-BE329CA42E8A}.Release.Build.0 = Release|Win32 {2C17C008-6672-42E9-99A2-064A5873B214}.Debug.ActiveCfg = Debug|Win32 {2C17C008-6672-42E9-99A2-064A5873B214}.Debug.Build.0 = Debug|Win32 {2C17C008-6672-42E9-99A2-064A5873B214}.Release.ActiveCfg = Release|Win32 {2C17C008-6672-42E9-99A2-064A5873B214}.Release.Build.0 = Release|Win32 {3C001E78-9671-4A47-BE6E-B3792B788950}.Debug.ActiveCfg = Debug|Win32 {3C001E78-9671-4A47-BE6E-B3792B788950}.Debug.Build.0 = Debug|Win32 {3C001E78-9671-4A47-BE6E-B3792B788950}.Release.ActiveCfg = Release|Win32 {3C001E78-9671-4A47-BE6E-B3792B788950}.Release.Build.0 = Release|Win32 {A721EB0E-4B6E-441E-A3C4-91ED7BDBF85D}.Debug.ActiveCfg = Debug|Win32 {A721EB0E-4B6E-441E-A3C4-91ED7BDBF85D}.Debug.Build.0 = Debug|Win32 {A721EB0E-4B6E-441E-A3C4-91ED7BDBF85D}.Release.ActiveCfg = Release|Win32 {A721EB0E-4B6E-441E-A3C4-91ED7BDBF85D}.Release.Build.0 = Release|Win32 {EB362ABE-B0C5-416B-AD32-9AE5470BA1CD}.Debug.ActiveCfg = Debug|Win32 {EB362ABE-B0C5-416B-AD32-9AE5470BA1CD}.Debug.Build.0 = Debug|Win32 {EB362ABE-B0C5-416B-AD32-9AE5470BA1CD}.Release.ActiveCfg = Release|Win32 {EB362ABE-B0C5-416B-AD32-9AE5470BA1CD}.Release.Build.0 = Release|Win32 {B49020C9-BBCA-4D5C-8276-CF217C90BF5E}.Debug.ActiveCfg = Debug|Win32 {B49020C9-BBCA-4D5C-8276-CF217C90BF5E}.Debug.Build.0 = Debug|Win32 {B49020C9-BBCA-4D5C-8276-CF217C90BF5E}.Release.ActiveCfg = Release|Win32 {B49020C9-BBCA-4D5C-8276-CF217C90BF5E}.Release.Build.0 = Release|Win32 EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection GlobalSection(ExtensibilityAddIns) = postSolution EndGlobalSection EndGlobal xalan-c-1.11/c/samples/Projects/Win32/VC6/0002775000175000000640000000000012037700125016727 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC6/ParsedSourceWrappers/0002775000175000000640000000000012037700125023052 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC6/ParsedSourceWrappers/ParsedSourceWrappers.dsp0000664000175000000640000001600611731656104027715 0ustar stevesamba# Microsoft Developer Studio Project File - Name="ParsedSourceWrappers" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=ParsedSourceWrappers - Win32 Debug !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 "ParsedSourceWrappers.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 "ParsedSourceWrappers.mak" CFG="ParsedSourceWrappers - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ParsedSourceWrappers - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "ParsedSourceWrappers - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "ParsedSourceWrappers - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "ParsedSourceWrappers - Win64 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)" == "ParsedSourceWrappers - 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 "..\..\..\..\..\bin\ParsedSourceWrappers" # PROP Intermediate_Dir "..\..\..\..\..\bin\ParsedSourceWrappers" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib Xalan-C_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\..\..\bin\ParsedSourceWrappers.exe" /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "ParsedSourceWrappers - 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 "..\..\..\..\..\bin\ParsedSourceWrappers" # PROP Intermediate_Dir "..\..\..\..\..\bin\ParsedSourceWrappers" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib Xalan-C_1D.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\..\..\bin\ParsedSourceWrappers_D.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "ParsedSourceWrappers - Win64 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 "..\..\..\..\..\bin\ParsedSourceWrappers" # PROP Intermediate_Dir "..\..\..\..\..\bin\ParsedSourceWrappers" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IA64 /out:"..\..\..\..\..\bin\ParsedSourceWrappers.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "ParsedSourceWrappers - Win64 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 "..\..\..\..\..\bin\ParsedSourceWrappers" # PROP Intermediate_Dir "..\..\..\..\..\bin\ParsedSourceWrappers" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IA64 /out:"..\..\..\..\..\bin\ParsedSourceWrappers.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ENDIF # Begin Target # Name "ParsedSourceWrappers - Win32 Release" # Name "ParsedSourceWrappers - Win32 Debug" # Name "ParsedSourceWrappers - Win64 Release" # Name "ParsedSourceWrappers - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\..\..\samples\ParsedSourceWrappers\ParsedSourceWrappers.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/samples/Projects/Win32/VC6/DocumentBuilder/0002775000175000000640000000000012037700125022014 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC6/DocumentBuilder/DocumentBuilder.dsp0000664000175000000640000001555311731656104025627 0ustar stevesamba# Microsoft Developer Studio Project File - Name="DocumentBuilder" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=DocumentBuilder - Win32 Debug !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 "DocumentBuilder.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 "DocumentBuilder.mak" CFG="DocumentBuilder - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "DocumentBuilder - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "DocumentBuilder - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "DocumentBuilder - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "DocumentBuilder - Win64 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)" == "DocumentBuilder - 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 "..\..\..\..\..\bin\DocumentBuilder" # PROP Intermediate_Dir "..\..\..\..\..\bin\DocumentBuilder" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib Xalan-C_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\..\..\bin\DocumentBuilder.exe" /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "DocumentBuilder - 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 "..\..\..\..\..\bin\DocumentBuilder" # PROP Intermediate_Dir "..\..\..\..\..\bin\DocumentBuilder" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib Xalan-C_1D.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\..\..\bin\DocumentBuilder_D.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "DocumentBuilder - Win64 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 "..\..\..\..\..\bin\DocumentBuilder" # PROP Intermediate_Dir "..\..\..\..\..\bin\DocumentBuilder" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IA64 /out:"..\..\..\..\..\bin\DocumentBuilder.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "DocumentBuilder - Win64 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 "..\..\..\..\..\bin\DocumentBuilder" # PROP Intermediate_Dir "..\..\..\..\..\bin\DocumentBuilder" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IA64 /out:"..\..\..\..\..\bin\DocumentBuilder.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ENDIF # Begin Target # Name "DocumentBuilder - Win32 Release" # Name "DocumentBuilder - Win32 Debug" # Name "DocumentBuilder - Win64 Release" # Name "DocumentBuilder - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\..\..\samples\DocumentBuilder\DocumentBuilder.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/samples/Projects/Win32/VC6/SimpleTransform/0002775000175000000640000000000012037700125022054 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC6/SimpleTransform/SimpleTransform.dsp0000664000175000000640000001555311731656104025727 0ustar stevesamba# Microsoft Developer Studio Project File - Name="SimpleTransform" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=SimpleTransform - Win32 Debug !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 "SimpleTransform.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 "SimpleTransform.mak" CFG="SimpleTransform - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "SimpleTransform - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "SimpleTransform - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "SimpleTransform - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "SimpleTransform - Win64 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)" == "SimpleTransform - 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 "..\..\..\..\..\bin\SimpleTransform" # PROP Intermediate_Dir "..\..\..\..\..\bin\SimpleTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib Xalan-C_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\..\..\bin\SimpleTransform.exe" /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "SimpleTransform - 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 "..\..\..\..\..\bin\SimpleTransform" # PROP Intermediate_Dir "..\..\..\..\..\bin\SimpleTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib Xalan-C_1D.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\..\..\bin\SimpleTransform_D.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "SimpleTransform - Win64 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 "..\..\..\..\..\bin\SimpleTransform" # PROP Intermediate_Dir "..\..\..\..\..\bin\SimpleTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IA64 /out:"..\..\..\..\..\bin\SimpleTransform.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "SimpleTransform - Win64 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 "..\..\..\..\..\bin\SimpleTransform" # PROP Intermediate_Dir "..\..\..\..\..\bin\SimpleTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IA64 /out:"..\..\..\..\..\bin\SimpleTransform.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ENDIF # Begin Target # Name "SimpleTransform - Win32 Release" # Name "SimpleTransform - Win32 Debug" # Name "SimpleTransform - Win64 Release" # Name "SimpleTransform - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\..\..\samples\SimpleTransform\SimpleTransform.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/samples/Projects/Win32/VC6/XPathWrapper/0002775000175000000640000000000012037700125021314 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC6/XPathWrapper/XPathWrapper.dsp0000664000175000000640000001572211731656104024425 0ustar stevesamba# Microsoft Developer Studio Project File - Name="XPathWrapper" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=XPathWrapper - Win32 Debug !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 "XPathWrapper.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 "XPathWrapper.mak" CFG="XPathWrapper - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "XPathWrapper - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "XPathWrapper - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "XPathWrapper - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "XPathWrapper - Win64 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)" == "XPathWrapper - 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 "..\..\..\..\..\bin\XPathWrapper" # PROP Intermediate_Dir "..\..\..\..\..\bin\XPathWrapper" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib Xalan-C_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\..\..\bin\XPathWrapper.exe" /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "XPathWrapper - 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 "..\..\..\..\..\bin\XPathWrapper" # PROP Intermediate_Dir "..\..\..\..\..\bin\XPathWrapper" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib Xalan-C_1D.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\..\..\bin\XPathWrapper_D.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "XPathWrapper - Win64 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 "..\..\..\..\..\bin\XPathWrapper" # PROP Intermediate_Dir "..\..\..\..\..\bin\XPathWrapper" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IA64 /out:"..\..\..\..\..\bin\XPathWrapper.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "XPathWrapper - Win64 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 "..\..\..\..\..\bin\XPathWrapper" # PROP Intermediate_Dir "..\..\..\..\..\bin\XPathWrapper" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IA64 /out:"..\..\..\..\..\bin\XPathWrapper.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ENDIF # Begin Target # Name "XPathWrapper - Win32 Release" # Name "XPathWrapper - Win32 Debug" # Name "XPathWrapper - Win64 Release" # Name "XPathWrapper - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\..\..\samples\XPathWrapper\TestDriver.cpp # End Source File # Begin Source File SOURCE=..\..\..\..\..\samples\XPathWrapper\XPathWrapper.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=..\..\..\..\..\samples\XPathWrapper\XPathWrapper.hpp # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/samples/Projects/Win32/VC6/StreamTransform/0002775000175000000640000000000012037700125022056 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC6/StreamTransform/StreamTransform.dsp0000664000175000000640000001555311731656104025733 0ustar stevesamba# Microsoft Developer Studio Project File - Name="StreamTransform" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=StreamTransform - Win32 Debug !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 "StreamTransform.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 "StreamTransform.mak" CFG="StreamTransform - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "StreamTransform - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "StreamTransform - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "StreamTransform - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "StreamTransform - Win64 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)" == "StreamTransform - 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 "..\..\..\..\..\bin\StreamTransform" # PROP Intermediate_Dir "..\..\..\..\..\bin\StreamTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib Xalan-C_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\..\..\bin\StreamTransform.exe" /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "StreamTransform - 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 "..\..\..\..\..\bin\StreamTransform" # PROP Intermediate_Dir "..\..\..\..\..\bin\StreamTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib Xalan-C_1D.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\..\..\bin\StreamTransform_D.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "StreamTransform - Win64 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 "..\..\..\..\..\bin\StreamTransform" # PROP Intermediate_Dir "..\..\..\..\..\bin\StreamTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IA64 /out:"..\..\..\..\..\bin\StreamTransform.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "StreamTransform - Win64 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 "..\..\..\..\..\bin\StreamTransform" # PROP Intermediate_Dir "..\..\..\..\..\bin\StreamTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IA64 /out:"..\..\..\..\..\bin\StreamTransform.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ENDIF # Begin Target # Name "StreamTransform - Win32 Release" # Name "StreamTransform - Win32 Debug" # Name "StreamTransform - Win64 Release" # Name "StreamTransform - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\..\..\samples\StreamTransform\StreamTransform.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/samples/Projects/Win32/VC6/UseStylesheetParam/0002775000175000000640000000000012037700125022516 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC6/UseStylesheetParam/UseStylesheetParam.dsp0000664000175000000640000001571011731656104027026 0ustar stevesamba# Microsoft Developer Studio Project File - Name="UseStylesheetParam" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=UseStylesheetParam - Win32 Debug !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 "UseStylesheetParam.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 "UseStylesheetParam.mak" CFG="UseStylesheetParam - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "UseStylesheetParam - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "UseStylesheetParam - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "UseStylesheetParam - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "UseStylesheetParam - Win64 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)" == "UseStylesheetParam - 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 "..\..\..\..\..\bin\UseStylesheetParam" # PROP Intermediate_Dir "..\..\..\..\..\bin\UseStylesheetParam" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib Xalan-C_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\..\..\bin\UseStylesheetParam.exe" /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "UseStylesheetParam - 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 "..\..\..\..\..\bin\UseStylesheetParam" # PROP Intermediate_Dir "..\..\..\..\..\bin\UseStylesheetParam" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib Xalan-C_1D.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\..\..\bin\UseStylesheetParam_D.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "UseStylesheetParam - Win64 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 "..\..\..\..\..\bin\UseStylesheetParam" # PROP Intermediate_Dir "..\..\..\..\..\bin\UseStylesheetParam" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IA64 /out:"..\..\..\..\..\bin\UseStylesheetParam.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "UseStylesheetParam - Win64 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 "..\..\..\..\..\bin\UseStylesheetParam" # PROP Intermediate_Dir "..\..\..\..\..\bin\UseStylesheetParam" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IA64 /out:"..\..\..\..\..\bin\UseStylesheetParam.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ENDIF # Begin Target # Name "UseStylesheetParam - Win32 Release" # Name "UseStylesheetParam - Win32 Debug" # Name "UseStylesheetParam - Win64 Release" # Name "UseStylesheetParam - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\..\..\samples\UseStylesheetParam\UseStylesheetParam.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/samples/Projects/Win32/VC6/ExternalFunction/0002775000175000000640000000000012037700125022217 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC6/ExternalFunction/ExternalFunction.dsp0000664000175000000640000001561211731656104026231 0ustar stevesamba# Microsoft Developer Studio Project File - Name="ExternalFunction" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=ExternalFunction - Win32 Debug !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 "ExternalFunction.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 "ExternalFunction.mak" CFG="ExternalFunction - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ExternalFunction - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "ExternalFunction - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "ExternalFunction - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "ExternalFunction - Win64 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)" == "ExternalFunction - 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 "..\..\..\..\..\bin\ExternalFunction" # PROP Intermediate_Dir "..\..\..\..\..\bin\ExternalFunction" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib Xalan-C_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\..\..\bin\ExternalFunction.exe" /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "ExternalFunction - 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 "..\..\..\..\..\bin\ExternalFunction" # PROP Intermediate_Dir "..\..\..\..\..\bin\ExternalFunction" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib Xalan-C_1D.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\..\..\bin\ExternalFunction_D.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "ExternalFunction - Win64 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 "..\..\..\..\..\bin\ExternalFunction" # PROP Intermediate_Dir "..\..\..\..\..\bin\ExternalFunction" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IA64 /out:"..\..\..\..\..\bin\ExternalFunction.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "ExternalFunction - Win64 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 "..\..\..\..\..\bin\ExternalFunction" # PROP Intermediate_Dir "..\..\..\..\..\bin\ExternalFunction" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IA64 /out:"..\..\..\..\..\bin\ExternalFunction.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ENDIF # Begin Target # Name "ExternalFunction - Win32 Release" # Name "ExternalFunction - Win32 Debug" # Name "ExternalFunction - Win64 Release" # Name "ExternalFunction - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\..\..\samples\ExternalFunction\ExternalFunction.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/samples/Projects/Win32/VC6/SimpleXPathAPI/0002775000175000000640000000000012037700125021457 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC6/SimpleXPathAPI/SimpleXPathAPI.dsp0000664000175000000640000001551411731656104024732 0ustar stevesamba# Microsoft Developer Studio Project File - Name="SimpleXPathAPI" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=SimpleXPathAPI - Win32 Debug !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 "SimpleXPathAPI.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 "SimpleXPathAPI.mak" CFG="SimpleXPathAPI - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "SimpleXPathAPI - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "SimpleXPathAPI - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "SimpleXPathAPI - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "SimpleXPathAPI - Win64 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)" == "SimpleXPathAPI - 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 "..\..\..\..\..\bin\SimpleXPathAPI" # PROP Intermediate_Dir "..\..\..\..\..\bin\SimpleXPathAPI" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib Xalan-C_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\..\..\bin\SimpleXPathAPI.exe" /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "SimpleXPathAPI - 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 "..\..\..\..\..\bin\SimpleXPathAPI" # PROP Intermediate_Dir "..\..\..\..\..\bin\SimpleXPathAPI" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib Xalan-C_1D.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\..\..\bin\SimpleXPathAPI_D.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "SimpleXPathAPI - Win64 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 "..\..\..\..\..\bin\SimpleXPathAPI" # PROP Intermediate_Dir "..\..\..\..\..\bin\SimpleXPathAPI" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IA64 /out:"..\..\..\..\..\bin\SimpleXPathAPI.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "SimpleXPathAPI - Win64 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 "..\..\..\..\..\bin\SimpleXPathAPI" # PROP Intermediate_Dir "..\..\..\..\..\bin\SimpleXPathAPI" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IA64 /out:"..\..\..\..\..\bin\SimpleXPathAPI.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ENDIF # Begin Target # Name "SimpleXPathAPI - Win32 Release" # Name "SimpleXPathAPI - Win32 Debug" # Name "SimpleXPathAPI - Win64 Release" # Name "SimpleXPathAPI - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\..\..\samples\SimpleXPathAPI\SimpleXPathAPI.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/samples/Projects/Win32/VC6/TransformToXercesDOM/0002775000175000000640000000000012037700125022717 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC6/TransformToXercesDOM/TransformToXercesDOM.dsp0000664000175000000640000001600611731656104027427 0ustar stevesamba# Microsoft Developer Studio Project File - Name="TransformToXercesDOM" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=TransformToXercesDOM - Win32 Debug !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 "TransformToXercesDOM.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 "TransformToXercesDOM.mak" CFG="TransformToXercesDOM - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "TransformToXercesDOM - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "TransformToXercesDOM - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "TransformToXercesDOM - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "TransformToXercesDOM - Win64 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)" == "TransformToXercesDOM - 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 "..\..\..\..\..\bin\TransformToXercesDOM" # PROP Intermediate_Dir "..\..\..\..\..\bin\TransformToXercesDOM" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib Xalan-C_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\..\..\bin\TransformToXercesDOM.exe" /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "TransformToXercesDOM - 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 "..\..\..\..\..\bin\TransformToXercesDOM" # PROP Intermediate_Dir "..\..\..\..\..\bin\TransformToXercesDOM" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib Xalan-C_1D.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\..\..\bin\TransformToXercesDOM_D.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "TransformToXercesDOM - Win64 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 "..\..\..\..\..\bin\TransformToXercesDOM" # PROP Intermediate_Dir "..\..\..\..\..\bin\TransformToXercesDOM" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IA64 /out:"..\..\..\..\..\bin\TransformToXercesDOM.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "TransformToXercesDOM - Win64 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 "..\..\..\..\..\bin\TransformToXercesDOM" # PROP Intermediate_Dir "..\..\..\..\..\bin\TransformToXercesDOM" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IA64 /out:"..\..\..\..\..\bin\TransformToXercesDOM.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ENDIF # Begin Target # Name "TransformToXercesDOM - Win32 Release" # Name "TransformToXercesDOM - Win32 Debug" # Name "TransformToXercesDOM - Win64 Release" # Name "TransformToXercesDOM - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\..\..\samples\TransformToXercesDOM\TransformToXercesDOM.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/samples/Projects/Win32/VC6/SimpleXPathCAPI/0002775000175000000640000000000012037700125021562 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC6/SimpleXPathCAPI/SimpleXPathCAPI.dsp0000664000175000000640000001555111731656104025141 0ustar stevesamba# Microsoft Developer Studio Project File - Name="SimpleXPathCAPI" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=SimpleXPathCAPI - Win32 Debug !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 "SimpleXPathCAPI.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 "SimpleXPathCAPI.mak" CFG="SimpleXPathCAPI - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "SimpleXPathCAPI - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "SimpleXPathCAPI - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "SimpleXPathCAPI - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "SimpleXPathCAPI - Win64 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)" == "SimpleXPathCAPI - 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 "..\..\..\..\..\bin\SimpleXPathCAPI" # PROP Intermediate_Dir "..\..\..\..\..\bin\SimpleXPathCAPI" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib Xalan-C_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\..\..\bin\SimpleXPathCAPI.exe" /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "SimpleXPathCAPI - 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 "..\..\..\..\..\bin\SimpleXPathCAPI" # PROP Intermediate_Dir "..\..\..\..\..\bin\SimpleXPathCAPI" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib Xalan-C_1D.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\..\..\bin\SimpleXPathCAPI_D.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "SimpleXPathCAPI - Win64 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 "..\..\..\..\..\bin\SimpleXPathCAPI" # PROP Intermediate_Dir "..\..\..\..\..\bin\SimpleXPathCAPI" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IA64 /out:"..\..\..\..\..\bin\SimpleXPathCAPI.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "SimpleXPathCAPI - Win64 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 "..\..\..\..\..\bin\SimpleXPathCAPI" # PROP Intermediate_Dir "..\..\..\..\..\bin\SimpleXPathCAPI" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IA64 /out:"..\..\..\..\..\bin\SimpleXPathCAPI.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ENDIF # Begin Target # Name "SimpleXPathCAPI - Win32 Release" # Name "SimpleXPathCAPI - Win32 Debug" # Name "SimpleXPathCAPI - Win64 Release" # Name "SimpleXPathCAPI - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\..\..\samples\SimpleXPathCAPI\SimpleXPathCAPI.c # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/samples/Projects/Win32/VC6/XalanTransform/0002775000175000000640000000000012037700125021666 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC6/XalanTransform/XalanTransform.dsp0000664000175000000640000001551411731656104025350 0ustar stevesamba# Microsoft Developer Studio Project File - Name="XalanTransform" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=XalanTransform - Win32 Debug !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 "XalanTransform.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 "XalanTransform.mak" CFG="XalanTransform - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "XalanTransform - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "XalanTransform - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "XalanTransform - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "XalanTransform - Win64 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)" == "XalanTransform - 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 "..\..\..\..\..\bin\XalanTransform" # PROP Intermediate_Dir "..\..\..\..\..\bin\XalanTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib Xalan-C_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\..\..\bin\XalanTransform.exe" /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "XalanTransform - 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 "..\..\..\..\..\bin\XalanTransform" # PROP Intermediate_Dir "..\..\..\..\..\bin\XalanTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib Xalan-C_1D.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\..\..\bin\XalanTransform_D.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "XalanTransform - Win64 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 "..\..\..\..\..\bin\XalanTransform" # PROP Intermediate_Dir "..\..\..\..\..\bin\XalanTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IA64 /out:"..\..\..\..\..\bin\XalanTransform.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "XalanTransform - Win64 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 "..\..\..\..\..\bin\XalanTransform" # PROP Intermediate_Dir "..\..\..\..\..\bin\XalanTransform" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IA64 /out:"..\..\..\..\..\bin\XalanTransform.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ENDIF # Begin Target # Name "XalanTransform - Win32 Release" # Name "XalanTransform - Win32 Debug" # Name "XalanTransform - Win64 Release" # Name "XalanTransform - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\..\..\samples\XalanTransform\XalanTransform.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/samples/Projects/Win32/VC6/ApacheModuleXSLT/0002775000175000000640000000000012037700125021771 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC6/ApacheModuleXSLT/ApacheModuleXSLT.dsp0000664000175000000640000001510011731656104025545 0ustar stevesamba# Microsoft Developer Studio Project File - Name="ApacheModuleXSLT" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 CFG=ApacheModuleXSLT - Win32 Debug !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 "ApacheModuleXSLT.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 "ApacheModuleXSLT.mak" CFG="ApacheModuleXSLT - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ApacheModuleXSLT - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "ApacheModuleXSLT - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "ApacheModuleXSLT - Win64 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "ApacheModuleXSLT - Win64 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)" == "ApacheModuleXSLT - 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 "..\..\..\..\..\bin\CompileStylesheet" # PROP Intermediate_Dir "..\..\..\..\..\bin\CompileStylesheet" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /D "APACHEMODULEXSLT_EXPORTS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /I "\Apache Group\Apache\include" /D "NDEBUG" /D "_MBCS" /D "APACHEMODULEXSLT_EXPORTS" /FD /c # SUBTRACT CPP /YX /Yc /Yu # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 /dll /machine:I386 # ADD LINK32 ApacheCore.lib /nologo /dll /machine:I386 !ELSEIF "$(CFG)" == "ApacheModuleXSLT - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "..\..\..\..\..\bin\CompileStylesheet" # PROP Intermediate_Dir "..\..\..\..\..\bin\CompileStylesheet" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "_MBCS" /D "APACHEMODULEXSLT_EXPORTS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "\Apache Group\Apache\include" /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /D "APACHEMODULEXSLT_EXPORTS" /YX /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 /dll /debug /machine:I386 /pdbtype:sept # ADD LINK32 ApacheCore.lib /nologo /dll /debug /machine:I386 /pdbtype:sept !ELSEIF "$(CFG)" == "ApacheModuleXSLT - Win64 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 "..\..\..\..\..\bin\CompileStylesheet" # PROP Intermediate_Dir "..\..\..\..\..\bin\CompileStylesheet" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /D "APACHEMODULEXSLT_EXPORTS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /I "\Apache Group\Apache\include" /D "NDEBUG" /D "_MBCS" /D "APACHEMODULEXSLT_EXPORTS" /FD /c # SUBTRACT CPP /YX /Yc /Yu # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 /dll /machine:I386 # ADD LINK32 ApacheCore.lib /nologo /dll /machine:IA64 !ELSEIF "$(CFG)" == "ApacheModuleXSLT - Win64 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "..\..\..\..\..\bin\CompileStylesheet" # PROP Intermediate_Dir "..\..\..\..\..\bin\CompileStylesheet" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "_MBCS" /D "APACHEMODULEXSLT_EXPORTS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "\Apache Group\Apache\include" /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /D "APACHEMODULEXSLT_EXPORTS" /YX /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 /dll /debug /machine:I386 /pdbtype:sept # ADD LINK32 ApacheCore.lib /nologo /dll /debug /machine:IA64 /pdbtype:sept !ENDIF # Begin Target # Name "ApacheModuleXSLT - Win32 Release" # Name "ApacheModuleXSLT - Win32 Debug" # Name "ApacheModuleXSLT - Win64 Release" # Name "ApacheModuleXSLT - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\..\..\samples\ApacheModuleXSLT\mod_xslt.c # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/samples/Projects/Win32/VC6/CompileStylesheet/0002775000175000000640000000000012037700125022371 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC6/CompileStylesheet/CompileStylesheet.dsp0000664000175000000640000001565111731656104026560 0ustar stevesamba# Microsoft Developer Studio Project File - Name="CompileStylesheet" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=CompileStylesheet - Win32 Debug !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 "CompileStylesheet.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 "CompileStylesheet.mak" CFG="CompileStylesheet - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "CompileStylesheet - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "CompileStylesheet - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "CompileStylesheet - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "CompileStylesheet - Win64 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)" == "CompileStylesheet - 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 "..\..\..\..\..\bin\CompileStylesheet" # PROP Intermediate_Dir "..\..\..\..\..\bin\CompileStylesheet" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib Xalan-C_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\..\..\bin\CompileStylesheet.exe" /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "CompileStylesheet - 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 "..\..\..\..\..\bin\CompileStylesheet" # PROP Intermediate_Dir "..\..\..\..\..\bin\CompileStylesheet" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib Xalan-C_1D.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\..\..\bin\CompileStylesheet_D.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "CompileStylesheet - Win64 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 "..\..\..\..\..\bin\CompileStylesheet" # PROP Intermediate_Dir "..\..\..\..\..\bin\CompileStylesheet" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IA64 /out:"..\..\..\..\..\bin\CompileStylesheet.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "CompileStylesheet - Win64 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 "..\..\..\..\..\bin\CompileStylesheet" # PROP Intermediate_Dir "..\..\..\..\..\bin\CompileStylesheet" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IA64 /out:"..\..\..\..\..\bin\CompileStylesheet.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ENDIF # Begin Target # Name "CompileStylesheet - Win32 Release" # Name "CompileStylesheet - Win32 Debug" # Name "CompileStylesheet - Win64 Release" # Name "CompileStylesheet - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\..\..\samples\CompileStylesheet\CompileStylesheet.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/samples/Projects/Win32/VC6/XalanTransformerCallback/0002775000175000000640000000000012037700125023632 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC6/XalanTransformerCallback/XalanTransformerCallback.dsp0000664000175000000640000001620211731656104031253 0ustar stevesamba# Microsoft Developer Studio Project File - Name="XalanTransformerCallback" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=XalanTransformerCallback - Win32 Debug !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 "XalanTransformerCallback.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 "XalanTransformerCallback.mak" CFG="XalanTransformerCallback - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "XalanTransformerCallback - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "XalanTransformerCallback - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "XalanTransformerCallback - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "XalanTransformerCallback - Win64 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)" == "XalanTransformerCallback - 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 "..\..\..\..\..\bin\XalanTransformerCallback" # PROP Intermediate_Dir "..\..\..\..\..\bin\XalanTransformerCallback" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib Xalan-C_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\..\..\bin\XalanTransformerCallback.exe" /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "XalanTransformerCallback - 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 "..\..\..\..\..\bin\XalanTransformerCallback" # PROP Intermediate_Dir "..\..\..\..\..\bin\XalanTransformerCallback" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib Xalan-C_1D.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\..\..\bin\XalanTransformerCallback_D.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "XalanTransformerCallback - Win64 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 "..\..\..\..\..\bin\XalanTransformerCallback" # PROP Intermediate_Dir "..\..\..\..\..\bin\XalanTransformerCallback" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IA64 /out:"..\..\..\..\..\bin\XalanTransformerCallback.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "XalanTransformerCallback - Win64 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 "..\..\..\..\..\bin\XalanTransformerCallback" # PROP Intermediate_Dir "..\..\..\..\..\bin\XalanTransformerCallback" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IA64 /out:"..\..\..\..\..\bin\XalanTransformerCallback.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ENDIF # Begin Target # Name "XalanTransformerCallback - Win32 Release" # Name "XalanTransformerCallback - Win32 Debug" # Name "XalanTransformerCallback - Win64 Release" # Name "XalanTransformerCallback - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\..\..\samples\XalanTransformerCallback\XalanTransformerCallback.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/samples/Projects/Win32/VC6/ThreadSafe/0002775000175000000640000000000012037700125020735 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC6/ThreadSafe/ThreadSafe.dsp0000664000175000000640000001532011731656104023461 0ustar stevesamba# Microsoft Developer Studio Project File - Name="ThreadSafe" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=ThreadSafe - Win32 Debug !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 "ThreadSafe.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 "ThreadSafe.mak" CFG="ThreadSafe - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ThreadSafe - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "ThreadSafe - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "ThreadSafe - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "ThreadSafe - Win64 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)" == "ThreadSafe - 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 "..\..\..\..\..\bin\ThreadSafe" # PROP Intermediate_Dir "..\..\..\..\..\bin\ThreadSafe" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib Xalan-C_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\..\..\bin\ThreadSafe.exe" /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "ThreadSafe - 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 "..\..\..\..\..\bin\ThreadSafe" # PROP Intermediate_Dir "..\..\..\..\..\bin\ThreadSafe" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib Xalan-C_1D.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\..\..\bin\ThreadSafe_D.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "ThreadSafe - Win64 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 "..\..\..\..\..\bin\ThreadSafe" # PROP Intermediate_Dir "..\..\..\..\..\bin\ThreadSafe" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IA64 /out:"..\..\..\..\..\bin\ThreadSafe.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "ThreadSafe - Win64 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 "..\..\..\..\..\bin\ThreadSafe" # PROP Intermediate_Dir "..\..\..\..\..\bin\ThreadSafe" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IA64 /out:"..\..\..\..\..\bin\ThreadSafe.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ENDIF # Begin Target # Name "ThreadSafe - Win32 Release" # Name "ThreadSafe - Win32 Debug" # Name "ThreadSafe - Win64 Release" # Name "ThreadSafe - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\..\..\samples\ThreadSafe\ThreadSafe.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/samples/Projects/Win32/VC6/SerializeNodeSet/0002775000175000000640000000000012037700125022140 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC6/SerializeNodeSet/SerializeNodeSet.dsp0000664000175000000640000001561211731656104026073 0ustar stevesamba# Microsoft Developer Studio Project File - Name="SerializeNodeSet" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=SerializeNodeSet - Win32 Debug !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 "SerializeNodeSet.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 "SerializeNodeSet.mak" CFG="SerializeNodeSet - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "SerializeNodeSet - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "SerializeNodeSet - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "SerializeNodeSet - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "SerializeNodeSet - Win64 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)" == "SerializeNodeSet - 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 "..\..\..\..\..\bin\SerializeNodeSet" # PROP Intermediate_Dir "..\..\..\..\..\bin\SerializeNodeSet" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib Xalan-C_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\..\..\bin\SerializeNodeSet.exe" /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "SerializeNodeSet - 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 "..\..\..\..\..\bin\SerializeNodeSet" # PROP Intermediate_Dir "..\..\..\..\..\bin\SerializeNodeSet" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib Xalan-C_1D.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\..\..\bin\SerializeNodeSet_D.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "SerializeNodeSet - Win64 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 "..\..\..\..\..\bin\SerializeNodeSet" # PROP Intermediate_Dir "..\..\..\..\..\bin\SerializeNodeSet" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IA64 /out:"..\..\..\..\..\bin\SerializeNodeSet.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "SerializeNodeSet - Win64 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 "..\..\..\..\..\bin\SerializeNodeSet" # PROP Intermediate_Dir "..\..\..\..\..\bin\SerializeNodeSet" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IA64 /out:"..\..\..\..\..\bin\SerializeNodeSet.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ENDIF # Begin Target # Name "SerializeNodeSet - Win32 Release" # Name "SerializeNodeSet - Win32 Debug" # Name "SerializeNodeSet - Win64 Release" # Name "SerializeNodeSet - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\..\..\samples\SerializeNodeSet\SerializeNodeSet.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/samples/Projects/Win32/VC6/TraceListen/0002775000175000000640000000000012037700125021144 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC6/TraceListen/TraceListen.dsp0000664000175000000640000001535711731656104024111 0ustar stevesamba# Microsoft Developer Studio Project File - Name="TraceListen" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=TraceListen - Win32 Debug !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 "TraceListen.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 "TraceListen.mak" CFG="TraceListen - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "TraceListen - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "TraceListen - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "TraceListen - Win64 Release" (based on "Win32 (x86) Console Application") !MESSAGE "TraceListen - Win64 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)" == "TraceListen - 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 "..\..\..\..\..\bin\TraceListen" # PROP Intermediate_Dir "..\..\..\..\..\bin\TraceListen" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib Xalan-C_1.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\..\..\bin\TraceListen.exe" /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "TraceListen - 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 "..\..\..\..\..\bin\TraceListen" # PROP Intermediate_Dir "..\..\..\..\..\bin\TraceListen" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib Xalan-C_1D.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\..\..\bin\TraceListen_D.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "TraceListen - Win64 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 "..\..\..\..\..\bin\TraceListen" # PROP Intermediate_Dir "..\..\..\..\..\bin\TraceListen" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /Ob2 /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "NDEBUG" /D "_MBCS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /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 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 xerces-c_3.lib /nologo /subsystem:console /machine:IA64 /out:"..\..\..\..\..\bin\TraceListen.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ELSEIF "$(CFG)" == "TraceListen - Win64 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 "..\..\..\..\..\bin\TraceListen" # PROP Intermediate_Dir "..\..\..\..\..\bin\TraceListen" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\include\xalanc" /I "..\..\..\..\..\include" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /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 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 /pdbtype:sept # ADD LINK32 xerces-c_3D.lib /nologo /subsystem:console /debug /machine:IA64 /out:"..\..\..\..\..\bin\TraceListen.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" !ENDIF # Begin Target # Name "TraceListen - Win32 Release" # Name "TraceListen - Win32 Debug" # Name "TraceListen - Win64 Release" # Name "TraceListen - Win64 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\..\..\samples\TraceListen\TraceListen.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xalan-c-1.11/c/samples/Projects/Win32/VC6/Samples.dsw0000664000175000000640000000756511731656104021074 0ustar stevesambaMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "ApacheModuleXSLT"=".\ApacheModuleXSLT\ApacheModuleXSLT.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "CompileStylesheet"=".\CompileStylesheet\CompileStylesheet.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "DocumentBuilder"=".\DocumentBuilder\DocumentBuilder.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "ExternalFunction"=".\ExternalFunction\ExternalFunction.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "ParsedSourceWrappers"=".\ParsedSourceWrappers\ParsedSourceWrappers.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "SerializeNodeSet"=".\SerializeNodeSet\SerializeNodeSet.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "SimpleTransform"=".\SimpleTransform\SimpleTransform.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "SimpleXPathAPI"=".\SimpleXPathAPI\SimpleXPathAPI.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "SimpleXPathCAPI"=".\SimpleXPathCAPI\SimpleXPathCAPI.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "StreamTransform"=".\StreamTransform\StreamTransform.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "XPathWrapper"=".\XPathWrapper\XPathWrapper.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "ThreadSafe"=".\ThreadSafe\ThreadSafe.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "TraceListen"=".\TraceListen\TraceListen.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "TransformToXercesDOM"=".\TransformToXercesDOM\TransformToXercesDOM.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "UseStylesheetParam"=".\UseStylesheetParam\UseStylesheetParam.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "XalanTransform"=".\XalanTransform\XalanTransform.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "XalanTransformerCallback"=".\XalanTransformerCallback\XalanTransformerCallback.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### xalan-c-1.11/c/samples/Projects/Win32/VC7.1/0002775000175000000640000000000012037700125017067 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7.1/ParsedSourceWrappers/0002775000175000000640000000000012037700125023212 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7.1/ParsedSourceWrappers/ParsedSourceWrappers.vcproj0000664000175000000640000001137311731656104030574 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7.1/DocumentBuilder/0002775000175000000640000000000012037700125022154 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7.1/DocumentBuilder/DocumentBuilder.vcproj0000664000175000000640000001116411731656104026476 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7.1/SimpleTransform/0002775000175000000640000000000012037700125022214 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7.1/SimpleTransform/SimpleTransform.vcproj0000664000175000000640000001116411731656104026576 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7.1/XPathWrapper/0002775000175000000640000000000012037700125021454 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7.1/XPathWrapper/XPathWrapper.vcproj0000664000175000000640000001130511731656104025273 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7.1/StreamTransform/0002775000175000000640000000000012037700125022216 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7.1/StreamTransform/StreamTransform.vcproj0000664000175000000640000001116411731656104026602 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7.1/UseStylesheetParam/0002775000175000000640000000000012037700125022656 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7.1/UseStylesheetParam/UseStylesheetParam.vcproj0000664000175000000640000001130511731656104027677 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7.1/ExternalFunction/0002775000175000000640000000000012037700125022357 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7.1/ExternalFunction/ExternalFunction.vcproj0000664000175000000640000001121711731656104027103 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7.1/SimpleXPathAPI/0002775000175000000640000000000012037700125021617 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7.1/SimpleXPathAPI/SimpleXPathAPI.vcproj0000664000175000000640000001113111731656104025576 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7.1/TransformToXercesDOM/0002775000175000000640000000000012037700125023057 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7.1/TransformToXercesDOM/TransformToXercesDOM.vcproj0000664000175000000640000001137311731656104030306 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7.1/SimpleXPathCAPI/0002775000175000000640000000000012037700125021722 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7.1/SimpleXPathCAPI/SimpleXPathCAPI.vcproj0000664000175000000640000001116211731656104026010 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7.1/XalanTransform/0002775000175000000640000000000012037700125022026 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7.1/XalanTransform/XalanTransform.vcproj0000664000175000000640000001113111731656104026214 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7.1/ApacheModuleXSLT/0002775000175000000640000000000012037700125022131 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7.1/ApacheModuleXSLT/ApacheModuleXSLT.vcproj0000664000175000000640000001176711731656104026441 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7.1/CompileStylesheet/0002775000175000000640000000000012037700125022531 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7.1/CompileStylesheet/CompileStylesheet.vcproj0000664000175000000640000001125211731656104027426 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7.1/XalanTransformerCallback/0002775000175000000640000000000012037700125023772 5ustar stevesamba././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootxalan-c-1.11/c/samples/Projects/Win32/VC7.1/XalanTransformerCallback/XalanTransformerCallback.vcprojxalan-c-1.11/c/samples/Projects/Win32/VC7.1/XalanTransformerCallback/XalanTransformerCallback.vcproj0000664000175000000640000001154711731656104032137 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7.1/ThreadSafe/0002775000175000000640000000000012037700125021075 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7.1/ThreadSafe/ThreadSafe.vcproj0000664000175000000640000001075511731656104024345 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7.1/SerializeNodeSet/0002775000175000000640000000000012037700125022300 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7.1/SerializeNodeSet/SerializeNodeSet.vcproj0000664000175000000640000001121711731656104026745 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7.1/TraceListen/0002775000175000000640000000000012037700125021304 5ustar stevesambaxalan-c-1.11/c/samples/Projects/Win32/VC7.1/TraceListen/TraceListen.vcproj0000664000175000000640000001101011731656104024744 0ustar stevesamba xalan-c-1.11/c/samples/Projects/Win32/VC7.1/Samples.sln0000664000175000000640000002215111731656104021217 0ustar stevesambaMicrosoft Visual Studio Solution File, Format Version 8.00 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ApacheModuleXSLT", "ApacheModuleXSLT\ApacheModuleXSLT.vcproj", "{A8284874-CFB5-41FD-8E72-AD6A838C816C}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CompileStylesheet", "CompileStylesheet\CompileStylesheet.vcproj", "{3DC27ECE-4DBE-4AD4-B2B4-4A086FB61267}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DocumentBuilder", "DocumentBuilder\DocumentBuilder.vcproj", "{6E1A24F0-CFA1-4911-9E63-96288FDD4C38}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ExternalFunction", "ExternalFunction\ExternalFunction.vcproj", "{DD67E298-35BF-4469-9922-B659F9C9860C}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ParsedSourceWrappers", "ParsedSourceWrappers\ParsedSourceWrappers.vcproj", "{498E25C6-B035-4443-8150-7945CF21E329}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SerializeNodeSet", "SerializeNodeSet\SerializeNodeSet.vcproj", "{A2A3D6D8-67D9-4228-BEB5-FD796234CD52}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleTransform", "SimpleTransform\SimpleTransform.vcproj", "{64695B13-26B0-4787-B5AF-AB61647EB405}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleXPathAPI", "SimpleXPathAPI\SimpleXPathAPI.vcproj", "{3E4DA3F3-BD46-46B8-A7A6-C0F7BF9491B4}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleXPathCAPI", "SimpleXPathCAPI\SimpleXPathCAPI.vcproj", "{627435B4-77FB-48BB-B309-89D23B1CE5C7}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StreamTransform", "StreamTransform\StreamTransform.vcproj", "{CE02EB6C-D359-4FFB-B930-4CD0D022B451}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XPathWrapper", "XPathWrapper\XPathWrapper.vcproj", "{767965CE-82EF-489E-9515-F62A9263CFE5}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ThreadSafe", "ThreadSafe\ThreadSafe.vcproj", "{B12FE83A-5F95-4F36-B907-BE329CA42E8A}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TraceListen", "TraceListen\TraceListen.vcproj", "{2C17C008-6672-42E9-99A2-064A5873B214}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TransformToXercesDOM", "TransformToXercesDOM\TransformToXercesDOM.vcproj", "{3C001E78-9671-4A47-BE6E-B3792B788950}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UseStylesheetParam", "UseStylesheetParam\UseStylesheetParam.vcproj", "{A721EB0E-4B6E-441E-A3C4-91ED7BDBF85D}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanTransform", "XalanTransform\XalanTransform.vcproj", "{EB362ABE-B0C5-416B-AD32-9AE5470BA1CD}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XalanTransformerCallback", "XalanTransformerCallback\XalanTransformerCallback.vcproj", "{B49020C9-BBCA-4D5C-8276-CF217C90BF5E}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Global GlobalSection(SolutionConfiguration) = preSolution Debug = Debug Release = Release EndGlobalSection GlobalSection(ProjectConfiguration) = postSolution {A8284874-CFB5-41FD-8E72-AD6A838C816C}.Debug.ActiveCfg = Debug|Win32 {A8284874-CFB5-41FD-8E72-AD6A838C816C}.Debug.Build.0 = Debug|Win32 {A8284874-CFB5-41FD-8E72-AD6A838C816C}.Release.ActiveCfg = Release|Win32 {A8284874-CFB5-41FD-8E72-AD6A838C816C}.Release.Build.0 = Release|Win32 {3DC27ECE-4DBE-4AD4-B2B4-4A086FB61267}.Debug.ActiveCfg = Debug|Win32 {3DC27ECE-4DBE-4AD4-B2B4-4A086FB61267}.Debug.Build.0 = Debug|Win32 {3DC27ECE-4DBE-4AD4-B2B4-4A086FB61267}.Release.ActiveCfg = Release|Win32 {3DC27ECE-4DBE-4AD4-B2B4-4A086FB61267}.Release.Build.0 = Release|Win32 {6E1A24F0-CFA1-4911-9E63-96288FDD4C38}.Debug.ActiveCfg = Debug|Win32 {6E1A24F0-CFA1-4911-9E63-96288FDD4C38}.Debug.Build.0 = Debug|Win32 {6E1A24F0-CFA1-4911-9E63-96288FDD4C38}.Release.ActiveCfg = Release|Win32 {6E1A24F0-CFA1-4911-9E63-96288FDD4C38}.Release.Build.0 = Release|Win32 {DD67E298-35BF-4469-9922-B659F9C9860C}.Debug.ActiveCfg = Debug|Win32 {DD67E298-35BF-4469-9922-B659F9C9860C}.Debug.Build.0 = Debug|Win32 {DD67E298-35BF-4469-9922-B659F9C9860C}.Release.ActiveCfg = Release|Win32 {DD67E298-35BF-4469-9922-B659F9C9860C}.Release.Build.0 = Release|Win32 {498E25C6-B035-4443-8150-7945CF21E329}.Debug.ActiveCfg = Debug|Win32 {498E25C6-B035-4443-8150-7945CF21E329}.Debug.Build.0 = Debug|Win32 {498E25C6-B035-4443-8150-7945CF21E329}.Release.ActiveCfg = Release|Win32 {498E25C6-B035-4443-8150-7945CF21E329}.Release.Build.0 = Release|Win32 {A2A3D6D8-67D9-4228-BEB5-FD796234CD52}.Debug.ActiveCfg = Debug|Win32 {A2A3D6D8-67D9-4228-BEB5-FD796234CD52}.Debug.Build.0 = Debug|Win32 {A2A3D6D8-67D9-4228-BEB5-FD796234CD52}.Release.ActiveCfg = Release|Win32 {A2A3D6D8-67D9-4228-BEB5-FD796234CD52}.Release.Build.0 = Release|Win32 {64695B13-26B0-4787-B5AF-AB61647EB405}.Debug.ActiveCfg = Debug|Win32 {64695B13-26B0-4787-B5AF-AB61647EB405}.Debug.Build.0 = Debug|Win32 {64695B13-26B0-4787-B5AF-AB61647EB405}.Release.ActiveCfg = Release|Win32 {64695B13-26B0-4787-B5AF-AB61647EB405}.Release.Build.0 = Release|Win32 {3E4DA3F3-BD46-46B8-A7A6-C0F7BF9491B4}.Debug.ActiveCfg = Debug|Win32 {3E4DA3F3-BD46-46B8-A7A6-C0F7BF9491B4}.Debug.Build.0 = Debug|Win32 {3E4DA3F3-BD46-46B8-A7A6-C0F7BF9491B4}.Release.ActiveCfg = Release|Win32 {3E4DA3F3-BD46-46B8-A7A6-C0F7BF9491B4}.Release.Build.0 = Release|Win32 {627435B4-77FB-48BB-B309-89D23B1CE5C7}.Debug.ActiveCfg = Debug|Win32 {627435B4-77FB-48BB-B309-89D23B1CE5C7}.Debug.Build.0 = Debug|Win32 {627435B4-77FB-48BB-B309-89D23B1CE5C7}.Release.ActiveCfg = Release|Win32 {627435B4-77FB-48BB-B309-89D23B1CE5C7}.Release.Build.0 = Release|Win32 {CE02EB6C-D359-4FFB-B930-4CD0D022B451}.Debug.ActiveCfg = Debug|Win32 {CE02EB6C-D359-4FFB-B930-4CD0D022B451}.Debug.Build.0 = Debug|Win32 {CE02EB6C-D359-4FFB-B930-4CD0D022B451}.Release.ActiveCfg = Release|Win32 {CE02EB6C-D359-4FFB-B930-4CD0D022B451}.Release.Build.0 = Release|Win32 {767965CE-82EF-489E-9515-F62A9263CFE5}.Debug.ActiveCfg = Debug|Win32 {767965CE-82EF-489E-9515-F62A9263CFE5}.Debug.Build.0 = Debug|Win32 {767965CE-82EF-489E-9515-F62A9263CFE5}.Release.ActiveCfg = Release|Win32 {767965CE-82EF-489E-9515-F62A9263CFE5}.Release.Build.0 = Release|Win32 {B12FE83A-5F95-4F36-B907-BE329CA42E8A}.Debug.ActiveCfg = Debug|Win32 {B12FE83A-5F95-4F36-B907-BE329CA42E8A}.Debug.Build.0 = Debug|Win32 {B12FE83A-5F95-4F36-B907-BE329CA42E8A}.Release.ActiveCfg = Release|Win32 {B12FE83A-5F95-4F36-B907-BE329CA42E8A}.Release.Build.0 = Release|Win32 {2C17C008-6672-42E9-99A2-064A5873B214}.Debug.ActiveCfg = Debug|Win32 {2C17C008-6672-42E9-99A2-064A5873B214}.Debug.Build.0 = Debug|Win32 {2C17C008-6672-42E9-99A2-064A5873B214}.Release.ActiveCfg = Release|Win32 {2C17C008-6672-42E9-99A2-064A5873B214}.Release.Build.0 = Release|Win32 {3C001E78-9671-4A47-BE6E-B3792B788950}.Debug.ActiveCfg = Debug|Win32 {3C001E78-9671-4A47-BE6E-B3792B788950}.Debug.Build.0 = Debug|Win32 {3C001E78-9671-4A47-BE6E-B3792B788950}.Release.ActiveCfg = Release|Win32 {3C001E78-9671-4A47-BE6E-B3792B788950}.Release.Build.0 = Release|Win32 {A721EB0E-4B6E-441E-A3C4-91ED7BDBF85D}.Debug.ActiveCfg = Debug|Win32 {A721EB0E-4B6E-441E-A3C4-91ED7BDBF85D}.Debug.Build.0 = Debug|Win32 {A721EB0E-4B6E-441E-A3C4-91ED7BDBF85D}.Release.ActiveCfg = Release|Win32 {A721EB0E-4B6E-441E-A3C4-91ED7BDBF85D}.Release.Build.0 = Release|Win32 {EB362ABE-B0C5-416B-AD32-9AE5470BA1CD}.Debug.ActiveCfg = Debug|Win32 {EB362ABE-B0C5-416B-AD32-9AE5470BA1CD}.Debug.Build.0 = Debug|Win32 {EB362ABE-B0C5-416B-AD32-9AE5470BA1CD}.Release.ActiveCfg = Release|Win32 {EB362ABE-B0C5-416B-AD32-9AE5470BA1CD}.Release.Build.0 = Release|Win32 {B49020C9-BBCA-4D5C-8276-CF217C90BF5E}.Debug.ActiveCfg = Debug|Win32 {B49020C9-BBCA-4D5C-8276-CF217C90BF5E}.Debug.Build.0 = Debug|Win32 {B49020C9-BBCA-4D5C-8276-CF217C90BF5E}.Release.ActiveCfg = Release|Win32 {B49020C9-BBCA-4D5C-8276-CF217C90BF5E}.Release.Build.0 = Release|Win32 EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection GlobalSection(ExtensibilityAddIns) = postSolution EndGlobalSection EndGlobal xalan-c-1.11/c/samples/SimpleXPathCAPI/0002775000175000000640000000000012037700125016471 5ustar stevesambaxalan-c-1.11/c/samples/SimpleXPathCAPI/foo.xml0000664000175000000640000000064411731656104020007 0ustar stevesamba xalan-c-1.11/c/samples/SimpleXPathCAPI/SimpleXPathCAPI.c0000664000175000000640000001271211731656104021500 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include int CreateXPath( XalanXPathEvaluatorHandle theXalanHandle, const char* theXPathExpression, XalanXPathHandle* theXPathHandle) { int theResult = 0; assert(theXalanHandle); assert(theXPathHandle); theResult = XalanCreateXPath(theXalanHandle, theXPathExpression, 0, theXPathHandle); if (theResult != XALAN_XPATH_API_SUCCESS) { fprintf(stderr, "Error creating XPath. Error code was %d.\n", theResult); } return theResult; } int DestroyXPath( XalanXPathEvaluatorHandle theXalanHandle, XalanXPathHandle theXPathHandle) { int theResult = 0; theResult = XalanDestroyXPath(theXalanHandle, theXPathHandle); if (theResult != XALAN_XPATH_API_SUCCESS) { fprintf(stderr, "Error destroying XPath. Error code was %d.\n", theResult); } return theResult; } char* ReadFile(const char* theXMLFileName) { char* theBuffer = NULL; FILE* theFile = fopen(theXMLFileName, "rb"); if (theFile == 0) { fprintf(stderr, "Unable to open input file %s\n", theXMLFileName); } else { fseek(theFile, 0, SEEK_END); { const long theSize = ftell(theFile); if (theSize == -1) { fprintf(stderr, "Unable to determine the size of the input file\n"); } else { fseek(theFile, SEEK_SET, 0); theBuffer = (char*)malloc(theSize + 1); if (theBuffer == 0) { fprintf(stderr, "Unable to allocate enough memory. The input file size is %d\n", theSize); } else { fread(theBuffer, 1, theSize, theFile); theBuffer[theSize] = '\0'; } } } fclose(theFile); } return theBuffer; } int EvaluateXPath( XalanXPathEvaluatorHandle theXalanHandle, const char* theXMLFileName, const char* theXPathExpression, int* theBoolean) { XalanXPathHandle theXPathHandle; int theResult = CreateXPath(theXalanHandle, theXPathExpression, &theXPathHandle); if (theResult == XALAN_XPATH_API_SUCCESS) { char* theBuffer = ReadFile(theXMLFileName); if (theBuffer != NULL) { theResult = XalanEvaluateXPathAsBoolean(theXalanHandle, theXPathHandle, theBuffer, theBoolean); if (theResult != XALAN_XPATH_API_SUCCESS) { fprintf(stderr, "Unable to evaluate XPath expression. Error code was %d.\n", theResult); } free(theBuffer); } DestroyXPath(theXalanHandle, theXPathHandle); } return theResult; } int main( int argc, char* argv[]) { int theResult = 0; if (argc != 3) { fprintf(stderr, "Usage: SimpleXPathAPI XMLFilePath XPathExpression\n"); theResult = -1; } else { theResult = XalanXPathAPIInitialize(); if (theResult != XALAN_XPATH_API_SUCCESS) { fprintf(stderr, "Unable to initialize the API. Error code was %d.\n", theResult); } else { XalanXPathEvaluatorHandle theXalanHandle; theResult = XalanCreateXPathEvaluator(&theXalanHandle); if (theResult != XALAN_XPATH_API_SUCCESS) { fprintf(stderr, "Error creating evaluator. Error code was %d.\n", theResult); } else { int theBoolean = 0; theResult = EvaluateXPath(theXalanHandle, argv[1], argv[2], &theBoolean); if (theResult == XALAN_XPATH_API_SUCCESS) { fprintf(stdout, "The result of the expression was '%s'.\n", theBoolean == 0 ? "false" : "true"); } theResult = XalanDestroyXPathEvaluator(theXalanHandle); if (theResult != XALAN_XPATH_API_SUCCESS) { fprintf(stderr, "Error destroying evaluator. Error code was %d.\n", theResult); } } theResult = XalanXPathAPITerminate(); if (theResult != XALAN_XPATH_API_SUCCESS) { fprintf(stderr, "Error terminating the API. Error code was %d.\n", theResult); } } } return theResult; } xalan-c-1.11/c/samples/EntityResolver/0002775000175000000640000000000012037700125016634 5ustar stevesambaxalan-c-1.11/c/samples/EntityResolver/EntityResolver.cpp0000664000175000000640000003054211731656104022347 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "xalanc/Include/PlatformDefinitions.hpp" #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include "xercesc/framework/MemBufInputSource.hpp" #include "xercesc/sax/EntityResolver.hpp" #include "xercesc/util/PlatformUtils.hpp" #include "xercesc/util/XMLEntityResolver.hpp" #include "xercesc/util/XMLResourceIdentifier.hpp" #include "xalanc/XalanTransformer/XalanTransformer.hpp" XALAN_USING_XERCES(EntityResolver) XALAN_USING_XERCES(InputSource) XALAN_USING_XERCES(MemBufInputSource) XALAN_USING_XALAN(MemoryManager) XALAN_USING_XERCES(XMLEntityResolver) XALAN_USING_XERCES(XMLResourceIdentifier) XALAN_USING_XALAN(XalanDOMString) XALAN_USING_XALAN(XalanTransformer) // This class implements both the EntityResolver and XMLEntityResolver abstract // base classes. It maps three system IDs to three pre-defined entities. One // entity is present in the input XML file, one in the input XSL file, and another // as an argument to the XSLT document() function. class MyEntityResolver : public EntityResolver, public XMLEntityResolver { public: MyEntityResolver( const XalanDOMString& theDocumentEntityFile, const XalanDOMString& theStylesheetEntityFile, const XalanDOMString& theDocumentFunctionEntityFile) : EntityResolver(), XMLEntityResolver(), m_documentEntityFile(theDocumentEntityFile), m_stylesheetEntityFile(theStylesheetEntityFile), m_documentFunctionEntityFile(theDocumentFunctionEntityFile) { } virtual ~MyEntityResolver() { } virtual InputSource* resolveEntity( const XMLCh* const /* publicId */, const XMLCh* const systemId) { if (m_documentEntityFile == systemId) { return new MemBufInputSource( reinterpret_cast(s_documentEntity), s_documentEntityLength, m_documentEntityFile.c_str()); } else if (m_stylesheetEntityFile == systemId) { return new MemBufInputSource( reinterpret_cast(s_stylesheetEntity), s_stylesheetEntityLength, m_stylesheetEntityFile.c_str()); } else if (m_documentFunctionEntityFile == systemId) { return new MemBufInputSource( reinterpret_cast(s_documentFunctionEntity), s_documentFunctionEntityLength, m_documentFunctionEntityFile.c_str()); } else { return 0; } } virtual InputSource* resolveEntity(XMLResourceIdentifier* resourceIdentifier) { assert(resourceIdentifier != 0); if (resourceIdentifier->getResourceIdentifierType() == XMLResourceIdentifier::ExternalEntity) { const XMLCh* const theSystemID = resourceIdentifier->getSystemId(); if (m_documentEntityFile == theSystemID) { return new MemBufInputSource( reinterpret_cast(s_documentEntity), s_documentEntityLength, m_documentEntityFile.c_str()); } else if (m_stylesheetEntityFile == theSystemID) { return new MemBufInputSource( reinterpret_cast(s_stylesheetEntity), s_stylesheetEntityLength, m_stylesheetEntityFile.c_str()); } else if (m_documentFunctionEntityFile == theSystemID) { return new MemBufInputSource( reinterpret_cast(s_documentFunctionEntity), s_documentFunctionEntityLength, m_documentFunctionEntityFile.c_str()); } } return 0; } private: // Not implemented... MyEntityResolver& operator=(const MyEntityResolver&); bool operator==(const MyEntityResolver&) const; const XalanDOMString& m_documentEntityFile; const XalanDOMString& m_stylesheetEntityFile; const XalanDOMString& m_documentFunctionEntityFile; static const char* const s_documentEntity; static const XalanDOMString::size_type s_documentEntityLength; static const char* const s_stylesheetEntity; static const XalanDOMString::size_type s_stylesheetEntityLength; static const char* const s_documentFunctionEntity; static const XalanDOMString::size_type s_documentFunctionEntityLength; }; const char* const MyEntityResolver::s_documentEntity = #if defined(XALAN_NON_ASCII_PLATFORM) "Hello world!"; #else "Hello world!"; #endif const XalanDOMString::size_type MyEntityResolver::s_documentEntityLength = XalanDOMString::length(s_documentEntity); const char* const MyEntityResolver::s_stylesheetEntity = #if defined(XALAN_NON_ASCII_PLATFORM) ""; #else ""; #endif const XalanDOMString::size_type MyEntityResolver::s_stylesheetEntityLength = XalanDOMString::length(s_stylesheetEntity); const char* const MyEntityResolver::s_documentFunctionEntity = #if defined(XALAN_NON_ASCII_PLATFORM) "Hello world from the document() function!"; #else "Hello world from the document() function!"; #endif const XalanDOMString::size_type MyEntityResolver::s_documentFunctionEntityLength = XalanDOMString::length(s_documentFunctionEntity); static int transform( XalanTransformer& theTransformer, const XalanDOMString& theXMLFile, const XalanDOMString& theXSLFile, const char* theOutputFile, bool fUseDOM) { XALAN_USING_XALAN(XalanCompiledStylesheet) XALAN_USING_XALAN(XalanParsedSource) typedef XalanTransformer::EnsureDestroyCompiledStylesheet EnsureDestroyCompiledStylesheet; typedef XalanTransformer::EnsureDestroyParsedSource EnsureDestroyParsedSource; const XalanCompiledStylesheet* theCompiledStylesheet; int theResult = theTransformer.compileStylesheet(theXSLFile, theCompiledStylesheet); if (theResult != 0) { return theResult; } const EnsureDestroyCompiledStylesheet theStylesheetGuard(theTransformer, theCompiledStylesheet); const XalanParsedSource* theParsedSource; theResult = theTransformer.parseSource(theXMLFile, theParsedSource, fUseDOM); if (theResult != 0) { return theResult; } const EnsureDestroyParsedSource theSourceGuard(theTransformer, theParsedSource); return theTransformer.transform(*theParsedSource, theCompiledStylesheet, theOutputFile); } static int transformWithSourceTree( XalanTransformer& theTransformer, MyEntityResolver& theEntityResolver, const XalanDOMString& theXMLFile, const XalanDOMString& theXSLFile) { theTransformer.setEntityResolver(&theEntityResolver); // Do the transform. int theResult = transform(theTransformer, theXMLFile, theXSLFile, "foo1.out", false); if (theResult == 0) { theTransformer.setXMLEntityResolver(&theEntityResolver); theResult = transform(theTransformer, theXMLFile, theXSLFile, "foo2.out", false); } return theResult; } static int transformWithXercesDOM( XalanTransformer& theTransformer, MyEntityResolver& theEntityResolver, const XalanDOMString& theXMLFile, const XalanDOMString& theXSLFile) { theTransformer.setEntityResolver(&theEntityResolver); // Do the transform. int theResult = transform(theTransformer, theXMLFile, theXSLFile, "foo3.out", true); if (theResult == 0) { theTransformer.setXMLEntityResolver(&theEntityResolver); theResult = transform(theTransformer, theXMLFile, theXSLFile, "foo4.out", true); } return theResult; } int main( int argc, char* /* argv */[]) { XALAN_USING_STD(cerr) XALAN_USING_STD(endl) int theResult = 0; if (argc != 1) { cerr << "Usage: EntityResolver" << endl << endl; } else { XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XERCES(XMLException) // Call the static initializer for Xerces. try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { cerr << "Error during Xerces initialization. Error code was " << toCatch.getCode() << "." << endl; theResult = -1; } if (theResult == 0) { // Initialize Xalan. XalanTransformer::initialize(); { // Create a XalanTransformer. XalanTransformer theTransformer; const XalanDOMString theXMLFile("foo.xml"); const XalanDOMString theXSLFile("foo.xsl"); const XalanDOMString theDocumentEntityFile("hello.xml"); const XalanDOMString theStylesheetEntityFile("apply-templates.xml"); const XalanDOMString theDocumentFunctionEntityFile("document.xml"); MyEntityResolver theEntityResolver( theDocumentEntityFile, theStylesheetEntityFile, theDocumentFunctionEntityFile); theResult = transformWithSourceTree( theTransformer, theEntityResolver, theXMLFile, theXSLFile); if (theResult == 0) { theResult = transformWithXercesDOM( theTransformer, theEntityResolver, theXMLFile, theXSLFile); } if(theResult != 0) { cerr << "EntityResolver Error: \n" << theTransformer.getLastError() << endl << endl; } } // Terminate Xalan... XalanTransformer::terminate(); } // Terminate Xerces... XMLPlatformUtils::Terminate(); // Clean up the ICU, if it's integrated... XalanTransformer::ICUCleanUp(); } return theResult; } xalan-c-1.11/c/samples/EntityResolver/foo.xml0000664000175000000640000000014611731656104020147 0ustar stevesamba ]> &hello; xalan-c-1.11/c/samples/EntityResolver/foo.xsl0000664000175000000640000000071011731656104020152 0ustar stevesamba ]> &apply-templates; xalan-c-1.11/c/samples/XalanTransform/0002775000175000000640000000000012037700125016575 5ustar stevesambaxalan-c-1.11/c/samples/XalanTransform/XalanTransform.cpp0000664000175000000640000000533211731656104022250 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include #include int main( int argc, char* argv[]) { XALAN_USING_STD(cerr) XALAN_USING_STD(cout) XALAN_USING_STD(endl) if (argc < 3 || argc > 4) { cerr << "Usage: XalanTransform XMLFileName XSLFileName [OutFileName]" << endl; return -1; } int theResult = -1; try { XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XALAN(XalanTransformer) // Call the static initializer for Xerces. XMLPlatformUtils::Initialize(); // Initialize Xalan. XalanTransformer::initialize(); { // Create a XalanTransformer. XalanTransformer theXalanTransformer; if (argc == 4) { // Do the transform. theResult = theXalanTransformer.transform(argv[1], argv[2], argv[3]); if(theResult != 0) { cerr << "Error: " << theXalanTransformer.getLastError() << endl; } } else { // Do the transform. theResult = theXalanTransformer.transform(argv[1], argv[2], cout); if(theResult != 0) { cerr << "Error: " << theXalanTransformer.getLastError() << endl; } } } // Terminate Xalan... XalanTransformer::terminate(); // Terminate Xerces... XMLPlatformUtils::Terminate(); // Clean up the ICU, if it's integrated... XalanTransformer::ICUCleanUp(); } catch(...) { cerr << "An unknown error occurred!" << endl; } return theResult; } xalan-c-1.11/c/samples/XalanTransform/foo.xml0000664000175000000640000000015111731656104020104 0ustar stevesamba

    Hello

    xalan-c-1.11/c/samples/XalanTransform/foo.xsl0000664000175000000640000000651111731656104020120 0ustar stevesamba <xsl:value-of select="@title"/>

      NOTE:  

     
     
  •    
    xalan-c-1.11/c/samples/CompileStylesheet/0002775000175000000640000000000012037700125017300 5ustar stevesambaxalan-c-1.11/c/samples/CompileStylesheet/foo.xml0000664000175000000640000000004711731656104020613 0ustar stevesamba Hello xalan-c-1.11/c/samples/CompileStylesheet/CompileStylesheet.cpp0000664000175000000640000001121211731656104023450 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #include #include #else #include #include #include #endif #include #include int main( int argc, char* /* argv */[]) { XALAN_USING_STD(cerr) XALAN_USING_STD(endl) XALAN_USING_STD(ostrstream) int theResult = 0; if (argc != 1) { cerr << "Usage: CompileStylesheet" << endl << endl; } else { XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XERCES(XMLException) XALAN_USING_XALAN(XalanTransformer) XALAN_USING_XALAN(XalanCompiledStylesheet) // Call the static initializer for Xerces. try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { cerr << "Error during Xerces initialization. Error code was " << toCatch.getCode() << "." << endl; theResult = -1; } if ( theResult == 0) { // Initialize Xalan. XalanTransformer::initialize(); { // Create a XalanTransformer. XalanTransformer theXalanTransformer; // Our input files...The assumption is that the executable will be run // from same directory as the input files. const char* theXSLFileName = "foo.xsl"; // Compile the stylesheet. const XalanCompiledStylesheet* theCompiledStylesheet = 0; theResult = theXalanTransformer.compileStylesheet(theXSLFileName, theCompiledStylesheet); if (theResult == 0) { assert(theCompiledStylesheet != 0); for (unsigned int i = 0; i < 10; ++i) { // Buffers passed in to ostrstream. char inBuffer[10]; char outBuffer[10]; // Generate the input and output file names. ostrstream theFormatterIn(inBuffer, sizeof(inBuffer)); ostrstream theFormatterOut(outBuffer, sizeof(outBuffer)); theFormatterIn << "foo" << i + 1 << ".xml" << '\0'; theFormatterOut << "foo" << i + 1 << ".out" << '\0'; // Do the transform. theResult = theXalanTransformer.transform( inBuffer, theCompiledStylesheet, outBuffer); } // I don't have to do this, since the transformer will // clean this up when it's destroyed, but why not... theResult = theXalanTransformer.destroyStylesheet(theCompiledStylesheet); } if(theResult != 0) { cerr << "CompileStylesheet Error: " << theXalanTransformer.getLastError() << endl << endl; } } } // Terminate Xalan... XalanTransformer::terminate(); // Terminate Xerces... XMLPlatformUtils::Terminate(); // Clean up the ICU, if it's integrated. XalanTransformer::ICUCleanUp(); } return theResult; } xalan-c-1.11/c/samples/CompileStylesheet/foo1.xml0000664000175000000640000000007111731656104020671 0ustar stevesamba Hello 1xalan-c-1.11/c/samples/CompileStylesheet/foo10.xml0000664000175000000640000000007211731656104020752 0ustar stevesamba Hello 10xalan-c-1.11/c/samples/CompileStylesheet/foo2.xml0000664000175000000640000000007111731656104020672 0ustar stevesamba Hello 2xalan-c-1.11/c/samples/CompileStylesheet/foo3.xml0000664000175000000640000000007111731656104020673 0ustar stevesamba Hello 3xalan-c-1.11/c/samples/CompileStylesheet/foo4.xml0000664000175000000640000000007111731656104020674 0ustar stevesamba Hello 4xalan-c-1.11/c/samples/CompileStylesheet/foo5.xml0000664000175000000640000000007111731656104020675 0ustar stevesamba Hello 5xalan-c-1.11/c/samples/CompileStylesheet/foo.xsl0000664000175000000640000000032211731656104020615 0ustar stevesamba xalan-c-1.11/c/samples/CompileStylesheet/foo6.xml0000664000175000000640000000007111731656104020676 0ustar stevesamba Hello 6xalan-c-1.11/c/samples/CompileStylesheet/foo7.xml0000664000175000000640000000007111731656104020677 0ustar stevesamba Hello 7xalan-c-1.11/c/samples/CompileStylesheet/foo8.xml0000664000175000000640000000007111731656104020700 0ustar stevesamba Hello 8xalan-c-1.11/c/samples/CompileStylesheet/foo9.xml0000664000175000000640000000007111731656104020701 0ustar stevesamba Hello 9xalan-c-1.11/c/samples/ApacheModuleXSLT/0002775000175000000640000000000012037700125016700 5ustar stevesambaxalan-c-1.11/c/samples/ApacheModuleXSLT/xslt/0002775000175000000640000000000012037700125017672 5ustar stevesambaxalan-c-1.11/c/samples/ApacheModuleXSLT/xslt/apachemod.xml0000664000175000000640000000632411731656104022347 0ustar stevesamba

    ApacheModuleXSLT is an Apache Web server module that responds to appropriate URLs by performing transformations and returning the output to the client Web browser. The module responds to a request for a given output file (html or txt as configured below) by applying an xsl stylesheet file with that name to an xml document with the same name. The requested "output file" is created on the fly and returned as a text stream to the client.

    To use this module, do the following:

    1. Add LoadModule and (UNIX only) AddModule entries to the Apache configuration file: httpd.conf.

      Windows: LoadModule mod_xslt xml-xalan\c\Build\Win32\VC6\Release\ApacheModuleXSLT.dll

      UNIX: AddModule mod_xslt.c
              and
              LoadModule mod_xslt usr/lib/mod_xslt.xx

      where xx is the appropriate library suffix for the UNIX platform.

    2. Add a <Location> entry to httpd.conf that indicates where xml/xsl file pairs are to be found, and what target file extensions to recognize. We suggest the following:

      <Location /xslt>
        AddHandler .html
        AddHandler .txt
      </Location>

      This <Location> element instructs the module to respond to requests for xxx.html and xxx.txt files in the in the xslt subdirectory (under the document root; see next item) by applying the xxx.xsl stylesheet to xxx.xml (both in that directory) and returning the transformation result to the browser.

      Note: It is up to the stylesheet to apply the appropriate xsl:output method to the output. Whether the user specifies html or txt is, of itself, immaterial.

    3. Put xml/xsl file pairs in the <Location> subdirectory (xslt in the example)) under the document root directory specified in httpd.conf by the DocumentRoot and <Directory> settings. Alternatively, you can modify these settings to point to xml-xalan/c/samples/ApacheModuleXSLT, which includes an xslt subdirectory with xml/xsl file pairs.

    4. Start the Apache server.

    5. From a Web browser, call the module with a URL as follows:
      http://serverName/xslt/xxx.html
      where serverName is the Apache server (such as www.myServer.com) and xxx is the name of an xml/xsl pair of files (such as foo.xml and foo.xsl) in the xslt subdirectory under the DocumentRoot directory.

      For example,
      http://www.myServer.com/xslt/foo.html
      instructs ApacheModuleXSLT to apply the foo.xsl stylesheet to the foo.xml XML document (both files in the xslt directory under the Apache DocumentRoot directory) and return the transformation result to the browser.
    xalan-c-1.11/c/samples/ApacheModuleXSLT/xslt/foo.xml0000664000175000000640000000013311731656104021201 0ustar stevesamba

    Hello

    xalan-c-1.11/c/samples/ApacheModuleXSLT/xslt/apachemod.xsl0000664000175000000640000000651011731656104022352 0ustar stevesamba <xsl:value-of select="@title"/>

      NOTE:  

     
     
  •    
    xalan-c-1.11/c/samples/ApacheModuleXSLT/xslt/foo.xsl0000664000175000000640000000161211731656104021212 0ustar stevesamba <xsl:value-of select="@title"/>

    xalan-c-1.11/c/samples/ApacheModuleXSLT/mod_xslt.c0000664000175000000640000001027511731656104020707 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * ==================================================================== * Configuration information for httpd.conf: * ==================================================================== AddHandler mod_xslt .html AddHandler mod_xslt .txt * ==================================================================== */ #include "httpd.h" #include "http_config.h" #include "http_protocol.h" #include "http_log.h" #include "util_script.h" #include "http_main.h" #include "http_request.h" #include static void xslt_init(server_rec *s, pool *p) { ap_add_version_component("mod_xslt/Xalan/1.0"); } static void xslt_child_init(server_rec *s, pool *p) { XalanInitialize(); } static void xslt_child_exit(server_rec *s, pool *p) { XalanTerminate(1); } typedef struct CONTROL_STRUCT_TAG { request_rec* r; int fHeaderSent; } CONTROL_STRUCT; static CallbackSizeType xalan_output_handler(const char *data, CallbackSizeType length, void *handle) { CONTROL_STRUCT* c = (CONTROL_STRUCT*)handle; if (c->fHeaderSent == 0) { c->fHeaderSent = 1; ap_send_http_header(c->r); } return ap_rwrite(data, length, c->r); } static void xalan_flush_handler(void *handle) { CONTROL_STRUCT* c = (CONTROL_STRUCT*)handle; ap_rflush(c->r); } static int xslt_handler(request_rec *r) { char * mimetype = NULL; char * filename = NULL; char * xmlfilename = NULL; char * xslfilename = NULL; XalanHandle xalan = NULL; int i; int dot_point; int error = DECLINED; CONTROL_STRUCT control_struct = { 0, 0 }; control_struct.r = r; mimetype = ap_pstrcat(r->pool, r->filename, NULL); /* Find the extension without any assumptions on string.h */ dot_point = 0; i = 0; while (mimetype[i] != '\0') { if (mimetype[i] == '.') dot_point = i; ++i; } if (dot_point == 0) { fprintf(stderr, "Unable to find extension of : %s\n", mimetype); r->uri = mimetype; return DECLINED; } filename = ap_pstrndup(r->pool, r->filename,dot_point); xmlfilename = ap_pstrcat(r->pool,filename,".xml",NULL); xslfilename = ap_pstrcat(r->pool,filename,".xsl",NULL); xalan = CreateXalanTransformer(); error = XalanTransformToHandler(xmlfilename, xslfilename, xalan, &control_struct, xalan_output_handler, xalan_flush_handler); if(error) { const char* const msg = XalanGetLastError(xalan); fprintf(stderr,"mod_xslt: %s: %s\n", r->filename, msg); r->uri = filename; return DECLINED; } DeleteXalanTransformer(xalan); return OK; } static const handler_rec xslt_handlers[] = { {"mod_xslt", xslt_handler}, {NULL, NULL} }; module MODULE_VAR_EXPORT xslt_module = { STANDARD_MODULE_STUFF, xslt_init, /* initializer */ NULL, /* create per-directory config structure */ NULL, /* merge per-directory config structures */ NULL, /* create per-server config structure */ NULL, /* merge per-server config structures */ NULL, /* command table */ xslt_handlers, /* handlers */ NULL, /* translate_handler */ NULL, /* check_user_id */ NULL, /* check auth */ NULL, /* check access */ NULL, /* type_checker */ NULL, /* pre-run fixups */ NULL, /* logger */ NULL, /* header parser */ xslt_child_init,/* child_init */ xslt_child_exit,/* child_exit */ NULL /* post read-request */ }; xalan-c-1.11/c/samples/XalanTransformerCallback/0002775000175000000640000000000012037700125020541 5ustar stevesambaxalan-c-1.11/c/samples/XalanTransformerCallback/foo.xml0000664000175000000640000000015111731656104022050 0ustar stevesamba

    Hello

    xalan-c-1.11/c/samples/XalanTransformerCallback/XalanTransformerCallback.cpp0000664000175000000640000001156511731656104026165 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #if defined(XALAN_STRICT_ANSI_HEADERS) using std::FILE; using std::fclose; using std::fflush; using std::fopen; using std::fwrite; #endif // This is a simple class that illustrates how XalanTransformer's "callback" API // is used. This example just abstracts writing data to a FILE*, but other // actions are possible. class CallbackHandler { public: CallbackHandler(FILE* theFile) : m_file(theFile) { assert(m_file != 0); } CallbackSizeType write( const char* theData, CallbackSizeType theLength) { return fwrite(theData, sizeof(char), theLength, m_file); } void flush() { fflush(m_file); } private: FILE* const m_file; }; // These functions need to have C linkage, so surround them with an extern C block... extern "C" { // This is the write callback function, which casts the handle // to the appropriate type, then calls the write() member function // on the CallbackHandler class. CallbackSizeType writeCallback( const char* theData, CallbackSizeType theLength, void* theHandle) { return reinterpret_cast(theHandle)->write(theData, theLength); } // This is the flush callback function, which casts the handle // to the appropriate type, then calls the flush() member function // on the CallbackHandler class. void flushCallback(void* theHandle) { reinterpret_cast(theHandle)->flush(); } } int doTransform( const char* theXMLFile, const char* theXSLFile, FILE* theOutputFile) { XALAN_USING_STD(cerr) XALAN_USING_STD(endl) XALAN_USING_XALAN(XalanTransformer) // Create a XalanTransformer... XalanTransformer theXalanTransformer; // Create an instance of the class we wrote to handle // the callbacks... CallbackHandler theHandler(theOutputFile); // Do the transform... const int theResult = theXalanTransformer.transform( theXMLFile, theXSLFile, &theHandler, writeCallback, flushCallback); if(theResult != 0) { cerr << "XalanError: " << theXalanTransformer.getLastError() << endl; } return theResult; } int main( int argc, char* argv[]) { XALAN_USING_STD(cerr) XALAN_USING_STD(cout) XALAN_USING_STD(endl) if (argc < 3 || argc > 4) { cerr << "Usage: XalanTransformerCallback XMLFileName XSLFileName [OutFileName]" << endl; return -1; } int theResult = -1; try { XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XALAN(XalanTransformer) // Call the static initializer for Xerces. XMLPlatformUtils::Initialize(); // Initialize Xalan. XalanTransformer::initialize(); if (argc == 3) { // No output file, so use stdout... theResult = doTransform(argv[1], argv[2], stdout); } else { // Output file specified, so try to open it... FILE* const theOutputFile = fopen(argv[3], "w"); if (theOutputFile == 0) { cerr << "Error: " << "Unable to open output file " << argv[3] << endl; } else { theResult = doTransform(argv[1], argv[2], theOutputFile); fclose(theOutputFile); } } // Terminate Xalan... XalanTransformer::terminate(); // Terminate Xerces... XMLPlatformUtils::Terminate(); // Clean up the ICU, if it's integrated... XalanTransformer::ICUCleanUp(); } catch(...) { cerr << "An unknown error occurred!" << endl; } return theResult; } xalan-c-1.11/c/samples/XalanTransformerCallback/foo.xsl0000664000175000000640000000651111731656104022064 0ustar stevesamba <xsl:value-of select="@title"/>

      NOTE:  

     
     
  •    
    xalan-c-1.11/c/samples/ThreadSafe/0002775000175000000640000000000012037700125015644 5ustar stevesambaxalan-c-1.11/c/samples/ThreadSafe/birds.xml0000664000175000000640000002201311731656104017474 0ustar stevesamba Great Tinamou. Highland Tinamou. Little Tinamou. Thicket Tinamou. Slaty-breasted Tinamou. Choco Tinamou. Red-throated Loon. Arctic Loon. Pacific Loon. Common Loon. Yellow-billed Loon. Least Grebe. Pied-billed Grebe. Atitlan Grebe. Horned Grebe. Red-necked Grebe. Eared Grebe. Western Grebe. Clark's Grebe. Yellow-nosed Albatross. (A) Shy Albatross. (A) Black-browed Albatross. (A) Light-mantled Albatross. (A) Wandering Albatross. (A) Laysan Albatross. Black-footed Albatross. Short-tailed Albatross. (N) Northern Fulmar. Kermadec Petrel. (A) Herald Petrel. (A) Murphy's Petrel. (N) Mottled Petrel. (A) Bermuda Petrel. Black-capped Petrel. Juan Fernandez Petrel. (N) Dark-rumped Petrel. White-necked Petrel. (H) Bonin Petrel. (H) Black-winged Petrel. (H, A) Cook's Petrel. (N) Stejneger's Petrel. (A) Bulwer's Petrel. (H) Jouanin's Petrel. (H, A) Parkinson's Petrel. (N) Streaked Shearwater. (A) Cory's Shearwater. (N) Pink-footed Shearwater. (N) Flesh-footed Shearwater. (N) Greater Shearwater. (N) Wedge-tailed Shearwater. Buller's Shearwater. (N) Sooty Shearwater. (N) Short-tailed Shearwater. (N) Christmas Shearwater. (H) Manx Shearwater. Townsend's Shearwater. Black-vented Shearwater. Audubon's Shearwater. Little Shearwater. (A) Wilson's Storm-Petrel. (N) White-faced Storm-Petrel. (A) European Storm-Petrel. (A) Fork-tailed Storm-Petrel. Leach's Storm-Petrel. Ashy Storm-Petrel. Band-rumped Storm-Petrel. (N) Wedge-rumped Storm-Petrel. (N) Black Storm-Petrel. Guadalupe Storm-Petrel. Markham's Storm-Petrel. (A) Tristram's Storm-Petrel. (H) Least Storm-Petrel. White-tailed Tropicbird. Red-billed Tropicbird. Red-tailed Tropicbird. Masked Booby. Blue-footed Booby. Peruvian Booby. (A) Brown Booby. Red-footed Booby. Northern Gannet. American White Pelican. Brown Pelican. Brandt's Cormorant. Neotropic Cormorant. Double-crested Cormorant. Great Cormorant. Red-faced Cormorant. Pelagic Cormorant. Anhinga. Magnificent Frigatebird. Great Frigatebird. Lesser Frigatebird. (A) xalan-c-1.11/c/samples/ThreadSafe/ThreadSafe.cpp0000664000175000000640000002240511731656104020366 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #include #include #else #include #include #include #endif #include #include //This is here for the Windows threads. #if defined(WINDOWS_THREAD_FUNCTIONS) #define WIN32_LEAN_AND_MEAN #include #include #define THREADFUNCTIONRETURN DWORD WINAPI typedef DWORD theThreadIDType; typedef HANDLE theThreadType; //This is here for Unix threads #elif defined(XALAN_POSIX2_AVAILABLE) // This is a workaround for a Tru64 compiler bug... #if defined(TRU64) #if defined(XALAN_STRICT_ANSI_HEADERS) #include typedef long sigjmp_buf[_JBLEN]; #endif extern "C" void *theThread(void *param); #endif #include #include typedef pthread_t theThreadIDType; typedef pthread_t theThreadType; #else //error Unsupported Platform! #endif #if defined(XALAN_STRICT_ANSI_HEADERS) using std::perror; #endif #define NUM_THREADS 10 XALAN_USING_STD(cerr) XALAN_USING_STD(cout) XALAN_USING_STD(endl) XALAN_USING_STD(ostrstream) XALAN_USING_XALAN(XalanCompiledStylesheet) XALAN_USING_XALAN(XalanDOMString) XALAN_USING_XALAN(XalanParsedSource) XALAN_USING_XALAN(XalanTransformer) XALAN_USING_XALAN(XSLTInputSource) XALAN_USING_XALAN(XSLTResultTarget) // Used to hold compiled stylesheet and XML source document. const XalanCompiledStylesheet* glbCompiledStylesheet = 0; const XalanParsedSource* glbParsedSource = 0; int glbError = 0; // Print messages tracking the progress of each thread, and the // beginning and end of the entire operation. void outputMessage( theThreadIDType id, const char msg[]) { ostrstream threadMsg; threadMsg << "\n" << msg << " Thread: " << id << '\0'; cout << threadMsg.str(); #if defined(HPUX) threadMsg.rdbuf() -> freeze(false); #else threadMsg.freeze(false); #endif } #if defined(WINDOWS_THREAD_FUNCTIONS) THREADFUNCTIONRETURN theThread(LPVOID param) #elif defined(XALAN_POSIX2_AVAILABLE) void *theThread(void *param) #endif { // This routine uses a compiled stylesheet (glbCompiledStylesheet), // and a binary source tree (glbParsedSource) to perform the // transformation. int theResult = 0; const size_t number = reinterpret_cast(param); #if defined(WINDOWS_THREAD_FUNCTIONS) const theThreadIDType theThreadID = GetCurrentThreadId(); #elif defined(XALAN_POSIX2_AVAILABLE) const theThreadIDType theThreadID = pthread_self(); #endif outputMessage(theThreadID, "Starting "); // Create a XalanTransformer. XalanTransformer theXalanTransformer; // Generate the output file name for this thread. ostrstream theFormatterOut; theFormatterOut << "birds" << number << ".out" << '\0'; // Generate the XML output object. const XSLTResultTarget theResultTarget(XalanDOMString(theFormatterOut.str())); // Unfreeze the ostrstream, so memory is returned... #if defined(HPUX) theFormatterOut.rdbuf() -> freeze(false); #else theFormatterOut.freeze(false); #endif outputMessage(theThreadID, "Transforming"); // Do the transform. theResult = theXalanTransformer.transform(*glbParsedSource, glbCompiledStylesheet, theResultTarget); if(theResult != 0) { cerr << "ThreadSafe Error: \n" << theXalanTransformer.getLastError() << endl << endl; glbError = theResult; } outputMessage(theThreadID, "Finishing"); #if defined(WINDOWS_THREAD_FUNCTIONS) return theResult; #elif defined(XALAN_POSIX2_AVAILABLE) return 0; #endif } // Create and run the threads... // Print messages tracking the progress of each thread and of the // overall operation... void doThreads(size_t nThreads) { size_t i = 0; cout << endl << "Clock before starting threads: " << clock() << endl; XALAN_USING_STD(vector) vector hThreads; hThreads.reserve(nThreads); #if defined(WINDOWS_THREAD_FUNCTIONS) for (; i < nThreads; ++i) { theThreadIDType threadID; const theThreadType hThread = CreateThread( 0, 4096, // Stack size for thread. theThread, // pointer to thread function reinterpret_cast(i), // argument for new thread 0, // creation flags &threadID); assert(hThread != 0); hThreads.push_back(hThread); } WaitForMultipleObjects(hThreads.size(), &hThreads[0], TRUE, INFINITE); for (i = 0; i < nThreads; ++i) { CloseHandle(hThreads[i]); } #elif defined(XALAN_POSIX2_AVAILABLE) int result; void* thread_result; for (; i < nThreads; ++i) { result = pthread_create( &hThreads[i], //thread pointer NULL, //thread's attribute default theThread, //thread function (void *)&i); //thread function argument if (result != 0) { perror ("Thread creation failed"); exit(EXIT_FAILURE); } } cout << endl << "Waiting for threads to finish..." << endl << endl; for (i = nThreads; i > 0; --i) { result = pthread_join( hThreads[i - 1], &thread_result); if (result != 0) { perror ("Thread join failed"); exit(EXIT_FAILURE); } //for UNIX debugging // cout << "Thread joined, return value: " << (char *)thread_result << endl; } #endif cout << endl << endl << "Clock after threads: " << clock() << endl; } int main( int argc, char* /* argv */[]) { if (argc != 1) { cerr << "Usage: ThreadTest" << endl << endl; } else { try { XALAN_USING_XERCES(XMLPlatformUtils) // Call the static initializer for Xerces. XMLPlatformUtils::Initialize(); // Initialize Xalan. XalanTransformer::initialize(); { // Create a XalanTransformer. We won't actually use this to transform -- // it's just acting likely a factory for the compiled stylesheet and // pre-parsed source. XalanTransformer theXalanTransformer; glbError = theXalanTransformer.compileStylesheet("birds.xsl", glbCompiledStylesheet); if (glbError != 0) { cerr << "ThreadSafe Error: \n" << theXalanTransformer.getLastError() << endl << endl; } else { assert(glbCompiledStylesheet != 0); // Compile the XML source document as well. All threads will use // this binary representation of the source tree. glbError = theXalanTransformer.parseSource("birds.xml", glbParsedSource); if (glbError != 0) { cerr << "ThreadSafe Error: \n" << theXalanTransformer.getLastError() << endl << endl; } else { assert(glbParsedSource != 0); // Create and run the threads... // Each thread uses the same document and // stylesheet to perform a transformation. doThreads(NUM_THREADS); } } } // Terminate Xalan... XalanTransformer::terminate(); // Terminate Xerces... XMLPlatformUtils::Terminate(); // Clean up the ICU, if it's integrated... XalanTransformer::ICUCleanUp(); } catch(...) { cerr << "Initialization failed!" << endl; glbError = -1; } } return glbError; } xalan-c-1.11/c/samples/ThreadSafe/birds.xsl0000664000175000000640000000211711731656104017505 0ustar stevesamba Order is: Family is: SubFamily is xalan-c-1.11/c/samples/SerializeNodeSet/0002775000175000000640000000000012037700125017047 5ustar stevesambaxalan-c-1.11/c/samples/SerializeNodeSet/foo.xml0000664000175000000640000000110611731656104020357 0ustar stevesamba Mr. Marston Mr. Bertoni Mr. Leslie Ms. Farmer Ms. Midy Mr. Dick Mr. Boag Mr. Curcuru Mr. Kesselman Mr. Auriemma xalan-c-1.11/c/samples/SerializeNodeSet/SerializeNodeSet.cpp0000664000175000000640000002033611731656104022775 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #else #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include int main( int argc, char* argv[]) { XALAN_USING_STD(cerr) XALAN_USING_STD(cout) XALAN_USING_STD(endl) int theResult = 0; if (argc != 4) { cerr << "Usage: SerializeNodeSet XMLFilePath Context XPathExpression" << endl; theResult = -1; } else { try { XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XALAN(XPathEvaluator) XMLPlatformUtils::Initialize(); XPathEvaluator::initialize(); { XALAN_USING_XERCES(LocalFileInputSource) XALAN_USING_XALAN(NodeRefList) XALAN_USING_XALAN(XalanDocument) XALAN_USING_XALAN(XalanDOMString) XALAN_USING_XALAN(XalanNode) XALAN_USING_XALAN(XalanSourceTreeInit) XALAN_USING_XALAN(XMLSupportInit) XALAN_USING_XALAN(XalanSourceTreeDOMSupport) XALAN_USING_XALAN(XalanSourceTreeParserLiaison) // Initialize the XalanSourceTree subsystem... XalanSourceTreeInit theSourceTreeInit; // Initialize the XMLSupport subsystem... XMLSupportInit theXMLSupportInit; // We'll use these to parse the XML file. XalanSourceTreeDOMSupport theDOMSupport; XalanSourceTreeParserLiaison theLiaison(theDOMSupport); // Hook the two together... theDOMSupport.setParserLiaison(&theLiaison); const XalanDOMString theFileName(argv[1]); // Create an input source that represents a local file... const LocalFileInputSource theInputSource(theFileName.c_str()); // Parse the document... XalanDocument* const theDocument = theLiaison.parseXMLStream(theInputSource); assert(theDocument != 0); XPathEvaluator theEvaluator; // OK, let's find the context node... XalanNode* const theContextNode = theEvaluator.selectSingleNode( theDOMSupport, theDocument, XalanDOMString(argv[2]).c_str(), theDocument->getDocumentElement()); if (theContextNode == 0) { cerr << "Error: No nodes matched the location path \"" << argv[2] << "\"." << endl << "Execution cannot continue." << endl << endl; } else { // OK, let's evaluate the expression... NodeRefList theResult; theEvaluator.selectNodeList( theResult, theDOMSupport, theContextNode, XalanDOMString(argv[3]).c_str(), theDocument->getDocumentElement()); const NodeRefList::size_type theLength = theResult.getLength(); if (theLength == 0) { cerr << endl << "Warning: No nodes matched the location path \"" << argv[3] << "\"." << endl << endl; } else { XALAN_USING_XALAN(XalanStdOutputStream) XALAN_USING_XALAN(XalanOutputStreamPrintWriter) XALAN_USING_XALAN(FormatterToXML) XALAN_USING_XALAN(FormatterTreeWalker) // OK, we're going to serialize the nodes that were // found. We should really check to make sure the // root (document) has not been selected, since we // really can't serialize a node list with the root. XalanStdOutputStream theStream(cout); XalanOutputStreamPrintWriter thePrintWriter(theStream); FormatterToXML theFormatter(thePrintWriter); FormatterTreeWalker theWalker(theFormatter); // Don't write a header... theFormatter.setShouldWriteXMLHeader(false); // It's required that we do this... theFormatter.startDocument(); // Traverse the subtree of the document rooted at // each node we've selected... for (NodeRefList::size_type i = 0; i < theLength; ++i) { const XalanNode* const theNode = theResult.item(i); assert(theNode != 0); const XalanNode::NodeType theNodeType = theNode->getNodeType(); if (theNodeType == XalanNode::DOCUMENT_NODE) { cerr << endl << "Warning: The root was selected. The root cannot be serialized." << endl; } else if (theNodeType == XalanNode::ATTRIBUTE_NODE) { cerr << endl << "Warning: An attribute or namespace node was selected. Attribute and namespace nodes cannot be serialized." << endl; } else { theWalker.traverseSubtree(theNode); } } // It's required that we do this... theFormatter.endDocument(); } } } XPathEvaluator::terminate(); XMLPlatformUtils::Terminate(); } catch(...) { cerr << "Exception caught!" << endl; theResult = -1; } } return theResult; } xalan-c-1.11/c/samples/TraceListen/0002775000175000000640000000000012037700125016053 5ustar stevesambaxalan-c-1.11/c/samples/TraceListen/birds.xml0000664000175000000640000002201311731656104017703 0ustar stevesamba Great Tinamou. Highland Tinamou. Little Tinamou. Thicket Tinamou. Slaty-breasted Tinamou. Choco Tinamou. Red-throated Loon. Arctic Loon. Pacific Loon. Common Loon. Yellow-billed Loon. Least Grebe. Pied-billed Grebe. Atitlan Grebe. Horned Grebe. Red-necked Grebe. Eared Grebe. Western Grebe. Clark's Grebe. Yellow-nosed Albatross. (A) Shy Albatross. (A) Black-browed Albatross. (A) Light-mantled Albatross. (A) Wandering Albatross. (A) Laysan Albatross. Black-footed Albatross. Short-tailed Albatross. (N) Northern Fulmar. Kermadec Petrel. (A) Herald Petrel. (A) Murphy's Petrel. (N) Mottled Petrel. (A) Bermuda Petrel. Black-capped Petrel. Juan Fernandez Petrel. (N) Dark-rumped Petrel. White-necked Petrel. (H) Bonin Petrel. (H) Black-winged Petrel. (H, A) Cook's Petrel. (N) Stejneger's Petrel. (A) Bulwer's Petrel. (H) Jouanin's Petrel. (H, A) Parkinson's Petrel. (N) Streaked Shearwater. (A) Cory's Shearwater. (N) Pink-footed Shearwater. (N) Flesh-footed Shearwater. (N) Greater Shearwater. (N) Wedge-tailed Shearwater. Buller's Shearwater. (N) Sooty Shearwater. (N) Short-tailed Shearwater. (N) Christmas Shearwater. (H) Manx Shearwater. Townsend's Shearwater. Black-vented Shearwater. Audubon's Shearwater. Little Shearwater. (A) Wilson's Storm-Petrel. (N) White-faced Storm-Petrel. (A) European Storm-Petrel. (A) Fork-tailed Storm-Petrel. Leach's Storm-Petrel. Ashy Storm-Petrel. Band-rumped Storm-Petrel. (N) Wedge-rumped Storm-Petrel. (N) Black Storm-Petrel. Guadalupe Storm-Petrel. Markham's Storm-Petrel. (A) Tristram's Storm-Petrel. (H) Least Storm-Petrel. White-tailed Tropicbird. Red-billed Tropicbird. Red-tailed Tropicbird. Masked Booby. Blue-footed Booby. Peruvian Booby. (A) Brown Booby. Red-footed Booby. Northern Gannet. American White Pelican. Brown Pelican. Brandt's Cormorant. Neotropic Cormorant. Double-crested Cormorant. Great Cormorant. Red-faced Cormorant. Pelagic Cormorant. Anhinga. Magnificent Frigatebird. Great Frigatebird. Lesser Frigatebird. (A) xalan-c-1.11/c/samples/TraceListen/birds.xsl0000664000175000000640000000211711731656104017714 0ustar stevesamba Order is: Family is: SubFamily is xalan-c-1.11/c/samples/TraceListen/TraceListen.cpp0000664000175000000640000001203511731656104021002 0ustar stevesamba/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #if defined(XALAN_CLASSIC_IOSTREAMS) #include #include #else #include #include #endif #include #include #include #include #include #include int main( int argc, char* argv[]) { XALAN_USING_STD(cerr) XALAN_USING_STD(endl) #if defined(XALAN_STRICT_ANSI_HEADERS) using std::strcmp; #endif // TraceListener flags... bool traceTemplates = false; bool traceTemplateChildren = false; bool traceGenerationEvent = false; bool traceSelectionEvent = false; if (argc < 2 || argc > 5) { cerr << "Usage: TraceListen [+ 1 or more of following] -tt -tg -ts -ttc" << endl; return -1; } // Set the TraceListener flags... for (int i = 1; i < argc; i ++) { if(!strcmp("-tt", argv[i])) { traceTemplates = true; } else if(!strcmp("-tg", argv[i])) { traceGenerationEvent = true; } else if(!strcmp("-ts", argv[i])) { traceSelectionEvent = true; } else if(!strcmp("-ttc", argv[i])) { traceTemplateChildren = true; } else { cerr << "Usage: TraceListen [+ 1 or more of following] -tt -tg -ts -ttc" << endl; return -1; } } try { XALAN_USING_XERCES(XMLPlatformUtils) XALAN_USING_XALAN(XalanTransformer) // Initialize Xerces... XMLPlatformUtils::Initialize(); // Initialize Xalan... XalanTransformer::initialize(); { XALAN_USING_XALAN(TraceListenerDefault) XALAN_USING_XALAN(XalanDOMString) XALAN_USING_XALAN(XalanOutputStreamPrintWriter) XALAN_USING_XALAN(XalanStdOutputStream) XALAN_USING_XALAN(XSLTInputSource) XALAN_USING_XALAN(XSLTResultTarget) // Create a XalanTransformer. XalanTransformer theXalanTransformer; // Set up a diagnostic writer to be used by the TraceListener... XalanStdOutputStream theStdErr(cerr); XalanOutputStreamPrintWriter diagnosticsWriter(theStdErr); // Make sure that error reporting, which includes any TraceListener output // does not throw exceptions when transcoding, since that could result in // an exception being thrown while another exception is active. In particular, // characters that the TraceListener writes might not be representable in the // local code page. theStdErr.setThrowTranscodeException(false); // Set up the TraceListener... TraceListenerDefault theTraceListener( diagnosticsWriter, theXalanTransformer.getMemoryManager(), traceTemplates, traceTemplateChildren, traceGenerationEvent, traceSelectionEvent); // Add the TraceListener to the XalanTransformer instance... theXalanTransformer.addTraceListener(&theTraceListener); // Our input files assume the executable will be run // from same directory as the input files. const int theResult = theXalanTransformer.transform("birds.xml", "birds.xsl", "birds.out"); if(theResult != 0) { cerr << "TraceListen Error: \n" << theXalanTransformer.getLastError() << endl << endl; } } // Terminate Xalan... XalanTransformer::terminate(); // Terminate Xerces... XMLPlatformUtils::Terminate(); // Clean up the ICU, if it's integrated... XalanTransformer::ICUCleanUp(); } catch(...) { cerr << "Exception caught! Exiting..." << endl; } return 0; } xalan-c-1.11/c/samples/configure0000775000175000000640000015111711731656104015560 0ustar stevesamba#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated automatically using autoconf version 2.13 # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # Defaults: ac_help= ac_default_prefix=/usr/local # Any additions from configure.in: # Initialize some variables set by options. # The variables have the same names as the options, with # dashes changed to underlines. build=NONE cache_file=./config.cache exec_prefix=NONE host=NONE no_create= nonopt=NONE no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= target=NONE verbose= x_includes=NONE x_libraries=NONE 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' # Initialize some other variables. subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. ac_max_here_lines=12 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 case "$ac_option" in -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; *) ac_optarg= ;; esac # 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 ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build="$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" ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir="$ac_optarg" ;; -disable-* | --disable-*) ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } fi ac_feature=`echo $ac_feature| sed 's/-/_/g'` eval "enable_${ac_feature}=no" ;; -enable-* | --enable-*) ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } fi ac_feature=`echo $ac_feature| sed 's/-/_/g'` case "$ac_option" in *=*) ;; *) 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) # 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 << EOF Usage: configure [options] [host] Options: [defaults in brackets after descriptions] Configuration: --cache-file=FILE cache test results in FILE --help print this message --no-create do not create output files --quiet, --silent do not print \`checking...' messages --version print the version of autoconf that created configure Directory and file names: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [same as prefix] --bindir=DIR user executables in DIR [EPREFIX/bin] --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] --libexecdir=DIR program executables in DIR [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data in DIR [PREFIX/share] --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data in DIR [PREFIX/com] --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] --libdir=DIR object code libraries in DIR [EPREFIX/lib] --includedir=DIR C header files in DIR [PREFIX/include] --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] --infodir=DIR info documentation in DIR [PREFIX/info] --mandir=DIR man documentation in DIR [PREFIX/man] --srcdir=DIR find the sources in DIR [configure dir or ..] --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 EOF cat << EOF Host type: --build=BUILD configure for building on BUILD [BUILD=HOST] --host=HOST configure for HOST [guessed] --target=TARGET configure for TARGET [TARGET=HOST] Features and packages: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR EOF if test -n "$ac_help"; then echo "--enable and --with options recognized:$ac_help" fi exit 0 ;; -host | --host | --hos | --ho) ac_prev=host ;; -host=* | --host=* | --hos=* | --ho=*) host="$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) 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 ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target="$ac_optarg" ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers) echo "configure generated by autoconf version 2.13" exit 0 ;; -with-* | --with-*) ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } fi ac_package=`echo $ac_package| sed 's/-/_/g'` case "$ac_option" in *=*) ;; *) ac_optarg=yes ;; esac eval "with_${ac_package}='$ac_optarg'" ;; -without-* | --without-*) ac_package=`echo $ac_option|sed -e 's/-*without-//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } fi 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 "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } ;; *) if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then echo "configure: warning: $ac_option: invalid host type" 1>&2 fi if test "x$nonopt" != xNONE; then { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } fi nonopt="$ac_option" ;; esac done if test -n "$ac_prev"; then { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } fi trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 # File descriptor usage: # 0 standard input # 1 file creation # 2 errors and warnings # 3 some systems may open it to /dev/tty # 4 used on the Kubota Titan # 6 checking for... messages and results # 5 compiler messages saved in config.log if test "$silent" = yes; then exec 6>/dev/null else exec 6>&1 fi exec 5>./config.log echo "\ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. " 1>&5 # Strip out --no-create and --no-recursion so they do not pile up. # Also quote any args containing shell metacharacters. ac_configure_args= for ac_arg do case "$ac_arg" in -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c) ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) ac_configure_args="$ac_configure_args '$ac_arg'" ;; *) ac_configure_args="$ac_configure_args $ac_arg" ;; esac done # NLS nuisances. # Only set these to C if already set. These must not be set unconditionally # because not all systems understand e.g. LANG=C (notably SCO). # Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! # Non-C LC_CTYPE values break the ctype check. if test "${LANG+set}" = set; then LANG=C; export LANG; fi if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi # 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 # A filename unique to this package, relative to the directory that # configure is in, which we can look for to find out if srcdir is correct. ac_unique_file=ParsedSourceWrappers/ParsedSourceWrappers.cpp # 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_prog=$0 ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. 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 "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } else { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } fi fi srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` # 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 "loading site script $ac_site_file" . "$ac_site_file" fi done if test -r "$cache_file"; then echo "loading cache $cache_file" . $cache_file else echo "creating cache $cache_file" > $cache_file fi ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross ac_exeext= ac_objext=o if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then ac_n= ac_c=' ' ac_t=' ' else ac_n=-n ac_c= ac_t= fi else ac_n= ac_c='\c' ac_t= fi # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:529: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_CC="gcc" break fi done IFS="$ac_save_ifs" fi fi CC="$ac_cv_prog_CC" if test -n "$CC"; then echo "$ac_t""$CC" 1>&6 else echo "$ac_t""no" 1>&6 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:559: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_prog_rejected=no ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" break fi done IFS="$ac_save_ifs" 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 $# -gt 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 "$ac_dir/$ac_word" "$@" shift ac_cv_prog_CC="$@" fi fi fi fi CC="$ac_cv_prog_CC" if test -n "$CC"; then echo "$ac_t""$CC" 1>&6 else echo "$ac_t""no" 1>&6 fi if test -z "$CC"; then case "`uname -s`" in *win32* | *WIN32*) # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:610: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_CC="cl" break fi done IFS="$ac_save_ifs" fi fi CC="$ac_cv_prog_CC" if test -n "$CC"; then echo "$ac_t""$CC" 1>&6 else echo "$ac_t""no" 1>&6 fi ;; esac fi test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 echo "configure:642: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF #line 653 "configure" #include "confdefs.h" main(){return(0);} EOF if { (eval echo configure:658: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then ac_cv_prog_cc_cross=no else ac_cv_prog_cc_cross=yes fi else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_prog_cc_works=no fi rm -fr conftest* ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 echo "configure:684: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 echo "configure:689: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no fi fi echo "$ac_t""$ac_cv_prog_gcc" 1>&6 if test $ac_cv_prog_gcc = yes; then GCC=yes else GCC= fi ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 echo "configure:717: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else echo 'void f(){}' > conftest.c if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then ac_cv_prog_cc_g=yes else ac_cv_prog_cc_g=no fi rm -f conftest* fi echo "$ac_t""$ac_cv_prog_cc_g" 1>&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 for ac_prog in $CCC c++ g++ gcc CC cxx cc++ 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:753: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_CXX="$ac_prog" break fi done IFS="$ac_save_ifs" fi fi CXX="$ac_cv_prog_CXX" if test -n "$CXX"; then echo "$ac_t""$CXX" 1>&6 else echo "$ac_t""no" 1>&6 fi test -n "$CXX" && break done test -n "$CXX" || CXX="gcc" echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6 echo "configure:785: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext << EOF #line 796 "configure" #include "confdefs.h" int main(){return(0);} EOF if { (eval echo configure:801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cxx_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then ac_cv_prog_cxx_cross=no else ac_cv_prog_cxx_cross=yes fi else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_prog_cxx_works=no fi rm -fr conftest* ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross echo "$ac_t""$ac_cv_prog_cxx_works" 1>&6 if test $ac_cv_prog_cxx_works = no; then { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 echo "configure:827: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6 cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 echo "configure:832: checking whether we are using GNU C++" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.C <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gxx=yes else ac_cv_prog_gxx=no fi fi echo "$ac_t""$ac_cv_prog_gxx" 1>&6 if test $ac_cv_prog_gxx = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS="${CXXFLAGS+set}" ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 echo "configure:860: checking whether ${CXX-g++} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else echo 'void f(){}' > conftest.cc if test -z "`${CXX-g++} -g -c conftest.cc 2>&1`"; then ac_cv_prog_cxx_g=yes else ac_cv_prog_cxx_g=no fi rm -f conftest* fi echo "$ac_t""$ac_cv_prog_cxx_g" 1>&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 < $ac_declaration int main() { exit (42); ; return 0; } EOF if { (eval echo configure:909: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then : else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* continue fi rm -f conftest* cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* break else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* done if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; 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 fi done if test -z "$ac_aux_dir"; then { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } fi ac_config_guess=$ac_aux_dir/config.guess ac_config_sub=$ac_aux_dir/config.sub ac_configure=$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 # 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 $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 echo "configure:973: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" for ac_dir in $PATH; do # Account for people who put trailing slashes in PATH elements. case "$ac_dir/" in /|./|.//|/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 if test -f $ac_dir/$ac_prog; then if test $ac_prog = install && grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : else ac_cv_path_install="$ac_dir/$ac_prog -c" break 2 fi fi done ;; esac done IFS="$ac_save_IFS" 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 "$ac_t""$INSTALL" 1>&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_PROGRAM}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' # Extract the first word of "autoconf", so it can be a program name with args. set dummy autoconf; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1028: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AUTOCONF'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$AUTOCONF"; then ac_cv_prog_AUTOCONF="$AUTOCONF" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_AUTOCONF="autoconf" break fi done IFS="$ac_save_ifs" test -z "$ac_cv_prog_AUTOCONF" && ac_cv_prog_AUTOCONF="true" fi fi AUTOCONF="$ac_cv_prog_AUTOCONF" if test -n "$AUTOCONF"; then echo "$ac_t""$AUTOCONF" 1>&6 else echo "$ac_t""no" 1>&6 fi echo $ac_n "checking for floor in -lm""... $ac_c" 1>&6 echo "configure:1057: checking for floor in -lm" >&5 ac_lib_var=`echo m'_'floor | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_lib=HAVE_LIB`echo m | sed -e 's/[^a-zA-Z0-9_]/_/g' \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` cat >> confdefs.h <&6 fi if test "$CXX" = "g++" -o "$CXX" = "c++"; then echo $ac_n "checking whether -fno-elide-constructors works correctly""... $ac_c" 1>&6 echo "configure:1108: checking whether -fno-elide-constructors works correctly" >&5 old_cxxflags=$CXXFLAGS CXXFLAGS="$CXXFLAGS -fno-elide-constructors" ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { ; return 0; } EOF if { (eval echo configure:1129: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* CXXFLAGS=$old_cxxflags echo "$ac_t""no" 1>&6 fi rm -f conftest*; fi # Make sure we can run config.sub. if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then : else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 echo "configure:1151: checking host system type" >&5 host_alias=$host case "$host_alias" in NONE) case $nonopt in NONE) if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then : else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } fi ;; *) host_alias=$nonopt ;; esac ;; esac host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias` host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$ac_t""$host" 1>&6 case "${host}" in *-*-solaris*) platform=SOLARIS ;; *-*-linux*) platform=LINUX ;; *-*-freebsd*) platform=FREEBSD ;; *-*-netbsd*) platform=NETBSD ;; *-*-irix*) platform=IRIX ;; *-*-aix*) platform=AIX ;; *-*-hp*) platform=HPUX ; case "${host}" in *-*-hpux11*) osver=HPUX11;; *-*-hpux10*) osver=HPUX10;; *) osver=HPUX11;; esac;; *-*-mvs*) platform=OS390 ;; *-*-osf*) platform=TRU64 ;; *-apple-darwin*) platform=MACOSX ;; *) platform=UNKNOWN ;; esac echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 echo "configure:1192: checking how to run the C++ preprocessor" >&5 if test -z "$CXXCPP"; then if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cxx_cross CXXCPP="${CXX-g++} -E" cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:1210: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* CXXCPP=/lib/cpp fi rm -f conftest* ac_cv_prog_CXXCPP="$CXXCPP" ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cxx_cross fi fi CXXCPP="$ac_cv_prog_CXXCPP" echo "$ac_t""$CXXCPP" 1>&6 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 echo "configure:1235: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include #include #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:1248: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* ac_cv_header_stdc=yes else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* ac_cv_header_stdc=no fi rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "memchr" >/dev/null 2>&1; then : else rm -rf conftest* 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 < EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "free" >/dev/null 2>&1; then : else rm -rf conftest* 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 < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') #define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #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); } EOF if { (eval echo configure:1315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* ac_cv_header_stdc=no fi rm -fr conftest* fi fi fi echo "$ac_t""$ac_cv_header_stdc" 1>&6 if test $ac_cv_header_stdc = yes; then cat >> confdefs.h <<\EOF #define STDC_HEADERS 1 EOF fi for ac_func in mbstowcs do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 echo "configure:1341: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* 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 $ac_func(); 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_$ac_func) || defined (__stub___$ac_func) choke me #else $ac_func(); #endif ; return 0; } EOF if { (eval echo configure:1372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` cat >> confdefs.h <&6 fi done if test x"$ac_cv_func_mbstowcs" = x"no"; then WCSTOMBS="-DXALAN_USE_XERCES_LOCAL_CODEPAGE_TRANSCODERS" else echo $ac_n "checking if mbstowcs can count only""... $ac_c" 1>&6 echo "configure:1400: checking if mbstowcs can count only" >&5 if test "$cross_compiling" = yes; then WCSTOMBS="-DXALAN_USE_XERCES_LOCAL_CODEPAGE_TRANSCODERS"; echo "$ac_t""cross-compiling default" 1>&6 else cat > conftest.$ac_ext < #endif int main(int argc, char *argv[]) { wchar_t in[5] = { 0x74, 0x65, 0x73, 0x74, 0x00 }; if (wcstombs(0, in, 0) == -1) { exit(1); } exit(0); } EOF if { (eval echo configure:1424: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then echo "$ac_t""yes" 1>&6 else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* WCSTOMBS="-DXALAN_USE_XERCES_LOCAL_CODEPAGE_TRANSCODERS"; echo "$ac_t""no" 1>&6 fi rm -fr conftest* fi fi cxx=${CXX} cc=${CC} cxxflags=${CXXFLAGS} cppflags=${CPPFLAGS} cflags=${CFLAGS} ldflags=${LDFLAGS} libs=${LIBS} transcoder=${TRANSCODER} wcstombs=${WCSTOMBS} threads=${THREADS} bitstobuild=${BITSTOBUILD} +trap '' 1 2 15 cat > confcache <<\EOF # 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. It is not useful on other systems. # If it contains results you don't want to keep, you may remove or edit it. # # By default, configure uses ./config.cache as the cache file, # creating it if it does not exist already. You can give configure # the --cache-file=FILE option to use a different cache file; that is # what configure does when it calls configure scripts in # subdirectories, so they share the cache. # Giving --cache-file=/dev/null disables caching, for debugging configure. # config.status only pays attention to the cache file if you give it the # --recheck option to rerun configure. # EOF # 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 \ -e "s/'/'\\\\''/g" \ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' ;; esac >> confcache if cmp -s $cache_file confcache; then : else if test -w $cache_file; then echo "updating cache $cache_file" cat confcache > $cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Any assignment to VPATH causes Sun make to only execute # the first set of double-colon rules, so remove it if not needed. # If there is a colon in the path, we need to keep it. if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' fi trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. cat > conftest.defs <<\EOF s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g s%\[%\\&%g s%\]%\\&%g s%\$%$$%g EOF DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` rm -f conftest.defs # Without the "./", some shells look in PATH for config.status. : ${CONFIG_STATUS=./config.status} echo creating $CONFIG_STATUS rm -f $CONFIG_STATUS cat > $CONFIG_STATUS </dev/null | sed 1q`: # # $0 $ac_configure_args # # Compiler output produced by configure, useful for debugging # configure, is in ./config.log if it exists. ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" for ac_option do case "\$ac_option" in -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; -version | --version | --versio | --versi | --vers | --ver | --ve | --v) echo "$CONFIG_STATUS generated by autoconf version 2.13" exit 0 ;; -help | --help | --hel | --he | --h) echo "\$ac_cs_usage"; exit 0 ;; *) echo "\$ac_cs_usage"; exit 1 ;; esac done ac_given_srcdir=$srcdir ac_given_INSTALL="$INSTALL" trap 'rm -fr `echo "Makefile Makefile.incl" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 EOF cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF $ac_vpsub $extrasub s%@SHELL@%$SHELL%g s%@CFLAGS@%$CFLAGS%g s%@CPPFLAGS@%$CPPFLAGS%g s%@CXXFLAGS@%$CXXFLAGS%g s%@FFLAGS@%$FFLAGS%g s%@DEFS@%$DEFS%g s%@LDFLAGS@%$LDFLAGS%g s%@LIBS@%$LIBS%g s%@exec_prefix@%$exec_prefix%g s%@prefix@%$prefix%g s%@program_transform_name@%$program_transform_name%g s%@bindir@%$bindir%g s%@sbindir@%$sbindir%g s%@libexecdir@%$libexecdir%g s%@datadir@%$datadir%g s%@sysconfdir@%$sysconfdir%g s%@sharedstatedir@%$sharedstatedir%g s%@localstatedir@%$localstatedir%g s%@libdir@%$libdir%g s%@includedir@%$includedir%g s%@oldincludedir@%$oldincludedir%g s%@infodir@%$infodir%g s%@mandir@%$mandir%g s%@CC@%$CC%g s%@CXX@%$CXX%g s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g s%@INSTALL_DATA@%$INSTALL_DATA%g s%@AUTOCONF@%$AUTOCONF%g s%@host@%$host%g s%@host_alias@%$host_alias%g s%@host_cpu@%$host_cpu%g s%@host_vendor@%$host_vendor%g s%@host_os@%$host_os%g s%@CXXCPP@%$CXXCPP%g s%@platform@%$platform%g s%@cxx@%$cxx%g s%@cc@%$cc%g s%@osver@%$osver%g s%@cxxflags@%$cxxflags%g s%@cppflags@%$cppflags%g s%@cflags@%$cflags%g s%@ldflags@%$ldflags%g s%@libs@%$libs%g s%@transcoder@%$transcoder%g s%@wcstombs@%$wcstombs%g s%@threads@%$threads%g s%@bitstobuild@%$bitstobuild%g CEOF EOF cat >> $CONFIG_STATUS <<\EOF # 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_cmds=90 # Maximum number of lines to put in a sed script. ac_file=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_cmds # 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" conftest.subs > conftest.s$ac_file else sed "${ac_end}q" conftest.subs > conftest.s$ac_file fi if test ! -s conftest.s$ac_file; then ac_more_lines=false rm -f conftest.s$ac_file else if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f conftest.s$ac_file" else ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" fi ac_file=`expr $ac_file + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_cmds` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case "$ac_file" in *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; *) ac_file_in="${ac_file}.in" ;; esac # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. # Remove last slash and all that follows it. Not all systems have dirname. ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then # The file is in a subdirectory. test ! -d "$ac_dir" && mkdir "$ac_dir" ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" # A "../" for each directory in $ac_dir_suffix. ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` else ac_dir_suffix= ac_dots= fi case "$ac_given_srcdir" in .) srcdir=. if test -z "$ac_dots"; then top_srcdir=. else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; *) # Relative path. srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" top_srcdir="$ac_dots$ac_given_srcdir" ;; esac case "$ac_given_INSTALL" in [/$]*) INSTALL="$ac_given_INSTALL" ;; *) INSTALL="$ac_dots$ac_given_INSTALL" ;; esac echo creating "$ac_file" rm -f "$ac_file" configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." case "$ac_file" in *Makefile*) ac_comsub="1i\\ # $configure_input" ;; *) ac_comsub= ;; esac ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` sed -e "$ac_comsub s%@configure_input@%$configure_input%g s%@srcdir@%$srcdir%g s%@top_srcdir@%$top_srcdir%g s%@INSTALL@%$INSTALL%g " $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file fi; done rm -f conftest.s* EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF exit 0 EOF chmod +x $CONFIG_STATUS rm -fr confdefs* $ac_clean_files test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 xalan-c-1.11/c/samples/Makefile.in0000664000175000000640000002536611731656104015724 0ustar stevesamba# # Copyright 1999-2004 The Apache Software Foundation. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # ################################################################### # IMPORTANT NOTE # ################################################################### # Before you try to run the Makefile, make sure you have two # # environment variables set. # # # # export XALANCROOT= # # export XERCESCROOT= # # # ################################################################### INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ # Output directories ifeq ($(wildcard ../Makefile.incl),) OUTDIR := . else OUTDIR := .. endif ifndef XALANCROOT noxalanroot: @echo XALANCROOT must be defined endif ifndef XERCESCROOT noxercesroot: @echo XERCESCROOT must be defined endif ALL_BINARIES = CompileStylesheet$(EXT) \ DocumentBuilder$(EXT) \ EntityResolver$(EXT) \ ExternalFunction$(EXT) \ ParsedSourceWrappers$(EXT) \ SerializeNodeSet$(EXT) \ SimpleTransform$(EXT) \ SimpleXPathAPI$(EXT) \ SimpleXPathCAPI$(EXT) \ StreamTransform$(EXT) \ TraceListen$(EXT) \ TransformToXercesDOM$(EXT) \ UseStylesheetParam$(EXT) \ XalanTransform$(EXT) \ XalanTransformerCallback$(EXT) \ ThreadSafe$(EXT) include $(wildcard $(XALANCROOT)/samples/version.incl \ $(XALANCROOT)/version.incl) include $(wildcard Makefile.incl ../Makefile.incl) COMMON_BUILD = version.incl \ Makefile.incl.in \ config.sub \ config.guess \ install-sh all: Samples samples: Samples Samples: CompileStylesheet DocumentBuilder EntityResolver ExternalFunction \ ParsedSourceWrappers SimpleTransform SerializeNodeSet SimpleXPathAPI \ SimpleXPathCAPI StreamTransform TraceListen TransformToXercesDOM \ UseStylesheetParam XalanTransform XalanTransformerCallback \ ThreadSafe ApacheModuleXSLT: prepare $(XSL_LIB_DIR)/mod_xslt$(SHLIBSUFFIX) $(XSL_LIB_DIR)/mod_xslt$(SHLIBSUFFIX) : $(XSL_OBJ_DIR)/mod_xslt.o $(MAKE_SHARED) $(XSL_BUILD_OPTIONS) $(PLATFORM_LIB_LINK_OPTIONS) \ $(EXTRA_LINK_OPTIONS) $(XALAN_LIB) $(ALLLIBS) $(CXXFLAGS) $^ -o $@ $(OTHER_LINK_PARAMETERS) $(XSL_OBJ_DIR)/%.o:$(SAMPLES_DIR)/ApacheModuleXSLT/%.c $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) -I/usr/include/apache/ $(EXTRA_COMPILE_OPTIONS) -o $@ $< CompileStylesheet: prepare $(XSL_BIN_DIR)/CompileStylesheet $(XSL_BIN_DIR)/CompileStylesheet: $(XSL_OBJ_DIR)/CompileStylesheet.o $(LINK) $(XSL_BUILD_OPTIONS) $(PLATFORM_LIB_LINK_OPTIONS) \ $(EXTRA_LINK_OPTIONS) $(XALAN_LIB) $(ALLLIBS) $(CXXFLAGS) $^ -o $@ $(OTHER_LINK_PARAMETERS) $(XSL_OBJ_DIR)/%.o:$(SAMPLES_DIR)/CompileStylesheet/%.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< DocumentBuilder: prepare $(XSL_BIN_DIR)/DocumentBuilder $(XSL_BIN_DIR)/DocumentBuilder: $(XSL_OBJ_DIR)/DocumentBuilder.o $(LINK) $(XSL_BUILD_OPTIONS) $(PLATFORM_LIB_LINK_OPTIONS) \ $(EXTRA_LINK_OPTIONS) $(XALAN_LIB) $(ALLLIBS) $(CXXFLAGS) $^ -o $@ $(OTHER_LINK_PARAMETERS) $(XSL_OBJ_DIR)/%.o:$(SAMPLES_DIR)/DocumentBuilder/%.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< EntityResolver: prepare $(XSL_BIN_DIR)/EntityResolver $(XSL_BIN_DIR)/EntityResolver: $(XSL_OBJ_DIR)/EntityResolver.o $(LINK) $(XSL_BUILD_OPTIONS) $(PLATFORM_LIB_LINK_OPTIONS) \ $(EXTRA_LINK_OPTIONS) $(XALAN_LIB) $(ALLLIBS) $(CXXFLAGS) $^ -o $@ $(OTHER_LINK_PARAMETERS) $(XSL_OBJ_DIR)/%.o:$(SAMPLES_DIR)/EntityResolver/%.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< ExternalFunction: prepare $(XSL_BIN_DIR)/ExternalFunction $(XSL_BIN_DIR)/ExternalFunction: $(XSL_OBJ_DIR)/ExternalFunction.o $(LINK) $(XSL_BUILD_OPTIONS) $(PLATFORM_LIB_LINK_OPTIONS) \ $(EXTRA_LINK_OPTIONS) $(XALAN_LIB) $(ALLLIBS) $(CXXFLAGS) $^ -o $@ $(OTHER_LINK_PARAMETERS) $(XSL_OBJ_DIR)/%.o:$(SAMPLES_DIR)/ExternalFunction/%.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< ParsedSourceWrappers: prepare $(XSL_BIN_DIR)/ParsedSourceWrappers $(XSL_BIN_DIR)/ParsedSourceWrappers: $(XSL_OBJ_DIR)/ParsedSourceWrappers.o $(LINK) $(XSL_BUILD_OPTIONS) $(PLATFORM_LIB_LINK_OPTIONS) \ $(EXTRA_LINK_OPTIONS) $(XALAN_LIB) $(ALLLIBS) $(CXXFLAGS) $^ -o $@ $(OTHER_LINK_PARAMETERS) $(XSL_OBJ_DIR)/%.o:$(SAMPLES_DIR)/ParsedSourceWrappers/%.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< SerializeNodeSet: prepare $(XSL_BIN_DIR)/SerializeNodeSet $(XSL_BIN_DIR)/SerializeNodeSet: $(XSL_OBJ_DIR)/SerializeNodeSet.o $(LINK) $(XSL_BUILD_OPTIONS) $(PLATFORM_LIB_LINK_OPTIONS) \ $(EXTRA_LINK_OPTIONS) $(XALAN_LIB) $(ALLLIBS) $(CXXFLAGS) $^ -o $@ $(OTHER_LINK_PARAMETERS) $(XSL_OBJ_DIR)/%.o:$(SAMPLES_DIR)/SerializeNodeSet/%.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< SimpleTransform: prepare $(XSL_BIN_DIR)/SimpleTransform $(XSL_BIN_DIR)/SimpleTransform: $(XSL_OBJ_DIR)/SimpleTransform.o $(LINK) $(XSL_BUILD_OPTIONS) $(PLATFORM_LIB_LINK_OPTIONS) \ $(EXTRA_LINK_OPTIONS) $(XALAN_LIB) $(ALLLIBS) $(CXXFLAGS) $^ -o $@ $(OTHER_LINK_PARAMETERS) $(XSL_OBJ_DIR)/%.o:$(SAMPLES_DIR)/SimpleTransform/%.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< SimpleXPathAPI: prepare $(XSL_BIN_DIR)/SimpleXPathAPI $(XSL_BIN_DIR)/SimpleXPathAPI: $(XSL_OBJ_DIR)/SimpleXPathAPI.o $(LINK) $(XSL_BUILD_OPTIONS) $(PLATFORM_LIB_LINK_OPTIONS) \ $(EXTRA_LINK_OPTIONS) $(XALAN_LIB) $(ALLLIBS) $(CXXFLAGS) $^ -o $@ $(OTHER_LINK_PARAMETERS) $(XSL_OBJ_DIR)/%.o:$(SAMPLES_DIR)/SimpleXPathAPI/%.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< SimpleXPathCAPI: prepare $(XSL_BIN_DIR)/SimpleXPathCAPI $(XSL_BIN_DIR)/SimpleXPathCAPI: $(XSL_OBJ_DIR)/SimpleXPathCAPI.o $(LINK) $(XSL_BUILD_OPTIONS) $(PLATFORM_LIB_LINK_OPTIONS) \ $(EXTRA_LINK_OPTIONS) $(XALAN_LIB) $(ALLLIBS) $(CXXFLAGS) $^ -o $@ $(OTHER_LINK_PARAMETERS) $(XSL_OBJ_DIR)/%.o:$(SAMPLES_DIR)/SimpleXPathCAPI/%.c $(CC4) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< StreamTransform: prepare $(XSL_BIN_DIR)/StreamTransform $(XSL_BIN_DIR)/StreamTransform: $(XSL_OBJ_DIR)/StreamTransform.o $(LINK) $(XSL_BUILD_OPTIONS) $(PLATFORM_LIB_LINK_OPTIONS) \ $(EXTRA_LINK_OPTIONS) $(XALAN_LIB) $(ALLLIBS) $(CXXFLAGS) $^ -o $@ $(OTHER_LINK_PARAMETERS) $(XSL_OBJ_DIR)/%.o:$(SAMPLES_DIR)/StreamTransform/%.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< TraceListen: prepare $(XSL_BIN_DIR)/TraceListen $(XSL_BIN_DIR)/TraceListen: $(XSL_OBJ_DIR)/TraceListen.o $(LINK) $(XSL_BUILD_OPTIONS) $(PLATFORM_LIB_LINK_OPTIONS) \ $(EXTRA_LINK_OPTIONS) $(XALAN_LIB) $(ALLLIBS) $(CXXFLAGS) $^ -o $@ $(OTHER_LINK_PARAMETERS) $(XSL_OBJ_DIR)/%.o:$(SAMPLES_DIR)/TraceListen/%.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< TransformToXercesDOM: prepare $(XSL_BIN_DIR)/TransformToXercesDOM $(XSL_BIN_DIR)/TransformToXercesDOM: $(XSL_OBJ_DIR)/TransformToXercesDOM.o $(LINK) $(XSL_BUILD_OPTIONS) $(PLATFORM_LIB_LINK_OPTIONS) \ $(EXTRA_LINK_OPTIONS) $(XALAN_LIB) $(ALLLIBS) $(CXXFLAGS) $^ -o $@ $(OTHER_LINK_PARAMETERS) $(XSL_OBJ_DIR)/%.o:$(SAMPLES_DIR)/TransformToXercesDOM/%.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< UseStylesheetParam: prepare $(XSL_BIN_DIR)/UseStylesheetParam $(XSL_BIN_DIR)/UseStylesheetParam: $(XSL_OBJ_DIR)/UseStylesheetParam.o $(LINK) $(XSL_BUILD_OPTIONS) $(PLATFORM_LIB_LINK_OPTIONS) \ $(EXTRA_LINK_OPTIONS) $(XALAN_LIB) $(ALLLIBS) $(CXXFLAGS) $^ -o $@ $(OTHER_LINK_PARAMETERS) $(XSL_OBJ_DIR)/%.o:$(SAMPLES_DIR)/UseStylesheetParam/%.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< XalanTransform: prepare $(XSL_BIN_DIR)/XalanTransform $(XSL_BIN_DIR)/XalanTransform: $(XSL_OBJ_DIR)/XalanTransform.o $(LINK) $(XSL_BUILD_OPTIONS) $(PLATFORM_LIB_LINK_OPTIONS) \ $(EXTRA_LINK_OPTIONS) $(XALAN_LIB) $(ALLLIBS) $(CXXFLAGS) $^ -o $@ $(OTHER_LINK_PARAMETERS) $(XSL_OBJ_DIR)/%.o:$(SAMPLES_DIR)/XalanTransform/%.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< XalanTransformerCallback: prepare $(XSL_BIN_DIR)/XalanTransformerCallback $(XSL_BIN_DIR)/XalanTransformerCallback: $(XSL_OBJ_DIR)/XalanTransformerCallback.o $(LINK) $(XSL_BUILD_OPTIONS) $(PLATFORM_LIB_LINK_OPTIONS) \ $(EXTRA_LINK_OPTIONS) $(XALAN_LIB) $(ALLLIBS) $(CXXFLAGS) $^ -o $@ $(OTHER_LINK_PARAMETERS) $(XSL_OBJ_DIR)/%.o:$(SAMPLES_DIR)/XalanTransformerCallback/%.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< ThreadSafe: prepare $(XSL_BIN_DIR)/ThreadSafe $(XSL_BIN_DIR)/ThreadSafe: $(XSL_OBJ_DIR)/ThreadSafe.o $(LINK) $(XSL_BUILD_OPTIONS) $(PLATFORM_LIB_LINK_OPTIONS) \ $(EXTRA_LINK_OPTIONS) $(XALAN_LIB) $(ALLLIBS) $(CXXFLAGS) $^ -o $@ $(OTHER_LINK_PARAMETERS) $(XSL_OBJ_DIR)/%.o:$(SAMPLES_DIR)/ThreadSafe/%.cpp $(CC1) $(XSL_BUILD_OPTIONS) -c $(XSL_INCL) $(EXTRA_COMPILE_OPTIONS) -o $@ $< prepare: -$(MKDIR) -p $(XSL_OBJ_DIR) -$(MKDIR) -p $(XSL_LIB_DIR) -$(MKDIR) -p $(XSL_BIN_DIR) install: Samples $(MKINSTALLDIRS) $(DESTDIR)/$(bindir) for bin in $(ALL_BINARIES); do \ $(INSTALL_PROGRAM) $(XSL_BIN_DIR)/$$bin \ $(DESTDIR)/$(bindir); \ done install-extras: cp -r $(SAMPLES_DIR) $(DESTDIR)/$(prefix) rm -rf $(DESTDIR)/$(prefix)/samples/Projects for common_build_file in $(COMMON_BUILD); do \ $(INSTALL_PROGRAM) $(XALANCROOT)/$$common_build_file \ $(DESTDIR)/$(prefix)/samples; \ done install-package: install install-extras clean: rm -rf $(XSL_OBJ_DIR)/*.o rm -rf $(OUTDIR)/so_locations rm -rf $(XSL_BIN_DIR)/SunWS_cache rm -rf $(XSL_LIB_DIR)/SunWS_cache rm -f $(XSL_LIB_DIR)/mod_xslt$(SHLIBSUFFIX) for bin in $(ALL_BINARIES); do \ rm -f $(XSL_BIN_DIR)/$$bin; \ done xalan-c-1.11/c/samples/configure.in0000775000175000000640000000575211731656104016170 0ustar stevesambadnl Process this file with autoconf to produce a configure script AC_INIT(ParsedSourceWrappers/ParsedSourceWrappers.cpp) dnl Checks for programs AC_PROG_CC AC_PROG_CXX AC_PROG_INSTALL AC_CHECK_PROG(AUTOCONF, autoconf, autoconf, true) dnl Checks for libraries AC_CHECK_LIB(m, floor) dnl Check for gcc problems if test "$CXX" = "g++" -o "$CXX" = "c++"; then AC_MSG_CHECKING([whether -fno-elide-constructors works correctly]) old_cxxflags=$CXXFLAGS CXXFLAGS="$CXXFLAGS -fno-elide-constructors" AC_LANG_CPLUSPLUS AC_TRY_COMPILE([#include ], [], [AC_MSG_RESULT([yes])], CXXFLAGS=$old_cxxflags [AC_MSG_RESULT([no])]); fi dnl dnl Do not know how to use this macro, so comment it out. dnl dnl special pthread handling (AIX uses pthreads instead of pthread) dnl AC_CHECK_LIB(pthread, pthread_create) dnl if test $ac_cv_lib_pthread_pthread_create = no; then dnl AC_CHECK_LIB(pthreads, pthread_create) dnl fi dnl dnl Determine the host system and Makefile fragment AC_CANONICAL_HOST dnl Platform-specific Makefile setup case "${host}" in *-*-solaris*) platform=SOLARIS ;; *-*-linux*) platform=LINUX ;; *-*-freebsd*) platform=FREEBSD ;; *-*-netbsd*) platform=NETBSD ;; *-*-irix*) platform=IRIX ;; *-*-aix*) platform=AIX ;; *-*-hp*) platform=HPUX ; case "${host}" in *-*-hpux11*) osver=HPUX11;; *-*-hpux10*) osver=HPUX10;; *) osver=HPUX11;; esac;; *-*-mvs*) platform=OS390 ;; *-*-osf*) platform=TRU64 ;; *-apple-darwin*) platform=MACOSX ;; *) platform=UNKNOWN ;; esac dnl check if mbstowcs is available and can correctly count only AC_HEADER_STDC AC_CHECK_FUNCS([mbstowcs],,,) if test x"$ac_cv_func_mbstowcs" = x"no"; then WCSTOMBS="-DXALAN_USE_XERCES_LOCAL_CODEPAGE_TRANSCODERS" else AC_MSG_CHECKING(if mbstowcs can count only) AC_TRY_RUN([ #if STDC_HEADERS #include #endif int main(int argc, char *argv[]) { wchar_t in[5] = { 0x74, 0x65, 0x73, 0x74, 0x00 }; if (wcstombs(0, in, 0) == -1) { exit(1); } exit(0); }], [AC_MSG_RESULT(yes)], [WCSTOMBS="-DXALAN_USE_XERCES_LOCAL_CODEPAGE_TRANSCODERS"; AC_MSG_RESULT(no)], [WCSTOMBS="-DXALAN_USE_XERCES_LOCAL_CODEPAGE_TRANSCODERS"; AC_MSG_RESULT(cross-compiling default)]) fi AC_SUBST(platform) cxx=${CXX} AC_SUBST(cxx) cc=${CC} AC_SUBST(cc) AC_SUBST(prefix) dnl Not used: AC_SUBST(osver) cxxflags=${CXXFLAGS} AC_SUBST(cxxflags) dnl Not used: cppflags=${CPPFLAGS} AC_SUBST(cppflags) cflags=${CFLAGS} AC_SUBST(cflags) ldflags=${LDFLAGS} AC_SUBST(ldflags) libs=${LIBS} AC_SUBST(libs) transcoder=${TRANSCODER} AC_SUBST(transcoder) wcstombs=${WCSTOMBS} AC_SUBST(wcstombs) dnl Not used: threads=${THREADS} AC_SUBST(threads) bitstobuild=${BITSTOBUILD} AC_SUBST(bitstobuild) dnl output the Makefiles +AC_OUTPUT([Makefile Makefile.incl]) xalan-c-1.11/c/samples/runConfigure0000775000175000000640000002127211731656104016243 0ustar stevesamba#!/bin/sh # # Copyright 1999-2004 The Apache Software Foundation. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # # # runConfigure: # This script will run the "configure" script for the appropriate # platform. Only supported platforms are recognized. # # The following variables are defined and exported at the end of this # script. # # LIBS # LDFLAGS # CXXFLAGS # usage() { echo "runConfigure: Helper script to run \"configure\" for one of the supported platforms" echo "Usage: runConfigure \"options\"" echo " where options may be any of the following:" echo " -p (accepts 'aix', 'linux', 'freebsd', 'netbsd', 'solaris', 'hp-10', 'hp-11', 'irix', 'tru64', 'macosx')" echo " -c (e.g. gcc, cc, xlc)" echo " -x (e.g. g++, CC, xlC)" echo " -d (specifies that you want to build debug version)" echo " -t can be 'icu' (everything else means default)" echo " -r can be 'pthread' or 'dce' (only used on HP-11)" echo " -b (accepts '64', '32')" echo " -P " echo " -l " echo " -z " echo " -C " echo " -h (to get help on the above commands)" } ERROR_EXIT_CODE=1 if test ${1}o = "o"; then usage exit ${ERROR_EXIT_CODE} fi if test ${XALANCROOT}o = "o"; then echo ERROR : You have not set your XALANCROOT environment variable echo Though this environment variable has nothing to do with creating makefiles, echo this is just a general warning to prevent you from pitfalls in future. Please echo set an environment variable called XALANCROOT to indicate where you installed echo the XALAN-C files, and run this command again to proceed. See the documentation echo for an example if you are still confused. exit ${ERROR_EXIT_CODE} fi if test $1 = "-h"; then usage exit ${ERROR_EXIT_CODE} fi # Get the command line parameters if test -x /bin/getopt -o -x /usr/bin/getopt; then set -- `getopt C:p:P:c:x:dm:n:t:r:b:l:z:h $*` else set -- `getopts C:p:P:c:x:dm:n:t:r:b:l:z:h $*` fi if [ $? != 0 ] then usage exit ${ERROR_EXIT_CODE} fi # Set up the default values for each parameter debug=off # by default debug is off bitsToBuild=32 # by default 32 bit build assumed transcoder=default # by default use default transcoder while [ $# -gt 0 ] do case $1 in -p) platform=$2; shift 2;; -c) ccompiler=$2; shift 2;; -x) cppcompiler=$2; shift 2;; -d) debug=on; shift;; -t) transcoder=$2; shift 2;; -r) thread=$2; shift 2;; -b) bitsToBuild=$2; shift 2;; -P) configureoptions="$configureoptions --prefix=$2"; shift 2;; -l) linkeroptions="$linkeroptions $2"; shift 2;; -z) compileroptions="$compileroptions $2"; shift 2;; -C) configureoptions="$configureoptions $2"; shift 2;; -h) usage exit ${ERROR_EXIT_CODE};; --) shift; break;; *) echo "unknown option $1" usage exit ${ERROR_EXIT_CODE};; esac done echo "Generating makefiles with the following options ..." echo "Platform: $platform" echo "C Compiler: $ccompiler" echo "C++ Compiler: $cppcompiler" echo "Extra compile options: $compileroptions" echo "Extra link options: $linkeroptions" echo "Transcoder: $transcoder" echo "Thread option: $thread" echo "bitsToBuild option: $bitsToBuild" echo "Extra configure options: $configureoptions" # # Now check if the options are correct or not, bail out if incorrect # case $platform in aix | linux | freebsd | netbsd | solaris | hp-10 | hp-11 | irix | tru64 | macosx) # platform has been recognized ;; *) echo "I do not recognize the platform '$platform'. Please type '${0} -h' for help." exit ${ERROR_EXIT_CODE};; esac # # Enable debugging or not... # if test $debug = "off"; then echo "Debug is OFF" if test $platform = "linux"; then if test $cppcompiler = "icpc"; then debugflag="-O3 -DNDEBUG"; else debugflag="-O2 -DNDEBUG"; fi else debugflag="-O -DNDEBUG"; fi else echo "Debug is ON" debugflag="-g"; fi # # Check for the bitsToBuild option # # # aix | linux | hp-11 | solaris | # hp-10 | freebsd | netbsd | irix | openserver | unixware | os400 | ptx | tru64 | macosx # if test $bitsToBuild = 64; then bitstobuildDefines=" -DXML_BITSTOBUILD_64 " bitstobuildLink=" " if test $platform; then case $platform in solaris) bitstobuildDefines=" $bitstobuildDefines -xarch=v9 " bitstobuildLink=" -xarch=v9 " ;; aix) bitstobuildDefines=" $bitstobuildDefines -q64 -qwarn64 " ;; hp-11) bitstobuildDefines=" $bitstobuildDefines +DA2.0W " bitstobuildLink=" +DA2.0W " ;; linux) bitstobuildDefines=" $bitstobuildDefines " ;; *) ;; esac fi elif test $bitsToBuild = 32; then bitstobuildDefines=" " bitstobuildLink=" " if test $platform; then case $platform in solaris) ;; aix) ;; hp-11) bitstobuildDefines=" $bitstobuildDefines +DAportable " ;; linux) ;; *) ;; esac fi else echo "I do not recognize the bitsToBuild '$bitsToBuild'. Please type '${0} -h' for help." exit ${ERROR_EXIT_CODE}; fi # # to export in case it is needed in Makefile.in/Makefine.incl # BITSTOBUILD=$bitsToBuild export BITSTOBUILD # # Now check whether to use 'icu' as transcoder # TRANSCODER= if test $transcoder; then case $transcoder in icu) if test ${ICUROOT}o = "o"; then echo '***Error*** ICUROOT environment variable not defined. Exiting...'; exit ${ERROR_EXIT_CODE}; fi transcodingDefines="-I${ICUROOT}/include"; transcodingLibs="-L${ICUROOT} -L${ICUROOT}/lib -L${ICUROOT}/data"; TRANSCODER=ICU;; default) ;; *) echo "Unknown transcoder '$transcoder'. Using default." ;; esac fi export TRANSCODER # # Check for the threading option # threadingLibs="-lpthread" if test $platform = "hp-11"; then if test $thread; then case $thread in pthread) ;; dce) threadingLibs="-lcma"; threadingDefines="-D_PTHREADS_DRAFT4 -DXML_USE_DCE" ;; *) echo "I do not recognize the thread option '$thread'. Please type '${0} -h' for help." exit ${ERROR_EXIT_CODE};; esac fi elif test $platform = "aix"; then threadingLibs="-lpthreads" elif test $platform = "freebsd"; then if test -n "${PTHREAD_LIBS}" ; then threadingLibs="${PTHREAD_LIBS}" threadingDefines="${PTHREAD_CFLAGS}" else threadingLibs="-lpthread" threadingDefines="" fi elif test $platform = "netbsd"; then threadingLibs="-pthread -lpthread" elif test $platform = "hp-10"; then threadingLibs="-lcma" threadingDefines="-DXML_USE_DCE" fi # # Set the C compiler and C++ compiler environment variables # case $cppcompiler in xlC | xlc | xlC_r | xlc_r | g++ | c++ | cc | CC | aCC | cxx | icpc) ;; *) echo "I do not recognize the C++ compiler '$cppcompiler'. Continuing anyway ..." ;; esac CC="$ccompiler" export CC CXX="$cppcompiler" export CXX # # Set the extra C and C++ compiler flags # CXXFLAGS="$compileroptions $debugflag $transcodingDefines $threadingDefines $bitstobuildDefines " export CXXFLAGS CFLAGS="$compileroptions $debugflag $transcodingDefines $threadingDefines $bitstobuildDefines " export CFLAGS LDFLAGS="$LDFLAGS $linkeroptions $bitstobuildLink" export LDFLAGS LIBS="$transcodingLibs $threadingLibs " export LIBS echo rm -f config.cache rm -f config.log rm -f config.status `dirname $0`/configure $configureoptions echo echo If the result of the above commands look OK to you, go to the directory echo ${XALANCROOT}/samples and type \"gmake\" or \"make\" to make the XALAN-C samples. echo echo Note: You must use GNU make to use the Xalan Makefile. exit 0; xalan-c-1.11/c/config.guess0000664000175000000640000012366312030215163014514 0ustar stevesamba#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003 Free Software Foundation, Inc. timestamp='2003-10-20' # 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 trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; 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". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; 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 # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # 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 ;; pegasos: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 # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # 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. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit 0 ;; Alpha*:OpenVMS:*:*) echo alpha-hp-vms 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 ;; *:OS400:*:*) echo powerpc-ibm-os400 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 ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit 0 ;; DRS?6000:UNIX_SV:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7 && exit 0 ;; esac ;; 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=`(sed 1q /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 -o $dummy $dummy.c \ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ && exit 0 echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit 0 ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit 0 ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-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 -o $dummy $dummy.c && $dummy && exit 0 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 | sed 1q | 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 -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then # avoid double evaluation of $set_cc_for_build test -n "$CC_FOR_BUILD" || eval $set_cc_for_build if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi 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 -o $dummy $dummy.c && $dummy && exit 0 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*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*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 ;; *:UNICOS/mp:*:*) echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' 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 ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" 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:*:*) # Determine whether the default compiler uses glibc. eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #if __GLIBC__ >= 2 LIBC=gnu #else LIBC= #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` # GNU/KFreeBSD systems have a "k" prefix to indicate we are using # FreeBSD's kernel, but not the complete OS. case ${LIBC} in gnu) kernel_only='k' ;; esac echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} 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*:[34]*) echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' exit 0 ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks 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 i586-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:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit 0 ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit 0 ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit 0 ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu 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=` test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` test x"${CPU}" != x && echo "${CPU}-unknown-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 ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu 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. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit 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 #ifdef __INTEL_COMPILER LIBC=gnu #else LIBC=gnuaout #endif #endif #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` 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:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit 0 ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit 0 ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit 0 ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit 0 ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit 0 ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp 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|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi 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 ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit 0 ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit 0 ;; M68*:*:R3V[567]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*: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 ;; 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 ;; SX-6:SUPER-UX:*:*) echo sx6-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:*:*) case `uname -p` in *86) UNAME_PROCESSOR=i686 ;; powerpc) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit 0 ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit 0 ;; *:QNX:*:4*) echo i386-pc-qnx exit 0 ;; NSR-[DGKLNPTVWY]: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 ;; *: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 ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit 0 ;; *:DRAGONFLY:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly${UNAME_RELEASE} 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 -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 # 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: xalan-c-1.11/c/config.sub0000664000175000000640000007417612030215163014163 0ustar stevesamba#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003 Free Software Foundation, Inc. timestamp='2003-11-20' # 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* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) 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] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | m32r | m68000 | m68k | m88k | mcore \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64vr | mips64vrel \ | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | msp430 \ | ns16k | ns32k \ | openrisc | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ | strongarm \ | tahoe | thumb | tic4x | 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-* | armeb-* | armv*-* \ | avr-* \ | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | m32r-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | mcore-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64vr-* | mips64vrel-* \ | mips64orion-* | mips64orionel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | msp430-* \ | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | 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 ;; amd64) basic_machine=x86_64-pc ;; 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 ;; c90) basic_machine=c90-cray os=-unicos ;; 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 | j90) basic_machine=j90-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 ;; 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 ;; nv1) basic_machine=nv1-cray os=-unicosmp ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; or32 | or32-*) basic_machine=or32-unknown os=-coff ;; os400) basic_machine=powerpc-ibm os=-os400 ;; 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 | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-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-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`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 ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh64) basic_machine=sh64-unknown ;; 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=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-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 ;; tpf) basic_machine=s390x-ibm os=-tpf ;; 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 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; 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 ;; 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 | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sh64) basic_machine=sh64-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 ;; *-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* | -knetbsd* | -netbsd* | -openbsd* | -kfreebsd* | -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* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|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-dietlibc) os=-linux-dietlibc ;; -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 ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -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 ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -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 ;; c4x-* | tic4x-*) os=-coff ;; # 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 ;; or32-*) os=-coff ;; *-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 ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) 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: xalan-c-1.11/c/configure0000775000175000000640000040145712030217674014117 0ustar stevesamba#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.59. # # Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $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" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.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 $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } 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 if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval 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 # 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 ac_config_libobj_dir=. 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="src/xalanc/PlatformSupport/PlatformSupportDefinitions.hpp" ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AUTOCONF build build_cpu build_vendor build_os host host_cpu host_vendor host_os CXXCPP EGREP platform cxx cc osver osvariant cxxflags cppflags cflags ldflags libs transcoder xalan_locale_system xalan_locale wcstombs threads bitstobuild LIBOBJS LTLIBOBJS' ac_subst_files='' # 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 (cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 { (exit 1); exit 1; }; } 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_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 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 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 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 # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac 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 (C) 2003 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.59. 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. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" # Get rid of the leading space. ac_sep=" " ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # 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 cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------- ## ## Output files. ## ## ------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo sed "/^$/d" confdefs.h | sort echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f 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_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 ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" 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 See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&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 /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.exe b.out" # 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 file name" >&5 echo $ECHO_N "checking for C compiler default output file name... $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= # b.out is created by i960 compilers. for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; conftest.$ac_ext ) # This is the source file. ;; [ab].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, # but it would be cool to find out if it's true. Does anybody # maintain Libtool? --akim. export ac_cv_exeext break;; * ) break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&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'. See \`config.log' for more details." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&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 b.out 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 conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; *.* ) 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 See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&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 /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ 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 | *.xSYM | *.bb | *.bbg ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&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 /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ 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>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (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); }; } && { 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 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err 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 /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (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); }; } && { 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 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.err 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 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 /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end 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; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std1 is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std1. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; 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; 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>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (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); }; } && { 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 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err 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 # 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>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (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); }; } && { 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 \ '' \ '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 /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration #include 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>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (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); }; } && { 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 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration 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>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (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); }; } && { 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 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err 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 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err 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 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 /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ 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>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (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); }; } && { 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 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err 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 /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (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); }; } && { 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 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cxx_g=no fi rm -f conftest.err 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 \ '' \ '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 /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration #include 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>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (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); }; } && { 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 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration 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>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (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); }; } && { 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 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err 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 ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; 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 $srcdir $srcdir/.. $srcdir/../.." >&5 echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&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" # OS/2's system install, which has a completely different semantic # ./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/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /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' # Extract the first word of "autoconf", so it can be a program name with args. set dummy autoconf; 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_AUTOCONF+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AUTOCONF"; then ac_cv_prog_AUTOCONF="$AUTOCONF" # 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_AUTOCONF="autoconf" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_AUTOCONF" && ac_cv_prog_AUTOCONF="true" fi fi AUTOCONF=$ac_cv_prog_AUTOCONF if test -n "$AUTOCONF"; then echo "$as_me:$LINENO: result: $AUTOCONF" >&5 echo "${ECHO_T}$AUTOCONF" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test "$CXX" = "g++" -o "$CXX" = "c++" -o "$CXX" = "g++3"; then echo "$as_me:$LINENO: checking whether -fno-elide-constructors works correctly" >&5 echo $ECHO_N "checking whether -fno-elide-constructors works correctly... $ECHO_C" >&6 old_cxxflags=$CXXFLAGS CXXFLAGS="$CXXFLAGS -fno-elide-constructors" 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 /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (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); }; } && { 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 echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CXXFLAGS=$old_cxxflags echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext; fi # 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/'` case "${host}" in *-*-solaris*) platform=SOLARIS ;; *-*-linux*) platform=LINUX ;; *-*-freebsd*) platform=FREEBSD ;; *-*-netbsd*) platform=NETBSD ;; *-*-openbsd*) platform=OPENBSD ;; *-*-irix*) platform=IRIX ;; *-*-aix*) platform=AIX ;; ia64-hp*) platform=HPUX ; osver=HPUX11 ; osvariant=IA64;; *-*-hp*) platform=HPUX ; case "${host}" in *-*-hpux11*) osver=HPUX11;; *-*-hpux10*) osver=HPUX10;; *) osver=HPUX11;; esac;; *-*-mvs*) platform=OS390 ;; *-*-osf*) platform=TRU64 ;; *-apple-darwin*) platform=MACOSX ;; *-*-os400*) platform=OS400 ;; *-*-OS400*) platform=OS400 ;; *-*-cygwin*) platform=CYGWIN ;; *-*-mingw*) platform=MINGW ;; *) platform=UNKNOWN ;; esac if test "$platform" != "OS400"; then echo "$as_me:$LINENO: checking for floor in -lm" >&5 echo $ECHO_N "checking for floor in -lm... $ECHO_C" >&6 if test "${ac_cv_lib_m_floor+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end 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 floor (); int main () { floor (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (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); }; } && { 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_m_floor=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_m_floor=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_m_floor" >&5 echo "${ECHO_T}$ac_cv_lib_m_floor" >&6 if test $ac_cv_lib_m_floor = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBM 1 _ACEOF LIBS="-lm $LIBS" fi 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 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. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # 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 /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif 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=$? grep -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 ac_cpp_err=$ac_cpp_err$ac_cxx_werror_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 sed 's/^/| /' 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 /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end 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=$? grep -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 ac_cpp_err=$ac_cpp_err$ac_cxx_werror_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 sed 's/^/| /' 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. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # 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 /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif 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=$? grep -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 ac_cpp_err=$ac_cpp_err$ac_cxx_werror_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 sed 's/^/| /' 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 /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end 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=$? grep -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 ac_cpp_err=$ac_cpp_err$ac_cxx_werror_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 sed 's/^/| /' 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 See \`config.log' for more details." >&5 echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&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 echo "$as_me:$LINENO: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6 if test "${ac_cv_prog_egrep+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi fi echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 echo "${ECHO_T}$ac_cv_prog_egrep" >&6 EGREP=$ac_cv_prog_egrep 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 /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (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); }; } && { 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_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f conftest.err conftest.$ac_objext 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 /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end 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 /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end 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 /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end 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 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core *.core gmon.out bb.out 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 for ac_func in mbstowcs do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* 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 $ac_func (); /* 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_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (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); }; } && { 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 eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done if test x"$ac_cv_func_mbstowcs" = x"no"; then WCSTOMBS="-DXALAN_USE_XERCES_LOCAL_CODEPAGE_TRANSCODERS" else echo "$as_me:$LINENO: checking if mbstowcs can count only" >&5 echo $ECHO_N "checking if mbstowcs can count only... $ECHO_C" >&6 if test "$cross_compiling" = yes; then WCSTOMBS="-DXALAN_USE_XERCES_LOCAL_CODEPAGE_TRANSCODERS"; echo "$as_me:$LINENO: result: cross-compiling default" >&5 echo "${ECHO_T}cross-compiling default" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #if STDC_HEADERS #include #endif int main(int argc, char *argv[]) { wchar_t in[5] = { 0x74, 0x65, 0x73, 0x74, 0x00 }; if (wcstombs(0, in, 0) == -1) { exit(1); } 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 echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) WCSTOMBS="-DXALAN_USE_XERCES_LOCAL_CODEPAGE_TRANSCODERS"; echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi cxx=${CXX} cc=${CC} cxxflags=${CXXFLAGS} cppflags=${CPPFLAGS} cflags=${CFLAGS} ldflags=${LDFLAGS} libs=${LIBS} transcoder=${TRANSCODER} xalan_locale_system=${XALAN_LOCALE_SYSTEM} xalan_locale=${XALAN_LOCALE} wcstombs=${WCSTOMBS} threads=${THREADS} bitstobuild=${BITSTOBUILD} if test ! -d src; then mkdir src fi ac_config_files="$ac_config_files Makefile.incl Makefile src/xalanc/Makefile src/xalanc/Utils/Makefile src/xalanc/Utils/MsgCreator/Makefile src/xalanc/Utils/XalanMsgLib/Makefile samples/Makefile Tests/Makefile" 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 overridden 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 diff $cache_file confcache >/dev/null 2>&1; 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 ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : ${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 ac_cs_recheck=false ac_cs_silent=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=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $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" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.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 $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } 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 if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval 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 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.59. 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 -q, --quiet do not print progress messages -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.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2003 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[^=]*=\(.*\)'` ac_shift=: ;; -*) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; *) # This is not an option, so the user has probably given explicit # arguments. ac_option=$1 ac_need_defaults=false;; esac case $ac_option in # Handling of the options. _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --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 ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # 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 ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "Makefile.incl" ) CONFIG_FILES="$CONFIG_FILES Makefile.incl" ;; "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/xalanc/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/xalanc/Makefile" ;; "src/xalanc/Utils/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/xalanc/Utils/Makefile" ;; "src/xalanc/Utils/MsgCreator/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/xalanc/Utils/MsgCreator/Makefile" ;; "src/xalanc/Utils/XalanMsgLib/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/xalanc/Utils/XalanMsgLib/Makefile" ;; "samples/Makefile" ) CONFIG_FILES="$CONFIG_FILES samples/Makefile" ;; "Tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES Tests/Makefile" ;; *) { { 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 # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason to put it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # 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. { tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./confstat$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in ." >&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,@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,@CXX@,$CXX,;t t s,@CXXFLAGS@,$CXXFLAGS,;t t s,@ac_ct_CXX@,$ac_ct_CXX,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t s,@AUTOCONF@,$AUTOCONF,;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,@CXXCPP@,$CXXCPP,;t t s,@EGREP@,$EGREP,;t t s,@platform@,$platform,;t t s,@cxx@,$cxx,;t t s,@cc@,$cc,;t t s,@osver@,$osver,;t t s,@osvariant@,$osvariant,;t t s,@cxxflags@,$cxxflags,;t t s,@cppflags@,$cppflags,;t t s,@cflags@,$cflags,;t t s,@ldflags@,$ldflags,;t t s,@libs@,$libs,;t t s,@transcoder@,$transcoder,;t t s,@xalan_locale_system@,$xalan_locale_system,;t t s,@xalan_locale@,$xalan_locale,;t t s,@wcstombs@,$wcstombs,;t t s,@threads@,$threads,;t t s,@bitstobuild@,$bitstobuild,;t t s,@LIBOBJS@,$LIBOBJS,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;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'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } 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 # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac 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=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || 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 xalan-c-1.11/c/configure.in0000664000175000000640000000740112036623151014505 0ustar stevesambadnl Process this file with autoconf to produce a configure script AC_INIT(src/xalanc/PlatformSupport/PlatformSupportDefinitions.hpp) dnl Checks for programs AC_PROG_CC AC_PROG_CXX AC_PROG_INSTALL AC_CHECK_PROG(AUTOCONF, autoconf, autoconf, true) dnl Check for gcc problems if test "$CXX" = "g++" -o "$CXX" = "c++"; then AC_MSG_CHECKING([whether -fno-elide-constructors works correctly]) old_cxxflags=$CXXFLAGS CXXFLAGS="$CXXFLAGS -fno-elide-constructors" AC_LANG_CPLUSPLUS AC_TRY_COMPILE([#include ], [], [AC_MSG_RESULT([yes])], CXXFLAGS=$old_cxxflags [AC_MSG_RESULT([no])]); fi dnl dnl Do not know how to use this macro, so comment it out. dnl dnl special pthread handling (AIX uses pthreads instead of pthread) dnl AC_CHECK_LIB(pthread, pthread_create) dnl if test $ac_cv_lib_pthread_pthread_create = no; then dnl AC_CHECK_LIB(pthreads, pthread_create) dnl fi dnl dnl Determine the host system and Makefile fragment AC_CANONICAL_HOST dnl Platform-specific Makefile setup case "${host}" in *-*-solaris*) platform=SOLARIS ;; *-*-linux*) platform=LINUX ;; *-*-freebsd*) platform=FREEBSD ;; *-*-netbsd*) platform=NETBSD ;; *-*-openbsd*) platform=OPENBSD ;; *-*-irix*) platform=IRIX ;; *-*-aix*) platform=AIX ;; ia64-hp*) platform=HPUX ; osver=HPUX11 ; osvariant=IA64;; *-*-hp*) platform=HPUX ; case "${host}" in *-*-hpux11*) osver=HPUX11;; *-*-hpux10*) osver=HPUX10;; *) osver=HPUX11;; esac;; *-*-mvs*) platform=OS390 ;; *-*-osf*) platform=TRU64 ;; *-apple-darwin*) platform=MACOSX ;; *-*-os400*) platform=OS400 ;; *-*-OS400*) platform=OS400 ;; *-*-cygwin*) platform=CYGWIN ;; *-*-mingw*) platform=MINGW ;; *) platform=UNKNOWN ;; esac dnl Checks for libraries if test "$platform" != "OS400"; then AC_CHECK_LIB(m, floor) fi dnl check if mbstowcs is available and can correctly count only AC_HEADER_STDC AC_CHECK_FUNCS([mbstowcs],,,) if test x"$ac_cv_func_mbstowcs" = x"no"; then WCSTOMBS="-DXALAN_USE_XERCES_LOCAL_CODEPAGE_TRANSCODERS" else AC_MSG_CHECKING(if mbstowcs can count only) AC_TRY_RUN([ #if STDC_HEADERS #include #endif int main(int argc, char *argv[]) { wchar_t in[5] = { 0x74, 0x65, 0x73, 0x74, 0x00 }; if (wcstombs(0, in, 0) == -1) { exit(1); } exit(0); }], [AC_MSG_RESULT(yes)], [WCSTOMBS="-DXALAN_USE_XERCES_LOCAL_CODEPAGE_TRANSCODERS"; AC_MSG_RESULT(no)], [WCSTOMBS="-DXALAN_USE_XERCES_LOCAL_CODEPAGE_TRANSCODERS"; AC_MSG_RESULT(cross-compiling default)]) fi AC_SUBST(platform) cxx=${CXX} AC_SUBST(cxx) cc=${CC} AC_SUBST(cc) AC_SUBST(prefix) dnl Not used: AC_SUBST(osver) AC_SUBST(osvariant) cxxflags=${CXXFLAGS} AC_SUBST(cxxflags) dnl Not used: cppflags=${CPPFLAGS} AC_SUBST(cppflags) cflags=${CFLAGS} AC_SUBST(cflags) ldflags=${LDFLAGS} AC_SUBST(ldflags) libs=${LIBS} AC_SUBST(libs) transcoder=${TRANSCODER} AC_SUBST(transcoder) xalan_locale_system=${XALAN_LOCALE_SYSTEM} AC_SUBST(xalan_locale_system) xalan_locale=${XALAN_LOCALE} AC_SUBST(xalan_locale) wcstombs=${WCSTOMBS} AC_SUBST(wcstombs) dnl Not used: threads=${THREADS} AC_SUBST(threads) bitstobuild=${BITSTOBUILD} AC_SUBST(bitstobuild) dnl output the Makefiles if test ! -d src; then mkdir src fi AC_OUTPUT([Makefile.incl \ Makefile \ src/xalanc/Makefile \ src/xalanc/Utils/Makefile \ src/xalanc/Utils/MsgCreator/Makefile \ src/xalanc/Utils/XalanMsgLib/Makefile \ samples/Makefile \ Tests/Makefile]) xalan-c-1.11/c/install-sh0000775000175000000640000001273612030215163014201 0ustar stevesamba#!/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 xalan-c-1.11/c/KEYS0000664000175000000640000002142112030215163012662 0ustar stevesambaThis file contains the PGP keys of various Xalan-C++ developers. Please don't use them for email unless you have to. Their main purpose is code signing. Xalan users: pgp < KEYS Xalan developers: pgp -kxa and append it to this file. Type Bits/KeyID Date User ID pub 2048/58DA77EA 2002/09/15 David N. Bertoni -----BEGIN PGP PUBLIC KEY BLOCK----- Version: PGP 6.5.8 mQGiBD2EzCURBADvZo0b4zJ1PwLtGAo8dH28LiN+dnhvtfqhTqcGrpZoMta/+h+Y mkr+iLj56VFaAhASdyPij0TRi0MM/KMmhXtoHSOjdWHPRELtbFdfZPSHXKr+GLcb zc2Wk1m0rKMyQil4FeSc3ifUobUwjZl+G0r8bZCcHa6aW8L/BugKmLbE9QCg/0Tc ABLJ0iQoRQ/7/rehDnxrXZUEAOKVEtnrXmYz0oHI1lUQT9qOiCaVn4wUXUfoFZg7 /Zc2Md3D0tVCAa2TIE7KOnlDY7bBem5pNnMZjpQhBiAVc6M21zvbY2ML0j9PUM45 d1tx11UnJb/H/1z41DvNBb0ak/y4yocAFKGtoSGkW06AOKZlDKJt0qyd0A8ri1NQ JWXnBAC5ZryRQvUGVkEBZ+dsUKnieKX7pxXbFO/sc9DHHwv5lIC8sHVanRpS3C3D hvtDtnSA7qOapj120ooooLZH3qerv/FFxcBy3LgHLpOk0OY10sGugbZ++oa7E9ih Fk0gJ6P5Obxdx8NiN49LWjjG0n1K0HQXVQSFSichYX/tOaRmBrQtRGF2aWQgTi4g QmVydG9uaSA8ZGF2aWRfbl9iZXJ0b25pQHVzLmlibS5jb20+iQBOBBARAgAOBQI9 hMwlBAsDAgECGQEACgkQloL2LVjad+p5ggCgjuE8zNBbSv98EMUmoU8C9X1RDJMA nRp+sBbtroBqk/T6iH6DjzV+opXhuQINBD2EzCUQCAD2Qle3CH8IF3KiutapQvMF 6PlTETlPtvFuuUs4INoBp1ajFOmPQFXz0AfGy0OplK33TGSGSfgMg71l6RfUodNQ +PVZX9x2Uk89PY3bzpnhV5JZzf24rnRPxfx2vIPFRzBhznzJZv8V+bv9kV7HAarT W56NoKVyOtQa8L9GAFgr5fSI/VhOSdvNILSd5JEHNmszbDgNRR0PfIizHHxbLY72 88kjwEPwpVsYjY67VYy4XTjTNP18F1dDox0YbN4zISy1Kv884bEpQBgRjXyEpwpy 1obEAxnIByl6ypUM2Zafq9AKUJsCRtMIPWakXUGfnHy9iUsiGSa6q6Jew1XpMgs7 AAICCADyQcz18ke9abv2fG9edtY9GeWGvbel3fPLAB0auZSgxTTTn/EzAiQw/OW9 4LAy6WmsqCNrPI7QTtmubg/h4m6K+4KSuUncxuSoat/R15YJ41r0hKQCRhYS12XD 5QabsUtVcu+eSqpMPTFNPbm7dphpLwyHKp8tGlKOSKX2GDjBndRS//o33V5Jm58N Yk5F9/EcG8wZMMwetl/iKnFuVolZFNG60Ss/D3veIRDNArit+JIsZmYhGlGlNST8 +37lcb8qOaPDIXKidIeJ+eAZQEcWhVUrYK8WLkXqZyGKrpipysWikdsyI4QSHcqt D6Szx+WPRFd9+lm2DMvn0x+RuCemiQBGBBgRAgAGBQI9hMwlAAoJEJaC9i1Y2nfq 0J4AoKXpZ0FzqNUt8DM9CQiU2/aTRUEiAKDvM53DaCeFunbeKXSYgWpYltpzkg== =iRoL -----END PGP PUBLIC KEY BLOCK----- pub 2048/2004CC44 2004-01-13 Matthew Hoyt -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.2 (MingW32) mQGiBEAEedERBACXi4mp4oCR/vFC9DYB8p6g7MgtejM9iso0812hi4UAANQp1Cj5 TaKg84EgEs9wqD6yF5Sh5iC+Y2QOrtQQykjh1rbeS6J6jL5SQ4UQvYkEgy7SyqYu mS8tRoR3GCASjYooT3LPoguUPL5nsTFoFyNautS2T91d0Ih0FCBhGr9BpwCg8Uld VsZUBLY5lU/Eoj0/igJN0I8D/RFU7vbzVOGC94UOSJ/2NfdTfHgs3r1Vq0EQQt8B qQ8Qqm1/z1dGmMIPnXcmvwRoUVtq04KWVMqxhDseFxygb5+euyp/AcE3Xt4Z9b4M u6lAstIwXCKYIFGchMMrEHrfyT+T1RnKczPqSJJFqkpWU7jHF88WVxk5yAqLjt1X E59mBACKppza2adeiiK+m3J2VIaeNch5rj9Hp6rt0Tu80ZUh9g24MVq2Mi9kOuy3 LZehxiFIkaMK/k5x6LdNAyCGznVlEXjM9zMWaJjzG+l5HaFOe01ffx1D0x5Z4yCd 8ZxUh3C65Xk5n99PUbCw584iNivmb14cnx/zMoHpSS1UdTjO+LQfTWF0dGhldyBI b3l0IDxtaG95dEBjYS5pYm0uY29tPohbBBMRAgAbBQJABHnRBgsJCAcDAgMVAgMD FgIBAh4BAheAAAoJEFu1ZuAgBMxEcVMAnRsf74lhiwIjK7nvXGyqJN26FHLVAJ9d Fg0oXAXgdGItY/jucjEJVOv2b7kCDQRABHoYEAgAiuY+3ta5yLsjsCmQuVbATFWJ T/oBv900UGeo1yJ10vEQwzFET8OPrUCYW5c+GzaVxonG+YcRAiVlcCXWGolcnMmM UJL8/1mDTSg60oMXdIPtkIh2ogC1VP69uhe1/QQF/tySTO3FAK306u85KYtUyB8L RdUvfRnEocBNRQLX1re5BnhuEvtL+6zTf08IzJlNFol9e5YIlNKxWkQXVweUoXim n0tYeS8qBjLiklD/8ZtXzcr9hZ08Z7YKS/JcPBVuAHdWaRKxVwB92k07NvP70F2I dITqc/Wj8O7Rgemf3uqGR4pMFZrSUycOaEx8kh4SHXb495FzeVeQoF/7SgZsVwAD Bwf+LPJA/sJIP3aCzk/j+rkurx5EOigW85w9cLdQ+bzxS0YhNilsZ0JpfDK99frK Y1XhRn4wjYc/pWodBz7Gz2FE6hP1sBc1cOdRlnBXzxiSvxG+eZo7Ue43W+MVNA+1 Ay7PzYPDBtBgiMUIN1y4WS88Nlh0W4pqt//KkVU+6GuLFG6BMgccA5iGF+XaseT7 crZxPiwgvZ4xIFaHykUM2StDDAxU1sdBVloXzdOvdCJ9+zwS1QIeJHj5re6jlTIE 9J0fw2a8aVFOcNYXt2sj6XF+ChHiXYFqNMuX0uRDYc1ykORzdtnjwEF2FdR+f3eF fvcvEKAE7/zvGhgXOSQoHHWmTohGBBgRAgAGBQJABHoYAAoJEFu1ZuAgBMxEQlUA nA6UswPZaZSipt4MPFIpLSimISlRAKDrIjjI0LE5mvPwbJ+LGIPTCx+ELg== =/gXc -----END PGP PUBLIC KEY BLOCK----- pub 1024D/C7599162 2004-12-21 uid Dmitry Hayes sub 2048g/ACD96CE4 2004-12-21 -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.0 (MingW32) mQGiBEHHfq4RBADiF14d67sOzC4T0GfzN+atYrUaV27DiFfg/YZOX2jb2O3ZUamz 8cdJDLpDfRF8WI4QxJDrNZ+a+BGMFnwRj+zBZtcpnH7VbFf3NLT/S0RUjiGoxJnH QhOukyrp3Yfx8AyBSKYXqMnmUsynFpxu+39utUOr+PWkBdgWa7vcLyUDswCg5t0A EB6+tZPF0RSyXLhcaHr0RKsD/3+2FTvlBuaHdE3hNOQJOK5TDbcpgmP+wpOFC2AR sTn3j9nCKItlsO4yC79P1k4L2Jt/wYaNjigRmDr6/YpXdnBFN+TGgBFxU4nTEZXp U1uPxFUoYjtBGfZRlWGUG4TtqQkrHhRhu0VO5r/n7evhHbSSvAFP29hQTD8DLXA6 Y8poA/sEbfPH95XXUURDYDrzOI0ZFXq0UwNk37yJgey9rS4h5Ya2rP20RhQIu47L k87rndugKgXbTl5QEiNOVqMpEOlo68EmCU2jgcPY3DUQhQj8eE+E7qw8T98lwGsL cN4HGCAjv63fkeDJ0ym/KucyMdT3zesO04ejaMcbGQ8aymocZbQhRG1pdHJ5IEhh eWVzIDxkbWl0cnloQGFwYWNoZS5vcmc+iF4EExECAB4FAkHHfq4CGwMGCwkIBwMC AxUCAwMWAgECHgECF4AACgkQP2Ib8MdZkWKBswCdGvMzoTvgid780IanRiDkSbqR QnkAoK77D/zKPNnu8WbQKXtitQHYm3WKuQINBEHHfs4QCACKYPY1LjB+IuM6H/jb HtL5STHEHBIsDOpuiLs/KQvcAvB+Y3A/trVR/Q6tUkSnBLPRzua8suIwyRzanTLv UpFzcz4GgA0TNKxgMueWLEPKxFJD7E8WxA2JFcWTEoVcVCSd1zPYAmK8wHbIFdYG 2yNBxm7N4h/3kftarO1q93shJQDSRNGVOw/L/3PsPHiWjdYIpoCtGHyBFMQxxkZB s3ZIB7lUqqJkVDn0wYKxgaWTEJ8zK5oYNicxqs8tN9NR964UUszHrBGn7hnE0ftX FF5n1pSPJgapCHZBi+BfB0Tr0iHJpiwh926h7B/kUvJjMxm4/xKxrPWLcHoPiKGN hawPAAMFB/9TZtmuvUPk2IjwhlK/aznpTdmEluNDhq0j0UTt+eoUDf/7o5XS/c2x zJuSTjBFTqjoa9koAtViHwHUP+wIRa83Yo04GL1wkIoT/44IJKdRlzF0/GgylPc1 icXb08HaycqotyeZe+zzu5011gRZuknq8vdIaCHGftDtWrhpHKdSywFI4SyCIUD4 QjjlCeOajkoim4SZqyC3X5b6jVVRI1EaUglb+eYAl5sBsOvc5DDjgayCnAtpwMQt e3gs9qR02aTJE4aIJMWTSCJbz9XI9qnnlfUIZq+ZxnPZ0nV9xD+78MtqvLJGgmkB p/XqVQuNZi/O+ZzanUSsEqCkqh2P0BkZiEkEGBECAAkFAkHHfs4CGwwACgkQP2Ib 8MdZkWIn9QCeOtb9ViBk6Vb8otUYUe7TB6BbqgQAn3/zXuskhXAf7HfCENtizTWw 2guD =EET6 -----END PGP PUBLIC KEY BLOCK----- pub 4096R/586A109E 2012-02-26 uid Steven J. Hathaway (Apache Code Signing) -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.10 (GNU/Linux) mQINBE9KohwBEADTnMJHRMlqfolxBQ8ZTd2FpdlV45n/R0FjLyvCR/C8bVTfab3f KGiI2idsXXQHDac770q+xtvyNzy3JPsYfbdv2+uAPKg6Pp2pBPvbP/8TqVB4o0Ty RbmC2SukoFhmqRqsGm+LPiolNe9w8WZkW18Mg3MOFoBlCv0Jm+bQJRWtDRsYE5HI pqWqxX7ZYncQmmcJBKt5kTxOe9e5qaSCwN8MpHXVDHvm+xURIWoF6ODuLl/ZLJz5 5PrVkrd65BajBhbMxJiAxlRPR2okrHOUgGVbTvAitZca44sb02icKOFABKsJ60sK NkIxEDJ5cERCEk+3ixGqrd4pdsRFhDp0gQfgCNQfyZcicejsTXLjAYjy0kX1Sa+q H1t4bMxzUxwQb6+PuSzpq7wmdcNAoYIy+L50yOchf4y2QqPyJ9fYAE7QzcmAYSGV o2RfqJHaday/7noRHheC9tCj9E9lF25ei/Mmqh+0yRiw3XlpRQyDhQ/ASEqCfxSz 2BWv+9D4OuAs7ninHyNrM7bA9QHZn3UWvm5rtfLD2G9AZesEy64DkNnicV9wHF7F AAkj8fEZxtfXQkwmj45LuzbfBWblxDrHxEvn5F9k0gd13LgpKvAeiJCh9miwnd8Y fGL+2p7gEczZ0NB0DAlTehriBQ3AVSHEegK9GksdaRzJE/dAvi3HL7W5GQARAQAB tD9TdGV2ZW4gSi4gSGF0aGF3YXkgKEFwYWNoZSBDb2RlIFNpZ25pbmcpIDxzaGF0 aGF3YXlAYXBhY2hlLm9yZz6JAjcEEwECACECGwMCHgECF4AFAk9KyasFCwkIBwMG FQoJCAsCBBYCAwEACgkQgosaI1hqEJ4OWA//eBlUq+J9uGd2qqVatYXYAuvUf5Eq GwF+KAaMRWv/mK2FRruJGvs35rVhod69ar5SiwmsDJPobKn2rN1HCeUNbxkXxKW+ IW50O6Lvoh57K3+aEg1+qs7r8xlI/QznqH1D7532xJ1sa2AYlhhhr8lNhH9Dw1o3 XgVZq0Ph98vvG0NIs8abIHJF/kqQsR878P1mDiI10f3rILQFTfJ5jvYROEFEwIZw Ek0to/kSikVQve/xzcm9HNsOVMK83MWgLo97bgowEGqYn84K0vE4sjZMr53aYzDa SkFlDQFXR7BoWUk6zgM+Yi5QIaoTsRYROimLldTUpkKa1/yREashrVX04btvXwgV m0tnfab/uHKda5Inn4R3VEjBWYu5n/jF5rarvXbyWpxtLj5SESEUtRn6iSoGroG3 ZkIpY7Z961/Lf0vOCcu3TOJAmAmJs7hn1WkUzl7XIKgR79zh68MWRxqhY8d/cbSd wGjYmxI2E/2afnnlMam5EXWw0u9hlJnnHGWNHhUT3oufmghg5fftWUQ3ORsfSjtu KMKsblVgW0GldcP7vKrs1UvYSCq7nRgqgAgjwnO0BAVvz6nstQKlry1cR6MBLSDT NSFX8f9VnPCqFze2ynNHOqXhPKA99eCXIXRgKxRTTSdsuyb4fX8lpH5P2Pw/7Jo6 Q3SkDyHOe8OZhoyZAQ0ET0qi5gEIALPzRUK0gQcwO/jaxnqq1XgXaiQiYNiWr6eY /rV1DUkLm6Of4drBlW8A0LmZcuTYnx2mxsoLnVL0SKHiJ/wKmWSyA+nZH4n2Ar4o XqJ5nl4GjIS6gGOkBJCfNaxhGh744O7O2su5HKuluq80x0mH3iMs7COO4NO1R7YW mrxiP/4EsIL0FFhtiV1JF6J2wSqu/RV1cSLDn8lAALKvz9288wu8wH6df6ioPp3K KEyqwjWb/fRHKYeho7KPcRgnqFJhUn8n9CC35xadqJUjNOWciLT3YCJSkhM73GU9 n0xucs74xsMcBwEKiYEKMYI/1JlmQlkfP0o7zr+5ZuQoOIFw5mcAEQEAAbQ2U3Rl dmVuIEouIEhhdGhhd2F5IChBcGFjaGUgUEdQKSA8c2hhdGhhd2F5QGFwYWNoZS5v cmc+iQE2BBMBAgAgAhsDAh4BAheABQJPSsppBQsJCAcDBRUKCQgLBBYCAwEACgkQ HCOyNmSmoLrByQgAj1DfNcnnnLxT+vIBhgNfdwhQZpgKywgu0XVZ3nyhU9kTdRqe 8Nf6Wz+ez6OJpTDPzC9nDjHcurTXBoCQ0LBPrcSMMEn3/3J/kSYNHicO7u44hJCL /Vv6xcFerqy0+rK7RUqSILGX31PJJr65+OMQC/EPP1fOBojtB49KchFxrP8j406w cbMVnKF6H9CbMcopwrmqda1CDjj1arJyLIpifG29t70hhT+miIJDyXIiExwOLwiS mlG3RQvTEl15ClYTpfvFRR8eaJVqHb3R8pfo+0XeGswRD3eys/Z4PzjoecS5IPbp QTwujmolpUzIw/cV3WLbUwBwpVmnVd2txXxz4bkBDQRPSqLmAQgAwHKAaMCiYYl9 gQRrW/vSih5B7UTxX63ZnkhyTwMEKRc95w30H4GY72JsLk0lzPiUMYDOV17Y8nYf uKM355YNqK6yZ3XIT6yPsmTlC3HFGno56bPNSKbIxZEXIvY3ITLyN7mhDvGxCq3U 8XvM/XLk46VgYPY4qly/yQ5ASeYs75FBep+Ns0Gv4Asampw5l5itbiMBIUZ84TYW 05K7YmMbVsQFhlaBNY8ke5fLbqjQHB3K2SO62HLOPqehx+ZbMHIP+TtcJDxEXK+0 OnomYKR5FuQZe3P95CorhoZG3DiNCEBiTjegkBZgtISyELO1hJEFAJ2ouwZPT45/ pSwX5tXWgQARAQABiQEfBBgBAgAJBQJPSqLmAhsMAAoJEBwjsjZkpqC6RzYH/A7p zAiQaQ4m+tiEpFXKqkt7MLUa5JB4ggKEnQ0Za7GJBvtH2ruwnqpTno7uwtsGzHGV /V9JBpo7G5p228bh7gmET7kEnuCQMIuHz2v2wtMpxejDmo+TFqhoVuL7IaWMxwHX HKo7MUf2YN1I/lRi0goCx7gEdJangtRmqLoyhjQKi6NmEBy3lihyODt8kAIowMtG b8tCfoq+YqZpVjHPDVhXr/q7dm1nrneI5KGPt6ceZEUfQzjX/L1nl2TCSMlI/2WA JVs/N4xcYH+5vEGou2xoE/X6uonxhbbmtGisQRfFf/kVDMcB7eD2HrJZoQy2AwVp 3JQv88HXJk79iaam8tc= =MBu4 -----END PGP PUBLIC KEY BLOCK----- xalan-c-1.11/c/LICENSE0000664000175000000640000002613712030215163013202 0ustar stevesamba Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. xalan-c-1.11/c/makedepends0000664000175000000640000000730512030216437014401 0ustar stevesamba# Generated automatically from Makefile.in by configure. # # Copyright 1999-2004 The Apache Software Foundation. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # # $Log$ # Revision 1.3 2004/02/26 23:10:06 mhoyt # Update to Apache 2.0 License # # Revision 1.2 2004/01/06 02:41:25 dbertoni # Changes for Bugzilla 25914. # # Revision 1.1 2003/11/12 20:42:18 dbertoni # Patches for bug 13238. # # Revision 1.2 2003/09/19 20:33:03 dbertoni # Massive copyright update. # # Revision 1.1 2003/06/29 03:57:53 blautenb # Moved source for sane includes # # Revision 1.1 2000/02/10 13:09:19 jdonohue # Make dependencies file # # #=============== LINUX SPECIFIC OPTIONS ========================= # This makefile only supported with gcc on linux PLATFORM =LINUX CC = gcc CXX = g++ PLATFORM_COMPILE_OPTIONS = -fpic -D${PLATFORM} -D_REENTRANT CC1 = $(CXX) $(CXXFLAGS) $(PLATFORM_COMPILE_OPTIONS) # We have to use the includes from the source distribution, since we use # headers that others normally wouldn't XSL_INCL = -I . -I $(XERCESCROOT)/src/ ################################################################### # IMPORTANT NOTE # ################################################################### # Before you try to run the Makefile, make sure you have two # # environment variables set. # # # # export XALANCROOT= # # export XERCESCROOT= # # # ################################################################### ifndef XALANCROOT noxalanroot: @echo XALANCROOT must be defined endif ifndef XERCESCROOT noxercesroot: @echo XERCESCROOT must be defined endif DOMSUPPORT_DIR = DOMSupport INCLUDE_DIR = Include PLATFORMSUPPORT_DIR = PlatformSupport TESTXPATH_DIR = TestXPath TESTXSLT_DIR = TestXSLT XMLSUPPORT_DIR = XMLSupport XPATH_DIR = XPath XSLT_DIR = XSLT XERCESINIT_DIR = XercesInit XERCESPARSERLIAISON_DIR = XercesParserLiaison XERCESPLATFORMSUPPORT_DIR = XercesPlatformSupport ALL_OBJECTS_DIR = ${XALANCROOT}/obj vpath %.cpp \ $(DOMSUPPORT_DIR):$(PLATFORMSUPPORT_DIR):$(TESTXPATH_DIR):$(TESTXSLT_DIR):\ $(XMLSUPPORT_DIR):$(XPATH_DIR):$(XSLT_DIR):$(XERCESINIT_DIR):\ $(XERCESPARSERLIAISON_DIR):$(XERCESPLATFORMSUPPORT_DIR) ${ALL_OBJECTS_DIR}/%.o:%.cpp $(CC1) -M $(XSL_INCL) $< >> xxxdepends echo "$< " | sed 's/\.cpp/\\.o/' | sed 's/^.*\///' >xxx1 echo "$@" | sed 's/\.cpp/\\.o/' >xxx2 paste xxx1 xxx2 | awk '{print "s#" $$1 "#" $$2 "#"}' >> xxxscr ALLSOURCE = \ $(wildcard $(DOMSUPPORT_DIR)/*.cpp) \ $(wildcard $(PLATFORMSUPPORT_DIR)/*.cpp) \ $(wildcard $(XMLSUPPORT_DIR)/*.cpp) \ $(wildcard $(XPATH_DIR)/*.cpp) \ $(wildcard $(XSLT_DIR)/*.cpp) \ $(wildcard $(XERCESINIT_DIR)/*.cpp) \ $(wildcard $(XERCESPARSERLIAISON_DIR)/*.cpp) \ $(wildcard $(XERCESPLATFORMSUPPORT_DIR)/*.cpp) ALL_OBJECTS = $(addprefix $(ALL_OBJECTS_DIR)/,$(addsuffix .o,$(basename $(notdir $(ALLSOURCE))))) all: prepare compile finish prepare: -rm xxx* -rm $(DEPENDSFILE) compile: $(ALL_OBJECTS) finish: sed -f xxxscr xxxdepends > $(DEPFILE) rm xxx* xalan-c-1.11/c/Makefile.in0000664000175000000640000000307312036623151014242 0ustar stevesamba# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ .PHONY: samples Samples tests Tests include Makefile.incl all: $(MAKE) -C src/xalanc $@ samples: Samples Samples: $(MAKE) -C samples $@ tests: $(MAKE) -C Tests $@ clean: $(MAKE) -C src/xalanc $@ $(MAKE) -C samples $@ $(MAKE) -C Tests $@ install: $(MAKE) -C src/xalanc $@ install-package: install-extras $(MAKE) -C src/xalanc $@ $(MAKE) -C samples $@ install-extras: $(MKINSTALLDIRS) $(DESTDIR)/$(datadir)/doc/libxalan-c $(INSTALL_DATA) $(XALANCROOT)/LICENSE $(DESTDIR)/$(datadir)/doc/libxalan-c $(INSTALL_DATA) $(XALANCROOT)/NOTICE $(DESTDIR)/$(datadir)/doc/libxalan-c $(INSTALL_DATA) $(XALANCROOT)/README $(DESTDIR)/$(datadir)/doc/libxalan-c xalan-c-1.11/c/Makefile.incl.in0000664000175000000640000004762512036623151015201 0ustar stevesamba# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # #MACROS defining commands MKDIR=mkdir LN=ln #all these setting come from the arguments passed in to runConfigure. PLATFORM = @platform@ CC = @cc@ CXX = @cxx@ CPPFLAGS = @cppflags@ CFLAGS = @cflags@ CXXFLAGS = @cxxflags@ PREFIX = @prefix@ LDFLAGS = @ldflags@ BITSTOBUILD = @bitstobuild@ LIBS = @libs@ TRANSCODER = @transcoder@ WCSTOMBS = @wcstombs@ MESSAGELOADER = @xalan_locale_system@ LOCALE = @xalan_locale@ SHELL = @SHELL@ MKINSTALLDIRS = $(MKDIR) -p prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ libdir = @libdir@ includedir = @includedir@ datadir = @datadir@ XSL_OBJ_DIR = ${OUTDIR}/obj XSL_LIB_DIR = ${OUTDIR}/lib XSL_BIN_DIR = ${OUTDIR}/bin XSL_NLS_DIR = ${OUTDIR}/nls XSL_INCL = -I$(XALANCROOT)/src -I$(XALANCROOT)/include -I${XSL_NLS_DIR}/include XSL_INCL += -I$(XERCESCROOT)/src/ -I$(XERCESCROOT)/include/xercesc -I$(XERCESCROOT)/include/ SAMPLES_DIR = $(XALANCROOT)/samples TESTS_DIR = $(XALANCROOT)/Tests # ICU ifeq ($(TRANSCODER),icu) XALAN_USE_ICU = yes endif ifdef XALAN_USE_ICU ifndef ICUROOT ICUROOT=/usr/local endif ifndef ICUI18NROOT ICUI18NROOT=${ICUROOT} endif ICULIB_LOC=$(ICUROOT)/lib endif # required libraries XERCES_LIB = -L$(XERCESCROOT)/lib -lxerces-c ICU_LIB = -L$(ICUROOT)/lib -licuuc -L$(ICUI18NROOT)/lib -licui18n XALAN_LIB = $(LIBRARY_SEARCH_PATH) $(LIBRARY_LINK_NAME) # Deprecated Xerces DOM Support handeling ifeq (XALAN_BUILD_DEPRECATED_DOM_BRIDGE,$(findstring XALAN_BUILD_DEPRECATED_DOM_BRIDGE,$(CXXFLAGS))) ifneq "$(wildcard $(XERCESCROOT)/lib/*xerces-depdom*)" "" XERCES_LIB += -lxerces-depdom endif endif # Library names LIB_NAME = lib$(PROJECT_NAME) LIB = $(LIB_NAME)$(SHLIBSUFFIX).$(LIB_MAJOR_VER).$(LIB_MINOR_VER) SO_NAME = $(LIB_NAME)$(SHLIBSUFFIX).$(LIB_MAJOR_VER) LINK_NAME = $(LIB_NAME)$(SHLIBSUFFIX) XALAN_LIB_PATH = -L$(XSL_LIB_DIR) LIBRARY_LINK_NAME = -l$(PROJECT_NAME) LIBRARY_SEARCH_PATH = -L$(XSL_LIB_DIR) -L$(XALANCROOT)/lib # Localization library names LOC_PROJECT_NAME = xalanMsg LOC_LIBNAME = lib${LOC_PROJECT_NAME} LOC_LIB = ${LOC_LIBNAME}$(SHLIBSUFFIX).${LIB_MAJOR_VER}.${LIB_MINOR_VER} LOC_SONAME = ${LOC_LIBNAME}${SHLIBSUFFIX}.${LIB_MAJOR_VER} MESSAGELIB = ${XSL_LIB_DIR}/${LOC_LIB} EXTRA_LOC_LINK_OPTIONS = $(EXTRA_LINK_OPTIONS) ifeq ($(MESSAGELOADER),nls) LOCAL_LIB = XSL_BUILD_OPTIONS += -DXALAN_NLS_MSG_LOADER endif ifeq ($(MESSAGELOADER),icu) XSL_BUILD_OPTIONS += -DXALAN_ICU_MSG_LOADER LOCAL_LIB = -L${XSL_LIB_DIR} -l$(LOC_PROJECT_NAME) endif ifeq ($(MESSAGELOADER),inmem) XSL_BUILD_OPTIONS += -DXALAN_INMEM_MSG_LOADER LOCAL_LIB = -L${XSL_LIB_DIR} -l$(LOC_PROJECT_NAME) endif #=============== MINGW SPECIFIC OPTIONS ========================= ifeq ($(PLATFORM), MINGW) SUPPORTED = TRUE ALLLIBS = $(LIBS) SHLIBSUFFIX = .dll LINK_SONAME = EXT=.exe LOC_LIB = ${LOC_LIBNAME}${VER}$(SHLIBSUFFIX) MESSAGELIB = ${XSL_LIB_DIR}/$(LOC_LIB) LIB = $(LIB_NAME)$(VER)$(SHLIBSUFFIX) SONAME = $(LIB_NAME)$(MS_VER)$(SHLIBSUFFIX) PLATFORM_COMPILE_OPTIONS = -DWIN32 -D_WINDOWS -D__MINGW__ -D${PLATFORM} -fexceptions CC1 = $(CXX) $(CXXFLAGS) $(PLATFORM_COMPILE_OPTIONS) CC4 = $(CC1) LDFLAGS += -Wl,--allow-multiple-definition LINK = $(CXX) -D${PLATFORM} ${LDFLAGS} MAKE_SHARED = dllwrap --export-all-symbols --driver-name c++ ${LDFLAGS} MAKE_SHARED_LOC = dllwrap --export-all-symbols --driver-name c++ ${LDFLAGS} LOC_OTHER_LINK_PARAMETERS = $(XERCES_LIB) OTHER_LINK_PARAMETERS = $(XALAN_LIB) $(ALLLIBS) OTHER_LINK_LIB_PARAMETERS = $(ALLLIBS) export PATH := $(XERCESCROOT)/lib:$(ICULIB_LOC):$(PATH) endif #=============== CYGWIN SPECIFIC OPTIONS ========================= ifeq ($(PLATFORM), CYGWIN) SUPPORTED = TRUE ALLLIBS = $(LIBS) SHLIBSUFFIX = .dll CYG_PREFIX = cyg LINK_SONAME = EXT=.exe MESSAGELIB = ${XSL_LIB_DIR}/$(CYG_PREFIX)$(LOC_PROJECT_NAME)$(LIB_MAJOR_VER)$(SHLIBSUFFIX) LIB = $(CYG_PREFIX)$(PROJECT_NAME)$(LIB_MAJOR_VER)$(SHLIBSUFFIX) PLATFORM_COMPILE_OPTIONS = -Wall -D${PLATFORM} -D_REENTRANT CC1 = $(CXX) $(CXXFLAGS) $(PLATFORM_COMPILE_OPTIONS) CC4 = $(CC1) LINK = $(CXX) -D${PLATFORM} ${LDFLAGS} MAKE_SHARED = $(LINK) $(CXXFLAGS) ${LDFLAGS} -shared -Wl,--warn-once \ -Wl,--out-implib \ -Wl,$(XSL_LIB_DIR)/$(LIB_NAME)$(SHLIBSUFFIX).$(LIB_MAJOR_VER).$(LIB_MINOR_VER) MAKE_SHARED_LOC = $(LINK) $(CXXFLAGS) ${LDFLAGS} -shared -Wl,--warn-once \ -Wl,--out-implib \ -Wl,$(XSL_LIB_DIR)/$(LOC_LIB) LOC_OTHER_LINK_PARAMETERS = $(XERCES_LIB) OTHER_LINK_PARAMETERS = $(XALAN_LIB) $(ALLLIBS) OTHER_LINK_LIB_PARAMETERS = $(ALLLIBS) export PATH := $(XERCESCROOT)/lib:$(ICULIB_LOC):$(PATH) endif #=============== LINUX SPECIFIC OPTIONS ========================= ifeq ($(PLATFORM), LINUX) SUPPORTED = TRUE ifeq (${CXX}, xlC_r) PLATFORM_COMPILE_OPTIONS = -qpic -D_AIX -D_THREAD_SAFE ALLLIBS = ${LIBS} -L/usr/lib CC2 = $(CXX) $(PLATFORM_COMPILE_OPTIONS) CC1 = $(CC2) $(CXXFLAGS) CC4 = $(CC) $(CFLAGS) $(PLATFORM_COMPILE_OPTIONS) MAKE_SHARED = $(CXX) -qmkshrobj ${LDFLAGS} ${bitstobuildLink} LINK = $(CC1) ${bitstobuildLink} ${LDFLAGS} ifeq (${BITSTOBUILD}, 64) MAKE_SHARED += -q64 CC2 += -q64 CC4 += -q64 LINK += -q64 endif SHLIBSUFFIX=.so XERCES_LIB= -L$(XERCESCROOT)/lib -lxerces-c ICU_LIB= -L$(ICUROOT)/lib -licuuc32 -L$(ICUI18NROOT)/lib -licui18n32 LIB = $(LIB_NAME)$(LIB_MAJOR_VER).$(LIB_MINOR_VER)$(SHLIBSUFFIX) SO_NAME = $(LIB_NAME)$(LIB_MAJOR_VER)$(SHLIBSUFFIX) LIBRARY_LINK_NAME=-l$(PROJECT_NAME)$(LIB_MAJOR_VER) export LD_LIBRARY_PATH := $(XERCESCROOT)/lib:$(ICULIB_LOC):$(LD_LIBRARY_PATH) MAKE_SHARED_LOC=$(MAKE_SHARED) LOC_LIB = ${LOC_LIBNAME}${LIB_MAJOR_VER}.${LIB_MINOR_VER}${SHLIBSUFFIX} LOC_LIBKEYNAME=${LOC_PROJECT_NAME}${LIB_MAJOR_VER} else ## Other compilers ... ALLLIBS = ${LIBS} SHLIBSUFFIX=.so PIC_OPTION= ifeq (${CXX}, icpc) PIC_OPTION=-KPIC PLATFORM_COMPILE_OPTIONS = -ansi else PIC_OPTION=-fPIC PLATFORM_COMPILE_OPTIONS = -Wall endif PLATFORM_COMPILE_OPTIONS += ${PIC_OPTION} -D${PLATFORM} -D_REENTRANT # We need the ICU library if we are using the ICUBridge ifdef XALAN_USE_ICU LD_RPATH_PRE= -Wl,-rpath, PLATFORM_LIB_LINK_OPTIONS=$(LD_RPATH_PRE)${ICUROOT}/lib endif CC1 = $(CXX) $(CXXFLAGS) $(PLATFORM_COMPILE_OPTIONS) CC4 = $(CC) $(CFLAGS) $(PLATFORM_COMPILE_OPTIONS) MAKE_SHARED = ${CXX} $(CXXFLAGS) -D${PLATFORM} -shared ${PIC_OPTION} ${LDFLAGS} LINK_SONAME = -Wl,-soname,$(SO_NAME) LINK = $(CXX) -D${PLATFORM} ${PIC_OPTION} ${LDFLAGS} export LD_LIBRARY_PATH := $(XERCESCROOT)/lib:$(ICULIB_LOC):$(LD_LIBRARY_PATH) MAKE_SHARED_LOC = ${CXX} $(CXXFLAGS) -Wl,-soname,$(LOC_SONAME) -D${PLATFORM} -shared ${PIC_OPTION} ${LDFLAGS} ## End of other compilers endif endif #=============== FREEBSD SPECIFIC OPTIONS ====================== ifeq ($(PLATFORM), FREEBSD) SUPPORTED = TRUE ALLLIBS = ${LIBS} -L/usr/local/lib SHLIBSUFFIX=.so PIC_OPTION = -fPIC PLATFORM_COMPILE_OPTIONS = -D${PLATFORM} ${PIC_OPTION} ${WCSTOMBS} # We need the ICU library if we are using the ICUBridge ifdef XALAN_USE_ICU LD_RPATH_PRE = -Wl,-rpath, PLATFORM_LIB_LINK_OPTIONS = $(LD_RPATH_PRE)${ICUROOT}/lib PLATFORM_LIB_LINK_OPTIONS += -licuuc -licudata -lgcc ALLLIBS += -L${ICUROOT} endif CC1 = $(CXX) $(CXXFLAGS) $(PLATFORM_COMPILE_OPTIONS) CC4 = $(CC) $(CFLAGS) $(PLATFORM_COMPILE_OPTIONS) MAKE_SHARED = $(CXX) $(CXXFLAGS) -D${PLATFORM} -shared ${PIC_OPTION} ${LDFLAGS} LINK = $(CXX) -D${PLATFORM} ${PIC_OPTION} ${LDFLAGS} MAKE_SHARED_LOC=$(MAKE_SHARED) endif #=============== NETBSD SPECIFIC OPTIONS ====================== ifeq ($(PLATFORM), NETBSD) SUPPORTED = TRUE ALLLIBS = ${LIBS} -L/usr/local/lib SHLIBSUFFIX=.so PIC_OPTION = -fPIC PLATFORM_COMPILE_OPTIONS = -D${PLATFORM} ${PIC_OPTION} ${WCSTOMBS} # We need the ICU library if we are using the ICUBridge ifdef XALAN_USE_ICU LD_RPATH_PRE = -Wl,-rpath, PLATFORM_LIB_LINK_OPTIONS = $(LD_RPATH_PRE)${ICUROOT}/lib PLATFORM_LIB_LINK_OPTIONS += -licuuc -licudata ALLLIBS += -L${ICUROOT} endif CC1 = $(CXX) $(CXXFLAGS) $(PLATFORM_COMPILE_OPTIONS) CC4 = $(CC) $(CFLAGS) $(PLATFORM_COMPILE_OPTIONS) MAKE_SHARED = $(CXX) $(CXXFLAGS) -D${PLATFORM} -shared ${PIC_OPTION} ${LDFLAGS} LINK = $(CXX) -D${PLATFORM} ${PIC_OPTION} ${LDFLAGS} MAKE_SHARED_LOC=$(MAKE_SHARED) endif #=============== OPENBSD SPECIFIC OPTIONS ====================== ifeq ($(PLATFORM), OPENBSD) SUPPORTED = TRUE ALLLIBS = ${LIBS} -L/usr/local/lib SHLIBSUFFIX=.so PIC_OPTION = -fPIC PLATFORM_COMPILE_OPTIONS = -D${PLATFORM} ${PIC_OPTION} ${WCSTOMBS} # We need the ICU library if we are using the ICUBridge ifdef XALAN_USE_ICU LD_RPATH_PRE = -Wl,-rpath, PLATFORM_LIB_LINK_OPTIONS = $(LD_RPATH_PRE)${ICUROOT}/lib PLATFORM_LIB_LINK_OPTIONS += -licuuc -licudata ALLLIBS += -L${ICUROOT} endif CC1 = $(CXX) $(CXXFLAGS) $(PLATFORM_COMPILE_OPTIONS) CC4 = $(CC) $(CFLAGS) $(PLATFORM_COMPILE_OPTIONS) MAKE_SHARED = $(CXX) $(CXXFLAGS) -D${PLATFORM} -shared ${PIC_OPTION} ${LDFLAGS} LINK = $(CXX) -D${PLATFORM} ${PIC_OPTION} ${LDFLAGS} MAKE_SHARED_LOC=$(MAKE_SHARED) endif #=============== HPUX SPECIFIC OPTIONS ========================= ifeq ($(PLATFORM), HPUX) SUPPORTED = TRUE PLATFORM_COMPILE_OPTIONS = +Z -D${PLATFORM} -D_THREAD_SAFE # +p option removed, +W849 option added # to avoid error created by instantiated template symbol length limitation. # Also disable warning 930 about placement delete not implemented. PLATFORM_CXX_COMPILE_OPTIONS = +W849,930 -mt -Wc,-koenig_lookup,on -Wc,-ansi_for_scope,on ALLLIBS = ${LIBS} SHLIBSUFFIX=.sl CC1 = $(CXX) $(CXXFLAGS) $(PLATFORM_COMPILE_OPTIONS) $(PLATFORM_CXX_COMPILE_OPTIONS) CC4 = $(CC) $(CFLAGS) $(PLATFORM_COMPILE_OPTIONS) MAKE_SHARED = $(CXX) -b +Z ${LDFLAGS} -Wl,+s LINK_SONAME = -Wl,+h,${SO_NAME} LINK = $(CXX) $(CXXFLAGS) ${LDFLAGS} $(PLATFORM_COMPILE_OPTIONS) $(PLATFORM_CXX_COMPILE_OPTIONS) -Wl,+s export SHLIB_PATH:=$(XERCESCROOT)/lib:$(ICULIB_LOC):$(SHLIB_PATH) MAKE_SHARED_LOC = $(CXX) -b +Z ${LDFLAGS} -Wl,+s -Wl,+h,${LOC_SONAME} endif #=============== SOLARIS SPECIFIC OPTIONS ========================= ifeq ($(PLATFORM), SOLARIS) SUPPORTED = TRUE ifeq (${CXX}, g++) PLATFORM_COMPILE_OPTIONS = -Wall -fPIC -D${PLATFORM} -D_REENTRANT ifdef XALAN_USE_ICU LD_RPATH_PRE= -Wl,-rpath, endif EXTRA_LINK_OPTIONS=-lc CC1 = $(CXX) $(CXXFLAGS) $(PLATFORM_COMPILE_OPTIONS) CC4 = $(CC) $(CFLAGS) $(PLATFORM_COMPILE_OPTIONS) MAKE_SHARED = ${CXX} $(CXXFLAGS) -D${PLATFORM} -shared -fPIC ${LDFLAGS} LINK = g++ -D${PLATFORM} -fPIC ${LDFLAGS} ALLLIBS = ${LIBS} -L/usr/lib -L/usr/local/lib -lc else PLATFORM_COMPILE_OPTIONS = -KPIC -mt -xs -features=rtti -D${PLATFORM} -D_REENTRANT CC1 = $(CXX) $(CXXFLAGS) $(PLATFORM_COMPILE_OPTIONS) CC4 = $(CC) $(CFLAGS) -KPIC -mt -xs -D${PLATFORM} -D_REENTRANT MAKE_SHARED = ${CXX} -D${PLATFORM} -G ${LDFLAGS} LINK_SONAME = -h ${SO_NAME} MAKE_SHARED_C = ${CC} -D${PLATFORM} -G ${LDFLAGS} LINK = ${CXX} -D${PLATFORM} ${LDFLAGS} ALLLIBS = -mt ${LIBS} -L/usr/local/SUNWspro/lib -L/usr/ccs/lib -lc -lgen endif SHLIBSUFFIX=.so export LD_LIBRARY_PATH := $(XERCESCROOT)/lib:$(ICULIB_LOC):$(LD_LIBRARY_PATH) # if there is a LD_LIBRARY_PATH_64, we need to set this also ifdef LD_LIBRARY_PATH_64 export LD_LIBRARY_PATH_64 := $(XERCESCROOT)/lib:$(ICUROOT)/lib:$(LD_LIBRARY_PATH_64) endif MAKE_SHARED_LOC = ${CXX} -D${PLATFORM} -G ${LDFLAGS} -h ${LOC_SONAME} endif #=============== AIX SPECIFIC OPTIONS ========================= ifeq ($(PLATFORM), AIX) SUPPORTED = TRUE ifeq (${CXX}, g++) PLATFORM_COMPILE_OPTIONS = -Wall -fPIC -D${PLATFORM} -D_REENTRANT ALLLIBS = ${LIBS} -L/usr/lib -L/usr/local/lib -lc EXTRA_LINK_OPTIONS=-lc CC1 = $(CXX) $(CXXFLAGS) $(PLATFORM_COMPILE_OPTIONS) CC4 = $(CC) $(CFLAGS) $(PLATFORM_COMPILE_OPTIONS) MAKE_SHARED = ${CXX} $(CXXFLAGS) -D${PLATFORM} -shared -fPIC ${LDFLAGS} LINK = g++ -D${PLATFORM} -fPIC ${LDFLAGS} ALLLIBS = ${LIBS} -L/usr/lib -L/usr/local/lib -lc SHLIBSUFFIX=.a else PLATFORM_COMPILE_OPTIONS = -qthreaded -D${PLATFORM} -D_THREAD_SAFE ALLLIBS = ${LIBS} -L/usr/lib CC1 = $(CXX) $(CXXFLAGS) $(PLATFORM_COMPILE_OPTIONS) ifeq (-DNDEBUG,$(findstring -DNDEBUG,${CXXFLAGS})) CC2 = $(CXX) $(PLATFORM_COMPILE_OPTIONS) -DNDEBUG else CC2 = $(CXX) $(PLATFORM_COMPILE_OPTIONS) endif CC4 = $(CC) $(CFLAGS) $(PLATFORM_COMPILE_OPTIONS) MAKE_SHARED = makeC++SharedLib_r -p 512 ${LDFLAGS} ${bitstobuildLink} LINK = $(CXX) -qnotempinc $(CXXFLAGS) ${LDFLAGS} $(PLATFORM_COMPILE_OPTIONS) ${bitstobuildLink} ifeq (${BITSTOBUILD}, 64) MAKE_SHARED += -X64 CC2 += -q64 CC4 += -q64 endif SHLIBSUFFIX=.a endif XERCES_LIB= -L$(XERCESCROOT)/lib -lxerces-c ICU_LIB= -L$(ICUROOT)/lib -licuuc32 -L$(ICUI18NROOT)/lib -licui18n32 LIB = $(LIB_NAME)$(LIB_MAJOR_VER).$(LIB_MINOR_VER)$(SHLIBSUFFIX) SO_NAME = $(LIB_NAME)$(LIB_MAJOR_VER)$(SHLIBSUFFIX) LIBRARY_LINK_NAME=-l$(PROJECT_NAME)$(LIB_MAJOR_VER) export LIBPATH := $(XERCESCROOT)/lib:$(ICULIB_LOC):$(LIBPATH) MAKE_SHARED_LOC=$(MAKE_SHARED) LOC_LIB = ${LOC_LIBNAME}${LIB_MAJOR_VER}.${LIB_MINOR_VER}${SHLIBSUFFIX} LOC_LIBKEYNAME=${LOC_PROJECT_NAME}${LIB_MAJOR_VER} endif #=============== OS390 SPECIFIC OPTIONS ========================= ifeq ($(PLATFORM), OS390) SUPPORTED = TRUE PLATFORM_COMPILE_OPTIONS =-Wc,dll,"langlvl(extended),float(ieee)" -D${PLATFORM} -D_XOPEN_SOURCE_EXTENDED -DXALAN_BUILD_DLL ALLLIBS = ifeq (${OS390_XPLINK},1) SHLIBSUFFIX=.xplink.dll OS390SIDEDECK=.xplink.x else SHLIBSUFFIX=.dll OS390SIDEDECK=.x endif CPPMSGFLAGS = -2 -DNDEBUG -DXALAN_XALANMSGLIB_BUILD_DLL CMSGFLAGS = -2 -DNDEBUG -DXALAN_XALANMSGLIB_BUILD_DLL CXXMSGFLAGS = -2 -DNDEBUG -DXALAN_XALANMSGLIB_BUILD_DLL CC1 = $(CXX) $(CXXFLAGS) ${LDFLAGS} $(PLATFORM_COMPILE_OPTIONS) ifeq (-DNDEBUG,$(findstring -DNDEBUG,${CXXFLAGS})) CC2 = $(CXX) $(PLATFORM_COMPILE_OPTIONS) -DNDEBUG else CC2 = $(CXX) $(PLATFORM_COMPILE_OPTIONS) endif CC3 = $(CXX) $(CXXFLAGS) $(PLATFORM_COMPILE_OPTIONS) CC4 = $(CC) $(CFLAGS) $(PLATFORM_COMPILE_OPTIONS) CC5 = $(CXX) $(CXXMSGFLAGS) $(PLATFORM_COMPILE_OPTIONS) {$LDFLAGS} MAKE_SHARED = ${CXX} $(CXXFLAGS) -D${PLATFORM} -Wl,dll ${LDFLAGS} MAKE_SHARED_MSG = ${CXX} $(CXXMSGFLAGS) -D${PLATFORM} -Wl,dll ${LDFLAGS} LINK = $(CXX) $(CXXFLAGS) $(PLATFORM_COMPILE_OPTIONS) ${LDFLAGS} XERCES_LIB=$(XERCESCROOT)/lib/libxerces-c3_1_1.x ICU_LIB=$(XERCESCROOT)/lib/libicuuc33.0$(OS390SIDEDECK) $(XERCESCROOT)/lib/libicui18n33.0$(OS390SIDEDECK) LIB=$(LIB_NAME).$(VER)$(SHLIBSUFFIX) LIBRARY_SEARCH_PATH= LIBRARY_LINK_NAME=$(XSL_LIB_DIR)/$(LIB_NAME).$(VER)$(OS390SIDEDECK) LOCAL_LIB=${XSL_LIB_DIR}/lib$(LOC_PROJECT_NAME).$(VER)$(OS390SIDEDECK) LOC_LIB=${LOC_LIBNAME}.${VER}$(SHLIBSUFFIX) MESSAGELIB=${XSL_LIB_DIR}/${LOC_LIB} ## OS390BATCH ifeq (${OS390BATCH},1) BATCH_XALAN_UTIL_NAME = IXMXAL20 BATCH_TEST_UTIL_NAME = IXMTST20 ifeq (${OS390_XPLINK},1) BATCH_PROJECT_NAME = IXMLX20 BATCH_MESSAGE_NAME = IXMMXG20 BATCH_XML_PROJ_NAME = IXM4C6XX BATCH_ICUUC_PROJ_NAME = IXMI33XC BATCH_ICUIN_PROJ_NAME = IXMI33XN else BATCH_PROJECT_NAME = IXMLC20 BATCH_MESSAGE_NAME = IXMMSG20 BATCH_XML_PROJ_NAME = IXM4C56X BATCH_ICUUC_PROJ_NAME = IXMI33UC BATCH_ICUIN_PROJ_NAME = IXMI33IN endif XERCES_LIB = "//'${LOADEXP}(${BATCH_XML_PROJ_NAME})'" ICU_LIB = "//'${LOADEXP}(${BATCH_ICUUC_PROJ_NAME})'" "//'${LOADEXP}(${BATCH_ICUIN_PROJ_NAME})'" LOCAL_LIB = "//'${LOADEXP}(${BATCH_MESSAGE_NAME})'" BATCH_TARGET = "//'${LOADMOD}(${BATCH_PROJECT_NAME})'" # ALLLIBS = ${XERCES_LIB} ${ICU_LIB} "//'${LOADEXP}(${BATCH_MESSAGE_NAME})'" LIBRARY_LINK_NAME= "//'${LOADEXP}(${BATCH_PROJECT_NAME})'" MESSAGELIB="//'${LOADMOD}(${BATCH_MESSAGE_NAME})'" endif ## OS390BATCH MAKE_SHARED_LOC=$(MAKE_SHARED) endif #============ TRU64 SPECIFIC OPTIONS ============================ ifeq ($(PLATFORM), TRU64) SUPPORTED = TRUE PLATFORM_COMPILE_OPTIONS = -D${PLATFORM} -ptr ${XSL_OBJ_DIR}/.cxx_repository -ieee -pthread -std strict_ansi_errors ALLLIBS = ${LIBS} -L/usr/lib -lm SHLIBSUFFIX = .so CC1 = $(CXX) ${CXXFLAGS} $(PLATFORM_COMPILE_OPTIONS) -nocxxstd CC4 = $(CC) $(CFLAGS) $(PLATFORM_COMPILE_OPTIONS) MAKE_SHARED = ${CXX} ${CXXFLAGS} -shared -D${PLATFORM} -ptr ${XSL_OBJ_DIR}/.cxx_repository -ieee -pthread -std strict_ansi_errors -nocxxstd ${LDFLAGS} LINK = ${CXX} $(CXXFLAGS) $(PLATFORM_COMPILE_OPTIONS) ${LDFLAGS} MAKE_SHARED_LOC=$(MAKE_SHARED) endif #============ MacOSX SPECIFIC OPTIONS ============================ ifeq ($(PLATFORM), MACOSX) SUPPORTED = TRUE PLATFORM_COMPILE_OPTIONS = -Wall -fno-elide-constructors -D${PLATFORM} -D_REENTRANT -DXALAN_USE_XERCES_LOCAL_CODEPAGE_TRANSCODERS ALLLIBS = ${LIBS} -L/usr/lib -L/usr/local/lib SHLIBSUFFIX=.dylib CC1 = ${CXX} $(CXXFLAGS) $(PLATFORM_COMPILE_OPTIONS) CC4 = ${CC} $(CXXFLAGS) $(PLATFORM_COMPILE_OPTIONS) LIB = $(LIB_NAME).$(LIB_MAJOR_VER).$(LIB_MINOR_VER)$(SHLIBSUFFIX) SO_NAME = $(LIB_NAME).$(LIB_MAJOR_VER)$(SHLIBSUFFIX) MAKE_SHARED = ${CXX} $(CXXFLAGS) -D${PLATFORM} -dynamiclib -prebind -seg1addr 0x38000000 -compatibility_version 1 -current_version $(LIB_MAJOR_DOT_VER) -install_name ${LINK_NAME} ${LDFLAGS} LINK = ${CXX} $(CXXFLAGS) ${PLATFORM_COMPILE_OPTIONS} ${LDFLAGS} export DYLD_LIBRARY_PATH := $(XERCESCROOT)/lib:$(ICULIB_LOC):$(DYLD_LIBRARY_PATH) LOC_LIB = ${LOC_LIBNAME}.${LIB_MAJOR_VER}.${LIB_MINOR_VER}$(SHLIBSUFFIX) LOC_SONAME = ${LOC_LIBNAME}.${LIB_MAJOR_VER}${SHLIBSUFFIX} MAKE_SHARED_LOC= ${CXX} $(CXXFLAGS) -D${PLATFORM} -dynamiclib -prebind -seg1addr 0x40000000 -compatibility_version 1 -current_version $(LIB_MAJOR_DOT_VER) -install_name ${LOC_LIBNAME}${SHLIBSUFFIX} ${LDFLAGS} endif #=============== OS400 SPECIFIC OPTIONS ========================= ifeq ($(PLATFORM), OS400) SUPPORTED = TRUE PLATFORM_COMPILE_OPTIONS = -v -D_MULTI_THREADED -D${PLATFORM} -DXALAN_USE_XERCES_LOCAL_CODEPAGE_TRANSCODERS PLATFORM_C_COMPILE_OPTIONS = -v -D_MULTI_THREADED -D${PLATFORM} -DXALAN_USE_XERCES_LOCAL_CODEPAGE_TRANSCODERS ALLLIBS = MAKE_SHARED = ld -v ${LDFLAGS} MAKE_SHARED_C = ld -v ${LDFLAGS} SHLIBSUFFIX=.a CC1 = $(CXX) $(CXXFLAGS) $(PLATFORM_COMPILE_OPTIONS) ifeq (-DNDEBUG,$(findstring -DNDEBUG,${CXXFLAGS})) CC2 = $(CXX) $(PLATFORM_COMPILE_OPTIONS2) -DNDEBUG else CC2 = $(CXX) $(PLATFORM_COMPILE_OPTIONS2) endif CC3 = $(CXX) $(CXXFLAGS) $(PLATFORM_COMPILE_OPTIONS2) CC4 = $(CC) $(CFLAGS) $(PLATFORM_COMPILE_OPTIONS) TO = qwobj EXTRA_COMPILE_OPTIONS = -I. -g -qTERASPACE="*YES *NOTSIFC" -qSTGMDL="*INHERIT" -DXML_USE_ICONV400_TRANSCODER -DXML_USE_INMEM_MESSAGELOADER -DXML_USE_PTHREADS -DXML_USE_NETACCESSSOR_SOCKET -qTGTRLS="V5R1M0" EXTRA_LINK_OPTIONS = -qOPTION="*DUPPROC *DUPVAR *NOWARN" LINK = $(CXX) $(CXXFLAGS) $(PLATFORM_COMPILE_OPTIONS) ${LDFLAGS} endif ifndef SUPPORTED nogood: @echo Linux, Solaris, AIX, Compaq Tru64, OS/390, MacOSX, HP-UX, NETBSD, FREEBSD, CYGWIN, and MINGW are the only platforms supported. endif ALLLIBS += $(XERCES_LIB) ALLLIBS += $(LOCAL_LIB) ifdef XALAN_USE_ICU ALLLIBS += $(ICU_LIB) endif xalan-c-1.11/c/NOTICE0000664000175000000640000000144412030215163013073 0ustar stevesamba ======================================================================= == NOTICE file corresponding to section 4(d) of the Apache License. == == Version 2.0, in this case for the Apache Xalan distribution. == ======================================================================= Apache XALAN-C Copyright (c) 1999-2012 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). This software is based on the ASF XERCES-C project. Portions of this software were originally based on the following: - software copyright (c) 1999, IBM Corporation. (http://www.ibm.com). Additional copyright submissions and contributions: --------------------------------------------------------------------------xalan-c-1.11/c/README0000664000175000000640000002130312036171635013056 0ustar stevesamba Apache Xalan-C/C++ XSLT Library Version 1.11 Project Description: The Apache Xalan C/C++ Project provides a library and a comand line program to transform XML documents using a stylesheet that conforms to XSLT 1.0 standards. The source package contains all the code to create the library, a command line transform utility and the documentation. The documentation packages provide pre-built html documents for web browser use. Binary prebuilt packages are available for some platforms. We could use help providing packages for more platforms. Xalan is a project of the Apache Software Foundation. Project Website: http://xalan.apache.org/xalan-c/ Subversion Repository: http://svn.apache.org/repos/asf/xalan/c/trunk Mirror Download Site: http://www.apache.org/dyn/mirrors/mirrors.cgi/xalan/xalan-c Prerequisite: Apache Xerces-C/C++ XML Parser Library Version 3.0 or newer Version 3.1.1 preferred Prerequisite: Gnu Make This is required when building the Xalan-C library on UNIX/Linux platforms. UNIX PACKAGE INSTALL PROJECTS: (prefix)/share/doc/xalan-c-1.11/ README - This Document LICENSE - The Software License NOTICE - The Software Attributions html/ - The HTML documentation package when available (prefix)/bin/ Xalan - command line XSLT stylesheet transform utility (prefix)/include/xalanc/ - directory containing library header files (prefix)/lib/ libxalan-c.so -> libxalan-c.so.111.0 lib/libxalan-c.so.111 -> libxalan-c.so.111.0 libxalan-c.so.111.0 libxalanMsg.so -> libxalanMsg.so.111.0 libxalanMsg.so.111 -> libxalanMsg.so.111.0 libxalanMsg.so.111.0 WINDOWS PACKAGE INSTALL PRODUCTS: (prefix)/doc/xalan-c-1.11/ README - This Document LICENSE - The Software License NOTICE - The Software Attributions html/ - The HTML documentation package when available (prefix)/bin/ Xalan.exe - command line XSLT stylesheet transform utility Xalan-C_1_11.dll - Release build library Xalan-C_1_11D.dll - Debug build library XalanMessages_1_11.dll - Release build messages XalanMessages_1_11D.dll - Debug build messages (prefix)/include/xalanc/ - directory containing library header files (prefix)/lib/ Xalan-C_1.exp - Windows DLL export definitions Xalan-C_1.lib - Windows DLL library definitions Xalan-C_1D.exp - Windows DLL export definitions Xalan-C_1D.lib - Windows DLL library definitions XalanMessages_1_11.exp - Windows DLL export definitions XalanMessages_1_11.lib - Windows DLL library definitions XalanMessages_1_11D.exp - Windows DLL export definitions XalanMessages_1_11D.lib - Windows DLL library defnitions SUPPORTED PLATFORMS: - This is only a partial list Linux/Gnu GCC 4.4 Windows VC7.1 Visual Studio .NET 2003 Windows VC8 Visual Studio .NET 2005 Windows VC9 Visual Studio .NET 2008 Windows VC10 Visual Studio .NET 2010 Solaris-10 CC SunStudio 12 OpenBSD 5.1 GCC 4.1 FreeBSD 9 GCC 4.2 - Known from previous releases AIX GCC AIX ALC BSD GCC HPUX ACC Mac OS X GCC Cygwin GCC MinGW GCC =============================================================== README for XalanC project at xalan.apache.org Steps for doing a UNIX build from source distributions For users who want to build in the UNIX environment, 1. The Xalan build files are written for GNU make, and will not work with other make utilities. 2. Set the XERCESCROOT environment variable to the path to the root directory of Xerces-C++. 3. Set the XALANCROOT environment variable to the path to the c directory in the root directory of the Xalan-C++ distribution. For example, if the distribution is located in "/home/mydir", you would set the XALANCROOT to "/home/mydir/xml-xalan/c". 4. (Optional) If you decide to build with ICU, integrate the build with ICU by installing the ICU (see Using the ICU) and defining XALAN_USE_ICU to a value, for example: export XALAN_USE_ICU=true. Set the ICUROOT environment variable to the path to the root directory of ICU. Note that building Xalan with ICU requires that Xerces must also be built with ICU. 5. Change directory to XALANCROOT. You can also build Xalan-C outside of the source tree, but you will need to adjust the path to the runConfigure script in the next step. 6. Run the runConfigure utility and provide the platform, C compiler, and C++ compiler flags as indicated below. The runConfigure utility is used to generate the appropriate Makefile for the desired build platform based on the options specified by the user. Valid options for the runConfigure utility are: ./runConfigure -p -c -x [-[flag] ] flag Description p Build platform. Option must be provided by user. Valid values include: aix, linux, freebsd, netbsd, solaris, hp-10, hp-11, hp-11-ia64, irix, tru64, macosx, cygwin. c C compiler name. Example: gcc, cc, c89, xlc_r, etc. x C++ compiler name. Example: g++, xlC_r, CC, etc. d Indicates build is a debug build. Takes no values. Default is no debug. t Transcoder to use. Valid value is 'icu'. Default is null. m Type of localization support method. Valid values include: inmem, icu, and nls. Default is inmem. M Locale for Message Localization Support. Default is "en_US" r Threads option. Valid values include: pthread or dce. Default is pthread. (valid on HP-UX only) b Specify whether it is a 32-bit or 64-bit build. Valid values are 32 and 64. Default is 32-bit P Install root directory. Used if invoking build with gmake install or gmake install-package. Default install root directory is /usr/local l Extra link options other than the default. Default is null z Extra compiler options other than the default. Default is null C Extra configuration options. h To get help on the above commands. Default is no help. Linux using GCC: ./runConfigure -p linux -c gcc -x g++ Linux using the Intel compiler: ./runConfigure -p linux -c icc -x icc AIX (32-bit): ./runConfigure -p aix -c xlc_r -x xlC_r AIX (64-bit): ./runConfigure -p aix -c xlc_r -x xlC_r -b 64 Cygwin (32-bit): ./runConfigure -p cygwin -c gcc -x g++ HP-UX 11 (32-bit): ./runConfigure -p hp-11 -c cc -x aCC HP-UX 11 (64-bit): ./runConfigure -p hp-11 -c cc -x aCC -b 64 HP-UX 11 for Itanium (32-bit): ./runConfigure -p hp-11-ia64 -c cc -x aCC HP-UX 11 for Itanium (64-bit): ./runConfigure -p hp-11-ia64 -c cc -x aCC -b 64 Solaris (32-bit): ./runConfigure -p solaris -c cc -x CC Solaris (64-bit): ./runConfigure -p solaris -c cc -x CC -b 64 if you choose to install the distribution after building the libraries and executables, then you will need to indicate where you would like the distribution to be installed. To specify the install directory for your distribution, specify the flag -P . for example, building and installing on the AIX platform: ./runConfigure -p aix -c xlc_r -x xlC_r -P $HOME/my_xalan Note The standard binary directories bin, lib, and include are created in the specified directory only if the install or install-package option is specified in the build process. To see the other runConfigure flags you may include, use the help flag: ./runConfigure -h 7. Purge the previous build: make clean 8. Run the new build: make or make targ where targ can be one of: targ Description all Build the libraries and Xalan executable. This is the default target if no targ is specified. clean Deletes existing binaries, executables, libraries, tests, and samples. install Build the library, executables, and samples, and copy them (along with the header files) the specified install location. install-package Installs the library, executables, and samples to the specified location. Samples Builds the samples. Tests Builds the tests. xalan-c-1.11/c/readme.html0000664000175000000640000000176612030215163014321 0ustar stevesamba Redirecting to Xalan-C++ Overview xalan-c-1.11/c/runConfigure0000775000175000000640000004213712032617434014600 0ustar stevesamba#!/bin/sh # # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # # $Log$ # Revision 1.15 2012/10/02 shathaway # Allow CFLAGS and CXXFLAGS to inherit external environment. # Fix for XALANC-734 # # Revision 1.14 2005/08/16 23:48:26 dmitryh # Addional fix for XALANC-541 # # Revision 1.13 2005/08/16 01:06:47 dmitryh # Fix for XALANC-541 # # Revision 1.12 2005/07/08 17:30:49 dmitryh # Fix for XALANC-526 # # Revision 1.11 2004/04/19 14:54:08 dmitryh # Fix for Bugzilla Bug 28452 # # Revision 1.10 2004/04/06 15:08:44 dmitryh # Changes for a cygwin build # # Revision 1.9 2004/03/03 15:06:39 mhoyt # Patch for Bugzilla 27406 from Bjoern A. Zeeb: FreeBSD threading configuration # # Revision 1.8 2004/02/26 23:10:06 mhoyt # Update to Apache 2.0 License # # Revision 1.7 2004/02/06 08:49:09 dbertoni # Initial changes for HP-UX IA64 port. # # Revision 1.6 2004/02/06 08:39:35 dbertoni # Initial changes for HP-UX IA64 port. # # Revision 1.5 2004/01/06 02:41:25 dbertoni # Changes for Bugzilla 25914. # # Revision 1.4 2003/12/29 00:26:53 dbertoni # Patches for Bugzilla 25361. # # Revision 1.3 2003/12/03 21:52:57 dbertoni # Patch 25180 for iSeries support. # # Revision 1.2 2003/12/02 19:58:50 dbertoni # Patch for Bugzilla 24567. # # Revision 1.1 2003/11/12 20:42:18 dbertoni # Patches for bug 13238. # # Revision 1.4 2003/11/06 01:28:34 dbertoni # Patch for bugzilla 13238. # # Revision 1.3 2003/09/19 20:33:04 dbertoni # Massive copyright update. # # Revision 1.2 2003/07/22 10:59:40 blautenb # FreeBSD and Install patch from Bjoern Zeeb - Bugzilla 13238 # # Revision 1.1 2003/06/29 03:57:53 blautenb # Moved source for sane includes # # Revision 1.19 2003/04/05 05:21:56 blautenb # Fix for bug 18675 # # Revision 1.18 2003/03/20 16:38:32 dbertoni # Updates for Intel compiler on Linux. # # Revision 1.17 2003/02/08 01:39:33 dbertoni # Don't add bitstobuildLink on AIX. # # Revision 1.16 2003/01/05 18:29:54 dbertoni # Bump optimization level on Linux. # # Revision 1.15 2002/12/12 20:58:06 dbertoni # Changes to build outside of the source tree. Fixes Bugzilla 4627. # # Revision 1.14 2002/11/05 05:15:59 dbertoni # Add extra hint about using GNU make. # # Revision 1.13 2002/10/04 23:42:48 dbertoni # Fixed getop problem. # # Revision 1.12 2002/08/05 21:21:02 dbertoni # Fixed statement termination problem. # # Revision 1.11 2002/08/05 20:41:24 dbertoni # Merge in HP changes. # # Revision 1.10 2002/08/05 20:33:54 dbertoni # Changes to implement 32 and 64-bit builds. # # Revision 1.9 2002/08/01 18:36:38 dbertoni # Added support for Intel compiler. # # Revision 1.8 2002/05/06 05:34:06 dbertoni # Implemented multiple compiler options. # # Revision 1.7 2001/11/27 14:29:43 dbertoni # Reverted previous changes. # # Revision 1.5 2001/08/14 16:10:18 dbertoni # Changes from James Berry for Mac OS X support. # # Revision 1.4 2001/05/18 18:24:12 dbertoni # Added $compileroption to CXXFLAGS and CFLAGS. Bug 1810 # # Revision 1.3 2001/04/13 02:53:20 dbertoni # Changes for the TRU64 port. # # Revision 1.2 2001/03/15 15:56:36 dbertoni # Add -D NDEBUG to release builds to disable assertions. # # Revision 1.1 2000/01/27 19:57:43 jdonohue # Preliminary based on Xerces # # Revision 1.1 1999/12/21 01:13:53 jdonohue # Make for linux, etc # # # # # runConfigure: # This script will run the "configure" script for the appropriate # platform. Only supported platforms are recognized. # # The following variables are defined and exported at the end of this # script. # # LIBS # LDFLAGS # CXXFLAGS # usage() { echo "runConfigure: Helper script to run \"configure\" for one of the supported platforms" echo "Usage: runConfigure \"options\"" echo " where options may be any of the following:" echo " -p (accepts 'aix', 'linux', 'freebsd', 'netbsd', 'openbsd', 'solaris' 'solaris-x86', 'hp-10', 'hp-11', 'hp-11-ia64', 'irix', 'tru64', 'macosx', 'os390', 'os400', 'cygwin' 'mingw-msys')" echo " -c (e.g. gcc, cc, xlc)" echo " -x (e.g. g++, CC, xlC)" echo " -d (specifies that you want to build debug version)" echo " -t can be 'icu' (everything else means default)" echo " -m (accepts 'inmem', 'icu','nls')" echo " -M (example: 'fr_FR'. Default: 'en_US')" echo " -r can be 'pthread' or 'none' (Default: pthread)" echo " -b (accepts '64', '32')" echo " -P " echo " -l " echo " -z " echo " -C " echo " -h (to get help on the above commands)" } ERROR_EXIT_CODE=1 if test ${1}o = "o"; then usage exit ${ERROR_EXIT_CODE} fi if test ${XALANCROOT}o = "o"; then echo ERROR : You have not set your XALANCROOT environment variable echo Though this environment variable has nothing to do with creating makefiles, echo this is just a general warning to prevent you from pitfalls in future. Please echo set an environment variable called XALANCROOT to indicate where you installed echo the XALAN-C files, and run this command again to proceed. See the documentation echo for an example if you are still confused. exit ${ERROR_EXIT_CODE} fi if test $1 = "-h"; then usage exit ${ERROR_EXIT_CODE} fi # Set up the default values for each parameter ccompiler=gcc # Use GCC as the default compiler cppcompiler=g++ # Use GCC as the default compiler debug=off # by default debug is off bitsToBuild=32 # by default 32 bit build assumed transcoder=default # by default use default transcoder localSys=inmem # by default use inmem locale system locale=en_US # by default use US locale thread=pthread # by default, use pthread # Get the command line parameters if test -x /bin/getopt -o -x /usr/bin/getopt; then set -- `getopt C:p:P:c:x:dm:n:t:m:M:r:b:l:z:h $*` if [ $? != 0 ] then usage exit ${ERROR_EXIT_CODE} fi while [ $# -gt 0 ] do case $1 in -p) platform=$2; shift 2;; -c) ccompiler=$2; shift 2;; -x) cppcompiler=$2; shift 2;; -d) debug=on; shift;; -t) transcoder=$2; shift 2;; -m) localSys=$2; shift 2;; -M) locale=$2; shift 2;; -r) thread=$2; shift 2;; -b) bitsToBuild=$2; shift 2;; -P) configureoptions="$configureoptions --prefix=$2"; shift 2;; -l) linkeroptions="$linkeroptions $2"; shift 2;; -z) compileroptions="$compileroptions $2"; shift 2;; -C) configureoptions="$configureoptions $2"; shift 2;; -h) usage exit ${ERROR_EXIT_CODE};; --) shift; break;; *) echo "unknown option $1" usage exit ${ERROR_EXIT_CODE};; esac done else while getopts "C:p:P:c:x:dm:n:t:m:M:r:b:l:z:h" switch; do case $switch in p) platform=$OPTARG;; c) ccompiler=$OPTARG;; x) cppcompiler=$OPTARG;; d) debug=on;; t) transcoder=$OPTARG;; r) thread=$OPTARG;; b) bitsToBuild=$OPTARG;; z) compileroptions="$compileroptions $OPTARG";; l) linkeroptions="$linkeroptions $OPTARG";; m) localSys=$OPTARG;; M) locale=$OPTARG;; P) configureoptions="$configureoptions --prefix=$OPTARG";; C) configureoptions="$configureoptions $OPTARG";; h) usage exit ${ERROR_EXIT_CODE};; *) echo "unknown option -$switch $OPTARG" usage exit ${ERROR_EXIT_CODE};; esac done fi echo "Generating makefiles with the following options ..." echo "Platform: $platform" echo "C Compiler: $ccompiler" echo "C++ Compiler: $cppcompiler" echo "Extra compile options: $compileroptions" echo "Extra link options: $linkeroptions" echo "Transcoder: $transcoder" echo "Localization system: $localSys" echo "Locale: $locale" echo "Thread option: $thread" echo "bitsToBuild option: $bitsToBuild" echo "Extra configure options: $configureoptions" # # Now check if the options are correct or not, bail out if incorrect # case $platform in aix | linux | freebsd | netbsd | openbsd | solaris | solaris-x86 | hp-11 | hp-11-ia64 | irix | tru64 | macosx | os390 | os400 | cygwin | mingw-msys) # platform has been recognized ;; *) echo "I do not recognize the platform '$platform'. Please type '${0} -h' for help." exit ${ERROR_EXIT_CODE};; esac # # Enable debugging or not... # if test $debug = "off"; then echo "Debug is OFF" if test $platform = "os400"; then debugflag=""; elif test $platform = "os390"; then debugflag="-DNDEBUG"; elif test $platform = "linux"; then debugflag="-O3 -DNDEBUG"; elif test $cppcompiler = "aCC"; then if test $platform = "hp-11-ia64"; then debugflag="+O3 -DNDEBUG"; else debugflag="+O2 -DNDEBUG"; fi else debugflag="-O -DNDEBUG"; fi else echo "Debug is ON" debugflag="-g"; fi # # Check for the bitsToBuild option # # # aix | linux | hp-11 | hp-11-ia64 | solaris | # freebsd | netbsd | openbsd | irix | os390 | os400 | tru64 | macosx # if test $bitsToBuild = 64; then bitstobuildDefines="" bitstobuildLink="" if test $platform; then case $platform in solaris) bitstobuildDefines=" -xarch=v9 " bitstobuildLink=" -xarch=v9 " ;; solaris-x86) bitstobuildDefines=" -m64 " bitstobuildLink=" -m64 " ;; aix) bitstobuildDefines=" -q64 -qwarn64 " ;; hp-11) bitstobuildDefines=" +DA2.0W " bitstobuildLink=" +DA2.0W " ;; hp-11-ia64) bitstobuildDefines=" +DD64 " bitstobuildLink=" +DD64 " ;; *) ;; esac fi elif test $bitsToBuild = 32; then bitstobuildDefines="" bitstobuildLink="" else echo "I do not recognize the bitsToBuild '$bitsToBuild'. Please type '${0} -h' for help." exit ${ERROR_EXIT_CODE}; fi # # to export in case it is needed in Makefile.in/Makefine.incl # BITSTOBUILD=$bitsToBuild export BITSTOBUILD # # Now check whether to use 'icu' as transcoder # TRANSCODER= if test $transcoder; then case $transcoder in icu) if test ${ICUROOT}o = "o"; then echo '***Error*** ICUROOT environment variable not defined. Exiting...'; exit ${ERROR_EXIT_CODE}; fi transcodingDefines="-I${ICUROOT}/include"; if test $platform != "os390"; then transcodingLibs="-L${ICUROOT} -L${ICUROOT}/lib -L${ICUROOT}/data"; fi TRANSCODER=icu;; default) ;; *) echo "Unknown transcoder '$transcoder'. Using default." ;; esac fi export TRANSCODER XALAN_LOCALE_SYSTEM= if test $localSys; then case $localSys in icu) if test ${ICUROOT}o = "o"; then echo '***Error*** ICUROOT environment variable not defined. Exiting...' exit ${ERROR_EXIT_CODE}; fi XALAN_LOCALE_SYSTEM=icu;; inmem) XALAN_LOCALE_SYSTEM=inmem;; nls) XALAN_LOCALE_SYSTEM=nls;; default) XALAN_LOCALE_SYSTEM=inmem;; *) echo "Unknown locale '$localSys'. Using default." esac fi export XALAN_LOCALE_SYSTEM XALAN_LOCALE=$locale export XALAN_LOCALE # # Set the C compiler and C++ compiler environment variables # case $ccompiler in gcc | icc) ;; cc) if test $platform = "aix"; then echo "Please use xlc instead of cc to build on AIX." exit ${ERROR_EXIT_CODE} fi ;; xlc) if test $cppcompiler != "xlC"; then echo "Please use xlC as the C++ compiler when using xlc." exit ${ERROR_EXIT_CODE} fi ;; xlc_r) if test $cppcompiler != "xlC_r"; then echo "Please use xlC_r as the C++ compiler when using xlc_r." exit ${ERROR_EXIT_CODE} fi ;; *) echo "I do not recognize the C compiler '$ccompiler'. Continuing anyway ..." ;; esac case $cppcompiler in g++ | c++ | CC | aCC | cxx | icpc | icc) ;; xlC) if test $ccompiler != "xlc"; then echo "Please use xlc as the C compiler when using xlC." exit ${ERROR_EXIT_CODE} fi ;; xlC_r) if test $compiler != "xlc_r"; then echo "Please use xlc_r as the C compiler when using xlC_r." exit ${ERROR_EXIT_CODE} fi ;; *) echo "I do not recognize the C++ compiler '$cppcompiler'. Continuing anyway ..." ;; esac CC="$ccompiler" export CC CXX="$cppcompiler" export CXX # # Check for the threading option # threadingLibs="" threadingDefines="" gccThreadingDefines="-pthread -D_REENTRANT" gccThreadingLibs="-lpthread" if test $thread = "none"; then case $platform in aix) if test $ccompiler = "xlc_r"; then echo "Please use xlc instead of xlc_r to build without threads." exit ${ERROR_EXIT_CODE} fi if test $cppcompiler = "xlC_r"; then echo "Please use xlC instead of xlC_r to build without threads." exit ${ERROR_EXIT_CODE} fi ;; *) ;; esac elif test $thread != "pthread"; then echo "I do not recognize the thread option '$thread'. Please type '${0} -h' for help." exit ${ERROR_EXIT_CODE} else case $platform in aix) if test $ccompiler = "xlc"; then echo "Please use xlc_r instead of xlc to build with threads." exit ${ERROR_EXIT_CODE} elif $ccompiler = "gcc"; then threadingDefines=$gccThreadingDefines threadingLibs=$gccThreadingLibs fi if test $cppcompiler = "xlC"; then echo "Please use xlC_r instead of xlC to build with threads." exit ${ERROR_EXIT_CODE} fi ;; freebsd) if test -n "${PTHREAD_LIBS}" ; then threadingLibs="${PTHREAD_LIBS}" threadingDefines="${PTHREAD_CFLAGS}" else threadingDefines=$gccThreadingDefines threadingLibs=$gccThreadingLibs fi ;; os400) threadingDefines="-D_MULTI_THREADED" ;; os390) threadingDefines="-D_OPEN_THREADS" ;; solaris*) if test $ccompiler = "gcc"; then # GCC on Solaris uses "-pthreads" instead of # "-pthread" threadingDefines="-pthreads -D_REENTRANT" threadingLibs=$gccThreadingLibs else threadingDefines="-mt" fi ;; hp-11*) if test $ccompiler = "gcc"; then threadingDefines=$gccThreadingDefines threadingLibs=$gccThreadingLibs else threadingDefines="-mt" fi ;; cygwin) threadingLibs="" threadingDefines="" ;; mingw-msys) threadingLibs="-mthreads" threadingDefines="-mthreads" ;; *) threadingDefines=$gccThreadingDefines threadingLibs=$gccThreadingLibs ;; esac fi # # Set the extra C and C++ compiler flags # CXXFLAGS="$CXXFLAGS $compileroptions $debugflag $transcodingDefines $threadingDefines $bitstobuildDefines " export CXXFLAGS CFLAGS="$CFLAGS $compileroptions $debugflag $transcodingDefines $threadingDefines $bitstobuildDefines " export CFLAGS LDFLAGS="$LDFLAGS $linkeroptions $bitstobuildLink $threadingDefines" export LDFLAGS LIBS="$transcodingLibs $threadingLibs " export LIBS echo rm -f config.cache rm -f config.log rm -f config.status `dirname $0`/configure $configureoptions echo echo If the result of the above commands look OK to you, go to the directory echo ${XALANCROOT} and type \"gmake\" or \"make\" to make the XALAN-C system. echo echo Note: You must use GNU make to use the Xalan Makefile. exit 0; xalan-c-1.11/c/version.incl0000664000175000000640000000171012030215474014524 0ustar stevesamba# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ################################################################### PROJECT_NAME = xalan-c LIB_MAJOR_VER = 111 LIB_MAJOR_DOT_VER = 1.11 LIB_MINOR_VER = 0 VER = 1_11_0 MS_VER = 1_11 xalan-c-1.11/c/scripts/0002775000175000000640000000000012037700125013661 5ustar stevesambaxalan-c-1.11/c/scripts/xalan-ms-scripts.zip0000664000175000000640000020030112037677060017617 0ustar stevesambaPKӮAA㋋"xalan-ms-scripts/Builds-ReadMe.txtXmo"9i $sIvt{#BȆ[@29i6g!쯿j)t媧rkWg߇3^7dkvzK6Y8ލW:7. ~oX1+z 1lt[_~a.k#.i:Ur8橙(=%{zmiYLeJ[f}isĆ >5HX8RJ`c iLr}GƟɟ|@B K _W{tdfS1LeK) Rla2ʨy†6bDe3Z%bLI"bPjup4Vȥ}'8-]){as-n9TbM:hﯫ3#xu2ּa)pBo8)J XhWyM@tOΤUz  hLh L )>a!2^x~ 3! ؂SdfrX7]&a?Mz-Ҏکѐ"i|V%rM,7h+s lōMƮa^H% 2I@%|h,Ve"er<ӡWM0s88-5"Z\:n!2%h CzNi$ l 0p[ wQTHQc6CRg&I-{``ow7.vY8 u[XFrm.lB&c t!YRkeiS5~li)fҢMZQ<} BTR R |Nuѯi p9,1뢰f[.@T3p[GiPXhEXzM0I!c8 cfI唨ZPI,4AՠwyLWoɆPnE Xh_b#j`ͳ J Ay$P7YMpxqtvyf"xPN_rSqEhNh1iNcc}ɣ/vi6 [l_`:5 ^M#"L;meE(7xEv3zGECsg^/&_U:s褈Kjzj|EG4l:j:lD~\COqj\-U=oSi$HϩBBa@v/U&0f'3rL ;/$L8D-TY1)^CtՒQjc Snz]kWQJ(Yņبj&ۍpI7٣{-Ċ0A[Z5`y>D(y Yfs$st9&Ak '}duaqܪƴt4_jP+Dpt;+GcDg/Pg41b:ؙ0"XO ˨ v{as(ܕ-U F1 Waw=waP9n7 K;S oÀ:MWcDɱó2P? X Tw+%Cy%qKCќ3$c <|Y"[9RŃy#[Nz>[hobt9`gݻըVeu)g34[F]#T΋Q ;WAdhT4Vdbl*vH)NX`tOq,p5$X% 2J=A6 2=EϞPc)/M3yƟDc 1v<\N= ,A t(=HշE6ZN|Qi*xhsc ބϡ(-Ę50!EqE3yۡu 伸r*2^l ok?L=/a:"]l:kE~;}Y?h|@W#U8qdCdPKSt?KZ xalan-ms-scripts/exclude-src.txt 0{Gm>"u^%ۀkm8j-ƪvn?p܊ p>tj :M~PKFu??nTJxalan-ms-scripts/vs60env.bateM 0!X^*"L.[#mMo&ѡQ, ^R,&_EkARgw ܟ`g/iM#]+򶅅;8 %&qJ톺1 2׮LQug#\VFYu)#d:PKP{?+{pxalan-ms-scripts/vs71env.bat]k0á l0m^b؅0b1d='JB<J?ؖ>?OZimKYmx9xq\c Y@UB7䕡_2"fuk+yذ۩] o؎11~sdw7N΀cě*1וƋ m<2{ydy*u'f2B3+_yoDPK؂{?/c$S xalan-ms-scripts/xalan-build.batWmoJޤᄄnVE7|@+YH8rvgT|Vo713gQ%qc힙$1ʒ\SdY_%o{F:e|u%zuIaO }]W\ZoV78 YNia!0\2tKL7n&63yꓑghHF.DwI#)NkgSUy`[TM-3"(^ Mg1 J'wJSJ[cRZ{GӟS*>HjtDkݐVQiQ.\G9϶Xא\}-t#5|:Ntݟ6k{MLwWW3}ď{=l#ؔ#1܁*{~3Qz0>yy-FG3itgf96t];c}Cg1vyz]ULG1 Џf4O|6ョN.u5W(_9767TLDiɨcZ*]I~촟37k 0Pj%>BF/G (`>e7~dOƧJna)틤|T좼G A;b7mocwIϰ˒3 2+8&g8uHPKn{?)G+xalan-ms-scripts/xalan-build-10-27-VC60.batW]oJ}0Bt/ YUm,E&L5$U~g|&;sݙu}}na ="V& 5> Lñ]o| /24e jZeP-!Xa2+N(tl z=͖)ePz܆?7T{0Se'<=Ҕ d6ĭJgXeE6H7ofG=9IEe" iE/T5eE&Zrw>qpz\U)'[ĮM՚e*•H9d TVO&{/)äE ;F?ݭzV8Jl=?fpIBkT|݌`G#[2}G.teb{!b&Ow2MCޱ}r" ^$biTPwm{K/)Kܐt21%y:{.Y9Iq5'm=vMGv`.mf@%xs@qO)t$Ċ4Y(hq.}NqWكAi_Mn nl<`n5x}o7@*+h"?tBj?AtӟFл-oWWE3z$=lؖ'1ҽ&ݚ{J2:׾nFMt^hWP#qCw? 47,N?[>XBv wwD g?.AYXU ݲgC<z%/}U\f|uǭtq'݂&m[&61lr`Va0}z{f[j@7UĩHpgqΧz\~yp],KhUBAy 36K-@ڹK=+Eo{3zKPK{?_NG+xalan-ms-scripts/xalan-build-10-28-VC60.batW]oJ}0Bt/ YUm,E&L5$U~g|&;sݙu}}na ="V& 5> Lñ]o| /24e jZeP-!Xa2+N(tl z=͖)ePz܆?7T{0Se'<=Ҕ d6ĭJgXeE6H7ofG=9IEe" iE/T5eE&Zrw>qpz\U)'[ĮM՚e*•Hq6B|Zkԓ뭉Dmhb{0i|lgwk޹> [|2mZ78-hlA7#gGcHhL鑁 bٷÞy3vӝ }ӱ2"GwlHpѷ\]JHfw4Y [31⫗o*gg{[ K/M~_WQzEz*.' KY=)mVZ)Ju{)U$5:fZs]i*Q/^G}w]ï$Nst!v5| O#tl]ǖ+ث^=6A@lˀ^_nM=dk_7#_{:/o+8M̡aD۟CXf`zoDkH-,Hwg;ۻ;"3 ~awЬW,惘nYP3!pxFYpྪ.3>krGJcgnA|ն- w zmRb0e>y= -Z` *Tr$ڸ S~=.Ad|:+^[ҺHG- <>@>[Ԉĺ#x^1qwM,{2ϓU. G)ٔpxi2/STSqU|(-PK{?sG+xalan-ms-scripts/xalan-build-10-28-VC71.batWmoJޤĄnVE7|@+YH8rAM|mv9ys U =.LgCglZ]-}ha`=|gxm)+eP*R%pl1 |6 XqB)hH)mk%6$0ĿJ' 8Q6OM)#:IJo1=f1;cd!E tA>9y4L(c۞&mK 67 :oxfd@LEl}h^Mѵgîh6?,;Hb=/~h"4NXf²p: -ΥO *1{0=(KiP­-L>/t=\ .6y  $F{, I;7Փ՝-%&?+˨a"=%ksRi֎R^Ji냔~tT=Nb*~7ds}y>q g~u|~8 |D~tBlk?AtݟFл-oWWESz${=lؔ'1ҽ&ݚ{J2:׾GLtVhWP#qCw; 474~LkH.,Hwg;ۻ;"3 ~awѬ,惘nYP3!pxJYpྪ.3>krGJcg2nA|Ͷ- 5w zmRd0e!Ny=  Z` 7eĩHpq&z\2 #Z9HHڐ Q§ fARXhg&rxQJE(EIR$g{ 1eJ]('\馈fg 稍v<&5m(&d{wrKSFjk|v[0] .:AX JKR<1Z{= tFo .9#u oMLt2Gt K,Ipq g~M|~8 |x~tBlk?Ntݟ6dN wװW3z${=l#ؔ#1Vݡ"{ >Ihl|]|=oyٗ}]I?In1ew: {{ӳa3ckFv`I.ޝ1􁮱+fyWTÀ ޝsij'.y>2ョN!TR;=tsomn(ӖPZb ;:?7 z(Q/r>O|ٓ餒/7{nXt>BJ")_74h1(Qkb[x}w-ɬ>Ve E'g;h; ;yA ?j2gޒPK{?|G/xalan-ms-scripts/xalan-build-10-28-X64-VC80.batWmoJޤĄnVE7|@+YHȶܫavgT|Vo7132 #Z9HHڐ Q§ fARXhg&rxQJE(EIR$g{ 1eJ]('\馈fg 稍v<&5m(&d{wrKSN9jkܠX3έvQGq.{^Ll , %TOc;1=ݶ1]1>=#G<5 5 `[ Ǜ-38YRg"%dQ^Mѱ[f_a_fZž;XB/NH=Y02)*`Z.T ( Tpk+pcp7]ק&PC \D>JVDtLNpÊA 2jXHOp*pN*TQ*O)|o Iqӧ?T!aus|A8qv_S:$N9]ď]M*6>i5U ^!6eHUw:랂O,7_#_ۇh^ehWR#qfLDٝ9(71,~L?ǚ]6XKwgL4}k?.oYhU50wgC<,K*੶l=խtq/ݜ:mk&%ae8 !Ny=s ^b i*dTrĹܺSv=.Ad|:ҹHG <>@.{ĺ#6^x1qǝu ,{2ϣU-s4Zl/e^/iOZƱ7= ?PK{?mǭG+xalan-ms-scripts/xalan-build-11-28-VC60.batW]J}dCńnVE7< #Y>L^ 3[ݠMbwsv azA13֍.LUCj0ѝ> t2m瀫} 24E rZe8f!q@[.~4#(tV|j<)MW1M4 z̆=78 Ty0 c'iZ? oM^rCSiw;~6 -άQa/0YMʕnP]rt3yv4&FXطdt lÜ`{"|&Kw2tuAh1]r" ^ J2OF,x4Eإ팅]n^p|X*q6.&KJb4ivuKvo/mN<%bJS脑GI>Ÿ?]ek MJ9~ J%3Iu'F0@*ˑhynQxL/_)//yo7, rnod ' MVsVi֞RVJi냔~4WpJT͵~0ysJÌNhmk5M5~+kXEbW׬D7id Kzpy{U0ǫGxF>rm0#+DgSIJף)o@ŵ j!2}.QCΐf&9)#gc4Rva`6Lp{GD{Ʈ#;:ɺw_@/;sp_eÌjQR~̖͉oٶa"vSBC4 [ڏݞY\-0Eq5o0*x9\En 2>Uvfou-GHi]%  f=jx bY K\|팻 X=ɪllɌqxY-ӈp'̆=7V}`Q-ҟEK0 *B=3iR/x%5/ɲ*˿J{F<$AGl.ZoU.) #ݐБV<5m(&d{wJSSwd|vZ\[0] .:AX JKR<1fgyv`FX7d ӺńMLd58&]kyHDӰ2&o"omY*nK67D?rM0cӟ4׃)!ײ_+8MnNzDݝ9(71,~LqcMH݆ ;з:h+wU]3Mw4C?E?qq_Ìf;\8v{~lPY3=%kY#+ R~촟37k 0Pj%<_ ^8xQ|ʮ8ȞO'~[wâRIGEy^Xw_<8a%Nfy*;e`.<99F+-E_ܹ̋Ҕ> F+8&~g8PK{?|nG+xalan-ms-scripts/xalan-build-11-28-VC80.batWmoJޤᄄnVE7|@+YHȶܫavgT|Vo713g2 #Z9HHk !Q§ fARXhg&r:xQJE$T%YVeW[{h#=舑-cץTS %=a:R~*ǔ=քloNi|{*pNyl}nCs]a e0['KBiI3f<T} ̀ᒡ]bZq3 ӝ<öFC2r$Kzu-IpTvfou GHi_$  f=jx bYl G<|NzX=Ѫ씁ltp|}q2/JS,KSW؛Q [PK{?6 G/xalan-ms-scripts/xalan-build-11-28-X64-VC80.batWmoJޤᄄnVE7|@+YHȶܫavgT|Vo713g2 #Z9HHk !Q§ fARXhg&r:xQJE$T%YVeW[y"G.{#[ƮK-[K {nHHmszpTS6 YlNi<<k~QytN5[Şju.gt RPZBtӛ#jr`>a۾!3 `d@-&oLlgt'#ϰѐ\1h]#G<5 U y-UmzX͖ˌy,)H3w^(Y&X5QϰUq_ 3y|*{,M'V,NqD}Y. V ,x_z? n6y*ap9(Yq1v+o'+'+; USae԰^ UT>UR *-* $ON\ 9wC[E 9k (Q-355i_y.݈m _]M6kiUU ^!6eH5w랢O,7_#_ۇh^^˾ѮF$71F9uw: 4{ӳa3}kFv`I}.ޝ1э+fyW5xxL9YD<iӨK]cgnN|Ͷ 5sZ2e: !Ny=s Vb I*dTrĹҼSv=.Ad|:폐ҾHG <>@.{ĺ#6^x1qǝ ,{2ϣU)s4Zl/e^Y4\Y-Ʊ7= CPKm{?IG,xalan-ms-scripts/xalan-build-11-31-VC100.batWmoJޤĄnVE7|@W(ICmWqàgTe[ݤ0s9s9C{}fF ЛFnUCkp;CeW^ZUhR*t _9f1q@[.~<#C譢 $x0]%!M7`61Z fQ2OaS4H)smnq(Nr!eh6Q'6$CsD?18-2[n&4Z"R]_$E^s{%ZdCtb[+v̞0M)Ͳ.>Cm˹Xs@5x[ ߞ*ܶ(|w^a6άʨ(Ht#7+IB҂Wc\u0v0&t2~W-!!#z0o0"|&Kw2vuAXh3]r$ ^$IPcPx62MGv%x;ca7_,3Q O9-e3UFtW@Q[[o&0pڥ1 K^@]9- F%IIr{aE`d u}p5W'cx>1lrJ;'vJJY%)R\1R=##J}7dkyk +355\y. Į/Yljn"z ԩy {U0ǫG&> @ FgS/ffws.k/}g&X3}#0L 7=SGfS4Rva`6 Lp{'DƮ;f]US *x};C/`CꝸyaWfCN%?vf;~7lP0\-c-xk~37 2\[ ^8x[wbƮ8ȞO'~[wˢR:IG)G A;b/]_i_7˒'Cm˹Xs@5x[ ߞ*ܶ(|w^a6άʨ(Ht#7+IB҂Wc\ټb#-!!#z0o0"|&Kw2vuAh3]r$ ^$IPcPx62MGv%x;ca7_,3Q O9-e3UFtW@Q[[o&0pڥ1 K^@]9- I%IIr{aE`d u}p5W'cx>1lrJ;'vJJY%)R\1R=##J}7dkyk +355\y. Į/Yljn"z ԩy {U0ǫG&>pm0*κ_4 ׃)>\ײ_+(LfLD)OGazoozo6h mVnOt]'w45ͺTw_ ;qp_eÌj͆SJ~̖w͉oٶa"v[Bc4 [t'i?ognAe Dq.,Ō]q=N*yrE#t.QuKSFy^Xw_<&8n;Ӿn%Nfy*E`.<9k-O(]qF*+8&~g8͖PK*?pUG+xalan-ms-scripts/xalan-build-11-31-VC80.batWmoJޤĄnVE7|@W(ICmWqàgTe[(Μy9g^_u:@78&ч[PFf9p>VڢT *HWcYqLЖzh>5 4LWIHrF {n}p+S,J ]&1LBx I3{-4b4I3] F6DՆdhu=<޳?Xr5pÄF^$Q+RHkn`ݹBCqHڃ"vCluѮBCF)#Yga9_kȷ&`{/rKS66fw1ՙUuɒ.Ft7 R(WZjF02ߛs0¾%3$;ddC &xZdNƮn;c!}P{KY~KD4 j, mIJLQ]z XW)ˌE(wc0D{Mc港[/xdn3z {,M>Vԟ}Nq w06PVL?ܭv)/OLW!n.Gazksz;Qɿ|tҿ|ҿ\nXXA69]_\F O@ IRVJi烔v~4WpLTϵ>9Rf@Gv h5xV7笑/#_G>ϮXה\s-4d'OLTl}2PSj5U^"`$&3TuOh.S}(ehWP#xQc͘R80315v`Ѭ4몚jP3!hR%}= 3>e7bOu*3[{7'qfm u4l[ӵPs裏ݞY\/0Eq5o0*x9\Yn {2>Tvfou-GH\$  5,v'.yLpv},KhUv\Ayr : 8[ P >U 9WTqM|(p-PK?J=s$G+xalan-ms-scripts/xalan-build-11-31-VC90.batWmoJޤĄnVE7|@W(ICmWqàgTe[ݤ0s9s9C{}fF ЛFnUCkp;CeW^ZUhR*t _9f1q@[.~<#C譢 $x0]%!M7`61Z fQ2OaS4H)smnq(Nr!eh6Q'6$CsD?18-2[n&4Z"R]_$E^s{%ZdCtb[+v̞0M)Ͳ.>Cm˹Xs@5x[ ߞ*ܶ(|w^a6άʨ(Ht#7+IB҂Wc\u0v0ڼv XطdtlüoS,-s<"cq 9jtɑ4;/xɒ&AeBMF,x4Eإ팅]n^p|XD8?|<9 M4G4n;7I6S'h {9pzQcE1MapW}cӁJ_E nmx:h0>7 .yr$wa<'c˗oK''%Tne԰^İqN*T))ev>HiJsǤJ\(S*?HjtDkݐv^iK筑/#_G>ϮXה\s-4d'OLTl}2PSj5U^"`$&3TuOh.S}(ehWP#xQc͘R8031Tvfou-GH\$  5ſ,v'.~yLpv},KhUv\Ayr : 8[ P >U 9WTqM(p-PK?WG0xalan-ms-scripts/xalan-build-11-31-X64-VC100.batWmoJޤĄnVE7|@+YHȶܫavgTe[ݤ0s939C{}fF ЛFTCkp;CeW^[UhR*t q;]͢%c‶\,xF[EIaJB (n6*lsKc\_8O!̢$ e$hD?Rx)K#vMP4>* BldNTmH(ZSSs?q /[e.w\7LhU"Q(I$Ly."PCFb]ie;ё,3F/5 XlNn)<O%bKSE4sb\?è5Ʀ mnL<`R~Kyy? n.yap9 0^s[1JpÊ)A 2jXHOİqN*T))ev>HiJsǤJ\(ӟS*?HjtDkݐv^iK筑/#_G>ϮXה\s-t#v5|:Ntӟ&dN kث9^=ǽ6 EHLTg:랂G4\4_7#_ۇpQ\~ѮF83ǚ1<qafb载y>7ۜ6Xn w{B4}k?.oYiU50gC<&<މKq=f|pUn6ĞTcgnN|Ͷ ;i؂k?OOy=s-^` ռusu/fz\VڢT *H_NWh 8- ?!V|j@%ǯ@C[_R^O>1vK^@\D>לwLrmܰ"jms+ғq{>1lrJ;'vJJY%)R\1R==#J}7dkXݜF|l?b;c]S:_skx~ҍ%8MXdbC:5R;a xzG(#1Q"{ Ipl|݌|=nEq-F{DkƴOtv6tU]cW vyzM>10!N\<6ルZv!T;=wsomn(oݖP1M5] E?~z홛u~oQdW#^ֽq?'I%o_nVݲ|ER>nib(QkXbWx}mgMɬ>VeE'gp; ˼ s^ѐsE"g PKT?=)G/xalan-ms-scripts/xalan-build-11-31-X64-VC90.batWmoJޤĄnVE7|@+YHȶܫavgTe[ݤ0s939C{}fF ЛFTCkp;CeW^[UhR*t q;]͢%c‶\,xF[EIaJB (n6*lsKc\_8O!̢$ e$hD?Rx)K#vMP4>* BldNTmH(ZSSs?q /[e.w\7LhU"Q(I$Ly."PCFb]ie;ё,3F/5 XlNn)<Vԟ}Nq Tr ( T01Iu.o7AjH4LxynQOx4*/ߖNOK; +&;+˨a"=&+9sRiUR **sߣ8ONT wC6y -F|l?b;c]S:_skx~ҍ%8MXdbC:5R;a xzG-Fb:CEY<z0>Zv5ř>֌i(3 3CMϣ6tU]cW vyzM>10!N\<6ルZv!T;=wsomn(oݖP1M5] E?~z홛u~oQdF/G ȭ{1c~dOƧJne)|TĔQޣ Ů/ δeɿY}n>(OvAggw~JyA !?jq5 EpPKQA  > xalan-ms-scripts/xalan-inst.batW[k@~/?6^؆*Ij-L۰J`)$$K[-L;ߙfv:g 45mhZTѕ,=m0V[嚀j"};0GJ!P K*MR`/&W%qIү 1r5*@i`r[kJP+ت%A,n}EךV~@/,'x!( 7i}[6,C22w,˧pKP//4˲m7.2QX0%cke,팅юM/_9o療 Eoэ?M r@Qn$(3SJb?K. P/6bV]b?(۪ I> n#q-W\=8ϿySwm̝Ei%je10 1HiSꄔ JY,ooQ[3cpxoy̹\rҺI$,\K5KqY F{"qPT <Q~`Q!|~顈}Gfpvbn|b.G湷^,z$ dV ۑR='߲d 䇣lFb{PdR!TȔs-wY!'+PK(QAQ6B *xalan-ms-scripts/xalan-inst-10-27-VC60.batW[k@~/?K؆FZ,1N۰YRzYښ\o`s~@ hCVt& UfiC|*T(642M03CrUУ0_MJ YE̯11w.ZYf j[JP[*dzcZ3mn4wx4%^z:6i5^+qŖb77Wk^X-"_zy7(A"lJYFV `giYѤ,l7BrQ~f~/W9kf7>F`6mE]?πM)DȏB,c&8M~)m%Ŏ,K|-e_-i87nFڲe4<=K: yyzeYrl}ˎZTܻbjH݈;>y1;E-nK,ԟ՟{zFxf }0gF{|uM%C`hظw>);?+`ADtXXŏ'1zimBcdXmtdb.GY"z$ dYwb;ɥpx4f8ΧAuUV? X΂XlZ, OeCr!x~QNBDRI=ݟn=H޲})QUɑ=J&cnJ8Ѵ?PKBQA8E *xalan-ms-scripts/xalan-inst-10-27-VC71.batW]o@}opCB*6~%> -)ڄd0ĦߙlJp?=w힟u0T5ȴdM#ZH6a,+5@04;0{CAP U&t1Lp x H; 63AFOYUEy.WoU.] R+Dzcz+7{< _rgs?n 1Mރh+0m^ejGA6ػWkn\/"0/AnV%H }vȞI2E(Di5O>t,hRb&i7"䢸8FAm8zv:?Vj?g"Gv|dBo㶤bv\;D n[4}"N/AڝhwC[$F_yv ugQ]nUmovwi(A3ݬb'&OV 1_}$s{/Xv/`#oڬ^^iMUDY̔5Mqi0{I WTc/<q*!@AlfAHjd^td\2s^"zBT5cɥY&:A5p5L ! )<8(N\7+J@Lfj||۸լDe'j#+Z0~ڳ,hRb&!(|鸿g s/+^5#~06Kt A~/"r#?H2nS.m%Ŏ,K|*˾qz7nGry^,owq\2l}˶ZPܻvbjH;>y1+E-n$Y \=<{j>3XrҺI0Y'ΔKqYPd')BQXŋÓD$:?uC4!15y\ҧsoDHT3-6oNJKaLGjP:+L9T ZS(ii ,O 8M[/,߁7+*M$ӽY+S* hv8V[G_x6R?"//Uח`[uͻ`[:ePx~QLObvק($?}$=; (|VA+#m:H!KL!^ "R;XY2!@>?s̴!c< gD% G&e(}<[=Vad'DM b.W] e p=")S12?Too*1ApN H%czqJipeDNBLRY=3%_aRVɄU@LZĵ'Wqw}gg[/Q?\lOa._JEVA%{$7 2f:>t2yPKCQAI D *xalan-ms-scripts/xalan-inst-10-28-VC80.batW[o@~opBB6ǖjmBAdY4M}bU6me8|g99?t``CL ujCzjt i݁=tD28/:UcdcxS_l#'+kZeVuTZSҢuEUn˱53۶^{+8^S%L oV]66k~ý:q]');]ˢME&{ZnrSg!)Gnh텴,hrb6i7%R{0!ϓW9V#6cE];~+"DQ(LBteܦZPYa>_mUi FeH}hoV#/}mžŝkX؏V> a ║6  m$p%xqd /iOf)BYp,y~QAlfۃ1ن3"#2>{0 2la~+.2T G[ ΔP@ł Ys*x7 N fS1x8%д]_8x^D"]!|FPYn&O0O)d* O&d+ػm uȳݳ-ۗL(˟R.0/"=OM^3JNѼ?PKqQAPUD .xalan-ms-scripts/xalan-inst-10-28-X64-VC80.batW[o@~opBBm%> -)ڄd0mɲhfljp.7sbw~HhcVtfUjhc|*T)642MQ3#@ /WT0*XD&%4BvZ}w."jZ74HЬU2lE91"7~ۍqJ umiِ`ֺUb7<Ͼ[Wk^X-,@nIЮ>dO Sr= IE3Cg/gGH !Η}1iP3i#D( @ Xݔ@$QI]ۖq;)*s#K=Rk:;[#47TZO'WUy2a'Vy2qD ?.0nkcU"lL? }%S"?2ʲ)Kj$ySC3Ʊ7Ag5$hVPKQA'".E +xalan-ms-scripts/xalan-inst-11-31-VC100.batWmk@.@z-Z|?ĸJZ #&6H`)obR_Zygg-]{ ȲUÀj#ZH5aj5D04w`M QbP e h{8^QoJWl-2"Ԋ]HBpҪzV 6]KШ(xpz밹-hl tW'K`/Yff!̚Wtټb(jj7ܻ͝Ws^dhY*J Hr|Srj= ٳ,5H !ʗ}1)?_@7{Cd(KDIXy7,g"GvrDBGPI_m)q 8|N"] }FڝhwC[}#ovqqm }qnX^^Y9^ rߊmejA3p,c7 %c?{$˒=3E0?` Boy:+#mYM>2C0 xECDnkT `hߛrX:0Lq ޔZ -*"Ԋ]HApҪzV 6]KШ(x_pz밹-hl tW'K`/Yff!̚Wtټb(jj7ܻWk^dhY*J H|SrjM^3${!=KgB%%fvB./]b~@7{Cd(KDIXVj7,g"GvrdBGPI_m)q ;8|M"R] }FڝhwC[}#ovqq>K:]ay{ex%}+},S 2oeŴ fwP>Y1;ƘFM#7ޖ,Yy.kzx;luXԹ-_iCB%m7̔a+`I{";"E:Vc'Kp^xL?Ё'` 63 $}LƖnɼ$$ e:XB(n96p;R8,S1A5+ř1>UCP%kCx rQ/\R)@YpdX/Yn"Ӯ>#(+$%Ҍ"vߤ[/##,}J؞0XYI#Tьq sYI6 #PKiQAfTD *xalan-ms-scripts/xalan-inst-11-31-VC80.batW[k@~@`-64UIRk!dچu,e-&\o`[,t0 e3PGj>DnkT `hߛrX:0Lq ޔZ -*"Ԋ]HApҪzV 6]KШ(x_pz밹-hl tW'K`/Yff!̚Wtټb(jj7ܻWk^dhY*J H|Srj= I ӏ|#i;ԾR;8˿8mAzm.ܰRs۾ Q7bZ;(^cL#&oK,<X5<~:Ҏkhd6Y@f0XMh$="΁%`8/~<\tP&@ƓGoV~>&cKd^td\2s,|!zBLwq))x!TM!\lOA^$zh8v9$MPKQAJD *xalan-ms-scripts/xalan-inst-11-31-VC90.batW[k@~@`5h>8JZ %&6#X=3\o`55-n̞#{͞n?@7nkMttka!B|g C/޴R4v+*]KsR\+@YUUSV}9kuAcVю~ ?8x$˘ۨ^m=DJ[V8M^WkEA<[̞pej>&<4{Lٳvןv.kb $|g acEn;J?$s@YV $d'|xED GvH*veܚv.PD`ze_i47nFZykӈY꬯?Uqh%/(ַw n3S?'+Ɣ?>⾥mҞGI4>`dpzО_9i4H!]\? gJ@7K X${"{"E:Vc'<i ?h>3A} q^bzdb.G򹽌&=22w {=q)<)uQm:npFOфb6qm|TyL{?Yg_rg%rD=+~:_`SVلAMZĵg3gm-ۗ([?؞ix9*"9Gr)ؤ+`SMV '.PKQAӍD /xalan-ms-scripts/xalan-inst-11-31-X64-VC100.batW[k@~KxbHZ %iM$F;Ĥj9|g9K>U :1-Y`.kD:Gʭ|@1l LP(U``_U aÍ&5Dqү2R\:4I4O7kZcЬuWWVMIr 7;ݘF:1|'| qrxvmmm<a޾,PnxWkynlhP./ӆ"tjFLgJBRl#KK\b&i7""q;^HW9ƀ#YP:+  v(U>LVRT"=JdB9/v|n\b;D nA/i&4OϣFڽhC[j|#oqqq?K:Y9~uUa"d֒[KB,M)!v"`Ŭc7dx[b/U :1-Y`.kD:Gʭ|@1l LP(U``_U aÍ&5Dqү2R\:4I4O7kZcЬu+B&դA}9nL#ckz89t_66j0o_e*KA6$5<7 6Sf]z(im:5Igi#[aP3}d!)hb,\b&i7""q;^HW9ƀ#6u BV @ Q.+uR"(*UI]䠒ۑq1*s#=bk;<=viΣm񍼥yYʼno,o;gMV튐lZ4 fnZL av'-f?}$۪G{'+oqj'<=mYԹ_iMUD"Lt,@f[ MqiP{R!A8x~xA~Qѧ` 63 $}LuSt2/I`22I.CyVX(jZ6osY:A5 ;Ǚ3>ucP'kCxrQ\\/R)@[ 8L[߁7PTK*y+c"eB&0i++ػN~ȳ=4-;L(KR.'6/"#{O>1h1IPKQAlBD .xalan-ms-scripts/xalan-inst-11-31-X64-VC90.batW]k@}ݚh |qlCS$K6l6J`)wf2T_2sgn\va1#V f4j#|ݪ46߁575D%#@ NE &0Lq!)r/+"ҡI9Eu.$WoU.W I^}9[mN#ckF85^{&6k7{~بWaּͫ,nnݼz_zo˴fZRg쩜0(<#owsH1!'\aGeJ#'%HԦA0?%`SJ* YGQI&!tJ:2nKmsTG=5@HݶL/4DG;"#oE>8˿8ퟥ: P\GȎWZqsO{ze ]C# Ua4'L!^ dO*Oj'|0<); :f1$p72I.C湿=! h[v ;~))8qfOMj&ȷ!<秄8(\AżX@*#ş"GɅ#/wM$r:gsx=ßGn2Ÿc)0aI+,L\ٽ,H^;ȏ H3<}oٱdrGF)M%Wd5|Dr視[S1#+PKk{?rrR!xalan-ms-scripts/xerces-build.batT[o@~7?>Ƣ Jvd Iv٠n3#nTm6a\s3߯}9O[k!th`a~0t"Fă9lDa8xHEZ&)S:gi,[ikN㊳*v<3˭ު،W%x˳,vSF9#PT*`VR S!ɨ4W9$tTDE=k_a/0K`i7rC#g]LJx{F@whQjcS9,~@h,8#c} i]6mVkngνzZC# `+p , ]Ðx<QPq^(OR8gi,kI[4$͒5C䙡٣ȍ<'I(-ɪڃPZ!(*`>V?P!d$[9$uTDi{׾_b8Pi &;F56^m*L,d+˲?,m=IEx6N$ie!_#ScvѨy/ma xΦK&i̢q2lC4o:oDdvK[RIxl 9*};n(RCzӴ Tl;/7bbłEd4$.~mMW8].:p^mRmXF?#{ir+I.=fsb߾fr|U4n)`BD̡hD]ivL9G~غCW$7U qi' yCPKpo{?GAxI)xalan-ms-scripts/xerces-build-27-VC71.batT]o@}7?ܐ>_EǕtd $uàZlpsϹs=~| \{ C Ct0"#FT\5ʓԳg"fZZV$3NKgvwߧ['%Iwi5KƖgͻdi(rF򞪀iI(^Y|O |bpFl+^,Qfizpԗ^SY5MS@nxĝ wxw(r0SʶU}SFnNR<^:!2_$l,$kdr.?1Y[e-AbOl$Y4Iنms@2Dh!@4mx@Wґ1 >4^h A;3Zl\s3׫z=:O[k th`a~0p"ăوB?pzMS=p<51X6Z7ZE8Sn T yfhw٥FoOlؖgdnJWZ$9CPTY*`9VL~C\8SPIsI z4=0{׾_`8p8&p 7t<⎑{EW[ (r1ʶeu[znOB,^jY32ECf,%Ơ=la,'lO9 LSf#FOV-[zzMƫ<g$]%u@F9қMƮOjeix4Ψlg7(ȑgZdLFgv.ę 8x5:s v+vيo3tvJ"l m6 "O*a??GVm6J W Kᒂ_EǕtd $uàZlpss<~| \{ C Ct0"#FTk{C3_l3e }]Ug:gvwU~^뭓$;[D,wɺ~M*C+@Qei‡P[2qLuOCWY$ */st́5j ;A5.^PįL-lw+۲?,WM9j_6agvHedr.?Z,-l cPS6[(IcMEa„mg)|L6}#$k~-vzM<$]%ux H u&'S5ڱ,c|_hgT3 5 9REֳ8hLAt]B;-0[-Wpmm~n`WV\{mA#fA1Y' A[ͯ=U` 1! &Si2i2]ur X u@f9h Q)} $4os=<)cpK<"O,cPKj{?.xI)xalan-ms-scripts/xerces-build-28-VC80.batT]o@}7?ܐ>_EǕtd $uàZlxss9~| \{ C Ct0"#FTk2{C3_l3e }]Ug:gv$re8N"˳]_Ae{%@U &( k w+g{j46E"IQ!oG}ɞ0EkN\Qo0䆎G rwz"~UfjcSs\YayoUt7W\ǵq0Dvo'I[ KFuc?|l cP쾘S6[(IcMEa„mg)|L6}#$k~-vzM<$]!Uh/qCFِM&OjcYx,PΨ,g(5-P'=]$u hlb݇jٽj{j{j7N{_[IrQy䶚d+^m5* WKᖂ<(DLIJʹ@=Cr/'s@:R4H4os=<)cxK<"O[x PK3{?L1xI-xalan-ms-scripts/xerces-build-28-X64-VC80.bat]o@M'$$Wcц q%a i]6m[vMfyygpl 0ls E|c `]X"DFe Ok6D2a5ǖ?G& M7J٨9Ѯ:j`svr|] .v: pͩn*7<Ț$#`ﭫ8fO6Ia C~j8h872bz\%@6>p"0\#Ó AYޯqR6l ieCr@n;&96=RʭW;ryA1|@1E_IkcOBT3+X 7E0F\LpEDʮ5Yeh͌0;;^Ǡ}c똩Q[-]ǥE^iKPKz?4xI*xalan-ms-scripts/xerces-build-31-VC100.batT[o@~7?>Fцq%@x]6mj&<̜wwzJC# `+p , ]Ðx0C(HVd2~3l3eKٹ4=jh3C}f3qfF]` #slZ͗ԾAU &( U+ gw+gj4ɶe" QAoGG}Ş0E\Qn0䆎G1rf"*3NWeX[r{抦x}u\dn鿞$l$kdr.1Y~_M-A{b| $Y4Nٖmr@*F鍨l!!ўrrinbAEԓ8ɨcOB;/X3F~^o:ES Qݯҽ!l m "&a??GV4ڨ%y P0H9Mo/,SP;,@JcP#]{Q{ Tc=.%,xbn/5PK{?vxI)xalan-ms-scripts/xerces-build-31-VC71.batTMo0#F"*T9`&Fq8DHYXŁv&iڭV<7^Wz0t0A@`E> 3وB?pkՊLyz8[LcRkv%jLq!ngGoAH,Ҩ n<{dNM*Cr򞪀i›P[<C\18S=PI/sI y4=:+T|),pb&x 7t<⎑{xU7{T9Lu긲,xjޖ۳T4]]ǵq0@ ;ד-|LQP%{A:1KI1(vOL1a12۲Cavh[%ۈ ?G[MoJ"YMg]^\hiCFِN&c'S5ڳ{]m!=z!!$ FʽBU`  &i2džiEcʹ@=Cjc2fh Q)} j$wn᱗xK<";x鱇 PK{?@LwI)xalan-ms-scripts/xerces-build-31-VC80.batT[o@~7?>Fцq%@x]6mj&>;;szj׃B.aHttg)3O.9M6KRj߈$g*TL>ߪ3Jp;3 5d_2g 7O#S_j; Lfk4Lwk}C-L,dSǕmVܞ"^jZxr32ECf,/%Ơ=la,'l˶9 Snl#FO6-zjEƛ<$]%v0?Ӂr 5MƮOjgyxFцq%@x]6mj&<̜wwzJC# `+p , ]Ðx0C(HVd2~3l3eKٹ4=jh3C}f3[Y^g˳G4ٴ/A}#!(S0MPx |V@(W T4hm˜E:*&l7OUQ?ChyT+5qv%Jʅv6d !4l2v}B0U=3-匋bbł1rM'q~ӓQǞ>uv_ 4f|ju݋ll?ݣN_{C$ޣۨDM~~{iQ*+0_%,K !a2"s,8&d_Y; =T6(3)v8YRRǠF(@#."4nz\JY^j!PKz?xI.xalan-ms-scripts/xerces-build-31-X64-VC100.batTn@}!!_";uf-p"_HJN]qQ%vrfpfc0B#.aLKX ?A0B!d&E.8&_eY; #=Tjj}GI4T:W$kp+q%'{s{CPK{?zyI-xalan-ms-scripts/xerces-build-31-X64-VC80.bat]o0G"mIhEfD31ЋHi)NRhWM±yy;4'':40P?9DwclDa8xDEZ!)?=r<9V1X:7fnF yfhNvnvA6NUc[=1ɶ)@wZ9cPT*`&lLC\qqZPYrInTR"MkK}͞0E-R5Mp 7t\#-,bsǕeoǛnڹ=9xS:2/ _V[>9 fo]71Y~XI-A&Ih=&lHu0Ehyч4o8_t-/ʙv7dT !id`FvXd[.wg4-c䘖QOb'= u 41fF~YYc?Z= yWe[d+xm>+泂pKA#"Lfdꆣi2UY),PPr''K@:R\hdz{TǞV.X"O,PK{?: wI-xalan-ms-scripts/xerces-build-31-X64-VC90.batT[o@~7?>@4mx@W#c@H/uàaڮلs^^``>l=С!|fȳ~iLO={xK-cl.9z}OYA yfhwN,wzV`I@Q<{dNMuH+[ AQei›PK2yF |bpzFl3^,QiZ9+\}),p ` c^snKDqeYݺ/-'hׇ\ǵq0@ᆝIONF((Q#|%$'&0LҘEdm10ay 4߭m_߈ɆBˣ޷|^&.IWrHUδ×!lH ]&c'S5ڳB4YCFQWչWoJEKV)RK<F)tsL_D=,o _S$qIey>hA{K>,eIw?ʅǫ?$ilKtksM]tKi{00D,xxbO޼B1E/`a8y}~gi^ˬ=b(Di=R6>jYnX.yXmMe%Yp2-g%D)d充lxP}Pn)2oi^ V.X)[6ilR)^2#ͭ#cn4 TT/p5xj8F+[M_(TT+ȕmt? n~"Z RnHEn$ |ZFNs Tv҉י ^ikoX|lofhց-6l:J"ć C~Y]Mnf9MͦK^||K||9aq$&\NR᭼'_ȳDHg|Y4zYzN)WeV;i=}hնL42,6pƎis)Ŋb[{r{ hYXZUi|䰦Q|5H ]^MZj&o/W-lХ-⡞"TPwK;TQ^fPԙݕb[B)d^VBa +eX. -x#;P>hU^Q03;Ytcw&(pg]U7t;go{y9pjk ૜Kܑt$[*[״㯗-yIA o)i oG%6T@z&ȋS5-" iá\8/&C3!;pW&qӏPKn{?Gɕ3 (xalan-ms-scripts/xerces-inst-27-VC71.batmo@7wrj/!jI91MH"#lxgs~ [|XNfggfӹtle˺d*Ȃ6'ʽ<@H }1>deXȆ"ؼ\ZK`_6Ȧr}7tm㔬Zɍ֑1voijj*`B=7~ Æn xSYe*fvs\mt? n~"Z RnHEn$ |Zns Tv҉שYL^ikoX|lofhց-6l:J"ԇ C~Y]Mnf9MͦK^||K||9aI$&\NS/'_ȳDHd|Y4zY!N)WřKT{HbCj[j &fhcMs)Ŋg|[b{ hYXZUq訓G^D4fB V|^acN.@F;K몢x>{_ˁW____\ߨL#B>Wٺ-`tO Jx@NMSx<(U3T^lQ:ɇ5r t|1PKn{?nW2 (xalan-ms-scripts/xerces-inst-28-VC60.bato@ߛr9j&> (r=R6w6owAa?gvv̬Zt  Uӄ15@ T^!l]5>d元= RdҸlJ,XjjkwGyS:mL߈SjLMz#ؔ7!˩]y]znߵ \o|؋oTR6v7&.y xm-9%؛p:M凿|" #a^\Ade8^ _\&#)Қ5xUWcr6vmUGQ:#!}\' Q!DX)}uXj<6* o›vyQRq}Lcϋ8eQE"Н$\ȅfHs4d[*^4PKn{?r3 3 (xalan-ms-scripts/xerces-inst-28-VC71.bato@ߛr9j&> ڄ(r=R6w6owA⏥o2;/3+E =@lG1 #KE6tb=PQ>B4Yw!//(F<<U",~MĢX]1X4N2LlNכzʐ.`"-|/~dž< GxSYmnurb.q[:Ȁރ t@+@ħxk!IxN:q: xgzb1Y?X>X.mQGA$H} R?w"l|0aob%`ɷŶDgȗ{Kbo4"XdKYH ⒌"˦_/ )%pQ(YYa -L޻GRUsUWcдuE;n6K)v<Og*Ac&ǒ*ѥnrnzXnnvzy eLWӡփ5[f_9:Cз?4_CJ:viu* :П.T{_HM`j\pŚ; hMwոXyeVzET^:N+s)w˰\K]Z2,ra(y4R]xPT^Q$E/LdE3yw>UCQ# }LǯqqqqQ!Y@R|_-5}ᅫohRP(ʽuroFIťTc!0E>/bE eXF|X .HH!ӐmMGgxӸPKy9{?7R2 (xalan-ms-scripts/xerces-inst-28-VC80.bato@ߛr9j&> ڄ(r=R6w6owA⏥o2;/3+E =@lG1 #KE6tb=PQ>B4Yw!//(F<<%K~y7%VR&lbQ,,n[[n h&s 6yM=eHRjT_WDFwcRZFh~\x۬ܶTM:A1Yܸ -Od@t@醈t: oӊe<5$<o'8e< 3M=c Xf ܬ ,,ö >TR6v7V1]b["3K=%7uʏ`,K,K$xYqIeӯy(,,X찆L& #)Ҫ9|Ѫm1Xhhںc⢍7uϥ;Ɓsw큠ncIjQ797=,77;=2˫PA͂3rƜ !|/XH%Y oCeeY~O~=O&mv5.VYXpgb͝K4j\2w+Pk/W|ĻeX.r-vk˰\ ^.<(*/ߨOzm Tw&2Wޙȼ _A;K몡ݑnh>{_ˀW8_8_8_8_\ߨ,d FE)}뚾7Y4?)(m{:7Mh1z"Sy1ʢE,#M>y $͐iȶ#3UiGPK9{?'1 ,xalan-ms-scripts/xerces-inst-28-X64-VC80.bato@ߛr9jMEVKʉlmBb)gĞ]@R7v݆n pL"@awJj!A,ga#{du՛yQ??Kd_؊vU#mosN h&2$)K*/A "ߋ_wa)-#Oj4CQ.<^ c[[ܠ,n܆w}'2``: tCD: 7i2yb I'_&bOpDSX;#,Y7{Ű-(DA:y϶Tov*K^|[lK||aI$v&\LS,/t eϐ0+.x/l<"Rŝ-0 I{@jEjj hcMs)Ŏqil]@Xɱ$Jt騛g^DtfA V~~icÐ?u> gP,mZݢ2,?K?UW'R6$\,pN%`]5.V^!Pk/S|ǕĻeX.r-vk˰\ ^O.<(*/ߨzm Tw"2Wމȼ _A[K몡ݑnhz_ˀW8_8_8_8_\ߨ,d FE)}뚾7Y4޿((m{:7M`1z"Sy1ʢE,#M>y $͐iȶ#3EiGPKh2{?:2 )xalan-ms-scripts/xerces-inst-31-VC100.bato@ߛr9j&> ڄ(r=R6w6owA⏥o2/3+E =@lG1 #KE6tb=PQ>B4YwC//(F<<%K^%K"X&lbQ,,n[[n o4wS$vIuy>hA{k>6,eIW?ʅǛmKtsʹ}LK{00D!xwbO~{=b IX0<3ްer1lND"tA:]eum~;r؛n.y Xm-e%؛p:MG?%D%shն,44m1q7uRO깻 @Xɱ$Jt騛N#Aj:zPLv\k1'Ca6 (RIV'C.PEuAYgӥ*w+ l]v.YXsgM+J(K2x ˵eX.r-wkفA#ՅEIMAr\_D] ;w+(pg]5; ;go{ypjk Kܑ ب(b]^F0'Žro['ɽ]mT\@5FCZb*/FYPeɇ5rႄϘlk:B>]|tPK'2{?~ 2 (xalan-ms-scripts/xerces-inst-31-VC71.bato@ߛr9j&> ڄ(r=R6w6owA⏥o2;/3+E =@lG1 #KE6tb=PQ>B4Yw!//(F<<U",~MĢX]1X4N2mdvSO%Uů;]ذ'5_!(o6+-UӭNnPE7n>qK{00D!xwbO~{=b I'_'bOpLSX{S,Y7GŰ-(DA:Tof9MUL,ؖ 2’|sIM~#X˟l" !aV\AdeD8. %; ;a0I{HjCjj hcMs)Ŏqil]|{ hXZ%tMNMN#Aj:zPLv\k1'Ca6 (RIV'C.PEuAYgӥ*w+ l]v.YXsgM+J(Kie.%.tk˰\]Z2,ׂ?%F 7^举՝̻w&2WPGj;Cww2<::W9Η#7*$ HQQJź/p5`MO {@NM{<(j4޵T^lsk i3$9c wcw?PK42{?Ri_2 (xalan-ms-scripts/xerces-inst-31-VC80.bato@ߛr9j&> ڄ(r=R6w6owA⏥o2/3+E =@lG1 #KE6tb=PQ>B4YwCV_^PxPyPoKU"oKSZ%KEԻcil'mLr$mdvSO%Uů;]ذ'5_!(o6ۖV'7('2``: tCD: 7i2{EG^.N2噦GXt,:n֏:8n[t s Y*"l|0aob%`ɷ"3K=%7uʏ`,K,!shն,44m1q7u;Ɓsw큠ncIjQ797=,7:=2tfA V~~icNÐ?m> P,N]Zݡ2,?K?U+ l]v.YXsgM+J(Kie.%.tk˰\]Z2,ׂ?%F 7^举՝̻w&2WPGj;Cww2<::W9Η#7*$ HQQJź/p5`MO {@NM{<(j4޵T^,eɇ5r1ut|1PK]2{?:2 (xalan-ms-scripts/xerces-inst-31-VC90.batmo@7wrj/!jI91MH"#lxgs~ Yt./:k:mhٲ e Fr/(&mB4e}yAAy@fA-YWuylׄM,uMc1~- Y2%4lvSO%UzƯ;]{IQJW? 7[jf77("C h}6"Qn |ZnsHv҉שYL^ikoX|-[Űm(DAցm~;r؛n.y Xm-e%؛p:M凿l" !aV\Ade8. %3;?I{HbCj[j &fhcMs)Ŋg|[b{ hYXZ%:tININ#ALjP3+Lv\yk1'CA (RIV'C.PEuAYgxKgͮj;  ,\p&tWWnWJu2x ˵eX.r-wkفA#ՅEIMAr\_D] ;w+(pg]U7t;go{ypjk Kܑt$[(b]ӖnZx?g'Žro['ɽ]mT\P*]b*/FYP(tÚ p~B x΄xk:B>]|tPK2{?Q:2 -xalan-ms-scripts/xerces-inst-31-X64-VC100.bato@ߛr9jMEVKʉlmBb)gĞ]@R7wv3;_fmm}`;aY*zRA2m22lzνzS4/%\eXm!X\5AunPpuB7r2?o IJ *|Ђ}lXJȓoʅU7ju9fO]E: Ln(@]&>_Ɠ7Pt$yx;$X,iN^hk[|E2fcycE "@: :y϶Tov*K>x[lK|xaI v\LC,/p e0+.x/l<"Rŝ-0 I{@jE4kl 8iせROꩻ ǁncIr^797=,77;=ϼ2˫PA͂3v !|XH%Y ׯ۴EeeY~O~O&mv5.VIXp'b͝K4j\2CzET^:Ks)w˰\S]2,ta&Iy4R]xPT^P$C/DdIy'>UCQ# }L/qqqqQ!Y@Rz]-5}ᅫohQP(ʽtr/BIťTc!0ESy1ʢE,#M<ȹ ҦKse_ wcwPK 2{?D1 ,xalan-ms-scripts/xerces-inst-31-X64-VC80.bato@ߛr9jMEVKʉlmBb)gĞ]@R7v݆n pL"@awJj!A,ga#{du՛yQ??Kd_؊vU#mosN hn72$)K*/A "ߋ_wa)-#Oj4CQ.<^ c[[ܠ,n܆w}'2``: tCD: 7i2yb I'_&bOpDSX;#,Y7{Ű-(DA:y϶Tov*K^|[lK||aI$v&\LS,/t eϐ0+.x/l<"Rŝ-0 I{@jEjj hcMs)Ŏqil]@Xɱ$Jt騛g^DtfA V~~icÐ?u> gP,mZݢ2,?K?UW'R6$\,pN%`]5.V^!Pk/S|ǕĻeX.r-vk˰\ ^O.<(*/ߨzm Tw"2Wމȼ _A[K몡ݑnhz_ˀW8_8_8_8_\ߨ,d FE)}뚾7Y4޿((m{:7M`1z"Sy1ʢE,#M>y $͐iȶ#3EiGPK2{?QG1 ,xalan-ms-scripts/xerces-inst-31-X64-VC90.bat]o@?pYjMH@-)+ Qdm6;3`P;̙yyHs~@_hC˖u&T=m(0;y@1l#,cǐga!{dvRK^jkۥ[6j$67׹A•)hnoNۮ)CvIe~Kn(tF;[ǫ?$a,SQ5sͰ݀ K04lD!.xwb/onsHv҉YL_hkgX|-=[Űm:P1T?wյlKE0agb%`ɷͶDgȗKbg4ҏ~K,K$xYqI{ ?)%pQ(8s5‡1IxI+[D]ʻ1hdXm`7RbU꩷ǁfcIJthg^D4fB V|^ic.?u1gP,zmZݢ2L/f*w+ l]v.IXs'M+^Q(յ)l.%6 2,W˰\.r5O.<(*/_zm Tw"2o+hDdWPV]U7t;Wo{Typ  bxalan-ms-scripts/xalan-inst.batPK(QAQ6B * exalan-ms-scripts/xalan-inst-10-27-VC60.batPKBQA8E * ixalan-ms-scripts/xalan-inst-10-27-VC71.batPKQA(YD * lxalan-ms-scripts/xalan-inst-10-28-VC60.batPKQAvD * 8pxalan-ms-scripts/xalan-inst-10-28-VC71.batPKCQAI D * sxalan-ms-scripts/xalan-inst-10-28-VC80.batPKqQAPUD . Pwxalan-ms-scripts/xalan-inst-10-28-X64-VC80.batPKQA'".E + zxalan-ms-scripts/xalan-inst-11-31-VC100.batPKVQA&D * n~xalan-ms-scripts/xalan-inst-11-31-VC71.batPKiQAfTD * xalan-ms-scripts/xalan-inst-11-31-VC80.batPKQAJD * xalan-ms-scripts/xalan-inst-11-31-VC90.batPKQAӍD / xalan-ms-scripts/xalan-inst-11-31-X64-VC100.batPKܣQAڐgD . xalan-ms-scripts/xalan-inst-11-31-X64-VC80.batPKQAlBD . 3xalan-ms-scripts/xalan-inst-11-31-X64-VC90.batPKk{?rrR! Óxalan-ms-scripts/xerces-build.batPK p{?߬mxI) txalan-ms-scripts/xerces-build-27-VC60.batPKpo{?GAxI) 3xalan-ms-scripts/xerces-build-27-VC71.batPKVo{?ASxI) xalan-ms-scripts/xerces-build-28-VC60.batPKFo{?pxI) xalan-ms-scripts/xerces-build-28-VC71.batPKj{?.xI) pxalan-ms-scripts/xerces-build-28-VC80.batPK3{?L1xI- /xalan-ms-scripts/xerces-build-28-X64-VC80.batPKz?4xI* xalan-ms-scripts/xerces-build-31-VC100.batPK{?vxI) xalan-ms-scripts/xerces-build-31-VC71.batPK{?@LwI) qxalan-ms-scripts/xerces-build-31-VC80.batPK{?pPwI) /xalan-ms-scripts/xerces-build-31-VC90.batPKz?xI. xalan-ms-scripts/xerces-build-31-X64-VC100.batPK{?zyI- xalan-ms-scripts/xerces-build-31-X64-VC80.batPK{?: wI- uxalan-ms-scripts/xerces-build-31-X64-VC90.batPKFk{?0,  7xalan-ms-scripts/xerces-inst.batPKn{?[#3 ( xalan-ms-scripts/xerces-inst-27-VC60.batPKn{?Gɕ3 ( xalan-ms-scripts/xerces-inst-27-VC71.batPKn{?nW2 ( xalan-ms-scripts/xerces-inst-28-VC60.batPKn{?r3 3 ( xalan-ms-scripts/xerces-inst-28-VC71.batPKy9{?7R2 ( xalan-ms-scripts/xerces-inst-28-VC80.batPK9{?'1 , xalan-ms-scripts/xerces-inst-28-X64-VC80.batPKh2{?:2 ) wxalan-ms-scripts/xerces-inst-31-VC100.batPK'2{?~ 2 ( xalan-ms-scripts/xerces-inst-31-VC71.batPK42{?Ri_2 ( hxalan-ms-scripts/xerces-inst-31-VC80.batPK]2{?:2 ( xalan-ms-scripts/xerces-inst-31-VC90.batPK2{?Q:2 - Xxalan-ms-scripts/xerces-inst-31-X64-VC100.batPK 2{?D1 , xalan-ms-scripts/xerces-inst-31-X64-VC80.batPK2{?QG1 , Pxalan-ms-scripts/xerces-inst-31-X64-VC90.batPK@@xalan-c-1.11/c/scripts/xalan-unix-scripts.tar0000664000175000000640000002400012036622733020143 0ustar stevesambaxalan-unix-scripts/0000775000175000000640000000000012032522076013620 5ustar stevesambaxalan-unix-scripts/xalan-build-debug.sh0000775000175000000640000000106712032522031017436 0ustar stevesamba#!/bin/sh #export SourceDir=/data/apache/xalan/c/trunk export SourceDir=$HOME/xalan-src/c export DestDir=/opt/apache/debug export XERCESCROOT=${DestDir} export XALANCROOT=${SourceDir} export LD_LIBRARY_PATH=${DestDir}/lib:${LD_LIBRARY_PATH} export PATH=$PATH:${SourceDir} runConfigure -p linux -c gcc -x g++ -d -P "${DestDir}" -C "--srcdir=${SourceDir}" # Connect to subdirectories to build only the libraries and Xalan command line program # Comment out the subdirectory cd's to also build the sample programs. cd src cd xalanc make clean make make install xalan-unix-scripts/xalan-build-samples-debug.sh0000775000175000000640000000203212036622567021114 0ustar stevesamba#!/bin/sh export SourceDir=$HOME/xalan-src/c # export SourceDir=$HOME/xalan-src/c/trunk #export DestDir=/usr/local export DestDir=/opt/apache/debug export XERCESCROOT=${DestDir} export XALANCROOT=${SourceDir} export PATH=$PATH:${SourceDir} export LD_LIBRARY_PATH=${DestDir}:$LD_LIBRARY_PATH runConfigure -p linux -c gcc -x g++ -P "${DestDir}" -d -C "--srcdir=${SourceDir}" make clean # MAKE WHAT YOU NEED # The standard make builds only the libxalan-c.so library and Xalan executable. # The "samples" builds the sample applications. # The "tests" builds the diagnostic tests. make make samples # make tests # INSTALL WHAT YOU NEED # The standard "install" installs only the libxalan-c.so and Xalan executable. # The "install-extras" installs license and other documentation. # The "install-package" installs libxalan-c.so, Xalan executable, samples and extras. # make install # make install-extras # make install-package # Note: The install-extras are targeted to $(datadir)/doc/libxalan-c # The standard $(datadir) = $(prefix)/share xalan-unix-scripts/xalan-build.sh0000775000175000000640000000202112036622275016360 0ustar stevesamba#!/bin/sh export SourceDir=$HOME/xalan-src/c # export SourceDir=$HOME/xalan-src/c/trunk #export DestDir=/usr/local export DestDir=/opt/apache export XERCESCROOT=${DestDir} export XALANCROOT=${SourceDir} export PATH=$PATH:${SourceDir} export LD_LIBRARY_PATH=${DestDir}:$LD_LIBRARY_PATH runConfigure -p linux -c gcc -x g++ -P "${DestDir}" -C "--srcdir=${SourceDir}" make clean # MAKE WHAT YOU NEED # The standard make builds only the libxalan-c.so library and Xalan executable. # The "samples" builds the sample applications. # The "tests" builds the diagnostic tests. make # make samples # make tests # INSTALL WHAT YOU NEED # The standard "install" installs only the libxalan-c.so and Xalan executable. # The "install-extras" installs license and other documentation. # The "install-package" installs libxalan-c.so, Xalan executable, samples and extras. make install make install-extras # make install-package # Note: The install-extras are targeted to $(datadir)/doc/libxalan-c # The standard $(datadir) = $(prefix)/share xalan-unix-scripts/xalan-install.sh0000775000175000000640000000044212036622333016727 0ustar stevesamba#!/bin/sh # # This script assumes that "xalan-build.sh" has already been run. # This script should be run from your build directory. If you are # installing to a system directory /usr or /usr/local you may need # to run this script as root or superuser. # cd src cd xalanc make install xalan-unix-scripts/xerces-build-debug.sh0000775000175000000640000000043412032520276017632 0ustar stevesamba#!/bin/sh export SourceDir=$HOME/xerces-src #export SourceDir=/data/apache/xerces-src export DebugDir=/opt/apache/debug PATH=$PATH:$SourceDir configure CC="gcc -g" CXX="g++ -g" CFLAGS=-O2 CXXFLAGS=-O2 --srcdir=${SourceDir} --prefix=${DebugDir} cd src make clean make make install xalan-unix-scripts/xerces-build.sh0000775000175000000640000000041612032520224016537 0ustar stevesamba#!/bin/sh #export SourceDir=/data/apache/xerces-src export SourceDir=$HOME/xerces-src export DestDir=/opt/apache PATH=$PATH:$SourceDir configure CC="gcc" CXX="g++" CFLAGS=-O3 CXXFLAGS=-O3 --srcdir=${SourceDir} --prefix=${DestDir} cd src make clean make make install